| 
 
          [ << ]
        
          [ < ]
        
      [ 主页 ]
      
            [ > ]
          
            [ >> ]
           
 4. 预备磁盘内容:4.a. 块设备入门 块设备 
我们要好好了解下Gentoo Linux以及普通Linux中有关磁盘方面的知识,包括Linux文件系统、分区和块设备。然后,一旦你熟悉了磁盘和文件的方方面面,我们将会指导你设置分区和文件系统,为你安装Gentoo Linux做好准备。
 
我们从介绍块设备开始。最典型的块设备可能是Linux系统里的第一个SCSI硬盘,即/dev/sda。
 
上面介绍的块设备代表磁盘的抽象接口。用户程序可以使用这些块设备来与你的磁盘进行交互,而不用理会你的驱动器到底是IDE、SCSI还是其他的。程序可以把磁盘当作一系列连续的、可随机访问的512字节大小的块来访问。
 
块设备作为一些条目出现在/dev/里。一般来说,第一个SCSI驱动器被命名为/dev/sda,第二个叫/dev/sdb,依此类推。IDE驱动器的命名也类似,只是他们以hd-作为前缀而不是sd-。如果你使用IDE驱动器,那么第一个是/dev/hda,第二个是/dev/hdb,等等。
 分区 
虽然理论上有可能使用整个磁盘来安放你的Linux系统,实际上几乎从不这么做。相反,完整的磁盘块设备会被分割成更小的,更易管理的块设备。这些被称为分区或者切片。
 
第一个SCSI磁盘上的第一个分区是/dev/sda1,第二个是/dev/sda2依此类推。类似的,第一个IDE磁盘上的前两个分区是/dev/hda1和/dev/hda2
 
Sun系统上的第三个分区被留出来作为一个特殊的切片名为"whole disk"。这个分区不能含有文件系统。
 
过去使用DOS分区方案的用户须注意Sun的磁盘标签里没有“主分区”和“扩展分区”。而是每个驱动器最多可以有8个分区,其中第三个被保留。
 4.b. 设计分区方案 默认分区方案 
如果你对制订一个分区方案没有兴趣,那么可以采用下表的建议,一个适合多数系统的方案。对基于IDE硬盘的系统,把下面的sda替换成hda。
 
注意,通常不推荐在SPARC上使用一个单独的/boot分区,因为这会使引导器的配置变得复杂。
 
  | 分区 | 文件系统 | 大小 | 挂载点 | 描述 |  
    | /dev/sda1 | ext3 | <2 GB | / | 根分区。对于OBP版本稍旧的sparc64系统,这个分区必须小于2G,而且是磁盘上的第一个分区。 |  
  | /dev/sda2 | swap | 512 MB | none | 交换分区。对于bootstrap和某些比较大的编译,需要至少512M的内存(包括交换分区)。 |  
  | /dev/sda3 | none | Whole disk | none | 整个磁盘分区。这是SPARC系统必需的。 |  
  | /dev/sda4 | ext3 | 至少2G | /usr | /usr分区。应用程序都安装在这里。默认情况下这个分区还用来保存Portage数据(除去源代码大概占用500M空间)。 |  
  | /dev/sda5 | ext3 | 至少1G | /var | /var分区。用来存放程序产生的数据。默认情况下Portage在编译的时候把这个分区作为临时空间。某些大型的应用程序比如Mozilla和OpenOffice.org在编译的时候需要超过1G的临时空间。 |  
  | /dev/sda6 | ext3 | 剩余的空间 | /home | /home 分区。用来放用户的家目录。 |  4.c. 使用fdisk对你的磁盘分区 
接下来的部分解释了如何创建先前范例中的分区方案,也就是:
 
  | 分区 | 描述 |  
  | /dev/sda1 | / |  
  | /dev/sda2 | swap |  
  | /dev/sda3 | whole disk slice |  
  | /dev/sda4 | /usr |  
  | /dev/sda5 | /var |  
  | /dev/sda6 | /home |  
按照需要改变分区方案。记住对于旧的系统请保持根分区在磁盘的前2G以内。还有对于SCSI和SATA硬盘有15个分区的限制。
 开始fdisk 
用你的磁盘作为参数来启动fdisk:
 
| 代码 3.1: 启动fdisk |  | 
# fdisk /dev/sda
 |  
你应该看到fdisk的提示符:
 
| 代码 3.2: fdisk的提示符 |  | 
Command (m for help):
 |  
显示可用的分区,请输入p:
 
| 代码 3.3: 列出可用分区 |  | 
Command (m for help): p
Disk /dev/sda (Sun disk label): 64 heads, 32 sectors, 8635 cylinders
Units = cylinders of 2048 * 512 bytes
   Device Flag    Start       End    Blocks   Id  System
/dev/sda1             0       488    499712   83  Linux native
/dev/sda2           488       976    499712   82  Linux swap
/dev/sda3             0      8635   8842240    5  Whole disk
/dev/sda4           976      1953   1000448   83  Linux native
/dev/sda5          1953      2144    195584   83  Linux native
/dev/sda6          2144      8635   6646784   83  Linux native
 |  
注意输出中的Sun disk label。如果没有这个,磁盘将采用DOS分割,而不是Sun分割。在这种情况下,使用s来确保磁盘有一个sun的分区表:
 
| 代码 3.4: 创建一个Sun的磁盘标签 |  | 
Command (m for help): s
Building a new sun disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
Drive type
   ?   auto configure
   0   custom (with hardware detected defaults)
   a   Quantum ProDrive 80S
   b   Quantum ProDrive 105S
   c   CDC Wren IV 94171-344
   d   IBM DPES-31080
   e   IBM DORS-32160
   f   IBM DNES-318350
   g   SEAGATE ST34371
   h   SUN0104
   i   SUN0207
   j   SUN0327
   k   SUN0340
   l   SUN0424
   m   SUN0535
   n   SUN0669
   o   SUN1.0G
   p   SUN1.05
   q   SUN1.3G
   r   SUN2.1G
   s   IOMEGA Jaz
Select type (? for auto, 0 for custom): 0
Heads (1-1024, default 64): 
Using default value 64
Sectors/track (1-1024, default 32): 
Using default value 32
Cylinders (1-65535, default 8635): 
Using default value 8635
Alternate cylinders (0-65535, default 2): 
Using default value 2
Physical cylinders (0-65535, default 8637): 
Using default value 8637
Rotation speed (rpm) (1-100000, default 5400): 10000
Interleave factor (1-32, default 1): 
Using default value 1
Extra sectors per cylinder (0-32, default 0): 
Using default value 0
 |  
你能在磁盘的说明书中找到正确的值。而'auto configure'通常不会起作用。
 删除现有的分区 
到了删除全部现有分区的时候了。输入d然后回车。你会被提示输入想要删除的分区号。删除一个已经存在的/dev/sda1,你将输入:
 
| 代码 3.5: 删除一个分区 |  | 
Command (m for help): d
Partition number (1-4): 1
 |  
你不要删除分区3(whole disk)。它是必需的。如果这个分区不存在,请按照前面"创建一个Sun的磁盘标签"的命令来做。
 
在删掉除Whole disk分区以外的所有分区后,你将有一个和下面相似的分区布局:
 
| 代码 3.6: 查看一个空的分区方案 |  | 
Command (m for help): p
Disk /dev/sda (Sun disk label): 64 heads, 32 sectors, 8635 cylinders
Units = cylinders of 2048 * 512 bytes
   Device Flag    Start       End    Blocks   Id  System
/dev/sda3             0      8635   8842240    5  Whole disk
 |  创建根分区 
我们准备好创建根分区了。输入n来创建新的分区,然后输入1来建立分区。当提示第一个柱面的时候,直接回车。当提示最后一个柱面的时候,输入+512M来建立一个512M大小的分区。确定整个根分区在磁盘的前2G以内。你可用在下面看到这些步骤的输出:
 
| 代码 3.7: 创建根分区 |  | 
Command (m for help): n
Partition number (1-8): 1
First cylinder (0-8635): (press Enter)
Last cylinder or +size or +sizeM or +sizeK (0-8635, default 8635): +512M
 |  
现在,当你输入p,你应该看见下面这些分区被列出来:
 
| 代码 3.8: 列出分区布局 |  | 
Command (m for help): p
Disk /dev/sda (Sun disk label): 64 heads, 32 sectors, 8635 cylinders
Units = cylinders of 2048 * 512 bytes
   Device Flag    Start       End    Blocks   Id  System
/dev/sda1             0       488    499712   83  Linux native
/dev/sda3             0      8635   8842240    5  Whole disk
 |  创建交换分区 
接着,我们来创建交换分区。输入n来创建新分区,然后敲2建立第二个分区,目前是/dev/sda2。当提示第一个柱面的时候,直接回车。当提示最后一个柱面的时候,输入+512M来建立一个512M的分区。做完以后,输入t来设置分区类型,然后输入82把分区类型设为"Linux Swap"。做完这些步骤以后,输入p应该会显示出类似这样的分区表:
 
| 代码 3.9: 列出可用的分区 |  | 
Command (m for help): p
Disk /dev/sda (Sun disk label): 64 heads, 32 sectors, 8635 cylinders
Units = cylinders of 2048 * 512 bytes
   Device Flag    Start       End    Blocks   Id  System
/dev/sda1             0       488    499712   83  Linux native
/dev/sda2           488       976    499712   82  Linux swap
/dev/sda3             0      8635   8842240    5  Whole disk
 |  创建/usr、/var和/home分区 
最后,让我们来创建/usr、/var和/home分区。和前面一样,输入n来创建新的分区,然后输入4创建第三个分区,在本例中是/dev/sda4。在提示第一个柱面的时候,敲回车。当提示最后一个柱面的时候,输入+2048M来建立一个大小为2G的分区。对sda5和sda6重复这些步骤,并使用需要的大小。一旦你做完了,就可以看到类似如下的东西:
 
| 代码 3.10: 列出完整的分区表 |  | 
Command (m for help): p
Disk /dev/sda (Sun disk label): 64 heads, 32 sectors, 8635 cylinders
Units = cylinders of 2048 * 512 bytes
   Device Flag    Start       End    Blocks   Id  System
/dev/sda1             0       488    499712   83  Linux native
/dev/sda2           488       976    499712   82  Linux swap
/dev/sda3             0      8635   8842240    5  Whole disk
/dev/sda4           976      1953   1000448   83  Linux native
/dev/sda5          1953      2144    195584   83  Linux native
/dev/sda6          2144      8635   6646784   83  Linux native
 |  保存并退出 
保存你的分区表并退出fdisk,输入w:
 
| 代码 3.11: 保存并退出fdisk |  | 
Command (m for help): w
 |  
现在分区已经建好,你可以继续创建文件系统。
 4.d. 创建文件系统 介绍 
现在你的分区已经建好,到了放置文件系统的时候了。如果你不在意使用什么文件系统并且乐意使用本手册的默认选择,那么继续在分区上建立文件系统。否则,接着看下去了解可用的文件系统……
 文件系统? 
有很多文件系统可用,有些在SPARC上已经稳定。比如ext2和ext3都工作的很好。其它的文件系统可能会工作不正常。
 
ext2是可靠的Linux文件系统。它不支持日志,也就是说周期性的检查在启动的时候会非常消耗时间。确实有新一代的日志文件系统能够在启动的时候非常快速得完成一致性检查,所以通常首选那些未做日志的副本。一般来说,日志文件系统可以避免系统启动的长时间延迟以及文件系统的不一致状态。
 
ext3是ext2文件系统的带日志版本,提供了元数据日志模式,目的是为了快速恢复数据,此外还提供了其他的增强日志模式,如完整数据日志模式和有序数据日志模式。它使用了HTree索引,在几乎所有的情况下都能保持高性能。简而言之,ext3是非常好且可靠的文件系统。
 在分区上建立文件系统 
在分区上创建文件系统或者卷,对于选定的文件系统有特定的工具可供使用:
 
  | 文件系统 | 创建命令 |  
  | ext2 | mke2fs |  
  | ext3 | mke2fs -j |  
举个例子,在根分区(在本例中是/dev/sda1)上创建ext2,在/usr,/var和/home分区(在本例中分别是/dev/sda4、5和6)上建立ext3,你要用:
 
| 代码 4.1: 在分区上建立文件系统 |  | 
# mke2fs /dev/sda1
# mke2fs -j /dev/sda4
# mke2fs -j /dev/sda5
# mke2fs -j /dev/sda6
 |  激活交换分区 
mkswap是用来初始化交换分区的命令:
 
| 代码 4.2: 创建交换分区 |  | 
# mkswap /dev/sda2
 |  
要激活交换分区,使用swapon:
 
| 代码 4.3: 激活交换分区 |  | 
# swapon /dev/sda2
 |  
现在用上述命令创建并激活交换分区。
 4.e. 挂载 
现在你的分区都已初始化并拥有文件系统,到了用mount命令来挂载他们的时候了。不要忘记先为每个分区创建需要挂载的目录。比如:
 
| 代码 5.1: 挂载分区 |  | 
# mount /dev/sda1 /mnt/gentoo
# mkdir /mnt/gentoo/usr
# mount /dev/sda4 /mnt/gentoo/usr
# mkdir /mnt/gentoo/var
# mount /dev/sda5 /mnt/gentoo/var
# mkdir /mnt/gentoo/home
# mount /dev/sda6 /mnt/gentoo/home
 |  | 注意: 
如果你想把/tmp作为一个单独的分区,确信在挂载以后修改权限:chmod 1777 /mnt/gentoo/tmp。/var/tmp也要这么做。
 | 
 
同样我们需要挂载proc文件系统(一个内核的虚拟接口)到/proc。但是我们需要先把文件放到分区里。
 
继续安装Gentoo的安装文件。
 
 
          [ << ]
        
          [ < ]
        
      [ 主页 ]
      
            [ > ]
          
            [ >> ]
           
 本文档的内容遵循知识共享-署名-相同方式共享许可协议 |