【正文】
fstype選擇文件系統(tǒng)種類。c查找壞塊,初始化壞塊列表。l filename從文件filename讀入壞塊列表。用如下命令在軟盤上產(chǎn)生ext2文件系統(tǒng):$ fdformat n /dev/fd0H1440Doublesided, 80 tracks, 18 sec/track. Total capacity 1440 kB.Formatting ... done$ badblocks /dev/fd0H1440 1440 badblocks$ mkfs t ext2 l badblocks /dev/fd0H1440mke2fs , 5Apr94 for EXT2 FS , 94/03/10360 inodes, 1440 blocks72 blocks (%) reserved for the super userFirst data block=1Block size=1024 (log=0)Fragment size=1024 (log=0)1 block group8192 blocks per group, 8192 fragments per group360 inodes per groupWriting inode tables: doneWriting superblocks and filesystem accounting information: done$ 首先,格式化軟盤(n選項不進行確認(rèn),即壞塊檢查)。然后用badblocks 查找壞塊, 輸出定向到文件badblocks。最后,產(chǎn)生文件系統(tǒng),壞塊列表由文件badblocks 初始化。c選項可以與mkfs 一起使用,而無須badblocks 和一個單獨的文件。如下:$ mkfs t ext2 c /dev/fd0H1440mke2fs , 5Apr94 for EXT2 FS , 94/03/10360 inodes, 1440 blocks72 blocks (%) reserved for the super userFirst data block=1Block size=1024 (log=0)Fragment size=1024 (log=0)1 block group8192 blocks per group, 8192 fragments per group360 inodes per groupChecking for bad blocks (readonly test): doneWriting inode tables: doneWriting superblocks and filesystem accounting information: done$ 使用c比用單獨使用badblocks 更方便, 但建立文件系統(tǒng)后檢查,badblocks 是必要的。在硬盤或分區(qū)上準(zhǔn)備文件系統(tǒng)的過程和軟盤是一樣的,除了無須格式化。Mount和unmount 一個文件系統(tǒng)可以使用之前,必須mount。操作系統(tǒng)然后做一些記錄以確認(rèn)正常。因為UNIX所有的文件在一個目錄樹中, mount操作的結(jié)果使新的文件系統(tǒng)的內(nèi)容好象在某個已經(jīng)mount的文件系統(tǒng)的一個已經(jīng)存在的子目錄中?! ∩厦娴膍ount可能使用如下命令:$ mount /dev/hda2 /home$ mount /dev/hda3 /usr$ mount 命令使用2個參數(shù)。第一個是與包括文件系統(tǒng)的磁盤或分區(qū)相關(guān)的設(shè)備文件。第二個是要mount到的目錄。 mount以后,這2個文件系統(tǒng)的內(nèi)容好象是/home 和/usr 目錄。這樣就可以說:/dev/hda2 被mount到 /home , /usr 也同樣。要看每個文件系統(tǒng),就看其被安裝的目錄,好象它就是在那里。注意設(shè)備文件的區(qū)別,/dev/hda2 , 和安裝到的目錄/home 。設(shè)備文件給出硬盤原始內(nèi)容的存取,安裝到的目錄給出磁盤上文件的存取。安裝到的目錄叫安裝點?! inux支持許多文件系統(tǒng)。mount 會試著猜測文件系統(tǒng)種類。也可以使用t fstype 選項直接定義種類;這有時是必要的,因為自檢測mount 并非總能成功。例如要mount一個MSDOS軟盤,可以用如下命令:$ mount t msdos /dev/fd0 /floppy$ 安裝點目錄不必是空的,但必須存在。其中的所有文件當(dāng)文件系統(tǒng)mount后將不可用名字存取(已經(jīng)打開的文件將繼續(xù)可存取。有其他目錄硬連接的文件可以通過那些名字存取)。這沒有壞處,反而可能更有用。例如,有人喜歡將/tmp 和/var/tmp 作為同義,將/tmp 作為/var/tmp 的符號連接。系統(tǒng)啟動時,在/usr 文件系統(tǒng)被mount之前,使用駐留在根文件系統(tǒng)的 /var/tmp 目錄。當(dāng)/usr 被mount上以后,根文件系統(tǒng)上的/var/tmp 將不可用,如果根文件系統(tǒng)上不存在 /var/tmp ,那么在mount上/var 之前將不可能使用暫存文件?! ∪绻淮蛩阍谝粋€文件系統(tǒng)上寫任何東西,可以使用mount 的r開關(guān)做一個只讀mount。這將使核心停止任何對此文件系統(tǒng)的寫要求,也將停止核心的對i節(jié)點的文件存取時間的更新。只讀mount對不可寫介質(zhì)是必要的,例如CDROM?! 〖?xì)心的讀者可能已經(jīng)注意到一個小的邏輯問題。第一個文件系統(tǒng)(叫根文件系統(tǒng),因為它包含根目錄)如何mount,因為很明顯,它不能mount到另一個文件系統(tǒng)? Well, the answer is that it is done by magic. The root filesystem is magically mounted at boot time, and one can rely on it to always be mounted 如果根文件系統(tǒng)不能mount,系統(tǒng)將不能啟動。 The name of the filesystem that is magically mounted as root 被編譯進核心,或用LILO或rdev 設(shè)置?! 「募到y(tǒng)通常先被只讀mount。然后啟動手稿運行fsck 校驗它的有效性,如果沒有問題,將remount它,使之可寫。fsck 不能運行于一個已mount的文件系統(tǒng),因為fsck 運行時,任何文件系統(tǒng)的改變將導(dǎo)致錯誤。因為根文件系統(tǒng)在被檢查時是只讀,fsck 可以無慮地修復(fù)任何問題,因為remount 操作將刷新文件系統(tǒng)在內(nèi)存中的所有數(shù)據(jù)?! ≡谟衅渌募到y(tǒng)的許多系統(tǒng)中,啟動時要自動mount,可以在/etc/fstab 文件中定義:文件格式細(xì)節(jié)請參考fstab 的手冊頁。 mount特別的文件系統(tǒng)的特別細(xì)節(jié)依賴于許多因素,可以根據(jù)需要由每個管理員設(shè)置。 When the chapter on booting is finished, you may read all about it there. 當(dāng)一個文件系統(tǒng)不需要再mount著,可以用umount . umount 加一個參數(shù)unmount它,參數(shù)可以是設(shè)備文件或安裝點。例如,要unmount上面例子中的目錄,可以用:$ umount /dev/hda2$ umount /usr$ 要了解使用這個命令的更多的說明,參閱手冊。注意:記住unmount已經(jīng)mount的軟盤, 而不能僅僅將軟盤彈出軟驅(qū)!由于磁盤緩沖,在你unmount軟盤之前無須回寫,因此過早取出軟盤將導(dǎo)致內(nèi)容不正確。只從軟盤上讀還不要緊,如果寫,就可能發(fā)生災(zāi)難性的損失。 mount和umount需要超級擁護特權(quán),即只有root 用戶可以做。原因是:如果任何用戶都可以mount軟盤到任何目錄,那么很容易用軟盤做,比如,用特洛伊木馬替換/bin/sh , 或者其他常用的程序。但是允許用戶使用軟盤經(jīng)常又是必要的,有幾種方法: 給用戶root 口令,很明顯這對安全不利,但是最簡單的方法。如果沒有安全要求,這個方法很好,比如在非網(wǎng)絡(luò)的、個人系統(tǒng)上?! ∈褂靡粋€程序比如sudo 允許擁護使用mount。這同樣對安全不利,但沒有直接給任何人超級用戶特權(quán)?! ∽層脩羰褂胢tools , 這是一個利用MSDOS文件系統(tǒng)的軟件包,無須mount。如果是MSDOS軟盤這樣做很好,否則不好。 在/etc/fstab 中用合適的選項列出軟驅(qū)設(shè)備和允許的安裝點。 最后一個選擇可以在/etc/fstab 文件中加類似下面的一行來完成: /dev/fd0 /floppy msdos user,noauto 0 0 各列分別是:要mount的設(shè)備文件,要安裝到的目錄,文件系統(tǒng)類型,選項,備份頻率(用于dump ) 和fsck 次序(定義啟動時文件系統(tǒng)被檢查的次序,0表示不檢查)。noauto選項使系統(tǒng)啟動是不自動mount(即, it stops mount a from mounting it)。 user允許任何用戶mount這個文件系統(tǒng),并且,由于安全原因,不允許執(zhí)行程序(normal or setuid) and interpretation of device files from the mounted filesystem。這樣,任何用戶都可以用如下命令mount一個msdos文件系統(tǒng)的軟盤:$ mount /floppy$ 軟盤可以用相關(guān)的umount 被unmount?! ∪绻胩峁┒喾N軟盤的存取,需要給出多個安裝點。對每個安裝點的設(shè)置可以不同。例如,提供MSDOS和ext2文件系統(tǒng)的存取,可以在/etc/fstab 文件中加如下行:/dev/fd0 /dosfloppy msdos user,noauto 0 0/dev/fd0 /ext2floppy ext2 user,noauto 0 0 對于MSDOS文件系統(tǒng)(不僅是軟盤),可能需要用uid, gid,和umask 文件系統(tǒng)選項來限制存取權(quán)限,請看mount 手冊頁。如果不小心,mount一個MSDOS文件系統(tǒng)將給予任何用戶至少是讀權(quán)限,這可不是一個好主意。用fsck檢查文件系統(tǒng)完整性 文件系統(tǒng)很復(fù)雜,因此易于發(fā)生錯誤??梢杂胒sck 命令檢查文件系統(tǒng)是否正確和有效。它可以根據(jù)指令修復(fù)找到的小錯誤,并將未修復(fù)錯誤報告用戶。幸運的是,文件系統(tǒng)的代碼非常有效,所以根本極少出現(xiàn)問題,并且問題通常原因是電源失敗、硬件失敗、或操作錯誤,例如沒有正常關(guān)閉系統(tǒng)?! 〈蠖鄶?shù)系統(tǒng)設(shè)置為啟動時自動運行fsck ,因此任何錯誤將在系統(tǒng)使用前被檢測到(并根據(jù)希望修正)。使用有錯誤的文件系統(tǒng)可能使問題變得更壞:如果數(shù)據(jù)結(jié)構(gòu)有問題,使用這個文件系統(tǒng)可能使之更糟,導(dǎo)致更多的數(shù)據(jù)丟失。當(dāng)然,在大的文件系統(tǒng)上運行fsck 會花一定的時間,如果系統(tǒng)正常關(guān)閉,幾乎從不發(fā)生錯誤,因此有一些方法可以不進行檢查。如果文件/etc/fastboot 存在,就不檢查。另外,如果ext2文件系統(tǒng)在超級快中有一個特定的標(biāo)記告知該文件系統(tǒng)在上次mount后沒有正常unmount. 如果標(biāo)記指出unmount正常完成(假設(shè)正常unmount指出沒問題),e2fsck (fsck 的ext2文件系統(tǒng)版) 就不檢查系統(tǒng)。/etc/fastboot 是否影響系統(tǒng)依賴于你的啟動手稿,但ext2標(biāo)記則在你使用e2fsck 時發(fā)生作用基于一個e2fsck 選項(參閱e2fsck 手冊頁) 自動檢查只對啟動時自動mount的文件系統(tǒng)發(fā)生作用。使用fsck 手工檢查其他文件系統(tǒng),比如軟盤。 如果fsck 發(fā)現(xiàn)為修復(fù)的問題,你需要深入了解文件系統(tǒng)的一般工作原理和有問題的文件系統(tǒng)的細(xì)節(jié),或好的備份。最后一個辦法容易(雖然冗長)安排,如果你自己不知道,有時可以通過朋友、Linux新聞組、電子郵件列表或其他支持源安排。我很想告訴你更多,但我對這的學(xué)習(xí)和實踐也并不多。Theodore T39。so的debugfs 程序應(yīng)該有用?! sck 只能運行于未mount的文件系統(tǒng),不要用于已mount的文件系統(tǒng)(除了啟動時的只讀根文件系統(tǒng))。這是因為它存取原始磁盤,在操作系統(tǒng)不知道的情況下修改文件系統(tǒng)。 There will be trouble, if the operating system is confused.用badblocks檢查磁盤錯誤 應(yīng)該周期性地用badblocks 命令檢查壞塊它輸出找到的所有壞塊的編號的列表。列表給fsck 記錄在文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中,使操作系統(tǒng)存儲數(shù)據(jù)時不使用這些壞塊。舉例:$ badblocks /dev/fd0H1440 1440 badblocks$ fsck t ext2 l badblocks /dev/fd0H1440Parallelizing fsck version (5Apr94)e2fsck , 5Apr94 for EXT2 FS , 94/03/10Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Check reference counts.Pass 5: Checking group summary information./dev/fd0H1440: ***** FILE SYSTEM WAS MODIFIED *****/dev/fd0H1440: 11/360 files, 63/1440 blocks$ 如果badblocks報告一個塊已經(jīng)使用,e2fsck 將試著將