最近还在忙博创,今天进行nfs挂载的时候遇到了上面的问题。
can't find /mnt in /etc/fstab
当我在执行mount -t 192.168.1.50:/tftpboot/arm /mnt -o nolock命令时。
然后我换一个挂载点,错误也随之成为挂载点cant find。
先说解决问题的方法吧。
在/etc/fstab 下面添加如下一句话
192.168.1.50:/tftpboot/arm mnt nfs defaults 0 0
前面就是你主机上所要挂载的目录。
接着我来解释一下。
我做过很多次nfs的挂载,主要注意力都集中在开发板主机是否可以ping通,主机nfs服务器是否安装好。
也曾经想过为什么有时候挂载在/mnt 下好使,挂载到/home下也好使,谁来制定挂载在哪里。不过因为一直没有
遇到问题所以就没有深究过。不过现在来想想原来的nfs挂载之所以可以成功可能是跟我做的根文件系统中
/etc/init.d/rcS 中的一条指令 mount -a 即为 mount all有关。
mount -a的意思是挂载fstab目录中的所有项。而我的文件系统中有两句命令
none /tmp ramfs defaults 0 0
none /var ramfs defaults 0 0
这两句话查了查并没有查出什么以上,我的理解就是
none目录 挂载在/tmp 下 文件格式是ramfs配置为defaults 不过none 应该指的是任意目录,这里没有理论依据,仅仅是猜想。
有意思的是,自己竟然不知道原来的nfs挂载为什么是好使的。如果某位朋友知道的话。留言告诉我,万分感谢。
说了几句题外话接着上面的问题来说。
谁来制定nfs 挂载在哪?又是以什么形式挂载呢?
/etc/fstab
我们先来看看fstab目录是个什么目录。
fstab(/etc/fstab)是Linux下比较重要的配置文件,它包含了系统在启动时挂载文件系统和存储设备的详细信息。
这句话说的很明白,fstab就是来专门制定挂载方式和信息的。
我们来举个例子
面是我机子上的fstab文件:
LABEL=/ / ext3 defaults 1 1
LABEL=/boot1 /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda11 swap swap defaults 0 0
/dev/sda6 /mnt/winE vfat defaults 0 0
/dev/sda8 /mnt/winG ntfs defaults 0 0
第一列是需要挂载的文件系统或者是存储设备或者是需要挂载的目录。
第二列是挂载点
第三列是文件系统或者是分区的类型(其实分区类型就是中文件系统)
第四列是以何种形式挂载,比如
rw读写 auto 自动挂载Ro只读等等参数。
不过最常用的是defaults。
defaults是rw,suid,dev,exec,auto,nouser,async等的组合。
第五列为dump选项,设置是否让备份程序dump备份文件系统,0为忽略,1为备份。
第六列为fsck选项,告诉fsck程序以什么顺序检查文件系统,0为忽略。
‘/etc/fstab’有几个用处:
决定开机时自动挂载哪些介质;
指定每个介质挂载时的可选项、载入点;
系统用来挂载几个虚拟文件系统。
默认下,开机时‘fstab’中列出的所有介质都将被挂载。如果其中某个介质出了问题,‘mount’会显示出错信息,然后继续下一条目。请注意,这对于网络介质,比如 NFS 或 SMB 共享,也有效。如果想取消开机时的自动挂载,您得在‘/etc/fstab’给相应条目提供‘noauto’可选项。
‘mount’命令有两种可选项:常规可选项、文件系统的特殊可选项。
特殊可选项针对特定的文件系统。如果您在‘fstab’中给某个条目提供了特殊可选项(比如用于 Windows FAT 文件系统的 umask=0
),只有相应文件系统的介质才可以通过该条目被挂载。如果您想挂载其他文件系统的介质,要么再设置那个可选项,要么创建单独的条目。
指定载入点有个好处,以后可以省略挂载/卸载时的设备文件名。
mount mount_point
就将在‘/etc/fstab’寻找相应载入点的条目,并按照预先设定完成挂载。