Linux嵌入式内核编译过程

2019-07-13 05:36发布

在进行本实验时,请确保自己的交叉编译环境已经成功完成!!! 本篇文章使用的是厦门铂士莱科技有限公司的实验箱,也是在其给的实验指导书上进行了自己的加工。
按照指导书上写的,咱们其实没有必要写一个hello.c,因此就不再赘述,有需要的可以查看指导书,本教程直接从修改内核配置开始。 我是在root权限下使用的,所以如果/root下没有Linux4412文件夹,那么请建立一个。并且,把“嵌入式Linux试验箱资料-->OS盘内容-->linux-->source”中的kernel.tar.gz拷贝到虚拟机中,并将其解压在Linux4412中 最开始是拷贝在桌面上的 cd     /home/stand/桌面 mv    kernel.tar.gz    /root/Linux4412 tar    kernel.tar.gz 1、  清除原配置,加载默认配置文件 cd              ~/Linux4412/kernel make        distclean make          boxlab_4412_defconfig (第三条指令,指导书上说的是boxlab_4412_linux_defconfig,但是我在编译的时候,显示这个指令是找不见的,咱们可以在/kernel/arch/arm/configs中查看)   2、  修改drivers/char目录下的Makefile,在最后加一行obj-$(CONFIG_TEST_HELLO)+=hello.o vim   drivers/char/Makefile进入目标文件进行编辑   3、  修改drivers/char目录下的Kconfig,在内核menu中添加hello选项,在文件的最后一行加上以下代码 config         TEST_HELLO               taistate    “My test hello module” help            test forkbuild. (最后一句有一个英文句点!!虽然小,但是它很重要)   4、  进入内核配置菜单 make ARCH=arm menuconfig 此时等待一会,它就会弹出选择界面,上下方向键移动具体选项,左右方向键移动退出、确定选择、帮助 首先找到Device Drivers,移动左右方向键,选定select,回车确定 然后找到Character devices,移动方向键,选定select,回车确定 最后找到My Test hello module,按“M”,将其设置为module编译模式   5、  编译内核与模块 cd      ~/Linux4412/kernel make make ARCH=arm modules sudo make ARCH=arm modules_install 在每一步命令执行时,会稍微慢一点,请耐心等待 最后一步命令执行后,很有可能会出现“arm-none-linux-genuabi-gcc”未找到,这样的反馈,不要在意,这并不会影响我们的结果,只要它显示了INSTALL…就行。   6、  在“嵌入式Linux试验箱资料-->OS盘内容-->linux-->source”中,找到rootfs.tar.gz文件,然后拷贝入虚拟机中 将rootfs.tar.gz放在Linux4412文件夹中,并解压。最开始我是直接拷贝在桌面上的 cd      /home/stand/桌面 mv     rootfs.tar.gz    /root/Linux4412 cd      /root/Linux4412 tar     -zxvf          rootfs.tar.gz      7、  将生成的hello.ko放入root cp      /lib/modules/3.0.15/kernel/drivers/char/hello.ko           ~/Linux4412/root   8、  将hello.ko放进rootfs/home中,并将rootfs放入root中 mv     hello.ko    /rootfs/home mv     -rf     rootfs       root   9、  在“嵌入式Linux试验箱资料-->嵌入式试验箱7.0寸—实验内容-->tools”找到linux_tools.tgz文件,并拷贝到桌面上 cd      /home/stand/桌面 mv     linux_tools.tgz          /root tar     -xvzf          linux_tools.tgz 解压完成后会出现usr文件夹   10、打包文件系统root cd      ~/Linux4412 make_ext4fs     -s –l314572800 –a root –L linux system.img  /root/rootfs 此时就生成了system.img文件,可以使用指令ls system.img –l查看它的大小   10、             将生成的zImage、system.img文件取出,拷贝到pc上(因为使用的是fastboot的烧写方法,所以我把两个文件拷贝到了fastboot/firmware中,关于fastboot如何使用,请查看嵌入式系统烧写实验) zImage文件在虚拟机的此路径下:~/Linux4412/kernel/arch/arm/boot   至此,我们就得到了文件zImage、system.img