FreeBSD下如何使用移动硬盘

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