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

linux挂载与卸载(转)

2013-11-27 20:15 141 查看
一、Linux中的硬件设备号

设 备 设 备 号

IDE硬盘 /dev/hd[a-d] (并行硬盘)

SCSI硬盘 /dev/sd[a-p] (串行硬盘)

U盘 /dev/sd[a-p]

光驱 /dev/cdrom

软驱 /dev/fd[0-1]

打印机 /dev/lp[0-2]

鼠标 /dev/mouse

LCD /dev/fb0

系统终端 /dev/tty0

例如:

<1>当插入第一个U盘时,它的设备号为sda1

当插入第二个U盘时,它的设备号为sdb1(我们可以进入/dev/目录下看到此设备文件)
通过命令: mount /dev/sdb1 /mnt/sdb1 就将它挂载到了/mnt/sdb1目录下,通过umount /mnt/sdb1 来解除它的挂载
挂载或卸载后可通过 df 命令来查看

<2>当插入第一个硬盘时,它的设备号为hda1

当插入第二个硬盘时,它的设备号为hdb1

二、设备的挂载

例程:将U盘插入ARM开发板

在Linux系统中,设备在上层都被映射为设备文件,比如IDE硬盘被映射为设备文件/dev/hda1,U盘被映射为设备文件/dev/sda1.如果用户直接访问这些设备文件,则得到的一堆二进制代码.所以,为了方便用户的使用,Linux规定,必须将该设备文件挂载到某一目录下(常用的是/mnt目录),用户对该目录(比如/mnt目录)的操作(读/写)就是对设备文件的操作,也就是对设备的操作.当然,在实际应用中,常在/mnt目录下新建一子目录,比如hdisk(IDE硬盘)、udisk(U盘),然后将设备文件挂载到该子目录下.

步骤1:将相应的文件系统烧入ARM开发板,以支持USB设备等.

步骤2:插入U盘,此时在ARM开发板的终端(putty软件或超级终端)上会显示该U盘的相应信息,最重要的是U盘的设备文件名.

当插入第一个U盘时,该U盘的设备文件名为/dev/sda1.

当插入第二个U盘时,该U盘的设备文件名为/dev/sdb1.

步骤3:在putty软件(或超级终端)下输入命令:

[root@localhost /]#cd /mnt

[root@localhost mnt]#mkdir udisk

这样,就在/mnt目录下新建一子目录udisk.

注意,在putty软件(或超级终端)下输入命令是对ARM开发板进行操作,也就是操作ARM开发板内的文件系统.切记不要再Linux虚拟机下操作.因为现在是将U盘挂载到ARM开发板上,而不是Linux虚拟机,所以,必须对ARM开发板进行操作.

步骤4:在putty软件(或超级终端)下输入命令:

[root@localhost /]#mount -t -vfat /dev/sda1 /mnt/udisk

这样,就成功的将U盘的设备文件/dev/sda1挂载到了ARM开发板的/mnt/udisk目录下,且以fat格式进行挂载.当用户需要访问U盘时,可以通过对文件/mnt/udisk而实现.

注意,U盘多采用fat格式的文件系统.

步骤5:在putty软件(或超级终端)下输入命令:

[root@localhost udisk]#cd ..

这样就退出了udisk目录.

[root@localhost udisk]#umount /mnt/udisk

这样就成功的卸载了U盘(卸载U盘前,需要先退出/mnt/udisk目录).

三、文件的挂载

例程:将Linux虚拟机的/home/lishuai目录挂载到ARM系统的/mnt/arm_linux文件下

步骤1:将相应的文件系统烧入ARM开发板.

步骤2:在Linux虚拟机上建立NFS服务器,并将/home/lishuai目录作为共享目录,且设置的主机IP地址为192.168.0.*.

步骤3:<1>在Linux虚拟机终端上通过ifconfig命令设置IP地址为:192.168.0.20,并通过ifconfig命令查询IP地址.

<2>在Windows的网上邻居设置IP地址为:192.168.0.40,并通过"运行>cmd>ipconfig"命令查询IP地址.

<3>在putty软件或超级终端上通过ifconfig命令设置ARM开发板IP地址为:192.168.0.60,子网掩码为255.255.255.0(#ifconfig eth0 192.168.0.60 netmask 255.255.255.0)并通过ifconfig eth0命令查询IP地址.

这样,Windows、Linux虚拟机、ARM开发板就在同一网段上了.

步骤4:在putty软件或超级终端上输入命令:

#ping 192.168.0.20 //查看ARM开发板能否ping通Linux主机

#ping 192.168.0.40 //查看ARM开发板能否ping通Windows

步骤5:在putty软件或超级终端上输入命令:

[root@localhost /]#cd /mnt

[root@localhost mnt]#mkdir arm_linux

这样,就在ARM开发板的文件系统中/mnt下新建了一子目录arm_linux.

步骤6:在putty软件或超级终端上输入命令:

#mount -o nolock,wsize=1024,rsize=1024 192.168.0.20:/home/lishuai /mnt/arm_linux

这样就将IP地址为192.168.0.20(Linux虚拟机)下的/home/lishuai挂载到(ARM系统)的/mnt/arm_linux目录下.

注释:

<1>若在putty软件或超级终端上输入上面的挂载命令,表示用户对ARM系统进行操作.由于ARM内已烧入了文件系统,故/mnt/arm_linux是ARM内文件系统的一个目录.因此,当用户执行该命令时,表示是将IP地址为192.168.0.20的/home/lishuai挂载到(ARM系统)的/mnt/arm_linux目录下.因此,当用户需要在ARM系统下对Linux虚拟机的/home/lishuai目录进行操作时,直接对/mnt/arm_linux目录操作便可以了.

此时,在putty软件或超级终端上输入命令:#cd /home,但却找不到lishuai这个目录,这是因为在在putty软件或超级终端上执行cd命令时,是对ARM系统的访问.而不是对Linux主机进行访问,虽然ARM系统已烧入了文件系统,但/home目录下未必有lishuai这个目录.

<2>若在Linux虚拟机的终端上输入上面的挂载命令,表示用户对Linux主机进行操作.当然在Linux主机内已有相应的文件系统.故/mnt/arm_linux是Linux主机的一个目录.因此,当用户执行该命令时,表示将IP地址为192.168.0.20的/home/lishuai挂载到Linux主机的/mnt/arm_linux目录下.因此,当用户需要在Linux主机下对IP地址为192.168.0.20的设备的/home/lishuai目录进行操作时,直接对/mnt/arm_linux目录操作便可以了.

从上面的描述可以看出,执行的对象不同,实现的挂载目的也不同.

四、对设备挂载、文件挂载的综合实现

例程:将Windows下的某个文件通过ARM开发板放入U盘

步骤1:通过Samba服务器将Windows下的文件hehe.txt放入(linux与Windows的)共享目录/home/lishuai内.

步骤2:通过NFS服务器将Linux主机的/home/lishuai目录挂载到ARM开发板的/mnt/arm_linux目录下.

在putty软件或超级终端上输入命令:

#mount -o nolock,wsize=1024,rsize=1024 192.168.0.20:/home/lishuai /mnt/arm_linux

步骤3:将U盘挂载到ARM开发板的/mnt/udisk目录下.

在putty软件或超级终端上输入命令:

#mount -t -vfat /dev/sda1 /mnt/udisk

步骤4:在putty软件或超级终端上输入命令:

#cd /mnt/udisk

#cp ../arm_linux/hehe.txt ./

这样就实现了将Windows下的某个文件通过ARM开发板放入U盘的目的.

步骤5:卸载U盘和Linux虚拟机的/home/lishuai目录.

在putty软件或超级终端上输入命令:

[root@localhost udisk]#cd ..

[root@localhost mnt]#umount /mnt/arm_linux

[root@localhost mnt]#umount /mnt/udisk

五、设备号的另类应用

1.配置linux主机IP地址:192.168.220.54

2.配置ARM开发板IP地址:192.168.220.1

3.配置Windows的IP地址:192.168.220.55

4.在putty软件或超级终端下:#ping 192.168.220.54

5.将linux主机的/home/lishuai目录挂载到ARM开发板的/mnt/arm_linux目录下:

#mount -o nolock,wsize=1024,rsize=1024192.168.220.54:/home/lishuai /mnt/arm_linux

6.在linux主机的/home/lishuai目录下创建hehe.c源码.

#vim hehe.c

#include <stdio.h>

int main(void)

{

printf("hello embeded!\n");

return 0;

}

7.在linux主机的/home/lishuai目录下使用arm-linux-gcc编译hehe.c(为了在ARM平台上运行,必须使用arm-linux-gcc编译器).

#arm-linux-gcc hehe.c -o hehe.arm

编译成功后,在putty软件或超级终端下的/mnt/arm_linux目录下会新产生一个hehe.arm的可执行文件.由此看出,linux主机的/home/lishuai与ARM开发板的/mnt/arm_linux目录是同步更新的.

8.在putty软件或超级终端下:

#./hehe.arm > /dev/tty0 //将hehe.arm执行结果打印到LCD上

#clear > /dev/tty0 //清屏

#ls > /dev/tty0 //将显示出当前路径(/mnt/arm_linux)下的文件和目录

Attention!!!
(1)通常向LCD上写这些重定向,是写到tty0,而不是fb0.
(2)使用NFS实现文件挂载时,必须保证下面几点.

<1>linux主机的NFS服务器正常使用.

若有问题,可通过指令重启服务器:#service nfs restart

或查询服务器状态:#service nfs status

<2>Windows、linux主机和ARM开发板的IP地址在同一网段内,且通过ARM开发板可以ping通另外两个设备.因为文件挂载是通过网络实现的.

(3)在实际的嵌入式开发中,常常无法将Linux主机的某个目录挂载到ARM开发板上,此时可以从以下三个方面着手:
<1>由于这种挂载依赖于NFS服务器,因此可以查询NFS服务器的状态,或者重启NFS服务器.
#service nfs restart
#service nfs status
<2>重新配置Linux虚拟机的IP地址.这种挂载基于ARM开发板、Linux主机和Windows网卡在同一网段上,有时相互之间ping通但却无法挂载.
<3>在Linux主机内输入命令来查看Linux主机是否能挂载自己.
#ifconfig eth0 192.168.0.50
#mount -o nolock 192.168.0.50:/home/lishuai /mnt
//将Linux主机的/home/lishuai目录挂载到本机的/mnt目录下

原文地址:http://lizzy115.blog.163.com/blog/static/3649195820101053277145/

参考:http://lameck.blog.163.com/blog/static/38811374201011167412377/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: