磁盘格式化与挂载

来源:互联网 发布:mac web原型设计工具 编辑:程序博客网 时间:2024/05/21 05:40

如果您目前系統只有一個硬碟,並想加上第二個硬碟時,如果是 Windows 或 DOS,我們都會先做硬碟的切割 (partition),再做格式化 (format)。在 FreeBSD 中,要使用一個新硬碟的動作也類似,必須先切割磁區,再進行格式化。

切割磁區的意思就是指定要讓系統使用多大的硬碟空間,之後我們在將這個空間格式化成 FreeBSD 的檔案系統格式。FreeBSD 大家應該聽過 FAT 檔案系統,它是以前 DOS 時代所使用的檔案系統,後來又發展了 FAT32,以支援大於 2GB 的磁碟分割區。而 Windows NT/2000/XP 預設使用的檔案系統為 NTFS。FreeBSD 4.x 預設使用的檔案系統格式為 UFS (Unix File System),在 5.x 之後,加入了新的檔案系統格式 UFS2。UFS2 和 UFS 最大的差別是 UFS2 支援 1TB 以上的硬碟分割區,除此之外, UFS2 還有一些新的功能,但都是在 UFS 上進行小修改,所以就速度上而言應該差不多。如果您有興趣可以參考這一份 Little UFS2 FAQ (http://sixshooter.v6.thrupoint.net/jeroen/faq.html)。

總而言之,新增一個硬碟的步驟為:

  • 切割出 Slice:就是在硬碟切割出一個磁區供 FreeBSD 使用。
  • 切割 Partition:就是在 Slice 下再切割 Partition。
  • 進行格式化。

我們假設您要加入的是一顆 IDE 硬碟,而希望將這個硬碟掛入 /volume1 這個目錄下。您第一步要做的就是先將硬碟插入電腦後,開機看看 BIOS 有沒有偵測到這個硬碟。我們假設這個硬碟接在第一個排線,是電腦中的第二顆硬碟,則開機後,這個硬碟的代號就是 ad1。請使用 root 登入後,執行指令 dmesg 或是 more /var/run/dmesg.boot,看看 FreeBSD 有沒有偵測新的硬碟 ad1

接下來,您就可以使用指令 sysinstall (如果是 FreeBSD 5.2 以前的版本,請使用 /stand/sysinstall) 來新增硬碟了。

6.4.1 使用 sysinstall

在使用 sysinstall 來設定新的硬碟之前,請先確定您是以 root 身份執行。接下來,您就可以依照下列步驟來新增硬碟:

  1. 進入 sysinstall

    進入 sysinstall 的主選單後,首先請選擇 [Configure],進入後,再選擇 [Fdisk] 項目以進入 Fdisk 選單。第一次進入 Fdisk 時,sysinstall 會要求您選擇所要設定的硬碟,請選擇 ad1。

  2. 使用 Fdisk

    相信您對於 Fdisk 的畫面應該很熟悉,我們在安裝 FreeBSD 時就使用過它。如果您要讓 FreeBSD 使用整個硬碟,請按 [A],接下來請按 [W] 以將設定寫入硬碟。在按了 [W] 後,會出現一個確認的視窗,選 [Yes] 即可。最後會出現要您選擇所要使用的 Boot Manager,因為這一個硬碟不是要用來開機用的,所以我們選 [None]。寫入後,請按 [Q] 離開 Fdisk 的畫面,並回到 Configure 畫面。接著請離開 sysinstall,再重新執行 sysinstall 以讓 sysinstall 重新偵測硬碟設定。

  3. 使用 Disk Label Editor

    重新執行 sysinstall 後,請選擇 [Configure] -> [Label] 以進入 Disk Label Editor。Disk Label Editor 會幫我們在 Slice 下切割 Partition 並格式化硬碟。在 Disk Label Editor 中,我最多可以建八個分割區 (Partition),編號從 a 到 h。不過有的代號有特殊用途。例如,分割區 a 通常會保留給根目錄使用,所以我們開機時所使用的分割區代號會是 a。而代號 b 表示是 swap partition,我們可以在多個硬碟中都有 swap partition。代號 c 是用來表示整個硬碟或是整個 Slice。所以最後 d-h 才是一般我們會使用到的分割區代號。

    我們要讓 FreeBSD 使用整個硬碟,所以必須將整個 Slice 切成一個 Partition。所以一進入 Disk Label Editor 後,請按 [C],在畫面上會顯示整個 Slice 的大小,直接按 Enter 即可建立一個分割區。接下來,我們必須選擇所要掛入本分割區的目錄,請選擇  FS 後,再輸入您所要掛入的目錄,例如 /volume1。如果是在安裝 FreeBSD 時,我們所設定的掛入點會被寫到 /etc/fstab 中,開機後就會自動將磁碟掛入該目錄。但是我們這裡所指定的掛入點並不會被寫入 /etc/fstab 中,最後我們還是必須再設定 /etc/fstab

    最後請按 [W]以進行分割及格式化。完成後,系統會將該才所建立的磁碟掛入您所指定的目錄下。接著請離開 sysinstall 回到命令列。

  4. 設定 /etc/fstab

    為了讓系統在開機時可以自動將此分割區掛入,我們必須再設定 /etc/fstab。請在 /etc/fstab 中增加下列資料:

    # Device          Mountpoint   FStype  Options     Dump    Pass#/dev/ad1s1d       /volume1     ufs     rw          2       2

6.4.2 使用命令列

您不一定要使用 sysinstall 來分割及格式化硬碟,sysinstall 只是提供一個比較容易使用的介面,最後還是會呼叫命令列的指令以完成硬碟的設定。使用命令列的方式比較複雜,而且較容易出錯,但卻可以讓您有更靈活的應用。看了如何從命令列新增一個硬碟可以讓您對 sysinstall 所做的事更瞭解。

我們一樣假設要新增的硬碟為 ad1,並且將整個硬碟切成一個磁區給 FreeBSD 使用。第一步要做的就是先使用 dd 這個指令來清除硬碟上舊的設定:

# dd if=/dev/zero of=/dev/ad1 bs=1k count=1

上述指令的意思是從 /dev/zero 這個裝置讀出資料寫到 /dev/ad1 中,每次寫入的 block size (bs) 為 1KB,做一次寫入的動作即可 (count)。我們知道 FreeBSD 各動硬體裝置當做檔案來看待,/dev/zero 這個檔案其實是一個虛擬的檔案,我們從這個檔案讀出來的資料都是 0。上述指令的動作的目的就是要將硬碟 ad1 的開頭 1024KB 清成 0,而硬碟開頭的部份存放的就是一些分割區設定的資料 (Partition Table)。

接下來呢我們就必須使用 fdisk 這個指令來切割 slice 了:

# fdisk -BI ad1******* Working on device /dev/ad1 *******fdisk: invalid fdisk partition table found

上述 fdisk 指令表示我們要將 ad1 切割成一個 slice (參數 -I),並清除放開機資訊的第 0 個 sector。您可以忽略「invalid fdisk partition table found」的警告,因為我們一開始並沒有任何分割區。接下來我們就可以使用下列 bsdlabel 指令來建立預設的 partition label,再使用 bsdlabel 加參數 e 以修改建立的 lable:

# bsdlabel -B -w ad1s1 auto# bsdlabel -e ad1s1

接著會使用您預設的文書編輯軟體跳出一個視窗,請將 a: 改成 d: 後存檔離開,因為我們新增加的分割區不是要給根目錄使用,所以不用代號 a,而是使用第一個不具特別意義的代號 d。

# /dev/ad1s1:8 partitions:#        size   offset    fstype   [fsize bsize bps/cpg] d: 78156146       16    unused        0     0 c: 78156162        0    unused        0     0 # "raw" part, don't edit 

將 a: 改成 d: 後,存檔離開即可。接下來我們就可以格式化這一個分割區了。FreeBSD 中用來格式化 UFS 檔案系統的指令為 newfs

# newfs /dev/ad1s1d

以上即為新增一顆硬碟所要做的事。請注意,bsdlabel 這個指令是 FreeBSD 5.1 以後才有的,在 5.1 以前,請使用 disklabel

接下來您就可以將新的硬碟掛入了,假設您要掛入的目錄是 /volume1,則請使用下列指令:

# mkdir /volume1# mount /dev/ad1s1d /volume1

最後,如果您希望一開機就將此分割區掛入,請修改 /etc/fstab,並加入此分割區的設定。

6.5 使用 USB 磁碟機

現在有很多 USB 裝置:USB 大姆哥、USB 硬碟外接盒、USB 光碟機等。大多數的作業系統都是將 USB 設備看模擬成 SCSI 裝置,FreeBSD 也是一樣。USB 硬碟、大姆哥等都會被當做 SCSI 硬碟,代號會是 da0、da1;而 USB 光碟機則是 cd0。

6.5.1 事前的準備

在開始使用 USB 磁碟機之前,我們必須先確定系統有支援 USB 裝置。在核心 (Kernel) 中,關於 USB 硬碟及光碟機的支援必須要有下列項目:

devicescbus# SCSI bus (required for SCSI)deviceda# Direct Access (disks)devicecd# 支援 CD-ROM/DVDdevicepass# Passthrough device (direct SCSI access)deviceuhci# UHCI PCI->USB interface (支援 USB 1.x)deviceohci# OHCI PCI->USB interface (支援 USB 1.x)deviceehci# EHCI PCI->USB interface (支援 USB 2.0)deviceusb# USB Bus (required)deviceumass# Disks/Mass storage - Requires scbus and da

如果您不使用 USB 光碟機,可以將「device cd」移除。如果您使用的是 GENERIC 核心 (FreeBSD 預設的核心),那麼您的核心已經支援 USB 硬碟了。如果您使用的是 FreeBSD 6.0 以前的版本,您必須再修改修改核心,以支援 USB 2.0。請在核心設定檔中加入下列這一行以使用 USB 2.0:

deviceehci# EHCI PCI->USB interface (USB 2.0)

不過您必須注意 FreeBSD 4.10 以後才開始支援 USB 2.0 喔。如果沒有加入 USB 2.0 的支援,所有裝置將會以 USB 1.1 速度運作。關於如何編譯核心請參考「編譯核心」一章的說明。

另外,我們必須啟動 usbd 以支援某些 USB 裝置,例如 USB hub 等。FreeBSD 安裝完成後,預設可能有啟動 usbd,如果沒有,請修改 /etc/rc.conf 加入下列設定:

usbd_enable="YES"

重新編譯核心,並修改 /etc/rc.conf 後,您必須重新開機才可以繼續下列動作喔。

重開機後,您就可以將 USB 裝置插入。插入後,您會在 console 看到下列訊息:

umass0: USB Flash Disk, rev 2.00/2.00, addr 2da0 at umass-sim0 bus 0 target 0 lun 0da0: <OTi Flash Disk 2.00> Removable Direct Access SCSI-2 deviceda0: 1.000MB/s transfersda0: 125MB (256000 512 byte sectors: 64H 32S/T 125C)

我們可以看到這個裝置的名稱為 da0,我們以下的操作都會以 da0 做為範例。如果您沒有看到上述訊息,表示沒有抓到 USB 裝置,請檢查核心設定後再試一次。

由於 USB 磁碟機會被模擬成 SCSI 裝置,所以您也可以使用 SCSI 工具 camcontrol 來查看目前所有 USB 裝置:

# camcontrol devlist<OTi Flash Disk 2.00> at scbus1 target 0 lun 0 (da0,pass0)

6.5.2 掛入已格式化的磁碟機

如果您要掛入已從 Windows/DOS 中格式化好的 USB 磁碟機,它的檔案格式有可能是 FAT/FAT32 或是 NTFS。如果您不知道它的檔案格式,可以使用指令 fdisk 查看:

# fdisk da0******* Working on device /dev/da0 *******parameters extracted from in-core disklabel are:cylinders=125 heads=64 sectors/track=32 (2048 blks/cyl)parameters to be used for BIOS calculations are:cylinders=125 heads=64 sectors/track=32 (2048 blks/cyl)Media sector size is 512Warning: BIOS sector numbering starts with sector 1Information from DOS bootblock is:The data for partition 1 is:sysid 11 (0x0b),(DOS or Windows 95 with 32 bit FAT)start 32, size 255968 (124 Meg), flag 80 (active)beg: cyl 0/ head 1/ sector 1;end: cyl 124/ head 63/ sector 32The data for partition 2 is:<UNUSED>The data for partition 3 is:<UNUSED>The data for partition 4 is:<UNUSED>

請注意粗體字的部份,我們可以看到在 da0 中有一個分割區,其檔案系統格式為 FAT32。所以要掛入檔案系統時,分割區代號為 da0s1 (請參考本章最開頭分割區代號的說明)。以下我們的操作都是使用 da0s1

掛入 FAT/FAT32 檔案格式

如果您要掛入的檔案系統為 FAT/FAT32,在 FreeBSD 5.x 以後,請使用指令 mount_msdosfs,若是 FreeBSD 4.x 請使用 mount_msdos

# mount_msdosfs -L zh_TW.Big5 /dev/da0s1 /mnt

我們在 mount_msdosfs 指令中使用參數 -L,並指定 locale 為 zh_TW.Big5 以支援中文檔名。如果沒有加此參數,中文檔名將會是亂碼。

如果您在掛入時出現下列錯誤訊息,表示您需要安裝 libiconv 模組:

# mount_msdosfs -L zh_TW.Big5 /dev/da0s1 /mntmount_msdosfs: Unable to load iconv library: Shared object "libiconv.so" not found, required by "mo": No such file or directorymount_msdosfs: msdosfs_iconv: No such file or directory

我們可以使用 port 來安裝 libiconv 模組:

# cd /usr/ports/converters/libiconv# make install

接著您就可以重新執行掛入的指令了。

掛入 NTFS 檔案格式

如果您要掛入的檔案系統格式為 NTFS,則必須使用指令 mount_ntfs

# mount_ntfs -C Big5 /dev/da0s1 /mnt

同樣的,我們使用參數 -C 以支援 NTFS 的中文檔名。不過,NTFS 在 FreeBSD 中只能唯讀而無法寫入,所以您無法在 NTFS 分割區中進入任何寫入的動作。 

原创粉丝点击