经过前两篇的步骤, 现在板子上已经有了系统内核镜像文件,就差提供一个内核可挂载的根文件系统了.  制作根文件系统的方式有很多种,  如果是第一次制作根文件系统建议使用busybox,  因为busybox整体结构比较简陋,

  纯粹是提供了一些基础工具,  还需要开发者自己移植一些库文件,  制作一些脚本文件,  移植一些自己需要的文件,  但是在一步步制作的过程中能学会很多东西.  但是直接使用Ubuntu文件系统的好处就是能在较短的时

间内获得一个完善的文件系统. 


    首先在官方网站中下载,在这个界面中可以选择想要安装的版本:

image.png



然后点击想要下载的版本,然后点release,然后在如下界面选择arm64的.gz压缩包:

image.png



 下载到电脑上的ubuntu系统,mkdir一个目录作为制作根文件系统的根目录(例如这个目录就叫rootfs吧, 下文就称这个文件夹为rootfs了),  然后在这个目录下解压.  然后这个目录下就出现了齐全的根文件系统目录.  然后安装qemu:


linux>  sudo apt-get install qemu-user-static

并且把安装的qemu的arm工具拷贝到rootfs的相关目录下, 这是因为我们的rootfs作为一个根目录来说使用起来还缺少一些工具,比如vim,sudo和一些网络工具,  所以之后要在自己电脑上的命令行窗口中将这个rootfs

目录挂载为根目录来下载一些必要文件, qemu-arm-static工具通过动态二进制翻译(dynamic binary translation)技术将目标体系结构的指令集转换为主机操作系统所支持的指令集,从而使得在不同体系结构之间进

行二进制兼容性,我们用它将arm架构下运行的文件在x86架构上运行:


linux>  sudo cp /usr/bin/qemu-arm-static ./rootfs/usr/bin/

然后我们就可以使用rootfs目录下的apt命令来安装工具了,再此之前将其挂载为根文件系统:


linux>  sudo mount -t proc /proc ./rootfs/proc

linux>  sudo mount -t sysfs /sys ./rootfs/sys

linux>  sudo mount -o bind /dev ./rootfs/dev

linux>  sudo mount -o bind /dev/pts ./rootfs/dev/pts

linux>  sudo chroot /home/(your name)/rootfs

 这里mount -t用来指定主机下一些特殊类型的文件系统挂载到制作的根文件系统下,mount -o用于将主机/dev下的设备文件镜像挂载在rootfs的/dev目录下,  这些做完后用chroot切换当前终端的根文件系统位置.  


    一般来说官方给的apt源是不好用的,   所以接下来我们要给它换源,  在网上清华源,中科大源等都是很好的源.  但是注意这里要使用RISK架构的源,  也就是arm源,  比方说是清华源:


image.png


注意arm源是ubuntu-ports接口的.  复制源配置代码.  因为rootfs作为根目录,其中中没有安装vim,  可以再打开一个终端窗口将这个代码粘贴到rootfs/etc/apt/sources.list中.  然后在将rootfs作为根文件系统的终端中输入:


linux>  apt update

 这时一般来说会报错,  经过排查报错信息,发现提示说:


Temporary failure resolving 'mirrors.tuna.tsinghua.edu.cn'

不能resolving意思是不能解析后面那个域名,  经过排查发现官方提供的根文件系统中 etc/resolv.conf文件为空,  这个文间描述了DNS服务器的ip地址,  这里我们不使用本地DNS服务器地址,  直接配置为谷歌提供的根服务器地址,  在文件中输入:


nameserver 8.8.8.8

options edns0 trust-ad

search localdomain

然后再在将rootfs的终端中使用apt应该就可以成功连接到源网站了.


接着用apt安装一些常用工具,这个根据个人喜好决定,  在这里举例几个:


vim, sudo, kmod, net-tools, ethtool, ifupdown, language-pack-en-base, rsyslog, htop, iputils-ping.


接着重启电脑, 也可以先exit推出将rootfs作为根文件系统的终端,然后再一个个umount刚刚挂载的目录.


接着将sd卡FAT文件系统后面空闲的位置格式化为EXT4文件系统,  将rootfs中所有目录全拷贝到这个分区中,启动开发板即可.  如内核找不到根文件系统检查u-boot中的bootargs变量是否正确,  详细描述在上一篇文章.



————————————————

版权声明:本文为CSDN博主「Skyler.Gao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/m0_54251560/article/details/131711075