承接前篇,我们的linux内核终于制作好了,也顺利的加载起来了,但是由于没有根文件系统,所以说加载到最后,是无法进入系统的。而本节内容则是讲解如何来制作根文件系统的。
BuildRoot创建根文件系统
由于BuildRoot工具可以构建linux的根文件系统,而且其配置项内部集成了很多我们常用的工具,所以今天它就是我们的主角。在开始之前,我们需要确保机器上安装了编译所需要的的依赖,如下:
1 | apt- get install linux-headers-$(uname -r) |
此命令可以检测我们机器上缺少的一些依赖,当然,在编译过程中,我们肯定还需要安装一些其他的依赖,到时候在编译过程中,出现什么依赖错误,我们就利用apt install命令安装缺少的组件就行了。
之后开始下载我们的BuildRoot组件:
1 2 3 4 | wget https: //buildroot.org/downloads/buildroot-2017.08.tar.gz tar xvf buildroot-2017.08.tar.gz cd buildroot-2017.08/ make menuconfig |
menuconfig配置
打开menuconfig后,我们可以看到本次编译需要设置的选项,都列在这里了,针对以下几个选项,我们可以进行设置以下,画框的部分需要注意:
Target options选项:
Tool chain选项,使用内置交叉编译链,出问题概率小:
System configuration配置如下,注意设置密码:
其他的就没什么了,大家可以翻阅其他选项,安装一些自己需要安装的组件即可。
make编译
保存menuconfig之后,在根目录位置输入如下命令开始制作:
1 | make |
需要提醒的是,整个构建过程非常长,大概需要2小时的样子,而且在编译过程中,需要下载很多组件,这里有一些常用的组件列表,我们把其解压到BuildRoot根目录下的dl目录中,由于在编译过程中,linux内核等也需要下载,但是下载地址非常慢:
1 2 | https: //cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.12.10.tar.xz https: //downloads.uclibc-ng.org/releases/1.0.26/uClibc-ng-1.0.26.tar.xz |
一个是linux内核文件,一个是依赖包,我们可以用迅雷等工具下载好,然后把下载好的包也放到dl目录即可。就可以免去编译的时候下载耗费的时间了。
在编译过程中,一般会遇到如下问题:
1 | Please port gnulib freadahead.c to your platform! 问题 |
此问题目前已经有解决方法了,可以点击这里查看,具体解决方案就是,按照图示进入进入buildroot/output/build/host-m4.1.4.17文件夹,然后执行如下命令即可:
1 2 | sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h |
而其他一些问题,基本上都是组件缺少的问题,利用apt install命令可以搞定。
漫长的等待之后,到这个界面,就说明编译成功了:
我们此时可以进入output/images目录中,就可以看到rootfs.tar文件在那里了。
文件烧写
由于之前我们只做好了第二分区,也就是/dev/sdb2,此时我们就可以将我们的根文件系统烧写进我们的tf卡了。
插上我们的usb读卡器,由于sdb2没法直接访问,所以我们需要挂载,整体需要执行如下命令:
1 2 3 4 5 6 7 | sudo mkdir /mnt/sdb2 //创建一个临时目录 sudo mount /dev/sdb2 /mnt/sdb2 //将sdb2挂载到此临时目录 sudo cp rootfs.tar /mnt/sdb2 //拷贝到sdb2中,此时sdb2中已经能看到跟文件 sudo tar -xf rootfs.tar //进入目录并解压 sudo rm rootfs.tar //删掉tar sudo sync sudo umount /dev/sdb2 |
这样,重新插拔一次usb读卡器,我们就可以看到文件拷贝进来了。
然后将卡插回荔枝派nano,连接电脑,打开minicom,可以看到串口输出信息如下:
参考资料:
根文件系统编译 — 荔枝派Nano 全流程指南 documentation (lichee.pro)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2014-06-12 MVC出错案例之一:主外键映射失败