内核与根文件系统的制作——小白学ARM(十)
嵌入式平台下的内核制作
- 清除原有配置、中间文件
make distclean
-
图形化配置内核
先找到教程提供的config-file文件,复制到内核目录下,改名为.config
运行:
make menuconfig ARCH=arm
在图形化配置界面上找到Initramfs_source选项:将Initramfs_source前的文件目录删除,以防出现错误。
- 编译内核
make uImage ARCH=arm CROSS_COMPILE=arm-linux-
可能出现的错误:
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
删掉了kernel/timeconst.pl 文件中 373行的 if (!defined(@val)) { 改为 if (!@val) { 后,编译成功。
“mkimage” command not found – U-Boot images will not be built
原因:未安装uboot里带的mkimage,
只需要输入:sudo apt-get install u-boot-tools,安装即可
根文件系统制作(制作失败,挪用现成的文件系统)
流程都是按教程来的,最后做出来的文件系统怎么都挂在不上,内核启动时一直会卡在一个地方,没办法,只能先把教程里做好的文件系统拷贝过来先用着,下面是我的制作流程,大家不要看,这里只是记录一下,方便日后找错
-
使用busybox(其中,arm-linux-gnueabihf-一众编译器位于/usr/bin目录下)
-
官网下载版本:1.29.3.tar.bz2,解压至linux下目录,进入解压目录
执行:make menuconfig,进入图形化配置界面 settings ---> --- Build Options [*] Build static binary(no share libs),勾选 () Cross compiler prefix,选中,写入:arm-linux-gnueabihf-,若只写arm-linux-会报错 --- Installation Options (./_install)Destination path for 'make install',保持默认路径
退出,保存上述配置。
执行:make
创建文件夹:/home/linux