ArLinux 2010-02-06
特别值得一提的是Ubuntu Linux有很多值得学习的地方,这里我们主要介绍Ubuntu Linux,包括介绍Ubuntu Linux等方面。安装Ubuntu Linux的预备知识。
本文涉及到的很多内容是只是粗略的描述,如想深入了解更多的相关知识,请求助搜索引擎,而我的唯一建议是,请尽量看新的文章,Ubuntu Linux的发展日新月异,老旧的Ubuntu Linux文档很可能会对读者认识Ubuntu Linux产生误导。
1) 硬盘分区
一块硬盘可以分为四个主分区,或三个主分区加上一个扩展分区。所谓的扩展分区,其实只是一个容器,实际上,我们并不直接使用扩展分区。在扩展分区内,我们可以进一步划分逻辑分区。一般认为在一个扩展分区内,能分出无数个逻辑分区。正因为有了逻辑分区,一块硬盘才能被分成很多个分区。
另一个可能涉及的概念是活动分区。电脑加电启动时,BIOS会寻找硬盘上有活动分区标识的分区寻找操作系统引导程序。如果一块硬盘上没有活动分区,则即使这块硬盘上有引导程序和完好的操作系统,也将无法成功启动。一块硬盘上有且只能有一个活动分区,而且只有主分区才能成为活动分区。
2) Ubuntu Linux中的硬盘分区
与Windows不同,Ubuntu Linux并不是用C, D, E, F等盘符来标识每一个分区的,而是用一系列设备文件来标识。Ubuntu Linux把一切硬件设备都当成文件。比如,Ubuntu Linux下,四个主分区分别对应/dev /sda1, /dev/sda2, /dev/sda3和/dev/sda4。其中,/dev是硬件设备文件所在的目录(即:文件夹,下同),sd代表SCSI Disk,a代表第一个SCSI设备,数字1,2,3,4分别代表了四个主分区。
如果你不知道什么是SCSI Disk,不用担心,因为你并不需要知道它究竟是什么。通常,如果你的电脑中只有一块硬盘,那么,这块硬盘一定是/dev/sda。 可能你以前接触过Ubuntu Linux,或曾经在一些老旧的资料中看到过/dev/hda代表第一个主IDE通道上的硬盘。那么,你现在已经无需知道这些了。因为Ubuntu Linux已经取消了用hd和sd区分不同类型的硬盘的机制,取而代之的,用sda统一代表电脑中的第一块硬盘。
Ubuntu Linux下,/dev/sdaX中的数字X的编号是有限的。在Ubuntu Linux下,最大的分区编号是16。因此,主分区和扩展分区编号占用 1~4,逻辑分区占用5~16。也就是说,即使你的硬盘中只有一个主分区(如,/dev/sda1)和一个扩展分区(/dev/sda2),剩下的两个主分区编号: /dev/sda3, dev/sda4 也不会分配给逻辑分区。第一个逻辑分区一定是从/dev/sda5开始编号的。这点与Windows下盘符的编制类似。如:A盘一定是3.5英寸软驱,B盘一定是5.25英寸软驱,而从C盘开始才是硬盘分区。即使电脑上没有软驱,第一个硬盘分区的编号也是C,而不是A。
3) 引导程序与MBR(Master Boot Record)
引导程序是负责将操作系统的内核从硬盘上加载到内存中的程序。在使用Windows的时候,我们似乎从没有关心过引导程序。不过安装过双Windows系统的读者一定认识Windows的引导程序,即使你从来没有意识到这一点。Windows的引导程序叫做OS Loader,即操作系统加载器,负责在启动的时候根据boot.ini中的配置信息,在屏幕上显示操作系统选择菜单,然后根据用户的选择引导合适的操作系统。
Ubuntu Linux下有两种引导程序:一种叫做Lilo,另一种叫做Grub。Lilo是一个非常经典的引导程序,最初因为它不支持引导位于1024柱面后的Ubuntu Linux内核,而被Grub所取代。新版的Lilo已经能够支持引导1024柱面后的Ubuntu Linux内核了。现在,几乎所有的主流发行版的Ubuntu Linux都使用Grub作为默认的引导程序。Ubuntu Linux的引导程序与Windows的OS Loader类似。比如,Grub的作用就是负责读取配置文件(menu.lst),显示操作系统的选择菜单,并根据用户的选择引导合适的操作系统。MBR又称主引导记录,位于硬盘的第一个柱面的第一个磁道的第一个扇区中,大小为512B,引导程序就位于MBR中。
BIOS在开机过程中,会读取并运行MBR中的引导程序,由它来加载操作系统内核。同样位于第一个柱面的第一个磁道的第一个扇区中的还有主分区表。因为主分区表的大小有限,因此只能存下四个分区的信息,这也是一块硬盘只能分为四个主分区的原因。也许你也猜到了,还有一个叫做“扩展分区表”的东东,位于扩展分区的最前面,保存了逻辑分区的信息。Ubuntu Linux安装时,通常会把Grub安装到MBR。这样,你就可以用Grub同时引导Ubuntu Linux和Windows了。
4) 文件系统和SWAP
在一个硬盘分区可以使用之前,必须格式化成特定的文件系统。Windows下常见的文件系统有FAT32和NTFS。一些U盘的文件系统还可能是FAT(16)格式的。关于FAT(16)、FAT32和NTFS这三种文件系统之间的区别,你只要知道FAT(16)支持的最大单个文件为2GB,FAT32支持的最大单个文件为4GB,而NTFS则可以支持大于4GB的单个文件。Ubuntu Linux支持很多种不同类型的文件系统。Ubuntu Linux能够对FAT16/32和NTFS进行读写。
但是因为这两种文件系统不支持Ubuntu Linux文件权限,因此Ubuntu Linux操作系统无法安装在这两种文件系统的分区中。常见的用于安装Linux的文件系统主要有EXT3、ReiserFS、XFS和JFS等。关于Ubuntu Linux支持的文件系统,可以列出长长的一串来。通常我们都会使用EXT3作为默认的文件系统。关于各种文件系统孰优孰劣的争论,实在是太多了,个人的看法是,我们使用Ubuntu Linux是作为桌面系统来使用的,大多数情况下,文件系统的性能并不是我们所需要考虑的大问题。也许你会看到很多对EXT3的负面评价,但是EXT3毕竟是最老牌,最久经考验的Linux文件系统,所以选择它没错。
事实上,如果安装的是Gentoo Linux,则选择ReiserFS或许会更好。因为ReiserFS处理大量小文件的性能非常出众。此外,你可能还会见到一种叫做EXT2的文件系统,正如其名字所暗示的那样,EXT3是EXT2的升级版本。Linux SWAP,即Linux的交换分区,也是一种文件系统,它的作用是作为Linux的虚拟内存。在Windows下,虚拟内存是一个文件: pagefile.sys,而Linux下,虚拟内存需要使用独立分区,这样做的目的,据说是为了提高虚拟内存的性能。通常,虚拟内存的大小设置为物理内存的1~2倍。
5) Linux的文件结构、挂载与分区建议
Windows的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区),如:C,D,E,F等。Linux的文件结构是单个的树状结构。最顶部的为根目录,即/。在根目录下,分为多个子目录,包括/bin、/boot、/dev、/etc、/home、/lib、/media、/mnt、/opt、/proc、/root、/sbin、/tmp、/usr和/var等。这些目录的具体作用在这里就不做详细介绍了。
磁盘分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。显然,根目录是所有Ubuntu Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。上面还提到,Ubuntu Linux交换分区也需要独立使用一个分区,因此,安装一个Ubuntu Linux至少需要两个分区。(事实上,只使用一个分区安装Linux也是可能的,而且,如果电脑的物理内存足够大,交换分区并不是必须的)在不同的Ubuntu Linux安装教程中,不同的作者阐述了各种不同的分区建议,本文也不例外。以下的一些建议,有很多都是个人的喜好,因此读者并不一定要完全按照这些建议进行分区,选择最适合自己的方案才是最好的。
/boot:在很多老旧的教程中,都会让用户在/boot目录上挂载一个大小为100MB左右的独立分区,并推荐把该/boot放在硬盘的前面,即1024柱面之前。事实上,那是Lilo无法引导1024柱面后的操作系统内核的时代遗物了。当然,也有作者宣称,独立挂载/boot的好处是可以让多个Ubuntu Linux共享一个/boot。其实,无论是基于上述的哪种理由,都没有必要把/boot分区独立出来。
首先,Grub可以引导1024柱面后的Ubuntu Linux内核;其次,即使是安装有多个Linux,也完全可以不共享/boot。因为/boot目录的大小通常都非常小,大约20MB,分一个100MB的分区无疑是一种浪费,而且还把硬盘分的支离破碎,不方便管理。另外,如果让两个Linux共享一个/boot,每次升级内核,都会导致Grub的配置文件冲突,带来不必要的麻烦。
而且,不独立/boot分区仅仅占用了根目录下的大约20MB左右的空间,根本不会对根目录的使用造成任何影响。值得注意的是,随着硬盘容量的增大,无法引导Linux内核的现象再次出现,这也就是著名的137GB限制。很遗憾,Grub是无法引导137GB之后的分区中的Ubuntu Linux内核的。如果你不巧遇到了这样的情况(我就遇到过),你就要考虑把/boot独立挂载到位于137GB前方的独立分区中,或者索性就把 Ubuntu Linux的分区都往前移动,让根目录所在分区位于137GB之前。
/usr/local:建议把/opt、/usr或/usr/local独立出来的教程,基本上也是非常老的了。使用Ubuntu时,我们一般都是使用系统的软件包管理器安装软件,很少自己编译安装任何软件。而建议独立/usr、/opt、/usr/local的理由无非是为了重装系统时不再重新编译软件而直接使用早先编译好的版本。因此对于大多数的普通用户来说,这个建议通常是没有意义的。
/var:建议把/var和/tmp独立出来的教程通常是面向服务器的。因为高负载的服务器通常会产生很多日志文件和临时文件,而这些文件又经常改变,因此把/var和/tmp独立出来,有利于提高服务器的性能。我们使用Ubuntu是做桌面的,甚至有些用户根本从来就没有关心过系统日志这玩意儿,所以根本没有必要独立的为/var和/tmp挂载分区。
/home:这可能是唯一一个值得独立挂载分区的目录了。/home是用户文件夹所在的地方。一个用户可能在/home/user中存放了大量的文件资料,如果独立挂载/home,即使遇到Ubuntu系统无故身亡的尴尬局面,也可以立刻重装系统,取得自己的文件资料。因此,/home是唯一可以考虑独立挂载分区的目录。
看了上面的一些介绍,你可能已经知道我的建议了:
双分区方案
/:至少3GB,建议根据实际情况,尽可能多分一些,特别是喜欢玩各式软件的读者。SWAP:物理内存小于等于512MB,建议分配实际物理内存容量2倍大小的SWAP;物理内存大于512MB,建议分配与物理内存等容量的SWAP。
三分区方案