1. 程式人生 > >Linux使用mount命令載入與解除安裝U盤/行動硬碟/ISO映象檔案

Linux使用mount命令載入與解除安裝U盤/行動硬碟/ISO映象檔案

掛接命令(mount)

首先,介紹一下掛接(mount)命令的使用方法,mount命令引數非常多,這裡主要講一下今天我們要用到的。

命令格式:mount [-t vfstype] [-o options] device dir
其中:

1.-t vfstype 指定檔案系統的型別,通常不必指定。mount 會自動選擇正確的型別。常用型別有:
光碟或光碟映象:iso9660
DOS fat16檔案系統:msdos
Windows 9x fat32檔案系統:vfat
Windows NT ntfs檔案系統:ntfs
Windows檔案網路共享:smbfs
UNIX(LINUX) 檔案網路共享:nfs

2.-o options 主要用來描述裝置或檔案的掛接方式。常用的引數有:
loop:用來把一個檔案當成硬碟分割槽掛接上系統
ro:採用只讀方式掛接裝置
rw:採用讀寫方式掛接裝置
iocharset:指定訪問檔案系統所用字符集

3.device 要掛接(mount)的裝置。

4.dir裝置在系統上的掛接點(mount point)。

掛接光碟映象檔案

1、從光碟製作光碟映象檔案。將光碟放入光碟機,執行下面的命令。
#cp /dev/cdrom /home/sunky/mydisk.iso 或
#dd if=/dev/cdrom of=/home/sunky/mydisk.iso
注:執行上面的任何一條命令都可將當前光碟機裡的光碟製作成光碟映象檔案/home/sunky/mydisk.iso

2、將檔案和目錄製作成光碟映象檔案,執行下面的命令。
#mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir
注:這條命令將/home/sunky/mydir目錄下所有的目錄和檔案製作成光碟映象檔案/home/sunky/mydisk.iso,光碟卷標為:mydisk

3、光碟映象檔案的掛接(mount)
#mkdir /mnt/vcdrom
注:建立一個目錄用來作掛接點(mount point)
#mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom
注:使用/mnt/vcdrom就可以訪問盤映象檔案mydisk.iso裡的所有檔案了。

掛接行動硬碟
對linux系統而言,USB介面的行動硬碟是當作SCSI裝置對待的。插入行動硬碟之前,應先用fdisk –l 或 more /proc/partitions檢視系統的硬碟和硬碟分割槽情況。
[root at pldyrouter /]# fdisk -l

接好行動硬碟後,再用fdisk –l 或 more /proc/partitions檢視系統的硬碟和硬碟分割槽情況.應該可以發現多了一個SCSI硬碟/dev/sdc和它的兩個磁碟分割槽/dev /sdc1?、/dev/sdc2,其中/dev/sdc5是/dev/sdc2分割槽的邏輯分割槽。我們可以使用下面的命令掛接/dev/sdc1和 /dev/sdc5。
#mkdir -p /mnt/usbhd1
#mkdir -p /mnt/usbhd2
注:建立目錄用來作掛接點(mount point)
#mount -t ntfs /dev/sdc1 /mnt/usbhd1
#mount -t vfat /dev/sdc5 /mnt/usbhd2
注:對ntfs格式的磁碟分割槽應使用-t ntfs 引數,對fat32格式的磁碟分割槽應使用-t vfat引數。若漢字檔名顯示為亂碼或不顯示,可以使用下面的命令格式。
#mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1
#mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2

linux系統下使用fdisk分割槽命令和mkfs檔案系統建立命令可以將行動硬碟的分割槽製作成linux系統所特有的ext2、ext3格式。這樣,在linux下使用就更方便了。使用下面的命令直接掛接即可。
#mount /dev/sdc1 /mnt/usbhd1

掛接U盤
和USB介面的行動硬碟一樣對linux系統而言U盤也是當作SCSI裝置對待的。使用方法和行動硬碟完全一樣。插入U盤之前,應先用fdisk –l 或 more /proc/partitions檢視系統的硬碟和硬碟分割槽情況。
[root at pldyrouter root]# fdisk -l
插入U盤後,再用fdisk –l 或 more /proc/partitions檢視系統的硬碟和硬碟分割槽情況。
[root at pldyrouter root]# fdisk -l
系統多了一個SCSI硬碟/dev/sdd和一個磁碟分割槽/dev/sdd1,/dev/sdd1就是我們要掛接的U盤。
#mkdir -p /mnt/usb
注:建立一個目錄用來作掛接點(mount point)
#mount -t vfat /dev/sdd1 /mnt/usb
注:現在可以通過/mnt/usb來訪問U盤了, 若漢字檔名顯示為亂碼或不顯示,可以使用下面的命令。
#mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb

掛接Windows檔案共享
Windows網路共享的核心是SMB/CIFS,在linux下要掛接(mount)windows的磁碟共享,就必須安裝和使用samba 軟體包。現在流行的linux發行版絕大多數已經包含了samba軟體包,如果安裝linux系統時未安裝samba請首先安裝samba。當然也可以到 www.samba.org網站下載......新的版本是3.0.10版。
當windows系統共享設定好以後,就可以在linux客戶端掛接(mount)了,具體操作如下:
# mkdir –p /mnt/samba
注:建立一個目錄用來作掛接點(mount point)
# mount -t smbfs -o username=administrator,password=pldy123 //10.140.133.23/c$ /mnt/samba
注:administrator 和 pldy123 是ip地址為10.140.133.23 windows計算機的一個使用者名稱和密碼,c$是這臺計算機的一個磁碟共享
如此就可以在linux系統上通過/mnt/samba來訪問windows系統磁碟上的檔案了。以上操作在redhat as server 3、redflag server 4.1、suse server 9以及windows NT 4.0、windows 2000、windows xp、windows 2003環境下測試通過。

掛接UNIX系統NFS檔案共享
類似於windows的網路共享,UNIX(Linux)系統也有自己的網路共享,那就是NFS(網路檔案系統),下面我們就以SUN Solaris2.8和REDHAT as server 3 為例簡單介紹一下在linux下如何mount nfs網路共享。
在linux客戶端掛接(mount)NFS磁碟共享之前,必須先配置好NFS服務端。

1、Solaris系統NFS服務端配置方法如下:
(1)修改 /etc/dfs/dfstab, 增加共享目錄
share -F nfs -o rw /export/home/sunky
(2)啟動nfs服務
# /etc/init.d/nfs.server start
(3)NFS服務啟動以後,也可以使用下面的命令增加新的共享
# share /export/home/sunky1
# share /export/home/sunky2
注:/export/home/sunky和/export/home/sunky1是準備共享的目錄

2、linux系統NFS服務端配置方法如下:
(1)修改 /etc/exports,增加共享目錄
/export/home/sunky 10.140.133.23(rw)
/export/home/sunky1 *(rw)
/export/home/sunky2 linux-client(rw)
注:/export/home/目錄下的sunky、sunky1、sunky2是準備共享的目錄,10.140.133.23、*、 linux-client是被允許掛接此共享linux客戶機的IP地址或主機名。如果要使用主機名linux-client必須在服務端主機 /etc/hosts檔案裡增加linux-client主機ip定義。格式如下:
10.140.133.23 linux-client

(2)啟動與停止NFS服務
/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是預設啟動的)
/etc/rc.d/init.d/nfs start 啟動NFS服務
/etc/rc.d/init.d/nfs stop 停止NFS服務
注:若修改/etc/export檔案增加新的共享,應先停止NFS服務,再啟動NFS服務方能使新增加的共享起作用。使用命令exportfs -rv也可以達到同樣的效果。

3、linux客戶端掛接(mount)其他linux系統或UNIX系統的NFS共享
# mkdir –p /mnt/nfs
注:建立一個目錄用來作掛接點(mount point)
#mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs
注:這裡我們假設10.140.133.9是NFS服務端的主機IP地址,當然這裡也可以使用主機名,但必須在本機/etc/hosts檔案裡增加服務端ip定義。/export/home/sunky為服務端共享的目錄。

4、monut 遠端或本機的windows分割槽之NTFS格式支援:
1)根據核心安裝ntfs支援模組:http://sourceforge.net/projects/linux-ntfs/files/
具體的過程幫助:http://gerardmcgarry.com/blog/hacking-centos-ntfs-support
例項:sudo mount -t cifs //remotehostname/shared /mnt/myshared -o username=XXX,password=XXX
2)安裝ntfs-3g----- yum install ntfs-3g(fuse-ntfs-3g)
參考:http://www.zzdushi.com/?p=30
參考:http://ntfs-3g.org/
具體過程幫助:http://wiki.centos.org/TipsAndTricks/NTFS
例項:mount -t ntfs-3g /dev/sda1 /mnt/windows(umount /mnt/windows)

開啟ntfs-3g的下載站點,將最新穩定版(當前最新版本為ntfs-3g-2010.3.6)下載到系統,執行以下命令安裝:

1、編譯安裝ntfs-3g:

#./configure
#make
#make install  (得是root許可權才能執行)


2、檢視USB裝置點:

#fdisk -l   (得是root許可權才能執行)
Disk /dev/sdb: 60.0 GB, 60011642880 bytes
255 heads, 63 sectors/track, 7296 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device      Boot    Start    End       Blocks        Id  System
/dev/sdb1   *       1        653       5245191       b   W95 FAT32
/dev/sdb2           654      7295      53351865      f   W95 Ext'd (LBA)
/dev/sdb5           654      1958      10482381      b   W95 FAT32
/dev/sdb6           1959     7295      42869421      7   HPFS/NTFS


3、掛載NTFS分割槽:

#mount -t ntfs-3g /dev/sdb6 /mnt/win

注:

NTFS-3g是一個開源軟體,它支援在Linux下面讀寫NTFS格式的分割槽。它非常的快速,同時也很安全。
它支援Windows 2000、XP、2003和Vista,並且支援所有的符合POSIX標準的磁碟操作。
ntfs-3g的目的是為了持續的發展,各硬體平臺和作業系統的使用者需要可靠的互通與支援ntfs的驅動,
ntfs-3g可以提供可信任的、功能豐富的高效能解決方案。經過了12年多的發展,ntfs-3g已經逐漸穩定

如此就可以在linux客戶端通過/mnt/nfs來訪問其它linux系統或UNIX系統以NFS方式共享出來的檔案了。以上操作在 redhat as server 3、redflag server4.1、suse server 9以及Solaris 7、Solaris 8、Solaris 9 for x86&sparc環境下測試通過

補充:

linux載入光碟機

(1)使用光碟機前,要先mount一下:#mount /dev/cdrom /mnt/cdrom,然後您就可以進入/mnt/cdrom目錄下讀取光碟內容了;
(2)當您想退出光碟時,須使用umout命令,否則光碟機就會一直處於死鎖狀態:#umount /mnt/cdrom。

此外:

一 、su root 和 su - root 的區別,前者只是臨時的切換到root下,而後者是真正切換到root下。- 的前後都要有空格

二、在centos安裝完後,如果以普通使用者的身份登入系統,util-linux包中的內容是不可用的,必須切換到root使用者才可以。這裡所說的切換到root並不是簡單的輸入:

                      $su

                      pwd:你的root密碼

而是通過

                      $su - root

                      pwd:你的root密碼

真正切換到root使用者下。這樣在util-linux包中的工具就可以使用了

備註:在util-linux中包含fdisk  ipconfig等命令


常見問題:

1.用mount/umount能做什麼?
不同的作業系統使用不同的檔案系統格式。MS-DOS支援FAT16檔案系統,Windows98支援FAT16、FAT32檔案系 統,WindowsNT支援FAT16、NTFS檔案系統,Windows2000則支援FAT16、FAT32、NTFS三種檔案系統格式,而 Linux差不多支援所有的檔案系統格式,但一般使用ext2或ext3檔案系統。 很多使用者使用的是windows作業系統,如果想在執行的Linux下訪問其它檔案系統中的資源的話,就要用mount命令來實現。  

2.mount的基本用法是?
格式:mount [-引數] [裝置名稱] [掛載點]
其中常用的引數有:
-a 安裝在/etc/fstab檔案中類出的所有檔案系統。
-f 偽裝mount,作出檢查裝置和目錄的樣子,但並不真正掛載檔案系統。
-n 不把安裝記錄在/etc/mtab 檔案中。
-r 講檔案系統安裝為只讀。
-v 詳細顯示安裝資訊。
-w 將檔案系統安裝為可寫,為命令預設情況。


-t <檔案系統型別> 指定裝置的檔案系統型別,常見的有:
ext2      linux目前常用的檔案系統
msdos     MS-DOS的fat,就是fat16
vfat      windows98常用的fat32
nfs       網路檔案系統
iso9660 CD-ROM光碟標準檔案系統
ntfs      windows NT/2000/XP的檔案系統
auto     自動檢測檔案系統


-o <選項> 指定掛載檔案系統時的選項,有些也可寫到在/etc/fstab中。常用的有:
defaults     使用所有選項的預設值(auto、nouser、rw、suid)
auto/noauto     允許/不允許以 –a選項進行安裝
dev/nodev     對/不對檔案系統上的特殊裝置進行解釋
exec/noexec     允許/不允許執行二進位制程式碼
suid/nosuid     確認/不確認suid和sgid位
user /nouser     允許/不允許一般使用者掛載
codepage=XXX     內碼表
iocharset=XXX     字符集
ro         以只讀方式掛載
rw         以讀寫方式掛載
remount     重新安裝已經安裝了的檔案系統
loop         掛載迴旋裝置
username/password用來設定有訪問許可權的使用者名稱和密碼

需要注意的是,掛載點必須是一個已經存在的目錄,這個目錄可以不為空,但掛載後這個目錄下以前的內容將不可用,umount以後會恢復正常。使用多個-o引數的時候,-o 只用一次,引數之間用半形逗號隔開:

    # mount –o remount,rw XXX XXX

例如要掛載windows下檔案系統為FAT32的D盤,一般而言在Linux下這個分割槽對應/dev/hda5,根據具體的分割槽情況會有不同,這裡就以hda5來舉例說明:

    # mkdir /mnt/hda5  //建立hda5的目錄作為掛載點,位置和目錄名可自定義//

    # mount -t vfat /dev/hda5 /mnt/hda5

一般而言,Linux會自動探測分割槽的檔案系統,除非讓你指定時,否則-t vfat 可以省掉。

    # mount /dev/hda5 /mnt/hda5

這樣就可以進入/mnt/hda5目錄去訪問分割槽中的資源了。

3.為什麼mount上分割槽後顯示不了中文檔案為問號/亂碼?
顯示問號表明你的系統中沒有可識別使用的中文字型,請先安裝中文字型。確保你的系統已經可以很好的顯示中文。顯示為亂碼一般是mount預設使用的檔案系 統編碼和檔案系統中檔案的實際編碼不一致造成的。要想正常顯示中文檔案,mount時需要用到 -o 引數裡的codepage和iocharset選項。codepage指定檔案系統的內碼表,簡體中文中文程式碼是936;iocharset指定字符集, 簡體中文一般用cp936或gb2312。

    # mount –o iocharset=gb2312 codepage=936 /dev/hda5 /mnt/hda5

一般來說 mount –o iocharset=cp936 /dev/hda5 /mnt/hda5 就可以解決問題了。
如果這樣做了以後還有問題,請嘗試UTF-8編碼:

    # mount –o iocharset=utf8 /dev/hda5 /mnt/hda5

4.為什麼mount上去以後分割槽普通使用者不可寫?
mount時加上 –o umask=000 即可:

    # mount –o umask=000, iocharset=cp936 /dev/hda5 /mnt/hda5

5.為什麼mount上去後的分割槽中的檔案都變成短檔名了?
這是檔案系統掛錯的原因,將FAT32掛載成FAT16時就會出現這種情況,先umount,然後用 –t vfat 重新掛載即可解決問題。

    # mount –t vat /dev/hda5 /mnt/hda5

6.為什麼不能mount ntfs分割槽?
這是核心不支援NTFS檔案系統的原因,請重新編譯核心或者安裝核心的NTFS檔案系統支援包,以使得核心有NTFS檔案系統的支援。

7.如何掛載U盤和mp3?
如果計算機沒有其它SCSI裝置和usb外設的情況下,插入的U盤的裝置路徑是 /dev/sda1,用命令:

    # mkdir /mnt/u

    # mount /dev/sda1 /mnt/u

掛載即可。

8.可以直接使用iso檔案嗎?
可以,就是mount的這一選項使得Linux下有免費虛擬光碟機的說法,具體用法是:

    # mkdir /mnt/iso

    # mount –o loop linux.iso /mnt/iso

當然,掛載以後掛載點/mnt/iso也是隻讀的。  

9.我怎麼不可以mount iso檔案?
一般而言,大多數的發行版使用的核心均已將loop裝置的支援編譯進去了,但是也有沒有的情況,所以請確保系統所使用的核心支援loop裝置。
第二種情況是iso檔案被放置到了NTFS或其它只讀檔案系統中了。掛載loop 裝置必須要求掛載到一個可寫的分割槽中,目前Linux核心對NTFS檔案系統的寫支援非常有限,請將iso檔案複製到其它可寫檔案系統中後再掛載。

10.如何掛載光碟機和軟碟機
一般來說CDROM的裝置檔案是/dev/hdc,軟碟機的裝置名是/dev/fd0

    # mkdir /mnt/cdrom

    # mount /dev/hdc /mnt/cdrom //掛載光碟機 //

    # mkdir /mnt/floppy  

    # mount /dev/fd0 /mnt/floppy   //掛載軟碟機 //

11.為何掛載的CD-ROM不能顯示中文檔案?
使用 –o iocharset=cp936 選項一般能解決問題,否則使用utf-8編碼。

    # mount –o iocharset=cp936 /dev/hdc /mnt/cdrom


12.如何開機自動掛載分割槽?
每次掛載都要輸入那麼長的命令的確是繁瑣了些,只要將分割槽資訊寫到/etc/fstab檔案中即可實現系統啟動的自動掛載,例如對於/dev/hda5的自動掛載新增如下的行即可:

    /dev/hda5 /mnt/hda5 vfat defaults,iocharset=cp936, rw 0 0

13.如何掛載samba 分割槽?

    # mkdir /mnt/share

    # mount -t smbfs -o username=root,password=abc,codepage=936,iocharset=gb2312 //192.168.1.100/share  /mnt/share

如果中文顯示不正常請嘗試UTF-8編碼。當然可以寫到fstab中實現自動掛載。

14.mount --bind是什麼意思?
mount --bind 是將一個目錄中的內容掛載到另一個目錄上,用法是

    # mount --bind olddir newdir

這個命令使得自己搭建的FTP要共享某個目錄的時候變得特別方便。如果要取消mount用命令:

    # mount --move olddir newdir 即可。

如果mount --bind 也想寫入fstab中的話格式如下:

    olddir newdir none bind 0 0

15.umount基本用法是?
譬如 /dev/hda5 已經掛載在/mnt/hda5上,用一下三條命令均可解除安裝掛載的檔案系統

    # umount /dev/hda5

    # umount /mnt/hda5

    # umount /dev/hda5 /mnt/hda5

16.為什麼umount的時候老顯示 device busy?
這是因為有程式正在訪問這個裝置,最簡單的辦法就是讓訪問該裝置的程式退出以後再umount。可能有時候使用者搞不清除究竟是什麼程式在訪問裝置,如果使用者不急著umount,則可以用:

    # umount -l /mnt/hda5


來解除安裝裝置。選項 –l 並不是馬上umount,而是在該目錄空閒後再umount。還可以先用命令 ps aux 來檢視佔用裝置的程式PID,然後用命令kill來殺死佔用裝置的程序,這樣就umount的非常放心了。