第6章 构建根文件系统
在第3章中,我们通过手工的方式展示了从零构建根文件系统的过程。在本章中,我们将构建一个相对完善的根文件系统,但是我们不再从零开始,毕竟一旦熟悉了原理后,余下的就是简单的重复了。第2章编译工具链时曾通过参数"—with-sysroot"指定了目标系统的文件安装的目录,后续所有的为目标系统编译的文件全部安装到了这个目录下。因此,在本章中,我们就基于这个目录下的文件构建运行在真实系统上的根文件系统。
为了更高效地开发调试,我们首先打通了目标系统的网络,建立了宿主系统与目标系统的桥梁,包括配置内核支持网络协议以及网卡驱动,并安装了用户空间的网络配置工具。如此,我们就可以远程登录到目标系统上进行调试,并且可以动态更新文件(除内核和initramfs外)而不必再每次都重启系统。
几乎所有的现代操作系统都提供图形用户界面,Linux也不例外。麻省理工的开发者们为UNIX系统开发了X窗口系统(X Window System,简称X或者X11)作为图形环境。除了X外,另外一个需要关注的图形环境是Wayland。虽然Wayland的目标是替代X,并且开源社区也支持Wayland向着这个方向发展,但是Wayland距广泛使用还有一段路要走。因此,在本章中,我们依然以目前广泛使用的X构建基础的图形环境,并安装了GTK作为更上层的图形库。事实上,Wayland更像是X的一次整合或者重构,在第8章探讨Linux的图形原理时,我们会拿出一点篇幅讨论Wayland,在那里我们会看到,Wayland和X之间并无本质区别。