以Funtoo为基础的Linux桌面系统(2)

构建自己的Linux桌面系统的第一步,就是根据Funtoo网站上提供的wiki页面,编译,安装和配置基础系统(base system)。这包括

如果你对类Unix系统的基本概念非常了解,这个过程看上去应该是水到渠成的。安装的细节虽然无需多言,Funtoo提供的指南已经十分详尽,但这里却有一些非常有趣的概念值得讨论。

第一,这个安装过程的全部魔法都在chroot命令上。我一直以为这个命令是类Unix操作系统设计的精华之一。为什么这么说呢?众所周知,Linux操作系统对它的跟文件系统有一个必要的假设。即,根文件系统是一棵树。而这个树的根就是“/”。像硬盘,SSD之类的块设备可以通过“挂载”(mount)的方式,将实体的存储设备挂载到这棵逻辑中存在的树的任意节点上。当系统在这棵树上创建新文件或者修改任何既有内容时,这种变更就会被反映到实际的存储设备上。树结构的妙处在于,任意一棵子树和拥有该子树的“大树”总是相似的。当你将准备好的硬盘分区挂载到这棵树上,并且chroot进入这个树的子树,你就的到了一个全新的“根文件系统”。但于此同时,系统运行的却是原来大树中预装的Linux内核,由此来帮助新文件系统的生成。这种方法在Windows系统中听起来有点像天方夜谭但是在Linux系统中,却是司空见惯。采用这种方法可也在多个不同的根文件系统之间无缝的切换,比如,你可以在一个64位系统的根文件系统的某一棵子树上创建一个32位系统子树。这对于很多系统测试和环境搭建都不无裨益。一个典型的例子就是debian系统采用chroot的方式帮助开发者创建一个便于创建软件包的标准环境,由此,.deb包才可以避免现有系统不同配置的影响而适用与各种不同配置的系统。

第二,这个安装过程实际上那个暗示了如何从无到有得建造一个操作系统。Linux操作系统的发端就是1990年Linux写给邮件列表的那封信。在已有系统软件——包括编译器,链接器的帮助下,生产内核代码才是可能的。用软件来制造软件。这是一个非常自然的过程。我记得有一句话叫“以机器制造机器标志这第二次工业革命的开始”。而以软件制造软件也是现在软件行业的一个重要标志。也只有当这种衍生和扩展的能力和半导体的几何级数式的蓬勃发展结合起来的时候,这种能力才创造了极大的社会财富。

第三,一些配置和编译的选择也值得讨论一下。

首当其冲的就是UEFI和GPT分区。区别与传统的BIOS和MBR分区,这两个技术都有一些进步。GPT几乎是必要的(desirable)。但是,如果你的系统主板是建立在UEFI之上的话,Linux系统可能会遇到一些问题。这并不是Linux的错,而是因为大多说UEFI固件都缺乏必要的测试问题百出,以至于根本无法保证系统兼容性。对于后面这一点我实在没有什么好的建议,大概能说的只有一条,选择UEFI主板的时候一定要先调查一下再做决定。

创建分区和创建文件系统的分离是让那些在Windows中模糊成一团的操作系统概念变得更加清晰了。对文件系统的选择又是另一个问题。一般来说根据用户的实际应用应该选择不同的文件系统,比如,一些文件在处理“小文件”的时候有明显优势,一些文件系统有灵活配置的特性等等。当然,ext4文件系统适用于大多数桌面应用。虽然这个指南中仅仅提供了传统的采用/dev/sd*方式记述的/etc/fstab,但实际上Funtoo也支持UUID作为标记/etc/fstab中使用。

对很多中文用户来说,键盘布局不是问题。因为,大多数在中国销售的计算机实际上是直接使用英语键盘布局的,所以/etc/conf.d/keymaps中采用默认值没有什么问题。我的情况比较特殊,因为日语键盘布局与英文键盘布局存在相当大的差异。我必须在上面提到的文件中制定键盘布局为jp106。如果你想在运行时改变系统的键盘布局,可以使用下面的命令。

setxkbmap xx   ## xx 是两个字母的国家代码,比如us

当编译安装好的内核和基础系统可以启动以后,我尝试继续跟随Funtoo的指南对基础系统升级并且安装了X Server和必要的系统软件。这样,一个极简洁的Linux操作系统诞生了。

3 thoughts on “以Funtoo为基础的Linux桌面系统(2)

发表评论