FreeBSD下如何使用移动硬盘
摘要
这个Wiki页面主要介绍如何在FreeBSD系统下面使用USB接口的移动硬盘。
FreeBSD使用移动硬盘的不同方式
严格的说FreeBSD系统只提供了一种使用移动硬盘的方式,但是很多桌面用户都会运行X。
X系统同样提供挂载移动硬盘的方法,比如我用Xorg+GNOME,我也可以使用HALD来挂载移动硬盘。
在这里,我们只介绍如何使用FreeBSD系统提供的方法来挂载移动硬盘。
基本步骤
在FreeBSD系统下面使用移动硬盘并不复杂,只需要几个基本的配置即可实现。
添加内核支持
很显然,不论你使用什么设备,你都需要将其添加进入内核(直接进内核或编译成模块)。
这里我们使用的是USB接口的硬盘,所以就需要添加对USB设备的支持。
简单的说,你需要在内核的配置文件里面添加下述内容:
device scbus
device da
device pass
device uhci
device ohci
device ehci
device usb
device umass
使用默认内核的用户可以无视这个操作,因为默认内核是提供对USB设备的支持。
详细情况可参考FreeBSD Handbook。
完成上述操作之后你的系统就能识别你的移动硬盘了。
对移动硬盘进行分区
如何分区是用户的问题了,这里只介绍如何使用UFS文件系统。
插入移动硬盘,然后用root用户运行sysinstall。
Condigure → Fdisk → 然后设定你喜欢的Slice分区方式,比如我整个移动硬盘都是用UFS,我就直接选择Use Entire Disk;然后,选择Write Changes;然后,选择Do not install a boot manager;然后退出sysinstall。
再次运行sysinstall,注意我说的是再次运行sysinstall。
Condigure → Label → 然后设定你喜欢的Partition分区方式,最后选择Write。
需要注意的是,在这个步骤中,你需要设定新建Partition的挂载位置,你最好选在挂载在/tmp下面,如果你选在挂载在root目录下面,系统就会在root下面创建目录,当然你可以自己删除那个没用的目录。
如果你的rc.conf里面有下述内容,系统开机时会自动清理/tmp目录:
clear_tmp_enable="YES"
我的分区方式是整个移动硬盘只有一个Slice,然后这个Slice里面有3个Partition。
对应/dev目录下面的
da0
da0s1
da0s1d
da0s1e
da0s1f
普通用户挂载
多数情况下,没有人使用root用户进行日常的操作,所以我们必须使用普通用户来挂载以及卸载移动硬盘。
把下述内容添加进入/etc/devfs.rules:
[localrules=5]
add path ‘da*’ mode 0660 group operator
告诉系统operator组可以挂载。
注意是/etc/devfs.rules,不是/etc/devfs.conf。后者用于控制开机就存在的设备,前者用于控制可插拔的设备。
把下述内容添加进入/etc/rc.conf:
devfs_system_ruleset="localrules"
告诉系统使用/etc/devfs.rules中设定的规则。
把下述内容添加进入/etc/sysctl.conf:
vfs.usermount=1
告诉系统普通用户可以挂载。
设定移动硬盘分区的权限
设定权限比较简单,你可以在/mnt目录下面建立自己的文件夹用于挂载自己的移动硬盘,比如我的/mnt目录下面有5个文件夹:
> ls /mnt/
fender_01 fender_02 fender_03 fender_04 fender_05
首先你需要使用root用户来手工挂载移动硬盘分区到fender_01,fender_02,fender_03。
# cd /mnt/
# mount /dev/da0s1d fender_01
# mount /dev/da0s1e fender_02
# mount /dev/da0s1f fender_03
然后你需要设定fender_01,fender_02,fender_03这三个目录的权限。
# cd /mnt/
# chown fender:operator *
注意,fender这个用户在operator组里面。
# pw group mod operator -m fender
完成上述操作你就可以使用fender这个用户来挂载移动硬盘了。
防止HALD挂载移动硬盘
既然本文开始就说明了使用FreeBSD系统提供的基本方法来挂载移动硬盘,我们就需要防止HALD来挂载移动硬盘。
屏蔽方法如下,在/usr/local/share/hal/fdi/preprobe/20thirdparty目录,
建立da.fdi文件并写入:
<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
<device>
<match key="freebsd.driver" string="da">
<match key="freebsd.unit" int="0">
<merge key="info.ignore" type="bool">true</merge>
</match>
</match>
</device>
</deviceinfo>
这个文件用于防止HALD挂载移动硬盘。
建立acd.fdi文件并写入:
<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
<device>
<match key="freebsd.driver" string="acd">
<match key="freebsd.unit" int="0">
<merge key="info.ignore" type="bool">true</merge>
</match>
</match>
</device>
</deviceinfo>
这个文件用于防止HALD挂载我的光驱(和移动硬盘关系不大)。
如果你没有按照X,那么你可以直接无视这个步骤。
弄一个自动挂载和卸载的脚本
都弄好了就在弄一个脚本吧,省着天天敲命令,一方面是比较麻烦,另外一方面是周围人看着比较奇怪(你看那个变态,用个移动硬盘还得得瑟着敲半天键盘,真能装,)。
> cd
> cd bin/
> cat mount_rhd.sh
#! /bin/sh
mount /dev/da0s1d /mnt/fender_01;
mount /dev/da0s1e /mnt/fender_02;
mount /dev/da0s1f /mnt/fender_03;
> cat umount_rhd.sh
#! /bin/sh
sync;
umount /mnt/fender_01;
umount /mnt/fender_02;
umount /mnt/fender_03;
当然了这个脚本应该放在你的shell能找到的地方了,比如我就放在自己home下面的bin里面,然后把这个bin加到自己shell程序的搜索目录就行了。
最后开个小玩笑,不要以为最后那段代码里面第一个cd命令是多余的,那个cd命令是用于会到自己home的。
原文链接:http://wiki.freebsdchina.org/doc/b/removable_disk_usage