LFS 学习日记(第八章 使 LFS 可以启动 )

2010年10月23日 星期六
/LFS-BOOK-6.6-HTML/chapter08/chapter08.html
8. Making the LFS System Bootable
/LFS-BOOK-6.6-HTML/chapter08/introduction.html
8.1. Introduction
/LFS-BOOK-6.6-HTML/chapter08/fstab.html
8.2. Creating the /etc/fstab File Continue reading "LFS 学习日记(第八章 使 LFS 可以启动 )"

Ubuntu 下挂载U盘的3种方式

因为我需要在Ubuntu下挂载的U盘能够同步写操作,所以对Ubuntu 6.06 LTS下U盘(台电1G)的3种挂载大致实践了一下。这3种方式分别是:gnome下的自动挂载,pmount命令,在/etc/fstab中设定。

1、 gnome下的自动挂载
据搜索,gnome 下的自动挂载是利用hal(HAL, Hardware abstraction layer)实现的。只要把U盘插上,就会在桌面上出现一个 名为"usbdisk-1"的U盘图标。这种方式有两个地方可以进行相关设置。

一个地方是设置自动挂载时的相关参数,例如:同步写标志sync,不更改文件访问时间标志noatime等等。在文件“/etc/hal/fdi/policy/preferences.fdi“中设置。原来的所有设置都是注释掉了的,如果添加sync、noatime 标志需要修改这个文件。我在“match key="volume.size" compare_lt="1000000000"”这行走了点弯路,意思是小于1G就添加相应的参数。可是我没有注意到我的U盘实际上比这里的1G稍微大点(sudo fdisk -l /dev/sda 中查看),为1010826752字节,结果设置的参数不管用,无意中才发觉这个问题。最后干脆去掉这一个条件,只要是这种"storage.hotpluggable"和"storage.removable" 为"true"的都加上"sync"和"noatime"标志。

另一个地方是开始菜单中的“系统->首选项->可移动驱动器和介质”,把相应选项勾上。

不对“/etc/hal/fdi/policy/preferences.fdi”修改时的/etc/mtab相关内容如下:
/dev/sda1 /media/usbdisk-1 vfat rw,nosuid,nodev,quiet,shortname=mixed,uid=1000,gid=1000,umask=077,iocharset=utf8 0 0

添加了sync和noatime标志后的相关内容:
/dev/sda1 /media/usbdisk-1 vfat rw,nosuid,nodev,sync,noatime,quiet,shortname=mixed,uid=1000,gid=1000,umask=077,iocharset=utf8 0 0

挂载点 /media/usbdisk-1是自动的。

2、用pmount 命令
在不登录入桌面的情况下,另登录一个控制台,在命令行下输入命令 pmount -sA /dev/sda1 也可以挂载U盘,效果同添加了sync和noatime标志的gome下挂载是一样的。挂载点 /media/sda1是自动的。

查看 man pmount,可知它的默认挂载参数是: async,atime,nodev,noexec,noauto,nosuid,user,rw
如果在UTF-8的locale下utf8的iocharset是默认的。
另外,在man pmount 下提示在Debian下,使用pmount 的用户需在plugdev 系统组。不过,我的Ubuntu装好就把我的使用用户自动加入了这个组。

3、在/etc/fstab中设定
要达到上面的效果需要一大串参数,如下:
/dev/sda1 /media/flash vfat rw,nosuid,nodev,sync,noatime,quiet,shortname=mixed,uid=1000,gid=1000,umask=077,iocharset=utf8 0 0
然后: sudo mount /dev/sda1

4、注意:
当在/etc/fstab 中设置了/dev/sda1的挂载选项(不论是否已经确实挂载了),gnome下的挂载方式和pmount 命令都不起作用了,这两种方式可能都会去检查/etc/fstab文件;
当使用了gnome下的自动挂载方式或pmount 命令的挂载方式,那么,这两种方式中的另一种方式将不起作用。不过,这时手工的sudo mount /dev/sda1 -t vfat -o rw,nosuid,nodev,sync,noatime,quiet,shortname=mixed,uid=1000,gid=1000,umask=077,iocharset=utf8 /media/flash 却仍然可以用。

Ubuntu 6.06 LTS 上挂载fat32分区和ext2分区的一些测试

这篇日记记录在Ubuntu 6.06 LTS 上挂载fat32分区和ext2分区,测试系统umask值和mount fat32分区中的umask、dmask、fmask等参数的用法,并测试在 gnome nautilus 中创建目录、文件和在控制台下创建目录、文件的情况。

一、在Ubuntu 6.06 LTS 挂载Windows XP SP2下的fat32分区:

Ubuntu下是使用的 zh_CN.UTF-8 的locale,使用下面的命令挂载fat32分区:

sudo mount -t vfat -o iocharset=utf8,umask=022,gid=1000,uid=1000 /dev/hda1 /media/xp

这样,可以正确显示windows下中文目录(文件)名,在 Ubuntu 下创建的中文目录(文件)名在windows下也可以正常显示。奇怪的是,就算是登录gnome时选择了zh_CN.GB18030 的locale,挂载这个分区选择iocharset=utf8在nautilus中创建目录和文件才正确(能正常创建并在两个系统中显示中文名;但这时在gnome终端用命令行中不能创建中文名目录和文件),改成iocharset=gb2312 在gnome nautilus中创建目录和文件反而不行(在nautilus中不能创建目录,可以创建文件但中文名在windows下为乱码;但这时在gnome终端的命令行下可以正常创建中文名目录和文件,并且在windows系统下也能正确显示中文名)。而在原来使用的 Redhat linux 9.0 中,因为它使用的是GB18030的locale,这时,iocharset=gb2312才行,见:解决redhat linux9.0下挂载windows分区中的中文文件(夹)名乱码
。另外,两种locale下不设置iocharset参数也不能正常显示中文目录(文件)名。gid和uid是我登录用的帐号的组id和用户id,这样,fat32下面的东西的组和用户都成了我的登录帐号的了。如果,你又指定了 dmask 和 fmask ,那么,前面的umask针对目录和常规文件的屏蔽码就不起作用了。另,据说,dmask和fmask是后来才有的,早期的mount 命令是没有的。

二、挂载的fat32分区和ext2分区在创建文本文件时的权限上是不同的

比如,上面的umask 为022,在控制台下在fat32分区上创建的新目录和新文本文件和原来的旧目录和旧文本文件的权限都是755;而如果系统的umask值是022(/etc/profile中设定的)ext2分区以默认的参数挂载,在/etc/fstab中是:

/dev/hda10 /home ext2 defaults 0 2

,这时,在控制台下创建的目录的权限是755,而新创建的文本文件的权限却是644了,默认没有可执行权限。

三、在控制台下用命令和在如gedit等程序中创建的目录和文件的权限使用了系统umask值,而在图形界面的nautilus中用菜单或鼠标右键创建的目录和文件的权限则基本上不会理会系统umask的值(除了我测试过的在挂载fat32分区时创建目录)。

如,我用umask 020 改变了系统umask 的值,在控制台下在前面的ext2分区中创建的目录和文件是根据新的umask值来确定权限的,而在图形界面的nautilus中用菜单创建的目录或文件的权限却与没有改umask值前一样,即保持目录为:755,文本文件的权限为600。

而且,在用前面命令挂载的fat32分区上,在nautilus中用菜单创建的目录跟命令中使用的umask参数(如:设置 -o umask=021,或 umask=066)一致,而用菜单创建的文件的权限却一直都是600。

我在网上查了一下资料,gnome 的 nautilus 程序忽略系统umask的值好像是它的一个bug,见:idea #200: Umask and Permissions in Nautilusnautilus umask bug permissions problem on networkBug 327249 nautilus ignores umask。不过,这个问题的中文资料竟然没有搜索到。还有,也不知道这个问题现在解决没有?

上面的内容基本上就是一个linux下mount命令相关的,还有就是跟natilus有关,linux下的mount命令非常的强大,也非常的复杂,因为,linux几乎可以识别和挂载世界上所有的文件格式,每一种文件格式就有相关的挂载参数。所以,我觉得,作为一般的 linux用户,掌握一些最基本的参数就行了,到时要用到时,再去man mount,或者上网 google。

附一篇讲解 fstab 文件非常详细的文章:学会理解并编辑fstab