目录
windows系统和linux系统启动过程
linux源码目录树
树莓派linux源码配置
windows系统和linux系统启动过程
windows启动过程:
1.启动电源,BOIS启动windows,windows识别C盘,C盘运行APP.
linux启动过程:
1.启动电源,bootloader启动linux内核,linux内核识别根文件系统,根文件系统运行APP。
linux源码目录树
使用sudo apt-get install tree安装tree指令
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL0kleNVzaq1UMVpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1ETOxAzM0ADMzAzNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
树莓派linux源码配置
驱动代码的编译需要一个提前编译好的内核,编译内核就需要配置内核。
配置的最终目标会生成。config文件,该文件知道Makefile去把有用东西组织成内核
第一种方式:
厂家配linux内核源码,树莓派linux内核源码
cp 厂家.config .config
第二种方式:
make menuconfig 一项项配置,通常是基于厂家的config来配置
第三种方式:
自己配置
配置树莓派linux内核操作步骤如下:
树莓派2,3的工程是bcm2709_defconfig
第一种方式使用树莓派的bcm2709_defconfig:
输入指令:ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig
第二种方式使用make menuconfig进行配置:
1.安装必要的库:
sudo apt-get install bc
sudo apt-get install libncurses5-dev libncursesw5-dev
sudo apt-get install zlib1g:i386
sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5
2.输入指令:ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make menuconfig( 说明:ARCH指定架构,CROSS_COMPILE指定编译器,KERNEL指令内核)
驱动两种加载方式:
*编译进内核 zImage包含了驱动
M模块方式生成驱动文件 xxx.ko 系统启动后,通过命令insmod
3.编译内核指令如下:
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs (说明:j4使用了4个内核进行编译,zImage生成内核镜像,modules要生成驱动模块,dtbs生成配置文件)
4.编译成功后,看到目录多了vmlinux,失败则说明编译失败。目标zlmage镜像在目录arch/arm/boot底下。
5.打包zImage成树莓派可用的xxx.img,输入以下指令:
./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img
6.将SD卡插入电脑,使用指令dmesg查看是否挂载成功
7.挂载U盘:
7.1创建两个文件夹,输入指令 :mkdir data1 和mkdir data2
7.2将SD的内容挂载到data1目录和data2目录:
输入如下指令:sudo mount /dev/sdb1 data1(说明:sdb1是fat分区,是boot相关的内容,kernel的img文件就放在这个分区里面)
sudo mount /dev/sdb2 data2(说明:sdb2是ext分区,也就是系统的根目录分区)
8.安装modules(设备驱动文件 HDMI USB WIFI IO .....)
输入以下指令:
sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=/home/lizhiwen/data2 modules_install(说明:安装的时候要加上绝对路径)
9.安装更新的kernel.img ,镜像名字是kernel7.img
先将原先的镜像进行备份,输入以下指令:
cp kernel7.img kernel7OLD.img
10.再把编译新生成镜像拷贝到data1,起名为kernel7.img
输入以下指令:
cp kernel_new.img /home/lizhiwen/data1/kernel7.img
11.使用指令md5sum查看是否拷贝成功
12.拷贝配置文件
cp arch/arm/boot/dts/.*dtb* /home/lizhiwen/data1
cp arch/arm/boot/dts/overlays/.*dtb* home/lizhiwen/data1/overlays
cp arch/arm/boot/dts/overlays/README home/lizhiwen/data1/overlays
13.将SD拔下插入树莓派,启动树莓派之后使用uname -r查看版本号