1 前言
最近在做一个项目,涉及到根文件系统的构建。从零开始用 buildroot 之类的工具构建感觉有点麻烦,而且还有许多库需要编译移植到文件系统中,为了加快开发进度,利用了正点原子imx6ull开发板现有的rootfs压缩文件。
2 思路与问题
思路很简单,将现有的压缩包放入虚拟机解压,然后把自己的程序和配置文件放进去,再删除一些不需要的库(减少文件系统大小),最后重新打包成 tar.bz2 格式,烧录进系统就行了。明明这种思路是完全行得通的,不过就在我烧录系统之后,却出现了事故。
can't create directory Read-only file system
uboot 加载 rootfs 时报错,提示不能挂载只读文件系统。
2.1 只读问题
查阅网上的资料,还有正点原子 imx6ull 开发板的 datasheet,发现需要修改 uboot 的环境参数 bootargs 的值。
在 bootargs 环境参数里面,加上 rw,说明制作文件系统可读可写,uboot 才可以加载。
2.2 无权限问题
只读问题解决之后,文件系统总该可用挂载了吧…可惜,并没有。设置好参数,重新启动系统之后,uboot 挂载 rootfs 依然报错,大致原因就是:非 root,没有权限对文件系统进行操作。
无权限的报错提示,让我有了一些思路,可能是虚拟机中文件系统的所有文件的所属用户和所属组的问题,于是我修改了文件系统下所有文件的归属。
chown -Rf root:root ./rootfs/*
然后重新打包文件系统,烧录。
3 总结
终于,经过一番折腾,系统顺利开机,熟悉的命令行界面出现在我眼前。