第三章 主机规划与磁盘分区

1.  以下列出几个常用的硬件与Linux distributions搭配的网站:

    1)  Red Hat的硬件支持:https://hardware.redhat.com/?pagename=hcl

    2)  Open SuSE的硬件支持:http://en.opensuse.org/Hardware?LANG=en_UK

    3)  Mandriva的硬件支持:http://hcl.mandriva.com/

    4)  Linux对笔记本电脑的支持:http://www.linux-laptop.net/

    5)  Linux对打印机的支持:http://www.openprinting.org/

    6)  显示适配器对XFree86/Xorg的支持:http://www.linuxhardware.org/

    7)  Linux硬件支持的中文HowTo:http://www.linux.org.tw/CLDP/HOWTO/hardware.html#hardware

2.  各个组件或装置在Linux底下都是『一个档案!』。例如,IDE接口的硬盘的文件名即为/dev/hd[a-d],其中, 括号内的字母为a-d当中癿任意一个。在Linux中,几乎所有硬件装置档案都在/dev这个目录内:

     1)  IDE硬盘机 /dev/hd[a-d] 

     2)  SCSI/SATA/USB硬盘机 /dev/sd[a-p] 

     3)  USB快闪盘  /dev/sd[a-p](与SATA相同) 

     4)  软盘驱动器 /dev/fd[0-1] 

     5)  打印机 25针: /dev/lp[0-2]   USB: /dev/usb/lp[0-15] 

     6)  鼠标 USB: /dev/usb/mouse[0-15] PS2: /dev/psaux 

     7)  当前CDROM/DVDROM /dev/cdrom 

     8)  当前癿鼠标 /dev/mouse 

     9)  磁带机 IDE: /dev/ht0 SCSI: /dev/st0

     10)  网络卡:/dev/eth[0-n]

     11)  RAID : /dev/md[0-15]

3.  更多Linux核心支持的硬件装置与文件名,可以参考如下网页: http://www.kernel.org/pub/linux/docs/device-list/devices.txt

4.  以IDE接口来说,由于一个IDE扁平电缆可以连接两个IDE装置,又通常主机都会提供两个IDE接口,因此最多可以接到四个IDE装置。这两个IDE接口通常被称为IDE1(primary)及IDE2(secondary), 而每条扁平电缆上面的IDE装置可以被区分为Master与Slave。这四个IDE装置的文件名为:

IDE\JumperMasterSlave
IDE1(Primary)/dev/hda/dev/hdb
IDE2(Secondary)/dev/hdc/dev/hdd

假设你的主机仅有一个IDE接口的磁盘,而这个磁盘接在IDE2的Master上面他在Linux操作系统里面的装置文件名为/dev/hdc。

5.  由于SATA/USB/SCSI等磁盘接口都是使用SCSI模块来驱动的, 因此这些接口的磁盘装置文件名都是/dev/sd[a-p]的格式。SATA/USB接口的磁盘根本就没有一定癿顺序,这个时候就得要根据Linux核心侦测到磁盘的顺序了。如果你的PC上面有两个SATA磁盘以及一个USB磁盘,而主板上面有六个SATA的插槽。这两个SATA磁盘分别安插在主板上的SATA1, SATA5插槽上。由于Linux是使用侦测到的顺序来决定装置文件名,并非与实际插槽代号有关,因此装置癿文件名如下:

    1) SATA1插槽上的文件名:/dev/sda

    2) SATA5插槽上的文件名:/dev/sdb

    3) USB磁盘(开机完成后才被系统侦测到):/dev/sdc

6.  整块磁盘的第一个扇区特别重要,因为它记录了整块磁盘的重要信息:

    1)  主要启动记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446 bytes

    2)  分区表(partition table):记录整块硬盘分区的状态,有64 bytes

MBR是很重要的,因为当系统在开机的时候会主动去读取这个区块的内容,这样系统就会知道你的程序放在哪里且该如何进行开机。 如果你要安装多重引导的系统,MBR这个区块的管理就非常非常的重要了。

7.  磁柱(Cylindar) 是文件系统的最小单位,也就是分区的最小单位。我们就是利用参考对照磁柱号码的方式来处理的。 在分割表所在的64 bytes容量中,总共分为四组记录区,每组记录区记录了该区段的启始与结束的磁柱号码:


第三章  主机规划与磁盘分区
上图中我们假设硬盘只有400个磁柱,共分割成为四个分区,第四个分区所在为第301到400号磁柱的范围。那么这四个分区在Linux系统中的装置文件名就是/dev/hda1~/dev/hda4。当你的操作系统为Windows时,那么第一到第四个分区的代号应该就是C, D, E, F。由于分区表就只有64 bytes,最多只能容纳四个分区的记录, 这四个分区的记录被称为主要(Primary)或扩展(Extended)分区。

8.  在Windows/Linux系统中, 我们是通过扩展分区(Extended)的方式来处理多于四个分区的情况的。扩展分区的想法是: 既然第一个扇区所在的分割表只能记录四笔数据, 那就利用额外的扇区来记录更多的分区信息:


第三章  主机规划与磁盘分区
在上图当中,硬盘的四个分区记录仅使用到两个,P1为主要分区,而P2则为扩展分区。扩展分割的目的是使用额外的扇区来记录分区信息,扩展分割本身并不能被拿来格式化。然后我们可以通过扩展分区所指向的那个区块继续作分区的记录。 如上图右下方那个区块,继续分割出五个分区, 这五个由扩展分区继续切出来癿分区,就被称为逻辑分区(logical partition)。 由于逻辑分区是由扩展分区继续分割出来的,所以它可以使用的磁柱范围就是扩展分区所设定的范围,也就是图中的101~400。上述的分区在Linux系统中的装置文件名分别如下:

    P1:/dev/hda1

    P2:/dev/hda2

    L1:/dev/hda5

    L2:/dev/hda6

    L3:/dev/hda7

    L4:/dev/hda8

    L5:/dev/hda9

之所以没有hda3和hda4是因为前面四个号码都是保留给Primary或Extended分区用的。扩展分区最多只能有一个(操作系统的限制),主分区最多可以有四个。逻辑分区的数量依操作系统而不同,在Linux系统中,IDE硬盘最多有59个逻辑分区(5号到63号), SATA硬盘则最多有11个逻辑分区(5号到15号)。

9.  CMOS是记录各项硬件参数并嵌入在主板上面的储存器,BIOS则是一个写入到主板上的一个固件(固件也就是firmware是写入到硬件上的一个软件程序)。这个BIOS就是在开机的时候,计算机系统会主动执行的第一个程序。接下来BIOS会去分析计算机里面有哪些储存设备,BIOS会依据使用者的设定去取得能够开机的硬盘(或别的存储设备), 并且到该硬盘里面去读取第一个扇区的MBR位置。 MBR这个仅有446 bytes的硬盘容量里面会放置最基本的开机管理程序, 接下来就是MBR内的开机管理程序的工作了。

10.  开机管理程序的目的是在加载(load)核心档案, 由于开机管理程序是操作系统在安装的时候所提供的,所以他会认识硬盘内的文件系统格式,因此就能够读取核心档案, 然后接下来就是核心档案的工作,之后就是操作系统的任务。

11.  整个开机流程到操作系统之前的动作应该是这样的:

    1)  BIOS:开机主动执行的固件,会认识第一个可启动操作系统的装置;

    2)  MBR:第一个可启动装置的第一个扇区内的主要启动记录区块,内含开机管理程序;

    3)  开机管理程序(boot loader):一个可读取核心档案来执行的软件;

    4)  核心档案:开始操作系统的功能...

BIOS不MBR都是硬件本身会支持的功能,至于Boot loader则是操作系统安装在MBR上面的一套软件了。由于MBR仅有446 bytes,因此这个开机管理程序是非常小而精致的。 这个boot loader的主要任务有:

    1)  提供选单:用户可以选择不同的开机项目,这也是多重引导的重要功能。

    2)  载入核心档案:直接指向可启动的程序区段来开始操作系统;

    3)  转交其他loader:将开机管理功能转交给其他loader负责。

12.  计算机系统里面可能具有两个以上的开机管理程序,开机管理程序除了可以安装在MBR之外, 还可以安装在每个分区的启动扇区(boot sector)。假设你的计算机只有一个硬盘,里面切成四个分区,其中第一、二分区分别安装了Windows及Linux,并且MBR内安装的是可同时认识Windows/Linux操作系统的开机管理程序, 那么整个流程可以如下:


第三章  主机规划与磁盘分区

在上图中,MBR的开机管理程序提供两个选单,选单一(M1)可以直接加载Windows的核心档案来开机; 选单二(M2)则是将开机管理工作交给第二个分区的启动扇区(boot sector)。当使用者在开机的时候选择选单二时, 那么整个开机管理工作就会交给第二分区的开机管理程序了。 当第二个开机管理程序启动后,该开机管理程序内(上图中)仅有一个开机选单,因此就能够使用Linux的核心档案来开机。

13.  Linux在安装的时候,你可以选择将开机管理程序安装在MBR或个别分区的启动扇区, 而且Linux的loader可以启动设定选单(就是上图的M1, M2...),所以你可以在Linux的boot loader里面加入Windows开机的选项;但Windows在安装的时候,他的安装程序会主动地覆盖掉MBR以及自己所在分区的启动扇区,你没有选择的机会,而且它没有让我们自己选择选单的功能。如果先安装Linux再安装Windows的话,那MBR的开机管理程序就只会有Windows的项目,而不会有Linux的项目 (因为原本在MBR内的Linux的开机管理程序就会被覆盖掉)。你只要用各种方法来处理MBR的内容即可。 例如利用全中文的spfdisk(http://spfdisk.sourceforge.net/)软件来安装认识Windows/Linux的管理程序,也能够利用Linux的救援模式来挽救MBR即可。

14.  所谓的『挂载』就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下; 也就是说,进入该目录就可以读取该分区的意思。这个动作我们称为『挂载』,那个进入点的目录我们称为『挂载点』。 由于整个Linux系统最重要的是根目录,因此根目录一定需要挂载到某个分区的。 至于其他的目录则可依用户自己的需求来给予挂载到不同的分区。以下图为例:


第三章  主机规划与磁盘分区
 

上图中假设硬盘分为两个分区,partition 1是挂载到根目录,partition 2则是挂载到/home这个目录。 这也就是说,当我癿数据放置在/home内的各子目录时,数据是放置到partition 2的,如果不是放在/home底下的目录, 那数据就会被放置到partition 1。判断某个文件在哪个partition底下通过反向追踪即可。以上图来说, 当我们想要知道/home/vbird/test这个文件在哪个partition时,由test --> vbird --> home --> /,看哪个『进入点』先被查到那就是使用的进入点了。 所以test使用的是/home这个进入点而不是/。

15.  在默认的情况下,Linux是将光驱的数据放置到/media/cdrom里头去的。/usr是Linux的可执行程序及相关的文件摆放的目录, 所以他的容量需求蛮大的。

16.  通常小型企业或者是学校单位大多仅会有一条对外的联线,然后全公司/学校内的计算机全部通过这条联线连到因特网上。 此时我们就得要使用IP分享器来让这一条对外联线分享给所有的公司内部员工使用。单利用Linux作为NAT主机来分享IP是很不理智的,因为PC的耗电比IP分享器要大得多。但Linux NAT还可以额外地加装很多分析软件, 可以用来分析客户端的联机,或者是用来控制带宽与流量,达到更公平的带宽使用等功能。

17.  Windows XP的网上邻居一般只能同时分享十部客户端联机,超过的话就得要等待了。我们可以使用Linux上面的SAMBA这个软件来达成加入Windows网上邻居的功能。SAMBA的效能不错, 也没有客户端联机数的限制。

18.  较麻烦一点的硬盘分区方式是先分析这部主机的未来用途,然后根据用途去分析需要较大容量的目录, 以及读写较为频繁的目录,将这些重要的目录分别独立出来而不与根目录放在一起, 那当这些读写较频繁的磁盘分区有问题时,至少不会影响到根目录的系统数据,那挽救方面就比较容易。底下的目录是比较符合容量大且(或)读写频繁的目录:

    1)  /

    2)  /usr

    3)  /home

    4)  /var

    5)  Swap

如果希望邮件主机大一些,/var通常会给大点的容量, 如此一来就可以不用担心会有邮件空间不足的情况。另外,如果要开放SAMBA服务, 并且提供每个使用人员各自数据备份的空间,那/home所需要的空间就会很大。

19.  你在旧主板上面安装新的大容量磁盘时, 很可能磁盘容量会被误判。不过,Linux还是能够安装,而且能够顺利地捉到完整的硬盘容量。因为当Linux核心顺利开机启动后,他会重新再去侦测一次整个硬件而不理会BIOS所提供的信息, 所以就能够顺利地捉到正确的硬盘,并让你安装Linux。但是,安装完毕后,可能会无法开机。因为,安装的时候是以光盘开机并由光盘加载Linux核心,所以核心可以被顺利加载来安装。但是若以这样的配备来开机时, 因为BIOS捉到的硬盘是不对的,所以使用硬盘开机可能就会出现无法开机的错误了。虽然BIOS捉到的磁盘容量不对,但是至少在整块磁盘前面的扇区它还是读得到的。因此,你只要将这块磁盘最前面的容量分割出一个小分区,并将这个分区与系统启动文件的放置目录摆在一起, 那就是 /boot 这个目录,就能够解决了。其实,重点是:『将启动扇区所在分区规范在小于1024个磁柱以内~』 即可。例如,在进行安装的时候,可以规划出三个分区,分别是:

    1)  /boot

    2)  /

    3)  swap

那个/boot只要给100M Bytes左右即可,而且/boot要放在整块硬盘的最前面。