mount概要
mount是Linux下的一個命令,它可以將分區掛接到Linux的一個文件夾下,從而將分區和該目錄聯系起來,因此我們只要訪問這個文件夾,就相當于訪問該分區了。 目前mount已經不僅僅局限于Linux了。在Windows系統下的應用也越來越廣了,多用在虛擬光驅類軟件上,比如Clone CD,Daemon tool,WinMount等。
mount格式使用
以下格式均可以mount到虛擬盤中使用
1.光盤鏡像ISO/IMG/VCD/nrg/mdf及mds/FCD/LCD/bin等
支持軟件:Alcohol, Clone, Daemon, UtraISO, WinISO, Virtual disk, WinMount
支持軟件:WinMount
3.虛擬機硬盤鏡像VHD/VMDK/VDI
支持軟件:Virtual disk, VMware, Virtual box, WinMount
4.壓縮格式RAR/ZIP/MOU
支持軟件:WinMount
mount的作用
用戶在UNIX的機器上打開一個文件以前,包含該文件的文件系統必須先進行掛載的動作,此時用戶要對該文件系統下mount的指令以進行掛載。通常是使用在USB或其他可移除存儲設備上,而根目錄則保持掛載的狀態。但Unix文件系統可以對應一個文件而不一定要是硬件設備。
Unix命令行的mount指令是告訴操作系統,對應的文件系統已經準備好,可以使用了,而該文件系統會對應到一個特定的點(稱為掛載點)。掛載好的文件、目錄、設備以及特殊文件即可提供用戶使用。除了操作系統調用的mount指令外,mount_root()會優先掛載(或稱根目錄) 。在這個情況下,操作系統會在調用setup前,先調用mount。
它的對應指令,umount,則是告訴操作系統,斷開與該文件系統的連接,使其脫離掛載點。
文件系統條目 http://zh.wikipedia.org/wiki/%E6%AA%94%E6%A1%88%E7%B3%BB%E7%B5%B1
計算機的文件系統是一種存儲和組織計算機數據的方法,它使得對其存取和查找變得容易,文件系統使用文件和樹形目錄的抽象邏輯概念代替了硬盤和光盤等物理設備使用數據塊的概念,用戶使用文件系統來保存數據不必關心數據實際保存在硬盤(或者光盤)的地址為多少的數據塊上,只需要記住這個文件的所屬目錄和文件名。在寫入新數據之前,用戶不必關心硬盤上的那個塊地址沒有被使用,硬盤上的存儲空間管理(分配和釋放)功能由文件系統自動完成,用戶只需要記住數據被寫入到了哪個文件中。
文件系統通常使用硬盤和光盤這樣的存儲設備,并維護文件在設備中的物理位置。但是,實際上文件系統也可能僅僅是一種存取資料的界面而已,實際的數據是通過網絡協議(如NFS、SMB、9P等)提供的或者內存上,甚至可能根本沒有對應的文件(如proc文件系統)。
嚴格地說, 文件系統是一套實現了數據的存儲、分級組織、存取和獲取等操作的抽象數據類型(Abstract data type)。
那么在此,mount的作用是,以特定選項(rw)重新掛載文件系統到掛載點/system。
目的只是有權限讀寫/system下的文件,為什么不chmod呢
# pwd
/
# chmod 777 system
Unable to chmod system: Read-only file system
因為根目錄下的system目錄是system文件系統中的一個目錄。
編譯openwrt支持USB自動mount功能
make menuconfig
1)添加USB相關支持
Kernel modules —》 USB Support —》 《*》 kmod-usb-core. ##默認已經選了
Kernel modules —》 USB Support —》 《*》 kmod-usb-ohci. ##默認已選 old usb1.0
Kernel modules —》 USB Support —》 《*》 kmod-usb-uhci. ## usb1.1
Kernel modules —》 USB Support —》 《*》 kmod-usb-storage.
Kernel modules —》 USB Support —》 《*》 kmod-usb-storage-extras.
Kernel modules —》 USB Support —》 《*》 kmod-usb2. ##默認已經選了 usb2.0
2)添加SCSI支持
Kernel modules —》 Block Devices —》 《*》kmod-scsi-core ##默認已經選了 usb3.0 ??
3)添加USB掛載
Base system —》 《*》block-mount
4)添加自動掛載工具
Utilities —》 Filesystem —》 《*》 badblocks
5)添加文件系統支持
Kernel modules —》 Filesystems —》 《*》 kmod-fs-ext4 (移動硬盤EXT4格式選擇)
Kernel modules —》 Filesystems —》 《*》 kmod-fs-vfat(FAT16 / FAT32 格式 選擇)
Kernel modules —》 Filesystems —》 《*》 kmod-fs-ntfs (NTFS 格式 選擇)
6)添加UTF8編碼,CP437編碼,ISO8859-1編碼
Kernel modules —》 Native Language Support —》 《*》 kmod-nls-cp437
Kernel modules —》 Native Language Support —》 《*》 kmod-nls-iso8859-1
Kernel modules —》 Native Language Support —》 《*》 kmod-nls-utf8
Utilities ---》 disc ---》 《*》 fdisk.。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 manipulate disk partition table
Utilities ---》 《*》 usbutils.。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 USB devices listing utilities
退出保存
7)支持nls-cp936
make kernel_menuconfig
File systems ---》 《M》 Native language support ---》
《M》 Codepage 437 (United States, Canada)
《M》 Simplified Chinese charset (CP936, GB2312)
保存退出
// build_dir/target-mips_r2_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.7.9/.config 》 target/linux/ar71xx/config-3.7
---------------------------------- end ----------------------------------------------------
make V=99
ls -lh linux-3.7.9/fs/nls/nls_cp936.ko ##上面選擇編譯的 cp936內核模塊
web界面上升級 bin/ar71xx/openwrt-ar71xx-generic-tl-wdr4310-v1-squashfs-sysupgrade.bin
然后登錄web界面到 系統--》掛載點 上配置并啟用, 注意“高級設置”里的“掛載選項”填 rw,sync,codepage=936,iocharset=cp936 掛載點填 /www/mnt,
文件系統選 vfat 。
實際是配置文件:
cat /etc/config/fstab
config global ‘automount’
option from_fstab ‘1’
option anon_mount ‘1’
config global ‘autoswap’
option from_fstab ‘1’
option anon_swap ‘0’
config swap
option device ‘/dev/sda2’
option enabled ‘0’
config mount
option device ‘/dev/sda1’
option target ‘/www/mnt’
option enabled_fsck ‘1’
option enabled ‘1’
option fstype ‘vfat’
-------------------------------------------- end ---------------------------------------------------------
cat /etc/fstab ## 查看是否自動生效了
mount ## 查看是否mount上
注意 插入U盤 自
動掛載時會創建 /www/mnt目錄的 (如果該掛載點不存在的話)
-- 掛載USB盤支持中文
scp nls_cp936.ko root@192.168.123.1:/lib/modules/3.7.9/ ##
insmod nls_cp936.ko
reboot 重啟路由
mount -t vfat -o codepage=936,iocharset=cp936 /dev/sda1 /www/mnt
vi /etc/modules.d/25-nls-cp437
ls /etc/modules-boot.d/ ##在系統啟動后按序號的順序來 insmod 這些模塊
因為上面是沒有支持內核模塊 nls-cp936, see “-- 將nls_cp936添加到 Kernel modules中”, 將它支持進去。
-- 將nls_cp936添加到 Kernel modules中
在上文支持文件系統的本地語言中,我們在 make menuconfig 的Kernel modules —》 Native Language Support —》 并沒有找到 nls_cp936, 只有nls_cp437,
而在 make kernel_menuconfig 中的File systems ---》 《M》 Native language support ---》 是有936這個內核模塊的, 所以我們怎樣把它添加到
Kernel modules 中呢, 參考 nls.mk 中的 nls-437,
在nls.mk中增加:
define KernelPackage/nls-cp936
SUBMENU:=Native Language Support
TITLE:=Simplified Chinese charset (CP936, GB2312)
KCONFIG:=CONFIG_NLS_CODEPAGE_936
FILES:=$(LINUX_DIR)/fs/nls/nls_cp936.ko
AUTOLOAD:=$(call AutoLoad,25,nls_cp936)
$(call AddDepends/nls)
endef
define KernelPackage/nls-cp936/description
Kernel module for NLS Codepage 936 (CP936, GB2312)
endef
$(eval $(call KernelPackage,nls-cp936))
----------------------------------------------- end -------------------------------------------------
退出保存。
cd ~/work/openwrt/trunk
make kernel_menuconfig
File systems ---》 《 》 Native language support ##不選這個 (因為我上面選了它)
make menuconfig
Kernel modules ---》 Native Language Support ---》 《*》 kmod-nls-cp936.。。。。。。。。。。。。。。。 Simplified Chinese charset (CP936, GB2312)
保存退出。
make V=99
ls bin/ar71xx/packages/*nls*
kmod-nls-cp936_3.7.9-1_ar71xx.ipk
然后web界面上升級 bin/ar71xx/openwrt-ar71xx-generic-tl-wdr4310-v1-squashfs-sysupgrade.bin
評論
查看更多