阿旺的 Linux 開竅手冊







基礎篇
進階篇
補腦篇
版權所有,引用請註明出處

 進階篇

Advanced Chapter 4 : 硬碟操作

4.0 Linux 下的硬碟和檔案系統目錄結構
       Linux filesystem 檔案系統
           ext2 檔案系統
           ext3 檔案系統
       Unix 目錄結構
       Linux 下的硬碟和裝置檔名
4.1 顯示硬碟資訊
       df 顯示硬碟使用量
       du 顯示目錄和檔案使用量
       blkid 顯示硬碟資訊
4.2 硬碟分割(Disk partitioning)
       傳統 MBR 的硬碟分割
           primary partition
           extended partition
                logical partition
           fdisk 分割硬碟
       新型 GPT 磁碟分割
           parted 分割硬碟
4.3 格式化檔案系統
       mkfs 格式化 filesystem
       tune2fs 將 ext2 轉 ext3
       e2label 設定 filesystem 標籤
       fsck 檢查和嘗試修復檔案系統
4.4 mount 掛載 filesystem
       mount 基本用法
         /etc/mtab 掛載情形
       標籤掛載
       掛載 USB 隨身碟/軟碟
       掛載 CD-ROM
       etc/fstab 設定開機自動掛載
       umount 卸載
       掛載虛擬裝置





















硬碟操作

4.0 Linux 下的硬碟和檔案系統目錄結構


Linux filesystem 檔案系統

當我們讀寫一個檔案到硬碟時,不用去管檔案到底是存在硬碟的那個磁區(sector)和磁軌(track)或磁柱(cylinder),也不用管檔案存取在不同媒體如硬碟/軟碟/USB 隨身碟的各種差異,因檔案系統(filesystem)幫我們在背後處理好了。

檔案系統規劃如何管理儲存媒體,所以不同的作業系統支援的 filesystem 不盡相同,且不同的檔案系統也都有其優缺點,以 Windows 7為例,如經讀卡機來格式化 SD 卡的檔案系統,選項可能有下圖中的 FAT、FAT32、NTFS、exFAT 等選項。


如果把 SD 卡格式化成 Widnows 原生的〝NTFS〞或〝exFAT〞,部分的數位相機或手機可能無法讀取,如格式化成〝FAT〞單一檔案不能大於 2G 而如為〝FAT32〞單一檔案不能大於 4G。所以檔案系統攸關檔案的處理能力,例如把 Linux 檔案系統內的檔案複製到 USB 隨身碟 (預設為 FAT 檔案系統)會流失擁有者權限等資訊。

檔案系統也是 PC 的作業系統必備的元素之一,例如微軟剛出道時的作業系統最主要的功能就是提供檔案系統故取名〝磁碟作業系統〞DOS(Disk Operating System)。 Linux 原生的檔案系統為 ext2ext3,比較新的 kernel 可能還支援 ext4。 Unix 目錄結構
說明 Unix/Linux 目錄結構之前先對比一下大家熟悉的 Windows,在 Windows 下〝本機磁碟(C:)〞可能有如下目錄 :


Windows 下的主要目錄功能如下: 在 Windows 下,預設的情況是大部分作業系統必要的目錄或檔案都放在同一個 partition 如〝本機磁碟(C:)〞。好處為簡單;但其最致命的缺點為雞蛋都放在同一籃子裡,萬一此硬碟或 partition 掛了,partition 內的資料就全軍覆沒。

另一個主要缺點為沒有彈性,例如我 C 磁碟快用完了,而 D 磁碟還有很多空間,但許多的應用程式不可安裝到 D 碟,堅持和 Windows 擠在 C 磁碟共生死。

Linux 的檔案系統目錄結構比起 Windows 有彈性和安全多了,如下圖。



Linux 中可沒有如 Windows 的〝本機磁碟(C:)〞這概念,Linux 的〝檔案系統目錄結構〞可由一顆或好幾顆硬碟所組成,最上層由根目錄〝/〞開始。其下的目錄如下(但為了區別,上圖故意上了不同的顏色)。 不管那套 Linux 發行版,檔案系統目錄結構應都大同小異,因大都會遵循〝檔案系統結構標準〞(Filesystem Hierarchy Standard,FHS)。FHS 中定義了 Linux 檔案系統結構應有那些的目錄和目錄內容,其內容大致如下:
Linux 下的硬碟和裝置檔名
因被 Windows 洗腦慣了,阿旺我第一次玩 Linux 時一直找不到〝C 碟〞或〝C:\〞而大傷腦筋,經過很久才知道原來 UNIX-like 的設計哲學之一是〝Everything is a File〞(一切都是檔案),所以硬碟也被 Linux 當成〝檔案〞,所以當然就找不到〝C 碟〞或〝C:\〞。

UNIX-like 下〝一切都是檔案〞,例如 Windows 下的〝C 碟〞在 Linux 可能被視為檔案〝/dev/sda〞,下表為部分周邊裝置和 Linux 裝置檔名對照表。
周邊裝置和 Linux 裝置檔名對照表
周邊裝置 Linux 裝置檔名
IDE 裝置 IDE(Integrated Drive Electronics)又名AT Attachment(ATA)或 Parallel ATA (PATA)或
AT Attachment Packet Interface (ATAPI)
primary IDE master /dev/hda 或 /dev/sda  
primary IDE slave /dev/hdb 或 /dev/sdb  
Secondary IDE master /dev/hdc 或 /dev/sdc  
Secondary IDE slave /dev/hdd 或 /dev/sdd  
IDE 磁帶機 /dev/ht0
SCSI 裝置
SCSI/SATA硬碟 /dev/sd[a~p] SATA 硬碟因有熱插拔(Hot swapping)功能,故都視為 SCSI 硬碟
SCSI 磁帶機 /dev/st0
SCSI 通用設備 /dev/sg
終端裝置(terminals) 古早前的電腦〝終端裝置〞是輸出/入信息的裝置,不一定是螢幕和鍵盤
顯示終端 /dev/tty[#] #為數字
串列埠(Serial port) /dev/ttyS[#] #為數字
USB 裝置  
USB 轉串列埠裝置 /dev/ttyUSB  
USB 硬碟 /dev/sd[a~p] USB 硬碟因有熱插拔功能,故都視為 SCSI 硬碟
USB 印表機 /dev/usb/lp[0~15]
USB 滑鼠 /dev/usb/mouse[0-15]
其他
並列埠印表機 /dev/lp[0~3]
PS/2 /dev/psaux
光碟 /dev/fd[0~1] 通常連結檔為〝dev/cdrom〞
軟碟 /dev/sr[#] #為數字,通常連結檔為〝dev/floopy〞

對照表先知道有這東西即可,先把重點放在硬碟在 Linux 下的裝置檔名(上表黃底部分) 。

常見的硬碟有〝並列式〞(Parallel)的 IDE 界面,和〝串列式〞(Serial)的 SATA(Serial ATA)界面。所謂〝並列式〞指一次可傳送一個 byte (8-bit)以上的資料,讀者可把想像為有一條八線道的公路一次有八台車在運輸資料;而〝串列式〞一次只可傳送 1-bit 的資料,同樣可類此只有一線道的公路。

〝理論上〞是並列式比較快(八線道的公路比一線道的公路運輸量大)。以前也的確如此,但隨者半導體科技的進步,資料傳輸可越來越快。並列式硬碟在一般絧線速度到達 133M/s 時[註 4.0],兩並列信號間就會有串音干擾(Corss-Talk);好比八線道的公路一次有八台車在運輸,速度太快時相鄰的車會相撞,故實際是當速度超過 133M/s 時並列式就遇瓶頸。

而串列式因只有一車道不會有相撞的問題,只要車速可超過八線道的 8 倍即可,所以串列式硬碟 SATA 速度可突破並列式 IDE 的瓶頸而以 150M/s 起跳,也是目前硬碟界面的主流。不只是硬碟,其他周邊如印表機並列埠(Print Port),PCI等並列式界面已是昨日黃花,漸漸被主流的串列式界面如 USB/PCI-E 等取代。(學校有些教科書還沒 update 還在教並列界面比較快真是..XD。)

上表中並列式硬碟(IDE,又稱 ATA 或 pATA)裝置檔名為〝/dev/hd[a~d]〞,而串列式硬碟(SATA)或 SCSI 硬碟裝置檔名為〝/dev/sd[a~p]〞。但事實也不盡然如此,說明原因之前先說明傳統 IDE/ATA 並列式硬碟的裝置檔名,且因很多服役中的 PC 還在用舊的 IDE 界面的硬碟。

如下圖為某一舊型的主機板,一般都有 1~2 個 IDE port,分別為 Primary(第一通道)和 Secondary(第二通道)。

而每一通道(Primary Channel 或 Secondary Channel)透過 IDE 排線可接二顆硬碟。如下圖其中的硬碟要透過硬碟上的跳線(Jumper)決定要設 Master 或 Slave(同一通道上的硬碟不能同時設為 Master 或同時為 Slave)。兩通道最多可接 4 顆硬碟。而 Linux 相對應到的裝置檔名如下圖,藍字依序各為 /dev/hda、/dev/hdb、/dev/hdc、/dev/hdd。


傳統的 IDE 硬碟裝置檔名用〝/dev/hd[a~d]〞,但 Linux Kernel 版本從 2.6.19 開始,統一了 IDE(PATA) 和 SATA 硬碟的裝置檔名,一律用 SATA 裝置檔名的命名方式〝/dev/sd[a~p]〞,但不是必然,據阿旺我實際實驗,有四個因素會影響硬碟裝置檔名(〝/dev/hd[a~d]〞還是〝/dev/sd[a~p]〞)。
因此時常可在網路上見到有人升級 Linux Kernel 或不明的斷電而重設了 BIOS 或用了不同的Linux 發行版而改變了硬碟的裝置檔名,原因應都不脫離以上四種原因。

SCSI 硬碟 ,因不用設 Master/Slave,而是由硬碟上的 Jumper 設 SCSI ID,相對應 Linux 裝置檔名依序各為 /dev/sda、/dev/sdb...依此類推。
SCSI硬碟和 Linux 裝置檔名對照表
SCSI ID Number Linux Device
0 /dev/sda
1 /dev/sdb
2 /dev/sdc
3 /dev/sdd
4 /dev/sde
5 /dev/sdf
6 /dev/sdg
7 /dev/sdp
ID 8..17 略
15 /dev/sdp

而 SATA 硬碟又比 SCSI 硬碟更簡單, SATA 硬碟上沒 Jumper,完全由主機板上的 SATA port 順序自行以 /dev/sda、/dev/sdb...對號入座。


^ back on top ^





4.1 顯示硬碟資訊
df 顯示硬碟使用量
了解硬碟的使用量最簡單的就是 df(disk free),df 可顯示每一 partition 掛載的使用量。

例:
$  df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda5             13172924   3837376   8655600  31% /
/dev/sda2              4956316    154760   4545724   4% /home
/dev/sda1               194442     12060    172343   7% /boot
tmpfs                   514304        12    514292   1% /dev/shm
/dev/sdb1             31210416     88736  31121680   1% /media/disk

上例的 filesystem 欄中出現兩個裝置〝dev/sda#〞(# 為數字)和 〝dev/sdb#〞可知目前有兩個硬碟,以硬碟〝dev/sda〞為例共並割了〝dev/sda5〞、〝dev/sda2〞和〝dev/sda1〞 四個 partition 而掛載點各為〝/〞、〝/home〞和〝/boot〞。

而〝tmpfs〞(/dev/shm)並不是真正的硬碟,而是有點類似 RAM Disk(用記憶體虛擬的硬碟),大部份的Linux 發行版皆會預設有一〝tmpfs〞。由於是 RAM 模擬的故速度快如電,如果有某個檔案很大讀寫很慢時可複製到〝/dev/shm〞下來操作。但記得處理完要複製到實體的硬碟因〝/dev/shm〞內的檔案如露亦如電重開機後就會揮發掉。

主要的選項 df -h 為把大小單位用比較親民的 KB, MB, 或 GB 來顯示。df -i 顯示使用了多少的 inode 空間(以百分比顯示) 。而 df -T 為顯示為何種 filesystem 。

例:
$ df -T ←顯示各 partition 的 filesystem 種類
Filesystem    Type   1K-blocks      Used Available Use% Mounted on
/dev/sda5     ext3    13172924   3876612   8616364  32% /
/dev/sda2     ext3     4956316    154656   4545828   4% /home
/dev/sda1     ext3      194442     12060    172343   7% /boot
tmpfs        tmpfs      514304        12    514292   1% /dev/shm
/dev/sdb1     ext2    20635700     44992  19542472   1% /media/DB
/dev/sdc1     vfat    31195120        16  31195104   1% /media/disk

df 後面接目錄或檔案會顯示該檔在那個硬碟的那個 partition 。

例:
$ df -h /bin/bash ←查看檔案〝dev/sda#〞存放的位置
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             3.9G  3.6G  173M  96% /



du 顯示目錄和檔案使用量
du (disk usage)和指令 tree 很像但多了顯示目錄或檔案的大小。

例:
$ du /etc ←顯示目錄〝/etc〞下各子目錄的大小
40      /etc/redhat-lsb
8       /etc/yum/pluginconf.d
24      /etc/yum
du: `/etc/audisp': Permission denied
32      /etc/samba
8       /etc/sysconfig/modules
388     /etc/sysconfig/network-scripts
以下略
$ du /etc | sort ←依目錄大小排序

預設顯示的單位是 1024 bytes,選項 du -h 為把大小單位用 KB, MB, 或 GB 來顯示。

其他常用的選項有 du -a 顯示目錄內目錄和檔案的大小。du -s 僅顯示指定目錄的總和大小 (目錄內各子目錄和檔案的總和)。

例:
$ du -sh ~/ ←顯示家目錄的總大小
16M      /home/aaa/

如果以一般帳號登入,有些目錄或檔案因有權限問題而不能讀取會影響統計, 大部份和硬碟操作有關的指令除了 dudf 外都需 Superuser才能操作。

blkid 顯示硬碟資訊
Unix/Linux 對硬碟等媒體裝置叫〝block devices〞,故工具 blkid 是顯示 block devices id。(一般要用 root 登入才能正確的執行和顯示且沒掛載的 filesystem 也會顯示。)

blkid 是了解硬碟資訊的好工具用法也不難如下例。

例:
# blkid ←顯示硬碟資訊
/dev/sda5: LABEL="/" UUID="24328158-f8c3-4c5e-9be0-cbd1ceee581f" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda1: LABEL="/boot" UUID="8ab1dede-36dd-4469-a174-ffb04f9ee6df" SEC_TYPE="ext2" TYPE="ext3"
以下略

主要的資訊有裝置檔名, 標籤名稱 UUID 和何種檔案系統。其中的 UUID (Universally Unique Identifier,通用唯一識別碼)為格式化產生的一組唯一號碼,可用於 mount,或 LVMRAID 識別硬碟或 partition,不會因升級 Linux Kernel 或變更 BIOS 設定或用了不同的Linux 發行版而改變了硬碟的裝置檔名(如〝/dev/hda〞變〝/dev/sda〞)。

如只想顯示指定資訊選項為〝-s〞,用法為 blkid -s [LABEL][UUID][TYPE]

例:
# blkid -s TYPE ←顯示各 partiton 為何種 filesystem
/dev/sda5: TYPE="ext3"
/dev/sda1: TYPE="ext3"
/dev/sda2: TYPE="ext3"
/dev/sda3: TYPE="swap"
/dev/sdb1: TYPE="ext3"
/dev/sdc1: TYPE="vfat"
# blkid -s LABEL ←顯示各 filesystem 的標籤名稱(有取 LABEL 名稱才會顯示)
/dev/sda5: LABEL="/"
/dev/sda1: LABEL="/boot"
/dev/sda2: LABEL="/home"
/dev/sda3: LABEL="SWAP-sda3"
/dev/sdb1: LABEL="data"
/dev/sdc1: LABEL="PEN_FLASH"
# blkid -s UUID ←顯示各 partition 的 UUID
/dev/sda1: UUID="9da5bd9a-300f-42f8-8d32-49af244a4c4f"
/dev/sda2: UUID="374b2969-3c63-438f-8762-3db53f96f409"
/dev/sda3: UUID="a2e9407d-8a07-4d68-8a4a-ebd712280f10"


輸出和裝備有關的資訊選項為〝-o〞,用法為 blkid -o [device][full][value]

例:
# blkid -o device ←顯示各裝置檔名
/dev/sda5
/dev/sda1
/dev/sda2
/dev/sda3
/dev/sdb1
/dev/sdc1


^ back on top ^



4.2 硬碟分割 (Disk partitioning)
一個房子如很大,可能會隔間為許多房間,同樣的硬碟也可以適當的分割為幾個較小的磁碟,分割硬碟的動作叫〝硬碟分割〞(Disk partitioning)。而 partition 分割出來的磁碟就好像真的擁用那麼多的硬碟,以熟悉的 Windows/DOS 來舉例雖只有一顆硬碟,經硬碟分割後就有本機磁碟D:/E:等,好像真的有好幾顆硬碟。

和房子不一樣的地方為房子沒隔間房間還可住人,但不管什麼作業系統,硬碟至少要分割一個以上的 partition 才可工作。把一顆硬碟分割成多個磁碟的好處有: 至於硬碟分割多個 partition 的缺點為如果此顆硬碟真的掛了,覆巢之下無完卵,此顆硬碟所分割出來的 partition 也隨之同年同月同日死。故可考慮把不同的 partition 放在不同的實體硬碟來分散風險,以免雞蛋都放在同一籃子裡。至於硬碟要分幾個 partition 或不同的 partition 是要用同一硬碟來分割或另一顆實體硬碟呢?答案是沒有標準答案,和買保險一樣保障和付出每個人考慮不一樣。

硬碟分割的慨念無關作業系統,差別可能是名詞用語沒統一和不同的作業系統所支援的硬碟分割表不一樣,故貫通原理可套用到 Winodws/Mac OS/Linux。

PC 上常見的硬碟分割表有分傳統的 MBR 硬碟分割和新型式的 GPT 硬碟分割,這兩種 Linux 都有良好的支援。

硬碟分割好 partition 後並不能馬上使用,還要經如下步驟:
傳統 MBR 的硬碟分割
MBR〝主引導磁區紀錄〞(Master Boot Record,MBR)是傳統 PC 的硬碟分割和開機的方式,在 1983 年隨 PC-DOS 2.0 一直延用至今,優點是幾乎所有 PC 的皆有支援,相對的缺點是 MBR 只用 32-bit 的 LBA 定址,故只能支援 232 x 512 byte 約 2.19TB 以下容量的硬碟。(當時作夢也沒想到硬碟會超過 2TB),MBR 方式是 PC 剛開機時 BIOS 會先讀取硬碟的最開頭(Cylinder 0、Head 0、Sector 1)大小 512 Byte 的地方稱〝MBR〞(主引導磁區紀錄)。
如有點頭暈看下表可能會比較清楚,一顆硬碟的 MBR partition table 直接記錄的 partition 最多只有 4 個,而直接記錄的 partition 稱 Primay partition。
硬碟 Partition (Max 4 個 Primary Partition)
Primary 1 Primary 2 Primary 3 Primary 4

如要分割超過 4 個 partition,要把某 partition 改記錄指標叫 Extended Partition。
硬碟 Partition (3 個 Primary+1個 Extended )
Primary 1 Primary 2 Primary 3 Extended

再根據 Extended 上的指標(住址)上的記錄去找額外規劃的硬碟分割表叫 Logical Partition。
Primary
Partition 1
Primary
Partition 2
Primary
Partition3
Extended Logical
Partition 1
Logical
Partition 2
Logical
Partition 3
Logical
Partition 4
....... Logica
Partition n

而如要分割超過 4 個 partition, Primary Partition 不一定要用那麼多個,也可如下分割一個 Primary,其餘皆 Extended 所分割的 Logical Partition。
Primary
Partition
Extended Logical
Partition1
Logical
Partition 2
Logical
Partition 3
Logical
Partition 4
....... Logical
Partition n

以 Windows 來說,開機的 Primary Partition 多為 C 碟,其餘的 partition 依序為 D 碟 E 碟等,但 Linux 可不是這樣分,Linux 對 partition 的命名法如下:
例如一顆硬碟分割 4 個 Primary Partition, IDE 和 SCSI/SATA 硬碟各 partition 的裝置名稱如下(藍字部分):
硬碟分割 4 個 Primary Partition
  Primary 1 Primary 2 Primary 3 Primary 4
IDE 硬碟
Primary IDE通道&硬碟@Master /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4
Primary IDE通道&硬碟@Slave /dev/hdb1 /dev/hdb2 /dev/hdb3 /dev/hdb4
Secondary IDE通道&硬碟@Master /dev/hdc1 /dev/hdc2 /dev/hdc3 /dev/hdc4
Secondary IDE通道&硬碟@Slave /dev/hdd1 /dev/hdd2 /dev/hdd3 /dev/hdd4
SCSI/SATA 硬碟
SCSI硬碟 ID#0 或 SATA 硬碟 port 1 /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4
SCSI硬碟 ID#1 或 SATA 硬碟 port 2 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
後面依些類推

但再強調一次,有四個因素會影響 Linux 硬碟裝置檔名為〝/dev/hd[a~d]〞還是〝/dev/sd[a~p]〞但無論如何 Primary Partition 數字部份小於等於 4。

再舉例,一顆硬碟如只分割 2 個 Primary Partition,和一個 Extended Partition, 而 Extended Partition 又分割 3 個 Logical Partition,此時 IDE 和 SCSI/SATA 硬碟各 partition 的裝置名稱如下:
硬碟分割 2個 Primary Partition + 3 個 Logical Partition
  Primary
Partition 1
Primary
Partition 2
Extended Logical
Partition 1
Logical
Partition 2
Logical
Partition 3
IDE 硬碟
Primary IDE通道&硬碟@Master /dev/hda1 /dev/hda2     /dev/hda5 /dev/hda6 /dev/hda7
Primary IDE通道&硬碟@Slave /dev/hdb1 /dev/hdb2     /dev/hdb5 /dev/hdb6 /dev/hdb7
Secondary IDE通道&硬碟@Master /dev/hdc1 /dev/hdc2     /dev/hdc5 /dev/hdc6 /dev/hdc7
Secondary IDE通道&硬碟@Slave /dev/hdd1 /dev/hdd2     /dev/hdd5 /dev/hdd6 /dev/hdd7
SCSI/SATA 硬碟
SCSI硬碟 ID#0 或 SATA 硬碟 port 1 /dev/sda1 /dev/sda2     /dev/sda5 /dev/sda6 /dev/sda7
SCSI硬碟 ID#1 或 SATA 硬碟 port 2 /dev/sdb1 /dev/sdb2     /dev/sdb5 /dev/sdb6 /dev/sdb7
後面依些類推

延伸分割(Extended Partition)因只是指標不能直接拿來用,要再分割為 Logical Partition 才能使用,而所分割的 Logical Partition 數字是由 5 開始。

如下例以 df 列出硬碟資訊 ,其中的〝/dev/sda5〞(根目錄的 partition)就是 logical partition。
$  df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda5             13172924   3837376   8655600  31% / ←logical partition
/dev/sda2              4956316    154760   4545724   4% /home
/dev/sda1               194442     12060    172343   7% /boot
tmpfs                   514304        12    514292   1% /dev/shm
/dev/sdb1             31210416     88736  31121680   1% /media/disk

如果硬碟分割多個 partition 到底用那一個 partition 開機呢?不管硬碟分割幾個 partition,只有 Primary Partition 可設為可開機的〝啟動分割區〞(Active partition);Logical Partition 不可設為啟動分割區。

所以如果硬碟中只有一個作業系統,故規劃一個 Parimary partition 就夠了(多也沒關係),其餘的 partition 都可規劃為 Logical Partition。
如一硬碟要安裝多個作業系統.作業系統最好就裝在 Primary Partition,以免有些作業系統不能安裝在 Logical Partition 而造成不能開機的相容問題,此時可規劃多點的 Primary Partition 來安裝不同的作業系統。

硬碟的分割很重要,因分割時如操作不當,硬碟的資料可會揮發掉,覆水難收要救回來可是很難,且初學者很容易搞混,所以要多練習。

fdisk 分割硬碟
傳統 MBR 硬碟分割工具是 fdisk,由於 fdisk 是一個互動程式操作起來不複雜也不用去背命令,但一定要了解其背景知識如 primary partition & extended partitionlogical partition 的常識和了解硬碟在 Linux 下的裝置檔名。因一時操作的錯誤要救回資料幾近零。

為了降低風險,要操作的硬碟請事先備份,可用已備份的 USB 隨身碟 (USB flash drive)來實驗,或用 dd 配合 losetup 來產生一虛擬硬碟來練習或乾脆用虛擬機(Virtual Machine)來新增一新的虛擬硬碟,好處是不但不怕操作錯誤且隨你便,要虛擬 IDE/SATA 或 SCSI 硬碟皆可,Linux 對虛擬機虛擬出來的硬碟是傻傻分不清如幻似真,操作起來和真的硬碟一致。

以虛擬機 virtualbox 為例,在 Guest OS 還沒啟動時可在〝設定值〞(Settings)->〝存放裝置〞(Stroage)如下圖 A 點可加入 IDE/SATA 或 SCSI 控制器,相對應的可在 B 點加入 IDE/SATA 或 SCSI 硬碟。



一般使用者是不能操作危險的 fdisk ,故要用 Superuser(root) 登入來操作。如沒拆機器或看 BIOS 的資訊,有時根本不知道 PC 內有幾顆硬碟,此時可用選項 fdisk -l (小寫的 L)來列出硬碟資訊。

例:(以 root 登入操作)
# fdisk -l ←列出硬碟資訊

Disk /dev/sda: 21.4 GB, 21474836480 bytes ←第一顆硬碟〝/dev/sda〞
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000243c8

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          25      200781   83  Linux ←〝*〞boot partiton
/dev/sda2              26         662     5116702+  83  Linux
/dev/sda3             663         789     1020127+  82  Linux swap / Solaris
/dev/sda4             790        2610    14627182+   5  Extended
/dev/sda5             790        2610    14627151   83  Linux

Disk /dev/sdb: 21.4 GB, 21474836480 bytes ←第二顆硬碟〝/dev/sdb〞
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table ←〝/dev/sdb〞此為新的硬碟還沒 分割過 partition

上例中顯示〝Boot〞欄有〝*〞號為開機的 partition, fdisk 可列出一顆硬碟分割了多少 partition,上例〝/dev/sda〞,分割出〝/dev/sda1~5〞共五個 partition,但 fdisk 無法透露 partition 名稱,要知道〝/dev/sda1~5〞各掛載 的 partition名稱要交叉參考指令 df 所指供的資訊。

如為新的硬碟如上例中的第二顆〝/dev/sdb〞,因沒分割過故沒有數字部分(如〝/dev/sdb1〞 );接下來就用這顆硬碟來示範如何分割 partition。

fdisk 後面加硬碟裝置檔名就可對那顆硬碟操作,如不確定 Linux 的裝置檔名是〝/dev/hda〞或〝/dev/sda〞用 fdisk -l ls /dev/[sh]d* 來確認一下。

例:
# ls /dev/[sh]d* ←列出有那些硬碟或 partition
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5 /dev/sdb

上例中〝/dev/sdb〞 後面沒接數字(如〝/dev/sdb1〞)故 partition 還沒規劃過,接下來實際操作來分割此硬碟。

例:(以 root 登入操作)
# fdisk /deb/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x9939c1b3.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.


The number of cylinders for this disk is set to 2610.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): ←如忘那有那些命令可用,可按 <m>

因操作 fdisk 極度的危險,故任何時可按 m (m for manual)列出命令的簡單說明,且操作過程中都只在 RAM 中進行,只要不按 w 寫入 partition table 隨時按 q 退出 fdisk 都是安全的,按 m 後的命令說明如下。

例:(進入 fdisk 後按 m )
Command (m for help): m
Command action
   a   toggle a bootable flag ←設定開機的旗標
   b   edit bsd disklabel ←編輯 BSD 作業系統的硬碟標籤
   c   toggle the dos compatibility flag ←設定 dos 相容的旗標(如dos/win95/98)
   d   delete a partition ←刪除 partition
   l   list known partition types ←列出支援的 partition 種類和 id
   m   print this menu ←fdisk 命令的簡單說明
   n   add a new partition ←建立新的 partition
   o   create a new empty DOS partition table ←建立空的 DOS partition table(如想清除硬碟現存任何 partition 也可選此)
   p   print the partition table ←顯示目前操作所規劃的 partition table
   q   quit without saving changes ←放棄並退出 fdisk
   s   create a new empty Sun disklabel ←建立空的 SUN 作業系統的硬碟標籤
   t   change a partition's system id ←變更 partition 的 id
   u   change display/entry units ←切換顯示分區起始位置單位(磁柱和磁區來回切換)
   v   verify the partition table ←驗證 partition table
   w   write table to disk and exit ←寫入 partition 並退出
   x   extra functionality (experts only) ←進入專家模式的額外操作 (按<r>又回到一般模式)

如果想清除硬碟現存任何 partition 可用 o 建立空的 DOS partition 會清空任何 partition 重新開始規劃, 其中命令〝b〞,〝c〞和〝s〞為非 Linux 作業系統用的 partition可先不管他,我們先來示範建立一新的 Linux partition 。

(fdisk 操作)
Command (m for help): n ←建立新的 partition
Command action
   e   extended ←建立 extended partition
   p   primary partition (1-4) ←建立 primary partition
p ←按 <p> 建立 primary partition
Partition number (1-4): 1 ←輸入要建立的 parimary partition
First cylinder (1-2610, default 1):↵ Enter ←輸入起始磁柱(一般按<ENTER>用預設值即可)
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610): +10000M ←輸入此 partition 截止磁柱或大小(建議用大小,輸入〝+sizeK〞或〝+sizeM〞)或最大的容量按<Enter>

Command (m for help): p ←顯示目前操作所規劃的 partition table 來確認一下

Disk /dev/sdb: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x378a1ba0

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1217     9775521   83  Linux

Command (m for help): w ←寫入 partition 並退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
You have new mail in /var/spool/mail/root

硬碟的 partition 大小=磁柱(cylinder) x 磁碩(head) x 磁區(sector) x 512 Byte,但不用煩惱分割時要去計算,交給 fdisk 去轉換就好了,例如按 n 新增 partition 會要求輸入〝起始磁柱〞(First cylinder),按 ↵ Enter 就是此 partition 的起始磁柱,而此 partition 的大小就輸入〝 +sizeM 或 +sizeK〞或按 ↵ Enter 把剩餘的空間都給此 partition。

如有變更 partition 要重開機,因 Linux kernel 只在開機時載入 partition table, 雖可用指令 partprobe 強迫 Kernel 更新 partition table,但果如此硬碟在還沒變更 partition 時已掛載還是有可能新舊 partition table 不同步,總之 partition 有變更重新開機比較保險。

上例只示範分割一個 primary partition,有興趣的話自行測試刪除 partition 或增加一些 paimary/enxtended partition 玩一玩就會貫通。

上例在分割 partition 的過程中有按 p 來顯示目前的 partition table,其中 ID 欄顯示的〝83〞為 Linux partition,是按 n 建立新的 partition 的預設值,如想建立非 Linux partition 可按 t 來改變 partition 的 id,按 l(小寫的 L)會列出所有支援的 partition 種類和 id,如下例。

(fdisk 操作)
Command (m for help): l ←(小寫的 L)會列出出支援的 partition 種類和 id

 0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot   
 1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx         
 6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data    
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt         
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access     
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O        
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor      
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs        
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT        
10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
以下略

fdisk 幾乎可用來分割現存已知任何 partition,例如外接的 USB-硬碟或 USB 隨身碟如超過 32G 在 Windows下會故意自宫不讓使用者分割為 FAT32 或 FAT 的 partition,但實際上 FAT32 可讀寫超過 32G,因微軟 FAT (FAT32)的專利有爭議故演變到最後幾乎任何裝置皆可合法使用 FAT(FAT32) ,所以把 USB-硬碟或 USB 隨身碟規劃為 FAT partition 的好處是可跨平台的便用。

例如 Android 的手機或平板如有支援 OTG(USB On-The-Go)如接上 FAT partition 的USB-硬碟或 USB隨身碟都可讀得到裡面的檔案很方便檔案在不同平台間交流。用 fdisk 來分割 FAT32 partition 很簡單,在 fdisk 的操作時按 t 改變 partition id 時 id 選 b (WIN95 FAT32)或 c (W95 FAT32 (LBA)。

另外在 Windows 下可能不能對非硬碟的媒體分割 partition(如 SD 卡或 USB 隨身碟)如有必要可善用 fdisk


新型 GPT 磁碟分割
GPT(GUID Partition Table)磁碟分割主要為了克服 MBR 硬碟分割 Partition 時不能超過 2.19 TB 的限制,且可支援到天文數字的 18EB(1EB=1024PB)。

傳統的 BIOS 因開機時會先讀取硬碟 MBR 的 parititon 記錄,而受限 MBR 定圵的關係 partition 不能超過 2 TB 而逐漸不符合現代的需求。

因此 Intel 用來取代老舊的 BIOS 而主導的一新界面叫〝EFI 〞(Extensible Firmware Interface,可延伸韌體介面)EFI 對硬碟分割表和開機程序重新定義,但有些舊的 PC 還是用傳統的 BIOS ,傳統的 BIOS 如遇到 GPT 分割的硬碟會有相容間題而不能開機,尤其是痿軟微軟那家公司出版的 Windows;還好大部分的 Linux 發行版都沒這方面的困擾。下表為傳統的 BIOS 或 EFI 遇到 GPT來分割的硬碟的相容性。


GPT 磁碟分割和作業系統和 BIOS/EFI 支援程度
BIOS type 傳統 BIOS EFI
作業系統 版本/平台 讀/寫支援 開機 讀/寫支援 開機
FreeBSD 7.0+ Yes Yes Yes Yes
Linux 大部分的Linux 發行版
如 Fedora 8+
Yes Yes Yes Yes
OS X 10.4.6+ Yes Yes Yes
Solaris Solaris 10+ Yes Yes Yes
Windows XP IA-32 No No Yes No
x64 Yes No Yes Yes
Windows 7 IA-32 Yes No Yes No
x64 Yes No Yes Yes
Windows 8 IA-32 Yes No Yes No
x64 Yes No Yes Yes

GPT 另一個好處是沒有 MBR Partition 最多四個 primary partition 的限制,所以就沒有所謂的 extended partitionlogical partition,所以論理上可安裝超過四個以上的作業系統開機。

雖 GPT 分割 partition可突破 2TB 且理論上可無限分割 partition 和每個 partition 都可安裝不同的作業系統來開機,但因 GPT 的磁碟分割定義始於 EFI,所以如 PC 是傳統 BIOS 或引導程式不支援 GPT 是有相容問題,所以可根據以下的情況來決定到底是要用 MBR 或 GPT:
parted 分割硬碟
partedGNU 所釋出的磁碟分割工具,parted 名稱為 partition 和 editor 兩字的縮寫,故望文生義就是用來編輯 partition, parted 同時支援 MBRGPT 和蘋果電腦的 mac patition table。 ( fdisk 不支援分割 Apple mac 的 partition table)。

由於硬碟越來越大, 當分割的 partition > 2T 就需 GPT 來分割加上先進格式化硬碟和固態硬碟(SSD)的竄起是趨勢為不可逆轉的現象,這些 parted 都比 fdisk 提供更多的支援,故建議多用 parted 來取代老舊的 fdisk

parted 的操作可分互動模式(interactive)和命令模式(command line),互動模式比較友善和不易出錯,而命令模式比較快速,適合大量快速的操作。

^ back on top ^





4.3 格式化檔案系統
partition 如經 fdiskparted 或其他工具分割完要經格式化後才可正常的使用,且格式化的檔案系統要和 partition 的 filesystem type (id)一致,例如以 partedmkpart 設 filesystem type 為 ext2 (partition id =83HEX)則可格式化為 ext2ext3filesystem,但不可格式化為 FAT32 或其他的檔案系統否則可能會發生不相容問題。

以 ex2/ext3 的 filesystem 來說分割完 partiton 要再格式化才能使用的原因為格式化時要分配 inode 和指定 block 的大小,如原 filesystem 內已有資料,格式化完後資料會都不見,所以操作時要很小心,且只有supersuer 才可操作。在 Linux 下常用的格式化工具為 mkfs

mkfs 格式化 filesystem
mkfs 為一〝前端 〞(front-end)程式,所謂前端程式實際上是一個殼主要為讓格式化不同 filesystem 時有一致的操作界面,例如 mkfs -t vfat 為格式化 FAT32 的 filesystem,事實上是執行程式 mkfs.vfat ,同樣的 mkfs -t ext2 為執行 mkfs.ext2。如不知系統支援那幾種檔案系統的格式化可輸入 ls /sbin/mkfs.* 查看一下。

例:
# ls /sbin/mkfs.* ←查看系統支援那些 filesystem 的格式化
/sbin/mkfs.cramfs /sbin/mkfs.ext3 /sbin/mkfs.ntfs
/sbin/mkfs.ext2 /sbin/mkfs.msdos /sbin/mkfs.vfat


mkfs 可格式化大部份主流的 filesystem,用法如下::
語法 mkfs [-otpiton] [fs][-option] device
指令名稱/功能/命令使用者 選項 功能
mkfs/
(mak filesystem)格式化檔案系統/
root
-t 指定格式化的檔案系統, 常用的如下:
cramfs: ext2/ext3 的一種,本身經 zip 壓縮只能讀不能寫故很適合放在 Flash-Disk 當開機的硬碟。
ext2 或 ext3: 不用解釋了。
ntfs:Windows NT,XP 以上的檔案系統。
vfat: 支援長檔名的 FAT(FAT32)。
msdos: 只支援 8.3 檔名的 FAT。
-b 指定 block 大小 (不適用 vfat/msdos/ntfs)。
-L 設定 partition 標籤 (不適用 vfat/msdos/ntfs)。
fs fs(filesystem option) 後面可接的選項如下:
-c :檢查看有無壞軌再格式化。
-l:(小寫的 L)讀取 badblocks 所輸出的檔案。
-v:顯示格式化過程。

例:
# mkfs /dev/sdb1 ←如都沒選項,預設 filesystem 為 ext2
# mkfs -t ext3 -b 2048 -L DB /dev/sdb2 ←格式化為 ext3,block=2k,標籤=DB
# mkfs fs -c /dev/sdb1 ←格式化前先檢查有無壞軌
# mkfs -t vfat /dev/sdc1 ←格式化為 FAT32
# mkfd -t msdos /dev/fd0 ←格式化軟碟為 msdos


tune2fs 將 ext2 轉 ext3
檔案損壞時由於 ext3ext2 有更佳修復的機率,所以建議都升級到 ext3。用 tune2fs -j 就可無縫安全的從 ext2 升級到 ext3。

例:
# tune2fs -j /dev/sdb1 ←將 dev/sdb1 由原 ext2 升級到 ext3

tune2fs 不只可用來升級 filesystem ,一般用來設定多久檢查一次 filesystem, 檢查方式有兩種 tune2fs -c 設定 filesystem 掛載幾次後會自動檢查,而 tune2fs -i 設定檢查間隔.詳細用法如下:
語法 tune2fs [-otpiton] device
指令名稱/功能/命令使用者 選項 功能
tune2fs/
(tune to filesystem)教調檔案系統/
root
-l(小寫 L) 列出 filesystem superblock 和其他資訊
-c # 設定filesystem 掛載幾次後會自動檢查 filesystem(# 為數字,如為 0 或 -l 取消掛載都檢查)
-i#[dmw] 設定自動檢查 filesystem 的時間間隔.(# 為數字,如為 0 或 -l 不檢查;d天m月w周)
-m # 保留多少百分比的 block(# 為數字,一般系統預設保留 5% 的 block 給系統)
-r # 設定保留的多少 bock.(# 為數字)
-M 設定最後掛載目錄給檔案系統
-j ext2 轉 ext3
-L 設定 partition 標籤(同 e2labelmkfs -L 設的標籤名稱)
-o 額外的掛載選項

例:
# tune2fs -L "share" /dev/sdb1 ←將 dev/sdb1 設標籤名為〝share〞
# tune2fs -l /dev/sda2 | grep 'Block size' ←查看 Block 大小
# tune2fs -m 10 /dev/sdb1 ←保留 10% 的 block
# tune2fs -i 3m /dev/sdb1 ←三個月後檢查 filesystem
# tune2fs -c 100 /dev/sdb1 ←設定掛載 100 次後自動檢查 filesystem
# tune2fs -c -l /dev/sdb1 ←取消掛載檢查

e2label 設定 filesystem 標籤
一個 filesystem (一般一個 partition 只能規劃一個 filesystem)為了方便識別,可為其 filesystem 設一標籤名稱,如 filessystem 為 ext2/ext3 或 ext4 可用 e2label 設定其標籤名稱,其語法為 e2label device label_name(標籤名稱名稱不可以超過 16 個字元)。

例:
# e2label /dev/sdc1 DB_DATA ←將 /dev/sdc1 設標籤為〝DB_DATA〞

如 filesystem 為 FAT,設定標籤的指令為 dosfslabel mlabel -i

fsck 檢查和嘗試修復檔案系統
檢查和嘗試修復檔案系統指令為 fsck。 系統可能因突然的斷電或某軟體當掉而自動或被迫重開機,此時因 filesystem 沒經正常的卸載再開機時系統會自動執行 fsck

fsckmkfs 類似為前端程式,實際會根據不同的 filesystem 執行相對應的工具如 fsck.ext2fsck.ext3fsck.vfate2fsck

除了不正常的關機外,開機時也會根據掛載次數或掛載間隔 (Check interval )來判斷是否開機時要自動用 fsck 來檢查和修復檔案系統(可用 tune2fs -l DEVICE 來顯示以上資訊)。

開機時 fsck 檢查 filesystem 是系統還沒掛載時就作動,故開機後如想用fsck 來檢查某檔案系統務必要先卸載,否則該檔案系統可能會毀損 !!!!

fsck 要檢查的 filesystem 可用裝置檔名(如 fsck /dev/sda2)或掛載點(如 fsck /home)。

例:
# df ←用 df 確認一下掛載點或裝置檔名
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda5             13172924   3858480   8634496  31% /
tmpfs                   514304        12    514292   1% /dev/shm
/dev/sda2              4956316    154676   4545808   4% /home
/dev/sda1               194442     12060    172343   7% /boot
# umount /home ←卸載〝/home〞
# fsck /home ←檢查 〝/home〞
fsck 1.40.2 (12-Jul-2007)
e2fsck 1.40.2 (12-Jul-2007)
/home: clean, 569/1280000 files, 78765/1279175 blocks

fsck -A 為根據〝/etc/fstab〞要自動掛載的 partition 才會檢查,而 fsck -AR fsck -A 但略過根目錄,常用來檢查除根目錄外的所有 partition。(最好用 init 1 令系統進入單用戶模式〝Single-user Mode〞後卸載除根目錄的 partition 後再執行)。

例:
# init 1 ←進入 sigle user mode (維護模式)
# umount -a ←卸載所有開機自動掛載的 partition
umount: /:device is busy ←根目錄使用中,一般不可卸載
# fsck -AR ←檢查除根目錄外開機掛載的所有 partition
fsck 1.40.2 (12-Jul-2007)
e2fsck 1.40.2 (12-Jul-2007)
e2fsck: need terminal for interactive repairs
e2fsck 1.40.2 (12-Jul-2007)
e2fsck: need terminal for interactive repairs

觀察 UNIX 目錄結構會發現 〝/bin〞,〝/dev〞等 Linux 運行必要的目錄和根目錄是同一 partition, 所以就算進入 runlevel = 1 的單用戶模式也無法卸載根目錄,但根目錄很重要卻因無法卸載而沒辦法用 fsck 來檢查和修復怎麼可以? 故一般在〝/etc/fstab〞會把根目錄所在的 partition 其第六欄的 pass number 設為 1 的最高優先檢查。如還是不放心用 shutdown -rF now 重開機後就會用強迫啟用 fsck 檢查。

比較常用的用法還有 fsck -a 為如檢查有錯誤則自動修復,相關的還有 fsck -f 沒問題也強迫修復; fsck -y 為則在偵測到錯誤時一律以 yes 回答(用於遇到進行修復時有 Yes/No 要使用者輸入)相反的用法 fsck -n 一律以 no 回答用於找出問題但不修復。


^ back on top ^




4.4 mount 掛載 filesystem
操作 Windows 時如接上已知 filesystem 的硬碟/光碟/軟碟/USB 隨身碟等媒體會自動的〝掛載〞馬上就可使用該媒體好像是很自然和理所當然。但在 UNIX 世界可不是這樣,新增加的儲存媒體要經系統管理員操作 mount (掛載)才可存取。(如受權一般的使用者也可操作 mount / umount 要在〝/etc/fstab〞內的 options 欄設定〝user〞)。

目前主流的 Linux 發行版(以 fefora 8 為例)對於儲存媒體的掛載是介於 Windows 和 UNIX 之間,如跑圖形界面的 GNOME 桌面環境會自動的掛載 CD-ROM 或隨插即用(plug and play)的 USB 儲存媒體,如以系統管理員登入可能還會自動掛載硬碟上已知的 filesystem。但以文字界面登入則保有 UNIX 傳統不會自動的掛載任何新增的 filesystem 。

但太自動的掛載儲存媒體有好有壞,好處是方便但伴隨的缺點是資安的危險,例如某硬碟有機密的資料如自動的掛載大家都可存取其內容實在沒什安全性。所以 Linux 的 server 大多會預設 init 運行級別=3 的文字界面來開機運作,不但負載較輕且 filesystem 要經系統管理員手動的〝掛載〞才可存取其內容。

由於 GUI 的 GNOME 桌面環境的〝 gnome-volume-manager〞會自動的掛載 USB 儲存媒體,如以 superuser 登入操作還會掛載硬碟反而會對操作 mount 造成干擾,故後續的說明和操作是反璞歸真的用文字面來開機和運作(編輯〝/etc/inittab〞中找到如下文字〝/id:5:initdefault:〞,改為〝/id:3:initdefault:〞重開機就會以 runlevel =3 的文字界面登入),盡量的接近原始的 UNIX 操作來示範。

要掛載 filesystem 時要指定一個目錄當掛載點(mount point),當掛載成功後如該目錄內如原有資料會暫時隱形來呈現掛載的內容直到卸載才會再度現行。傳統的 UNIX 目錄〝/mnt〞為硬碟的 filesystem 的掛載點,而 Linux 偏好以〝/media〞當掛載點。


^ back on top ^















www.reliablecounter.com
digital mastering

[註4.0] IDE 排線如為 40-pin ,最高只支援到 UDMA2 (最高33MB/s), 如為 80-pin(和 40-pin 的 IDE 排線相容,但每一信號線中間多了地線,可減少串音(cross-talk)才可能支援到 UDMA4 (最高66MB/s) 以上的速度。