构建不同发行版Linux根文件系统(学习笔记)
一、根文件系统的原理
1、发行版=内核+rootfs。这种说法正确吗?
文件系统和内核是完全独立的两个部分。一个内核不是一套完整的操作系统。bootloader加载了内核,内核启动,加载文件系统,进入Linux系统。
根文件系统的特殊之处在于,它是内核启动时所挂载(mount)的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如rcS,inittab)和服务加载到内存中去运行。
内核相同,但是初始化脚本和服务不一样,就会导致不同的操作系统版本。
Linux发行版 = Linux内核 + 根文件系统吗?
1
不完全是。
发行版这个词本身并没有非常严谨的定义。 发行版包含几个方面官方软件仓库。比如:
●仓库里有哪些软件,没有哪些软件,打包方式(deb, rpm),命名规则等等。
●软件更新的策略。比如定期大版本更新,期间小版本更新。又或者滚动更新,即Arch系的策略。
●默认的系统配置方式。比如/etc里的一些配置文件的内容,结构。选用何种系统组建等。
2、根文件系统在系统启动中什么时候挂载?
先将/dev/ram0挂载,而后执行/linuxrc.等其执行完后。切换根目录,再挂载具体的根文件系统.根文件系统执行完之后,也就是到了Start_kernel()函数的最后,执行init的进程,也就第一个用户进程。对系统进行各种初始化的操作。
3、最小根文件系统
1、/linuxrc:由busybox构建,为当前系统提供了一整套的shell命令程序集。譬如vi、cd、mkdir、ls等。/bin /sbin等目录下的shell命令。
2、/dev目录下的设备文件。
3、/etc:应用层配置文件,被/linuxrc所调用执行。inittab在/etc目录下,属于一个运行时配置文件,是文本格式,被/linuxrc(也就是busybox)执行时所调用起作用。1
5、/lib目录下的库文件
6、/sys和/proc目录。linux中的虚拟文件系统。
7、/usr是系统的用户所有的一些文件的存放地,这个东西将来busybox安装时会自动生成。
二、尝试使用不同发行版提供的根文件系统启动
1、基于arch linux arm的根文件系统
方法:
镜像:
- Archlinuxarm / AUR的国内镜像源(for Banana Pi / Raspberry Pi , etc)
- Index of /archlinuxarm/os/exynos/ | 清华大学开源软件镜像站
- linux-odroid-x (armv7h) | Packages | Arch Linux ARM
- hardkernel/linux: Linux kernel source tree
2、基于Ubuntu的根文件系统
3、构建Debian文件系统
基于全志F1C200s芯片的超迷你&低成本的Linux开发板.