第三章 主机规划与磁盘分区
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\Jumper | Master | Slave |
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要放在整块硬盘的最前面。