嵌入式操作系统
mount是Linux下的一个命令,它可以将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区了。 目前mount已经不仅仅局限于Linux了。在Windows系统下的应用也越来越广了,多用在虚拟光驱类软件上,比如Clone CD,Daemon tool,WinMount等。
以下格式均可以mount到虚拟盘中使用
1.光盘镜像ISO/IMG/VCD/nrg/mdf及mds/FCD/LCD/bin等
支持软件:Alcohol, Clone, Daemon, UtraISO, WinISO, Virtual disk, WinMount
2.音频镜像FLAC/APE/WV/WAVE
支持软件:WinMount
3.虚拟机硬盘镜像VHD/VMDK/VDI
支持软件:Virtual disk, VMware, Virtual box, WinMount
4.压缩格式RAR/ZIP/MOU
支持软件:WinMount
用户在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文件系统中的一个目录。
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
全部0条评论
快来发表一下你的评论吧 !