您的位置:首页 > 运维架构 > Linux

【嵌入式Linux学习七步曲之第一篇 Linux主机开发环境】虚拟机下Linux和windows的文件共享――mount方式

2008-04-15 23:34 691 查看
虚拟机下Linux和windows的文件共享――mount方式
Sailor_forever Sailing_9806@163.com 转载请注明
http://blog.csdn.net/sailor_8318/archive/2008/04/15/2295428.aspx

一、在虚拟机下添加windows其他分区... 1
二、查找Linux对应的设备盘符... 2
三、挂载文件系统基础知识及挂载参数... 3
四、自动挂载... 5
五、其他参考... 6

一、在虚拟机下添加windows其他分区

编辑虚拟机设置》添加》硬盘》使用物理磁盘》警告》确定》使用单个分区》根据盘的大小可知道对应的windows分区,勾上即可

二、查找Linux对应的设备盘符

你首先应该判定 Windows 分区的位置,判定它所在的物理硬盘(如首要主 IDE 或第一个 SCSI 驱动器)。要找出这项信息,你可以使用硬件浏览器。该程序列出了你的 Red Hat Linux 系统上的详细硬件信息。
要启动 硬件浏览器,选择「主菜单」 => 「系统工具」 => 「硬件浏览器」。 下图显示了运行中的硬件浏览器。

硬件浏览器中的硬盘设备列表
从面板上选择「硬盘驱动器」,然后从所显示的「磁盘信息」中找出你的 Windows 分区。Windows 分区通常使用 FAT 或 FAT32 文件系统类型。该文件系统类型可以在 Linux 中被挂载和读取;不过,如果你的 Windows 分区使用 NTFS,你就不能够这么做,因为 Red Hat Linux 不支持 NTFS 文件系统。请留意关于你的 Windows 分区的「设备」信息,因为这就是你要挂载以便访问 Windows 数据的设备。

三、挂载文件系统基础知识及挂载参数

linux系统中每个分区都是一个文件系统,都有自己的目录层次结构。linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构。这里所说的“按一定方式”就是指的挂载。
将一个文件系统的顶层目录挂到另一个文件系统的子目录上,使它们成为一个整体,称为挂载。把该子目录称为挂载点。
举个例子吧:
根分区:

/根目录

┏━━━━┳━━━━━┳━━━━━┳━━━━━╋━━━━━┳━━━━━┳━━━━━┳━━━━━┓
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
bin home dev etc lib sbin tmp usr var

┏━┻━┓
┃ ┃
rc.d cron.d

┏━━━┳━━━┳━┻━┳━━━━┓
┃ ┃ ┃ ┃ ┃
init.d rc0.d rc1.d rc2.d ……

/usr分区 :
usr

┏━━━━┳━━━╋━━━┳━━━┳━━━┓
┃ ┃ ┃ ┃ ┃ ┃
X11R6 src lib local man bin
┃ ┃
┃ ┏━━━╋━━━┓
┃ ┃ ┃ ┃
linux bin lib src

注意:1、挂载点必须是一个目录。
一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。
对于其他操作系统建立的文件系统的挂载也是这样。但是需要理解的是:光盘、软盘、其他操作系统使用的文件系统的格式与linux使用的文件系统格式是不一样的。光盘是ISO9660;软盘是fat16或ext2;windows NT是fat16、NTFS;windows98是fat16、fat32;windows2000和windowsXP是fat16、fat32、NTFS。挂载前要了解linux是否支持所要挂载的文件系统格式。

挂载时使用mount命令:
格式:mount [-参数] [设备名称] [挂载点]
其中常用的参数有
-t<文件系统类型> 指定设备的文件系统类型,常见的有:
minix linux最早使用的文件系统
ext2 linux目前常用的文件系统
msdos MS-DOS的fat,就是fat16
vfat windows98常用的fat32
nfs 网络文件系统
iso9660 CD-ROM光盘标准文件系统
ntfs windows NT 2000的文件系统
hpfs OS/2文件系统
auto 自动检测文件系统
-o<选项> 指定挂载文件系统时的选项。有些也可用在/etc/fstab中。常用的有
codepage=936 代码页 (中文支持,很重要)
iocharset=cp936 字符集
ro 以只读方式挂载
rw 以读写方式挂载
nouser 使一般用户无法挂载
user 可以让一般用户挂载设备

提醒一下,mount命令没有建立挂载点的功能,因此你应该确保执行mount命令时,挂载点已经存在。(不懂?说白了点就是你要把文件系统挂载到哪,首先要先建上个目录。这样OK?)

例子:linux装在hda1分区,同时计算机上还有软盘和光盘需要挂载。
# mk /mnt/winc
# mk /mnt/floppy
# mk /mnt/cdrom
# mount -t vfat /dev/hda1 /mnt/winc
# mount -t msdos /dev/fd0 /mnt/floppy
# mount -t iso9660 /dev/cdrom /mnt/cdrom
现在就可以进入/mnt/winc等目录读写这些文件系统了。

要保证最后两行的命令不出错,要确保软驱和光驱里有盘。(要是硬盘的磁盘片也可以经常随时更换的话,我想就不会犯这样的错误了 :-> )
如果你的windows98目录里有中文文件名,使用上面的命令挂载后,显示的是一堆乱码。这就要用到 -o 参数里的codepage iocharset选项。codepage指定文件系统的代码页,简体中文中文代码是936;iocharset指定字符集,简体中文一般用cp936或gb2312。

当挂载的文件系统linux不支持时,mount一定报错,如windows2000的ntfs文件系统。可以重新编译linux内核以获得对该文件系统的支持。关于重新编译linux内核,就不在这里说了。

四、自动挂载

每次开机访问windows分区都要运行mount命令显然太烦琐,为什么访问其他的linux分区不用使用mount命令呢?
其实,每次开机时,linux自动将需要挂载的linux分区挂载上了。那么我们是不是可以设定让linux在启动的时候也挂载我们希望挂载的分区,如windows分区,以实现文件系统的自动挂载呢?
这是完全可以的。在/etc目录下有个fstab文件,它里面列出了linux开机时自动挂载的文件系统的列表。我的/etc/fstab文件如下:
dding /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hdc9 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/hdc7 /mnt/study vfat auto,codepage=936,iocharset=cp936,umask=0 0 0
/dev/hdc6 /mnt/software vfat auto,codepage=936,iocharset=cp936,umask=0 0 0
/dev/hdc1 /mnt/system vfat auto,codepage=936,iocharset=cp936,umask=0 0 0
/dev/hdc5 /mnt/windows vfat auto,codepage=936,iocharset=cp936,umask=0 0 0

在/etc/fstab文件里,第一列是挂载的文件系统的设备名,第二列是挂载点,第三列是挂载的文件系统类型,第四列是挂载的选项,选项间用逗号分隔。第五六列不知道是什么意思,还望高手指点。

在最后两行是我手工添加的windows下的C;D盘,加了codepage=936和iocharset=cp936参数以支持中文文件名。参数defaults实际上包含了一组默认参数:
rw 以可读写模式挂载
suid 开启用户ID和群组ID设置位
dev 可解读文件系统上的字符或区块设备
exec 可执行二进制文件
auto 自动挂载
nouser 使一般用户无法挂载
async 以非同步方式执行文件系统的输入输出操作

大家可以看到在这个列表里,光驱和软驱是不自动挂载的,参数设置为noauto。(如果你非要设成自动挂载,你要确保每次开机时你的光驱和软驱里都要有盘)

五、其他参考

访问 Windows 分区
判定了 Windows 分区在你的硬盘驱动器上的位置后,在 shell 提示下登录为根用户(键入 su,然后输入根口令)。
键入下面的命令来创建一个挂载 Windows 分区的目录。例如:

mkdir /mnt/windows
在你访问该分区前,你需要把它挂载到你刚刚创建的目录中。在 shell 提示下以根用户身份键入下列命令,这里的 /dev/hda1 是你通过硬件浏览器找到的 Windows 分区。

mount -t vfat(文件系统类型,98和2000,xp可能不同) /dev/hda1(分区盘符) /mnt/windows(分区所挂载的位置,windows下的不同分区可以取不同名字)
然后,你便可以从根用户状态中注销,并改换到被挂载了的 Windows 分区中来存取 Windows 数据了:

cd /mnt/windows
要在你每次引导 Red Hat Linux 系统时自动挂载 Windows 分区,你必须修改 /etc/fstab 文件。该文件配置了所有文件系统和磁盘设备的挂载选项。
在 shell 提示下,用 su 变成根用户,然后遵循上面的例子。
下一步,用文本编辑器打开 /etc/fstab 文件,例如:

gedit /etc/fstab
在一个新行上添加下列信息(把 /dev/hda1 替换成你通过 硬件浏览器找到的 Windows 分区):

/dev/hda1 /mnt/windows vfat auto,umask=0 0 0
保存文件并退出文本编辑器。
在系统下次重新引导时,/etc/fstab 文件会被读取,Windows 分区会被自动挂载到目录 /mnt/windows 中。要在 shell 提示下访问该分区,键入 cd /mnt/windows 命令。要进入带有空格的目录或文件,使用引号把目录或文件名包围起来,如 ls "Program Files"。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐