歡迎您光臨本站 註冊首頁

fc3 HAL掛載vfat分區的方法(手動+自動)

←手機掃碼閱讀     火星人 @ 2014-03-24 , reply:0

掛載 vfat 分區的方法 (手動+自動)

聲明
本文遵循 GNU FDL,僅正文部分可自由修改,重發布時正文之外的部分必須同時原樣發布。作者對誤讀的後果表示不負責。

正文開始
如果不希望自動掛載優盤,或者要掛載的是 vfat 格式的硬碟分區,那麼應當像下面這樣手動進行操作。大概的步驟有幾個,首先必須知道自己的語言環境是什麼。其次必須知道要掛載的是什麼分區。最後,要確定自己要掛載到什麼位置。掛載硬碟分區的時候,和優盤是幾乎一樣的。

要想知道自己的語言環境,可以告訴別人自己使用的是什麼發行版,有沒有使用美化包,有沒有修改過 /etc/sysconfig/i18n,這樣別人可以猜到你用的究竟是什麼。不過這樣做實在麻煩了大家也麻煩了自己。最好的辦法,還是運行 locale 命令,然後看看結果
首先,運行 locale

代碼:
QUOTE:
[yuan@jackycom ~]$ locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

如果結果和我的一樣都是 UTF-8,也就是 fc3 的默認值,那麼掛載時需要加上 utf8 參數,就像這樣 (假設我們是將優盤 /dev/sda1 掛載到 /media/usbdisk)

代碼:
QUOTE:
mkdir /media/usbdisk
mount -o utf8,umask=0,dmask=0,fmask=111,users /dev/sda1 /media/usbdisk

但是如果結果不是 zh_CN.UTF-8 而是 zh_CN.GB18030,或者 zh_CN.GB2312 的話,那麼掛載時需要使用 iocharset=cp936 參數,這樣看到的文件名才不是亂碼。就像這樣 (仍然是將優盤 /dev/sda1 掛載到 /media/usbdisk)

代碼:
QUOTE:
mkdir /media/usbdisk
mount -o iocharset=cp936,umask=0,dmask=0,fmask=111,users /dev/sda1 /media/usbdisk

第二步,應當清楚要掛載什麼分區。
通常,優盤是只有一個分區的。上面提到的 /dev/sda1 通常是第一塊優盤的第一個分區 (第一個分區也可能是 /dev/sda);而第二個分區可能是 /dev/sda2,或者 /dev/sda5。硬碟與優盤不同,通常有多個分區。遇到有多個分區時,優盤與硬碟同樣麻煩,必須運行 fdisk 可以看到要掛載的分區的情況。下面是我的硬碟的分區情況

代碼:
QUOTE:
[root@jackycom ~]# fdisk -l /dev/hda

Disk /dev/hda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 255 2048256 83 Linux
/dev/hda2 256 4865 37029825 5 Extended
/dev/hda5 256 893 5124703+ 83 Linux
/dev/hda6 894 1148 2048256 83 Linux
/dev/hda7 1149 1403 2048256 c Windows 95 fat 32 (LBA)
/dev/hda8 1404 1658 2048256 83 Linux
/dev/hda9 1659 2388 5863693+ 83 Linux
/dev/hda10 2389 3118 5863693+ 83 Linux
/dev/hda11 3119 4832 13767673+ 83 Linux
/dev/hda12 4833 4865 265041 82 Linux swap / Solaris

假如輸出是上面那樣,我們要將 vfat 分區 /dev/hda7 掛載到 /mnt/D 目錄,我們可以這樣做

代碼:
QUOTE:
mkdir -p /mnt/D
mount -o utf8,umask=0,dmask=0,fmask=111,users /dev/hda7 /mnt/D

或者用這一句,仍然取決於 locale 命令的執行結果!
mount -o iocharset=cp936,umask=0,dmask=0,fmask=111,users /dev/hda7 /mnt/D
最後,我們可以考慮是不是將這條命令寫到配置文件里,這樣開機時就會自動掛載這個分區了
配置文件是 /etc/fstab。運行這樣的命令
QUOTE:
[root@jackycom ~]# cat /etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
/dev/hda1 / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
none /proc/bus/usb usbfs defaults 0 0
none /tmp tmpfs defaults 0 0
none /media tmpfs defaults 0 0
/dev/hda5 /usr ext3 defaults 1 2
/dev/hda6 /usr/local ext3 defaults 1 2
/dev/hda8 /home ext3 defaults 1 2
/dev/hda9 /usr/share ext3 defaults 1 2
/dev/hda10 /var/ftp/incoming auto defaults,noauto,users 0 2
/dev/hda12 swap swap defaults 0 0
none /var/lib/jack/tmp tmpfs defaults 0 0
/dev/hdc /media/cdrom auto pamconsole,fscontext=system_u:object_r:removable_t,exec,noauto,managed 0 0

會輸出很多內容。以行為單位,每行保存了一個分區的配置。我們要掛載分區,只要照貓畫虎就可以了,把這樣的一行添加到 /etc/fstab 配置文件中:
QUOTE:
/dev/hda7 /mnt/D auto defaults,rw,users,utf8,umask=0,dmask=0,fmask=111 0 0
是不是應該使用這樣的一行,而不是上面那個呢?仍然取決於 locale 命令的執行結果!
/dev/hda7 /mnt/D auto defaults,rw,users,iocharset=cp936,umask=0,dmask=0,fmask=111 0 0

如何測試效果
請先試驗一下配置文件是不是寫對了,再重啟系統!怎麼檢查新添加的配置是不是正確呢?只要先把 /mnt/D 卸載,查看一下當前掛載了哪些分區;再載入一次,再次查看當前掛載了哪些分區。具體執行的命令如下:

代碼:
umount /mnt/D
mount
再運行

代碼:
mount -a
mount
看看中間有沒有什麼出錯的提示消息就可以了。如果配置文件正確的話,第二次執行不帶參數的 mount 命令時,會顯示出 /dev/hda7 已經掛載到了 /mnt/D。這時候就可以放心地重啟了

可能的問題
1. 如果你運行 locale 時,輸出的東西是亂七八糟的 (混合的,尤其是同時使用多種編碼值或者不指定編碼時),那麼還是先考慮一下將 locale 也就是語言環境變數的值調節為一致的之後,再進行其他操作吧。
很多人喜歡在英文 locale 中工作,但是又要使用中文輸入法。在 fc3 中不必對 locale 做任何設置就可以辦到,只要將 scim 的配置文件 /etc/X11/xinit/xinput.d/scim 鏈接到 $HOME/.xinput.d/en_US 就可以默認在英文環境中啟動輸入法了。但是在 rh9 等早些的系統中,那時的 UTF-8 支持還沒有現在這麼好,一般會在 $HOME/.i18n 中設置 LC_CTYPE=zh_CN.GB18030,這時 mount 也需要 iocharset=cp936 才可以工作。

2. 如果運行 fdisk /dev/sda 時,輸出的東西是亂七八糟的,那麼可能這塊優盤的分區方式是與其他優盤不一樣的方式,大約是軟碟機方式 (?),優盤內部不再分區。很多播放器或支持啟動功能的優盤都使用這種分區方式。那麼掛載時,應當用 /dev/hda 而不是 /dev/hda1

代碼:
mount /dev/hda /media/usbdisk -o utf8
3. 注意只能由 root 來運行 fdisk 命令。
4. /dev/hda 是說第一塊硬碟 harddisk a,一般的機器都只有一塊硬碟。/dev/sda 是說第一塊優盤。第二塊硬碟是 /dev/hdb, 優盤是 /dev/sdb,當然這只是說 IDE 硬碟和普通的優盤。如果是串列硬碟或者 SCSI,應該使用不同的設備文件。如果是 LVM 或者 raid,是不是還有別的設備呢?

命令的可重複性
mount -a 和 umount -a 可以任意運行多次

如何撤銷所有操作?
如果要取消自動掛載,只要把 /etc/fstab 中新加的這一行刪掉或者在行首添加一個 # 符號就可以了

與其他方案的相容性
關於手動掛載,大家都是一樣的辦法

正文結束

[火星人 ] fc3 HAL掛載vfat分區的方法(手動+自動)已經有504次圍觀

http://coctec.com/docs/linux/show-post-137447.html