硬碟分割的觀念


現在的硬碟那麼大, 卻讓 windows 一個作業系統佔據, 蠻可惜的。 學會分割 (partition) 硬碟, 可以在一顆硬碟上安裝 windows, 許多版本的 linux, *BSD, ... 等等多個作業系統, 一個出問題時, 可以拿其他系統救急。 也可以將作業系統和資料分開, 系統出問題時比較容易分開處理。

一顆硬碟可以切成四個 主分割區 primary partitions, 代號分別為 1,2,3,4。 如果這還不夠用, 可以將其中一個 primary partition 改成 延申分割區 extended partition, 再將它切成十來個 邏輯分割區 logical partitions。 當然, extended partition 只是一個空殼子; 真正拿來放作業系統或資料的, 不是 primary partition 就是 logical partition。 一顆硬碟上不論有幾個 primary partitions, 它的 logical partitions 的代號一律從 5,6,7, ... 開始數起。 如果 partition 6 被刪除, 則它後面所有的 partition 代號都會向前遞移。

更多關於分割的詳細知識, 請見 spfdisk 計劃的 FAQ, 或是 Linux Partition HOWTO

看完理論, 開始動手吧。 在 Linux 底下, 一般的 SATA 裝置 (或古代的 IDE 裝置) 通常會呈現為 /dev/hda /dev/hdb ... 等等 device file。 例如 cd /dev; ls hd* 若出現 hda hda1 hda2 hda5 hda6 hdc 那麼可能您有一顆硬碟, 切成一個 primary partition, 一個 extended partition, 其中 extended partition 又切成兩個 logical partitions; 另外有一部光碟機 (hdc)。 至於 usb 碟及讀卡機上的記憶卡, 則稱為 sda sdb sdc ... 等等。 請在 /dev 目錄底下 ls sd* 指令。 把隨身碟或記憶卡插入之後幾秒鐘, 再看一次。

切割硬碟的工具有很多; 建議學最陽春的, 所有版本 Linux 都提供的工具, 這樣在任何環境下都活得下去。 我自己習慣用命令列模式的 fdisk; 新手可以用文字選單模式的 cfdisk。 cfdisk 的操作很簡單: 上下鍵選取一個分割; 左右鍵決定要對它做什麼動作; 按 Enter 執行。 如果後悔, 隨時可以按 q 離開, 不會儲存修改。 但進入 cfdisk 之前, 要記得先把該碟的所有分割卸載下來: umount /dev/sdz* 有時候 cfdisk 無法開啟的硬碟或 usb 碟 (主要是因為 partition table 亂掉了) 就要靠 fdisk 來處理。 或者可以乾脆將 partition table 清空: dd count=1 < /dev/zero > /dev/sdz 再重新進入 cfdisk。 製作分割時, 要記得替每個分割指定一個十六進位代號, 介於 0-FF 之間。 常用的代號有 B (Win95 FAT32), 83 (Linux), 82 (Linux swap) 等等。 一切動作完成之後, 要記得儲存。

分割完成之後, 必須將這些新的分割 格式化 format, 建立新的 檔案系統 file system, 這樣作業系統 (Linux 或 Windows 等等) 才能使用。 較常用的指令:

	mkfs -t ext2 /dev/sdz99		# 建立 ext2 給 linux 用
	mkfs -t ext2 -j /dev/sdz98	# 建立 ext3 給 linux 用
	mkfs -t vfat /dev/sdz97		# 建立 vfat 給 windows 用
    

在某些版本的 linux (例如 slackware 所衍生的版本) 上, 建立 vfat 的指令是 mkdosfs /dev/sdz97

現在多數版本的 linux 會自動偵測隨身碟或光碟, 只要插入, 即可從檔案總管當中看到上面的檔案。 但有些版本不會。 這時要手動掛載, 例如 mount /dev/sdz1 /mnt/t1 其中 sdz1 要改成你的裝置名稱; 而 /mnt/t1 則是預先建好的任意空目錄, 稱為 掛載點 mount point。 用完之後記得卸下來: umount /dev/sdz1umount /mnt/t1 下這些指令之前之後, 可以下 dfmount 比較前後的變化, 瞭解這些指令的效果。