buildroot文件系统定制


可以看到,默认编译出来的rootfs只有2.7M,里面应该是一个最基本的文件系统,实际应用上,我们会移植一些常用的命令和应用,比如ssh之类的,可以考虑使用buildroot来定制我们的文件系统。
首先从buildroot官网https://buildroot.org/downloads/下载源码包buildroot-2020.05.tar.bz2

把它放到我们的SDK目录下,并解压

# tar -jxvf buildroot-2020.05.tar.bz2
# cd buildroot-2020.05/

针对SSD201来进行配置:

# ARCH=arm make menuconfig

设置好之后,退出保存一下配置:

执行编译:

# make BR2_JLEVEL=4

提示安装unzip,我们安装一下:

# sudo apt-get update
# sudo apt-get install unzip

安装完后,我们继续编译:

# make BR2_JLEVEL=4

等待编译完成后,output/images/rootfs.tar便是我们想要的文件系统了。

回到SDK中,我们来看文件系统是如何生成的:

# vi project/image/configs/i2m/rootfs.mk

我们要做的是,把从buildroot得到的rootfs.tar替换这里的rootfs.tar.gz,这里需要注意的是,从rootfs.mk可以看出,rootfs.tar.gz解压后,应该是一个rootfs目录,而buildroot得到的rootfs.tar解压后,是没有rootfs这一层的,因此需要处理一下:

# cd buildroot-2020.05/output/images/
# mkdir rootfs
# tar -xvf rootfs.tar -C rootfs/
# tar -cvf rootfs.tar.gz ./rootfs

好了,我们现在开始替换,首先是修改rootfs.mk:

# vi project/image/configs/i2m/rootfs.mk

接着是替换rootfs.tar.gz:

# cp buildroot-2020.05/output/images/rootfs.tar.gz ./project/image/rootfs/rootfs.tar.gz -f

这样,文件系统就替换完成了,我们重新编译一下固件,看看效果:

# ./Release_to_customer.sh -f nand -p ssd201

出现以上错误,解决办法是吧rootfs.tar.gz里面的这个文件删除:

# cd buildroot-2020.05/output/images/
# rm rootfs/lib/libstdc++.so.6.0.25-gdb.py
# tar -cvf rootfs.tar.gz rootfs

rootfs.tar.gz修改之后,当然,要将它更新到SDK中,然后再编译:

# cp ./rootfs.tar.gz  ../../../project/image/rootfs/rootfs.tar.gz  -f
# cd ../../../
# ./Release_to_customer.sh  -f nand -p ssd201

这次没有报错了,更新固件后,可以看到进入了登陆界面,这里使用root登陆(默认没有密码):

可以看到,文件系统已经更新了。我们把buildroot的config保存一下:

# cd buildroot-2020.05
# cp .config ./configs/ssd20x_defconfig

这样,以后需要还原这个配置,只需要make ssd20x_defconfig即可:

# make ssd20x_defconfig

buildroot默认编译出来的文件系统,系统起来会停在登陆界面,修改/etc/inittab可以实现免登陆:

# vi /etc/inittab

修改完并重启系统,可以看到跳过登陆而直接进入命令行了。为了每次编译出来的固件都具备免登陆功能,我们将/etc/inittab的修改动作放到rootfs.mk中:

# vi project/image/configs/i2m/rootfs.mk
-> sed -i 's/console\:\:respawn\:\/sbin\/getty -L  console 0 vt100 \# GENERIC_SERIAL/console::respawn:-\/bin\/sh/' $(OUTPUTDIR)/rootfs/etc/inittab

重新编译固件并更新rootfs:

# ./Release_to_customer.sh -f nand -p ssd201
# cat images/scripts/\[\[rootfs.es


这样,以后每次编译出来的固件,都不需要登陆了。我下载好的buildroot-2020.05.tar.bz2保存在IDO_SSD20X/开发板/IDO-SBC2D07/source,修改好的ssd20x_defconfig保存在IDO_SSD20X/开发板/IDO-SBC2D07/开发文档/buildroot/下。
至此,buildroot文件系统定制完成。

文档更新时间: 2021-08-17 14:45   作者:Aeeditor