CD-ROM驱动器通过相关的设备文件存取。有多种方法将CDROM连接到计算机:SCSI、声卡或EIDE。要完成这的硬件hacking工作超出了本书的范围,但连接方法决定了设备文件。指导见[Anv]
磁带
磁带驱动器使用磁带,类似 音乐用的盒带。磁带是串行的,即如果要得到给定部分的数据,必须经过所有部分。磁盘可以随机存取,即可以直接跳到磁盘上的某个部分。串行存取的磁带当然慢了。
另外一方面,磁带相当便宜,因为无须快速。也容易做得很长,因此可以容纳大量的数据。这使磁带很适于如归档、备份等无须高速的、但需要低成本和大容量的事情。
格式化
格式化在磁介质上写用于标记磁道和扇区的标志的过程。磁盘格式化前,其磁表面是完成的一块。格式化后,混沌变为秩序,建立的磁道,划分了扇区。实际细节并非准确地这样,但重要的是:磁盘不经过格式化是不能使用的。
这里术语有些模糊:MS-DOS中,格式化(format)这个词还包括了产生文件系统的过程(下面将讨论的)。这两个过程经常一起使用,尤其是软盘。当必须区分时,真正的格式化被称为低级格式化low-level formatting,而建立文件系统被成为高级格式化high-level formatting。在UNIX圈中,这两者叫格式画format和建立文件系统make a filesystem,本书中也这样称。
IDE硬盘和一些SCSI硬盘实际上厂商已经做了格式化,并无须重复;因为多数人无须关心它。实际上,格式化硬盘可能反而不好,比如因为硬盘可能需要用特定的方法格式化使坏扇区被自动替换。
磁盘经常需要特定的程序来格式化,因为驱动器的格式化逻辑的接口每个驱动器都不一样。格式化程序经常在控制器BIOS上,或用MSDOS程序提供,这都不太容易在Linux中使用。
格式化中可能会发现磁盘的坏点,叫坏块bad blocks or bad sectors。这有时由驱动器自己处理。但有时,如果坏块太多,需要一些工作来避免使用磁盘的这部分。 The logic to do this is built into the filesystem; 下面将说明如何增加这些信息到文件系统。另外,产生一个只覆盖这些坏的部分的小分区也是一个办法。如果坏区较大,这可能是个好办法,因为文件系统有时难以处理大量的坏区。
软盘格式化使用fdformat 。软盘设备使用给定的参数,例如下面的命令在第一个软驱中格式化一张高密度3.5'软盘:
$ fdformat /dev/fd0H1440
Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
Verifying ... done
$
注意,如果想使用自动检测设备(如/dev/fd0 ), 必须用先setfdprm 设定参数。要得到与上面一样的结果,可以这样:
$ setfdprm /dev/fd0 1440/1440
$ fdformat /dev/fd0
Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
Verifying ... done
$
选择与软盘类型相符的正确的设备文件通常更方便。注意,比软盘设计格式化更多的信息容量是没有意义的。
fdformat 也将验证软盘,例如检查坏块。它在坏块试验几次(你通常能听到,驱动器的噪声很明显)。 If the floppy is only marginally bad (due to dirt on the read/write head, some errors are false signals), fdformat 可能没事,而真正的错误可能退出有效过程。核心把发现的每个I/O错误打印log信息,送到控制台,或者,如果使用了syslog ,也送到/usr/adm/messages 文件。fdformat 自己不说明哪里出错(也不必考虑,软盘很便宜,坏了就扔)。
$ fdformat /dev/fd0H1440
Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
Verifying ... read: Unknown error
$
badblocks 命令可用于查找任何磁盘或分区的坏块(包括软盘)。它不格式化磁盘,因此可以用于检查存在的文件系统。下面的例子检查出一张3.5'软盘上的2个坏块:
$ badblocks /dev/fd0H1440 1440
718
719
$
badblocks 输出发现的坏块的块号。多数文件系统可以避免这样的坏块。他们维护一个已知的坏块列表,在文件系统建立时初始化,并可以在以后修改。初始的坏块查找可由mkfs 命令完成(它初始化文件系统),以后可以用badblocks 来检查,新的块可以用fsck 加入。后面我们将说明mkfs 和fsck 。
许多新型的硬盘自动发现坏块,并企图用一个特定的、保护的好块来代替它。这对操作系统是不可见的。这种特征应该在硬盘手册的文档中,如果你好奇的话。但即使这样的硬盘也可能失败,如果坏块数量太大的话,虽然如果这样,那硬盘就基本上不能用了。
分区
一个硬盘可分为几个分区。每个分区好象是单独的硬盘。这样,你如果只有一个硬盘,却想安装2个操作系统,你可以把这个硬盘分为2个分区。每个操作系统任意使用自己的分区而不干扰另一个。这种方法,2个操作系统可以在同一硬盘上和平共处。如果没有分区,你只能为每个操作系统购买一个硬盘。
软盘不分区。这没有技术原因,只因为太小,没有必要。CDROM一般也不分区,因为作为一个大盘更易于使用,而且很少有多操作系统的需要。
MBR(主引导记录), 启动扇区和分区表
一个硬盘如何分区的信息存在它的第一个扇区(即第一面第一道第一扇区)。这个第一扇区是硬盘的主引导记录(MBR);这是计算机启动时BIOS读入和启动的扇区。主引导记录包括一段小程序,读入分区表,检查哪个分区是活动分区(即启动分区),并读入活动分区的第一个扇区:该分区的启动扇区(MBR也是启动扇区,只不过因为其特殊地位,所以使用特殊的名字)。这个启动扇区包括另一个小程序,读入这个分区(假设是可启动的)上操作系统的第一个部分,然后启动它。
这个分区方案不是内置于硬件和BIOS的,只是许多操作系统遵循的约定。并非所有的操作系统都遵循这个约定,也有例外。有些操作系统支持分区,但他们占领硬盘上的一个分区,然后使用他们自己的内部分区方法管理这个分区。较新的操作系统可以和其他操作系统和平共处(包括Linux),而无需特殊的措施,但不支持分区的操作系统无法在同一硬盘上与其他操作系统共存。
为安全预防,最好先在纸上写下分区表,这样在错误发生时不会丢失你的文件。(可以使用fdisk 修复坏的分区表)。 )相关信息可用fdisk -l 命令给出:
$ fdisk -l /dev/hda
Disk /dev/hda: 15 heads, 57 sectors, 790 cylinders
Units = cylinders of 855 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 1 1 24 10231+ 82 Linux swap
/dev/hda2 25 25 48 10260 83 Linux native
/dev/hda3 49 49 408 153900 83 Linux native
/dev/hda4 409 409 790 163305 5 Extended
/dev/hda5 409 409 744 143611+ 83 Linux native
/dev/hda6 745 745 790 19636+ 83 Linux native
$
扩展和逻辑分区
PC硬盘的最初的分区方案只允许4个分区。实际使用中这太少了,比如有人想装多于4个操作系统 (Linux, MS-DOS, OS/2, Minix, FreeBSD, NetBSD, Windows/NT等),或有时一个操作系统有多个分区更好,例如由于速度的原因,Linux的对换区最好单独使用自己的分区,而不是在主 Linux分区中(下文详述)。
为克服这个设计问题,发明了扩展分区。这个方法允许将基本分区分为若干子分区,因而被子分区的基本分区称为扩展分区,而子分区称为逻辑分区,他们的表现类似基本分区 ,但产生方法不同。他们之间没有速度差别。
硬盘的分区结构可能类似。这个硬盘被分为3个基本分区,第二个被分为2个逻辑分区。部分硬盘根本没有分区。硬盘是一个整体,每个基本分区有一个启动扇区。
分区种类
分区表(MBR和扩展分区里都有)中,对每个分区,有一个字节指出分区种类。这试图确定使用该分区的操作系统,或用于何操作系统。其目的是避免2个操作系统使用同一分区。可实际上,操作系统并不真的注意分区种类字节;例如,Linux根本不管它是什么。较坏的情况是,有些操作系统错误地使用它:例如有些版本的DR-DOS忽略了它的最高位(MSB),而其他一些系统则不是。
没有一个标准化组织定义分区种类字节每个值的意义,但一些共同接受的值包括在表 4.1中。相同的列表可以通过Linux的fdisk 命令得到。
给硬盘分区
有许多产生和删除分区的程序。许多操作系统自带,最好使用其自带的,除非要做一些它不能作到的。许多这种程序叫fdisk , 包括Linux, 或其变种。 Linux fdisk 的使用细节可见其Man手册。 cfdisk 命令类似fdisk , 但有更好的用户界面(全屏的)。
使用IDE硬盘时,启动分区(带可启动核心映象文件的分区)必须全在前1024个柱面内。这是因为硬盘通过BIOS启动(在系统进入保护模式前),而BIOS不能处理多于1024柱面。有时也可能使用部分在前1024柱面的启动分区,这要求所有用BI
| 对此文章发表了评论 |
