freebsd的一般配置

常用设置
网络设置
一、网卡的驱动
首先要搞清楚机器的无线网卡类型,我的无线网卡 网件(Netgear)WNA1000M 150M迷你USB无线网卡。
插入系统,自动识别到,可在 /var/log/messages 里看到如下信息:
Mar 29 22:29:16 rzsing kernel: ugen2.2: at usbus2
Mar 29 22:29:16 rzsing kernel: urtwn0: on usbus2
系统版本如下:
root@rzsing:~ # uname -a
FreeBSD rzsing 10.0-RELEASE FreeBSD 10.0-RELEASE #0 r260789: Thu Jan 16 22:34:59 UTC 2014 root@snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64
二、加载模块
修改/boot/loader.conf,加入
################

Wireless

################
legal.realtek.license_ack=1 # 许可
firmware_load=“YES” # 不加载这个会提示缺少firmware模块
if_urtwn_load=“YES” # 这个就是这款USB无线网卡的内核驱动

wlan_scan_ap_load=“YES”
wlan_scan_sta_load=“YES”
wlan_wep_load=“YES”
wlan_ccmp_load=“YES”
wlan_tkip_load=“YES”
以便自动启动 urtwn。 除了 wlan 模块,必须手动指明驱动 wlan_wep、wlan_ccmp 和 wlan_tkip。
wlan_ccmp 和 wlan_tkip 这两个驱动只是针对 WPA 和 802.11i 安全协议。
三、无线网络连接
无线路由的设置选择使用 WPA-PSK 安全类型。
1、建立 /etc/wpa_supplicant.conf 内容如下:
network={
ssid=“freebsdap”
psk=“xxxxxxxx”
}
其中 freebsdap 是我的无线路由器的 SSID,psk(即 pre-shared key )由用户设定,与无线路由的 psk 密钥一致。不管是用 WEP 还是 WPA,如果不想自己的机器被黑,设定密码是十分必要的。
2、在 /etc/rc.conf 中加入

wifi

wlans_urtwn0=“wlan0” # 这里一定要跟 ifconfig 列出来的无线网卡名称一致
ifconfig_wlan0=“WPA DHCP”
这样在启动的时候就能从路由器自动分配到 IP 地址。
首先,我们确认网卡被识别。

dmesg | grep Wireless

root@rzsing:~ # dmesg | grep Wireless

这块是笔记本自带的,没搞定,所以就买了下面这个 USB 无线网卡

iwn0: mem 0xf7f00000-0xf7f01fff irq 17 at device 0.0 on pci3

dmesg | grep urtwn0

urtwn0: on usbus2
urtwn0: MAC/BB RTL8188CUS, RF 6052 1T1R # 原来是 RTL8188CUS 芯片
然后
ifconfig wlan0 create wlandev urtwn0
ifconfig wlan0 up scan
service netif start # 这个能自动帮你连接无线获取 IP 地址,当然如果配置正确的话,开机就可以自动连接无线。

ifconfig urtwn0

其中 “status: associated” 表示无线网络已经连接。
四、固定你的 resolv.conf

cat /etc/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4
如果你用 DHCP,有一个问题可能会不断地搔扰你,
就是 /etc/resolv.conf 里所记录的 DNS 会时不时地被修改。
当然除了暴力地让/etc/resolv.conf不能被修改外。

增加

chflags schg /etc/resolv.conf

去掉

chflags noschg /etc/resolv.conf
还可以很简单地解决此问题,往 /etc/dhclient.conf 里添加
prepend domain-name-servers 8.8.8.8, 8.8.4.4;

See ``man 5 dhclient.conf’’ for details.

详细配置 WIFI 可查看 FreeBSD 官方文档:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-wireless.html
可参考这篇 http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-aggregation.html#networking-lagg-wired-and-wireless
五、待机后的恢复
ifconfig lagg0 up laggproto failover laggport em0 laggport wlan0 # 待机后 wifi 会不在 lagg0 接口上,重新运行下这条命令添加上去。

ifconfig lagg0 up laggproto failover laggport em0 laggport wlan0 192.168.1.120 netmask 255.255.255.0 defaultrouter 192.168.1.1 # 待机后 wifi 会不在 lagg0 接口上,重新运行下这条命令添加上去。

ifconfig lagg0 inet 192.168.1.120 netmask 255.255.255.0
route add default 192.168.1.1 # 添加默认路由,查看路由信息命令: netstat -r 或者 route get default

freebsd下在一块网卡下增加删除ip
在bge0网卡上增加ip别名:
ifconfig bge0 add alias xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx up
说明:这里掩码的设定是这样的,同一个网断的第一个ip掩码按照真实的掩码设置。在这个网段下面再增加ip时,掩码就是255.255.255.255了!切记!
在bge0网卡上删除ip别名:
ifconfig bge0 -alias xxx.xxx.xxx.xxx

freebsd 网卡绑定
vi /etc/rc.conf
hostname=“wsjs-cm-155”
ifconfig_bge0=“up”
ifconfig_bge1=“up”
ifconfig_bge2=“up”
ifconfig_bge3=“up”
cloned_interfaces=“lagg0”
ifconfig_lagg0=“laggproto roundrobin laggport bge0 laggport bge1 laggport bge2 laggport bge3 10.10.14.155 netmask 255.255.255.128”
defaultrouter=“10.10.14.253”
sshd_enable=“YES”

Set dumpdev to “AUTO” to enable crash dumps, “NO” to disable

dumpdev=“AUTO”
zfs_enable=“YES”
改完以后
service netif restart
service routing restart
改完之后重启这两个文件

双网卡绑定主要是提供冗余作用。当一个网卡坏掉时,不会影响业务。
操作流程
此文主要是针对FreeBSD操作系统双网卡绑定。
机器IP为 172.207.19.101

双卡绑定双网卡绑定:
加载模块:kldstat查看if_lagg模块是否已加载
如果没有,就需要编辑配置文件/boot/loader.confif_lagg_load=“YES” 手工命令加载:kldload if_lagg

编辑配置文件/etc/rc.conf
ifconfig_igb0=“up”
ifconfig_igb1=“up”
cloned_interfaces=“lagg0”
ifconfig_lagg0=“laggproto failoverlaggport igb0 laggport igb1”
ipv4_addrs_lagg0="172.207.19.101/24”

重新加载网络/etc/netstart

查看接口状态ifconfig

在 UEFI 下引导 FreeBSD
FreeBSD 10开始引入UEFI启动支持,FreeBSD 10运行在UEFI模式下需要下载独立的带有uefi名称的镜像版本。
以FreeBSD 10.3为例,对应的amd64刻录镜像名称为FreeBSD-10.3-RELEASE-amd64-uefi-memstick.img。
从FreeBSD 11开始,镜像均支持UEFI启动,不再区分是否带有uefi。
引导UEFI模式安装的FreeBSD需要下载iso格式的镜像,解压后提取/boot/boot1.efi文件。
在ESP分区中创建FreeBSD目录,将boot1.efi文件拷贝到其中。
在UEFI BIOS中手动选取boot1.efi文件作为系统引导项,重启即可在UEFI模式下引导安装完成的FreeBSD系统。

使用 GRUB2 引导 FreeBSD
在grub.conf文件中为FreeBSD创建启动项,指定FreeBSD启动文件boot1.efi的位置,配置如下:
menuentry ‘FreeBSD’ {
insmod part_gpt
insmod fat
set root=‘hd0,gpt1’
chainloader /EFI/FreeBSD/boot1.efi # FreeBSD efi文件的实际路径
}
1
使用boot1.efi文件引导FreeBSD相比直接通过GRUB2启动BSD内核的方式更加简单,无需复杂的引导配置。

无线网络配置
命令行环境下配置无线网络推荐使用wpa_supplicant工具。
FreeBSD源内提供的wpa_supplicant工具默认未生成配置文件,需要自行在/etc路径下创建wpa_supplicant.conf。
wpa_supplicant.conf配置模版如下所示:
network={
ssid=“无线网ssid”
psk=“密码”
}
1
默认无线网卡名称为ath0。将无线配置写入/etc/rc.conf中:
wlan_ath0=“wlan0”
ifconfig_wlan=“WPA DHCP”
1
之后启动网络服务:

service netif start

1
连接未加密的无线网络,不需要使用wpa_supplicant.conf,直接在/etc/rc.conf中添加:
wlans_ath0=“wlan0”
ifconfig_wlan0="ssid [无线网ssid] DHCP”
1
如果是rtl系列的无线网卡加载不成功,可能需要:
echo legal.realtck.license_ack=1 >> /boot/loader.conf
如果实际网卡在ifconfig中可以看到,那么还需要创建虚拟网卡来
echo wlans_urtwn0=“wlan0” >> /etc/rc.conf
配置网卡为wpa2安全认证方式
echo ifconfig_wlan0=“wpa DHCP”
配置无线密码的方式:
wpa_passphrase ssid pwd >> /etc/wpa_supplicant.conf
以上配置完成后,可以使用wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf 来查看一下是否能成功
使用/etc/rc.d/netif start开启无线配置使用
如果还是不行,自行重启一下
还不行可以使用wpa_supplicant命令查看不成功的原因

无线网卡:fast 150M迷你网卡
FreeBSD版本:12.0

修改/boot/loader.conf,加入
################

Wireless

################
legal.realtek.license_ack=1 # 许可
firmware_load=“YES” # 不加载这个会提示缺少firmware模块
if_urtwn_load=“YES” # 这个就是这款USB无线网卡的内核驱动
wlan_scan_ap_load=“YES”
wlan_scan_sta_load=“YES”
wlan_wep_load=“YES”
wlan_ccmp_load=“YES”
wlan_tkip_load=“YES”

新建/etc/wpa_suppliant.conf

network={
ssid=“freebsdap”
psk=“xxxxxxxx”
}
在/etc/rc.conf中加入

wifi

wlans_urtwn0=“wlan0” # 这里一定要跟 ifconfig 列出来的无线网卡名称一致
ifconfig_wlan0=“WPA DHCP”

然后

ifconfig wlan0 create wlandev urtwn0
ifconfig wlan0 up scan
service netif start # 这个能自动帮你连接无线获取 IP 地址,当然如果配置正确的话,开机就可以自动连接无线。

服务管理
FreeBSD采用传统的BSD风格的init系统,服务项在/etc/rc.d目录下。
可以使用service命令来管理服务:

service [服务名称] [start | stop | status]

1
开机自启动的服务,以及一些系统配置存放在/etc/rc.conf文件中。
例如,需要开机自启动ssh服务则可以将sshd_enable="YES"加入rc.conf文件中。
常见的一些服务配置:
hostname=“MacBook” //主机名称
ifconfig_em0=“DHCP” //网络DHCP
ifconfig_em0_ipv6=“inet6 accept_rtadv” //ipv6
sshd_enable=“YES” //ssh服务
ntpd_enable=“YES” //时间同步服务
powerd_enable=“YES” //电源管理服务
dumpdev=“AUTO” //内核错误转储服务
1
包管理
FreeBSD同时提供了基于源码编译软件包的Ports系统和基于预编译二进制包的pkg包管理。
pkg
FreeBSD 10之后引入了新的pkg工具用于管理软件包,常用指令类似与yum/apt/dnf:

pkg install [软件包名称]

pkg search [软件包名称]

pkg remove [软件包名称]

pkg autoremove [软件包名称]

pkg info //查询所有已安装的软件包

pkg info [软件包名称] //查询某个软件包的具体信息(包括软件包的文件组成,依赖关系,来源等)

1
Ports
Ports系统提供了官方源内所有软件包的源码树,编译安装前能够定制编译参数,控制依赖项。
Ports源码树位于/usr/ports目录之,首次使用前需要初始化Ports树,执行:

portsnap fetch extract

1
之后更新Ports树执行:

portsnap update

1
编译Ports树下某个软件包的源码只需进入对应的源码目录中,执行以下步骤:
make config 进入交互式界面,配置编译依赖
make 执行编译操作
make install 编译完成后执行安装操作
make clean 安装完成后清理编译生成的临时文件
使用源码编译的软件包安装后同样受到pkg包管理器的管理。
系统版本升级
FreeBSD并非滚动发行版,系统有严格的版本划分。
FreeBSD升级系统版本需要使用升级工具freebsd-update。
升级到指定版本,执行指令:

freebsd-update -r [版本号-发布状态] upgrade

1
以FreeBSD 10.1正式版,执行指令:

freebsd-update -r 10.1-RELEASE upgrade

1
之后系统会开始下载升级所需要的补丁,下载完成之后,执行更新指令:

/usr/sbin/freebsd-update install

ZFS&iscsi
对于ZFS我是一直在强烈推荐的,因为实在太好用了。但是直到现在,它还是只能运行于Oracle的Solaris和FreeBSD两个系统上,为了将它分享给别的系统只能通过NAS或SAN的方式。
NAS的方式很简单,我一直在用Samba实现,当然NFS也是可以的,SAN的话之前还没试过。使用上当然是SAN更好一些,而且现在网速也够快。虽然对于存储来说,NAS和SAN都是外部存储,但对于客户机来说,它知道NAS是网络设备,而SAN则会被视同本地设备,这是二者的主要区别。之所以会这样,是因为NAS走的是网络层的协议,SAN走的是更底层的块设备协议。
传统上SAN都是比较高大上的,因为都是走光纤通道(FC),直到后来有了iSCSI这个大救星——使用iSCSI的SAN又被称为IP-SAN。而且有了iSCSI以后,NAS和SAN的区别已经不那么明显了,因为现在有一些NAS设备也提供iSCSI支持。
不过要注意一点:正因为NAS是走网络协议,所以对客户机来说,是以通用的网络文件系统方式访问,不需要关注服务端是用什么具体的文件系统,这也就意味着在不同系统中可以共享NAS中的文件。比如我现在就是在服务端用ZFS格式存放文件,通过SAMBA共享给Linux、Mac和Windows,在四个完全不同的系统中访问共享文件都没有问题。但是SAN是走底层块设备协议,所以是客户机独用的,Linux用的target不能与Windows共用(格式化后的文件系统不同),同样在服务端也无法直接看到相应target里的具体内容(可以通过服务端的本地Initiator连接后mount为指定文件系统操作,但也仅限于服务端本身支持的文件系统格式)。
之前版本的FreeBSD虽然也支持iSCSI,但是是一个用户级的应用,个人感觉不好,所以没试过。在最新的FreeBSD 10中,iSCSI被集成到系统中去了,这真是个喜大普奔的好消息,最近试了一下感觉还不错。
关于iSCSI的基本原理大致是这样:iSCSI本身是一个协议,是一个在IP网络上的虚拟SCSI实现。客户端能过iSCSI Initiator模拟一个本地的块设备(可以理解为一个虚拟的SCSI硬盘),然后由iSCSI Initiator把收到的SCSI指令通过IP网络传递到服务端,服务端的再将相应的指令转为对实际硬盘的操作。
在服务端(即存储端)有一些物理或逻辑硬盘,被组织成所谓的LUN(逻辑单元号),可以理解为一种逻辑卷,比如一块硬盘,一个分区,一组RAID,或是一个ZFS。当这个存储端把这些LUN通过iSCSI对外提供存储服务的时候,我们叫它iSCSI target。同时,在存储端上可以通过多种途径对外提供服务,比如通过不同的IP,不同的网卡,不同的身份认证方式等,每一种途径叫做一个portal group。portal group和target可以自由组合,以满足客户端的各种存储需求。
在客户端,则是通过前面所说的iSCSI Initiator实现,它在本地表现为一个虚拟硬盘(在/dev下有设备名,但没有实际的物理设备),对它的所有操作都会被通过iSCSI传递到对应的iSCSI target上去。
iSCSI target
首先在服务端创建一个ZFS供target之用:
zfs create -s -V 4G -b 4k tank/testtarget
注意需要-V参数才能在/dev/zvol下创建相应的块设备供iSCSI之用。-V表示创建ZFS卷,-s表示不在创建时分配空间,不加此参数则会创建一个实际占用指定容量的卷。-b指定块大小(即传统意义上的扇区大小,一般用4096或512)。
然后在 /etc/rc.conf 里加入以下一行启用ctld(iSCSI服务):
ctld_enable=“YES”
接着是配置ctld,创建 /etc/ctl.conf 文件,内容为:
portal-group san {
discovery-auth-group no-authentication
listen 192.168.x.x
}

target iqn.2014-05.com.example:target0 {
auth-group no-authentication
portal-group san
lun 0 {
path /dev/zvol/tank/testtarget
blocksize 4096
size 4G
}
}
这是最简单的配置,只有一个target和一个portal group。没有使用用户认证。作为测试已经足够了。
然后就可以启动这个target了:
chmod 600 /etc/ctl.conf
service ctld start
注意那个chmod的步骤是必须的,否则服务无法启动,因为一个全局可读的配置文件是不安全的。
启动完可以看一下日志,以确定没有出错。
tail /var/log/messages
iSCSI initiator
一般不拿FreeBSD做客户端,只是有时会需要在服务端测试一下target的配置,所以可能还是会用到FreeBSD下的Initiator的,所以记录了一下配置方法附后供参考。本节以实际的桌面环境配置为例。
我的桌面是Linux Mint 16,以下供参考。不过不同的Linux发行版应该都差不多。Mac貌似需要商业软件支持,没法介绍。微软有为Windows免费提供相关的Initiator软件(高版本Windows已内置),配置方法附后。
首先需要安装软件:
sudo apt-get install open-iscsi open-iscsi-utils
然后启动服务:
sudo service open-iscsi start
然后搜索一下target :
sudo iscsiadm -m discovery -t sendtargets -p 192.168.x.x
在结果中可以看到之前配置好的target。
登录连接target:
sudo iscsiadm -m node -T iqn.2014-05.com.example:target0 -p 192.168.x.x -l
现在打开系统首选项-磁盘(或你的发行版上的相关工具,或者你习惯用命令行也行),即可看到一个新增的磁盘(在我的电脑上,它的设备名叫/dev/sdc),磁盘名叫做FREEBSD CTLDISK,处于未格式化状态。用EXT4格式化,再mount即可像本地盘一样直接使用了。
至此一个基本的基于ZFS的iSCSI服务就算搭建完成。
更复杂的应用
前面说的target配置是全开放的,整个网段内所有客户端都可以自由连接,为了安全起见,需要加入用户认证。
最简单的方法就是在target配置里加入用户名密码:
target iqn.2014-05.com.example:target0 {
portal-group san
chap user password1234
lun 0 {
path /dev/zvol/tank/testtarget
blocksize 4096
size 4G
}
}
注意,其中密码默认需要不少于12位。但是如果有多个用户需要使用的话,这样就不方便了,这时就需要使用auth-group:
auth-group ag0 {
chap user1 password1234
chap user2 password1234
}

target iqn.2014-05.com.example:target0 {
auth-group ag0
portal-group san
lun 0 {
path /dev/zvol/tank/testtarget
blocksize 4096
size 4G
}
}
现在在initiator端同样需要指定用户名密码才能连接了。但是用户名密码并不是在命令行里输入,而是需要配置给open-iscsi服务。修改/etc/iscsi/iscsid.conf,加入:
node.startup = automatic
node.session.auth.authmethod = CHAP
node.session.auth.username = user
node.session.auth.password = password1234
其中node.startup设置为automatic是为了让initiator自动连接。这项并不是必须的,它的默认值是manual,即需要手动连接target,设置为automatic即可在系统重启后自动连接target,而不需要再手工运行iscsiadm去连接。
node.session.auth的username和password就是前面配置的target的用户名和密码。同理,如果配置了portal group的用户认证,也可以在这里配置discovery的用户名和密码。
然后重启open-iscsi服务:
sudo service open-iscsi restart
现在再执行:
sudo iscsiadm -m node -T iqn.2014-05.com.example:target0 -p 192.168.x.x -l
即可登录连接target。连接后即可mount使用。
如果像前面那样把node.startup配置为automatic,则启动后会自动连接,只需要直接mount或如下配置成自动mount:
先取得UUID:
sudo blkid /dev/sdc
或者用/dev/disk/py-path/方式的路径,然后把它配置到fstab里(以by-path路径为例,以UUID方式参见fstab中的默认配置):
/dev/disk/by-path/ip-192.168.x.x:3260-iscsi-iqn.2014-05.com.example:target0-lun-0 /mnt/iscsi ext4 _netdev,errors=remount-ro 0 1
注意,选项里必须有_netdev一项否则在启动时会等待很长时间后mount失败。
试试ZFS
可以注意到,前面有一个步骤是客户端需要对target进行格式化,我是格式化为EXT4格式的,那么服务端的ZFS还有效吗?可以来试试。
首先在mount好的路径里创建一些文件,然后到服务端做个快照:
zfs snapshot tank/testtarget@test1
然后再回到客户端,把相关的文件删除或修改,然后umount并断开(否则不能对服务端ZFS作修改操作):
sudo umount /dev/sdc
sudo iscsiadm -m node -T iqn.2014-05.com.example:target0 -p 192.168.x.x -u
然后在服务端把iSCSI服务给停了:
service ctld stop
现在可以试试回滚快照——当然也可以做一个克隆,然后把target指向克隆,这里以简单的回滚操作为例:
zfs rollbak tank/testtarget@test1
再重启服务:
service ctld start
客户端重新连接:
sudo iscsiadm -m node -T iqn.2014-05.com.example:target0 -l
sudo mount /dev/sdc /mnt/iscsi
现在再看之前修改过或删除掉的文件又恢复原状了。可见ZFS卷同样可以实现ZFS的功能,并不会因为它被格式化为EXT4而失效。
附:FreeBSD下的Initiator配置
首先启动 iscsid 服 务。因为通常情况下只是测试一下,可以直接用iscsid命令启动服务,因为用service命令启动的话还需要配置rc.conf,而且即使是直接启动也可以用service命令停止它。
然后用连接target:
iscsictl -A -p 192.168.x.x -t iqn.2014-05.com.example:target0
然后用不带参数的iscsictl看一下连接状态和设备名。注意:如果状态显示为Waiting for iscsid(8),则说明iscsid服务未启动。
没问题的话就:
mount -t fstype /dev/da0 /mnt/iscsi
其中fstype为文件系统名,da0为连接后的设备名。
附:Windows的Initiator配置
因为Mac不能用,郁闷之余看了一下Windows的配置,发现还是挺简单的,连重启都不用。
首先在微软官网下载:Microsoft iSCSI initiator
然后安装之。注意,需要开启MS DTC服务。
安装后运行之,在[Discovery]页的[Target Portals]一栏里点[Add],输入Portal的IP地址或DNS名称,比如:192.168.x.x。
确定后在[Targets]页里即可看到服务端配置的targets,选择之,然后点[Log On],其状态会从Inactive变成Connected。注意这时有个选项叫“Automatically restore this connection when the system boots”,选中之可以在系统启动时自动连接。
现在打开系统管理中的磁盘管理,就会弹出提示说系统中多了一块硬盘,选择之并格式化为你想要的文件系统格式,比如FAT32或NTFS,之后就可以像普通硬盘一样使用它了。

freeBSD硬盘挂接
第一种方法:使用 sysinstall―――bsdconfig(新版本)
在使用 sysinstall 来设定新的硬盘之前,请先确定您是以 root 身份执行。接下来,您就可以依照下列步骤来新增硬盘:
进入 sysinstall
进入 sysinstall 的主选单后,首先请选择 [Configure],进入后,再选择 [Fdisk] 项目以进入 Fdisk 选单。第一次进入 Fdisk 时,sysinstall 会要求您选择所要设定的硬盘,请选择 ad1。
使用 Fdisk
相信您对于 Fdisk 的画面应该很熟悉,我们在安装 FreeBSD 时就使用过它。如果您要让 FreeBSD 使用整个硬盘,请按 [A],接下来请按 [W] 以将设定写入硬盘。在按了 [W] 后,会出现一个确认的窗口,选 [Yes] 即可。最后会出现要您选择所要使用的 Boot Manager,因为这一个硬盘不是要用来开机用的,所以我们选 [None]。写入后,请按 [Q] 离开 Fdisk 的画面,并回到 Configure 画面。接着请离开 sysinstall,再重新执行 sysinstall 以让 sysinstall 重新侦测硬盘设定。
使用 Disk Label Editor
重新执行 sysinstall 后,请选择 [Configure] -> [Label] 以进入 Disk Label Editor。Disk Label Editor 会帮我们在 Slice 下切割 Partition 并格式化硬盘。在 Disk Label Editor 中,我最多可以建八个分割区 (Partition),编号从 a 到 h。不过有的代号有特殊用途。例如,分割区 a 通常会保留给根目录使用,所以我们开机时所使用的分割区代号会是 a。而代号 b 表示是 swap partition,我们可以在多个硬盘中都有 swap partition。代号 c 是用来表示整个硬盘或是整个 Slice。所以最后 d-h 才是一般我们会使用到的分割区代号。
我们要让 FreeBSD 使用整个硬盘,所以必须将整个 Slice 切成一个 Partition。所以一进入 Disk Label Editor 后,请按 [C],在画面上会显示整个 Slice 的大小,直接按 Enter 即可建立一个分割区。接下来,我们必须选择所要挂入本分割区的目录,请选择 FS 后,再输入您所要挂入的目录,例如 /volume1。如果是在安装 FreeBSD 时,我们所设定的挂入点会被写到 /etc/fstab 中,开机后就会自动将磁盘挂入该目录。但是我们这里所指定的挂入点并不会被写入 /etc/fstab 中,最后我们还是必须再设定 /etc/fstab。
最后请按 [W]以进行分割及格式化。完成后,系统会将该才所建立的磁盘挂入您所指定的目录下。接着请离开 sysinstall 回到命令列。
设定 /etc/fstab
为了让系统在开机时可以自动将此分割区挂入,我们必须再设定 /etc/fstab。请在 /etc/fstab 中增加下列数据:

Device Mountpoint FStype Options Dump Pass#

/dev/ad1s1d /volume1 ufs rw 2 2

第二种方法: 使用命令列
您不一定要使用 sysinstall 来分割及格式化硬盘,sysinstall 只是提供一个比较容易使用的界面,最后还是会呼叫命令列的指令以完成硬盘的设定。使用命令列的方式比较复杂,而且较容易出错,但却可以让您有更灵活的应用。看了如何从命令列新增一个硬盘可以让您对 sysinstall 所做的事更了解。
我们一样假设要新增的硬盘为 ad1,并且将整个硬盘切成一个扇区给 FreeBSD 使用。第一步要做的就是先使用 dd 这个指令来清除硬盘上旧的设定:

dd if=/dev/zero of=/dev/ad1 bs=1k count=1

上述指令的意思是从 /dev/zero 这个装置读出数据写到 /dev/ad1 中,每次写入的 block size (bs) 为 1KB,做一次写入的动作即可 (count)。我们知道 FreeBSD 各动硬件装置当做档案来看待,/dev/zero 这个档案其实是一个虚拟的档案,我们从这个档案读出来的数据都是 0。上述指令的动作的目的就是要将硬盘 ad1 的开头 1024KB 清成 0,而硬盘开头的部份存放的就是一些分割区设定的数据 (Partition Table)。

接下来呢我们就必须使用 fdisk 这个指令来切割 slice 了:

fdisk -BI ad1

******* Working on device /dev/ad1 *******
fdisk: invalid fdisk partition table found

上述 fdisk 指令表示我们要将 ad1 切割成一个 slice (参数 -I),并清除放开机信息的第 0 个 sector。您可以忽略「invalid fdisk partition table found」的警告,因为我们一开始并没有任何分割区。接下来我们就可以使用下列 bsdlabel 指令来建立预设的 partition label,再使用 bsdlabel 加参数 e 以修改建立的 lable:

bsdlabel -B -w ad1s1 auto

bsdlabel -e ad1s1

接着会使用您预设的文书编辑软件跳出一个窗口,请将 a: 改成 d: 后存档离开,因为我们新增加的分割区不是要给根目录使用,所以不用代号 a,而是使用第一个不具特别意义的代号 d。

/dev/ad1s1:

8 partitions:

size offset fstype [fsize bsize bps/cpg]

d: 78156146 16 unused 0 0
c: 78156162 0 unused 0 0 # “raw” part, don’t edit

将 a: 改成 d: 后,存档离开即可。接下来我们就可以格式化这一个分割区了。FreeBSD 中用来格式化 UFS 档案系统的指令为 newfs:

newfs /dev/ad1s1d

以上即为新增一颗硬盘所要做的事。请注意,bsdlabel 这个指令是 FreeBSD 5.1 以后才有的,在 5.1 以前,请使用 disklabel。

接下来您就可以将新的硬盘挂入了,假设您要挂入的目录是 /volume1,则请使用下列指令:

mkdir /volume1

mount /dev/ad1s1d /volume1

最后,如果您希望一开机就将此分割区挂入,请修改 /etc/fstab,并加入此分割区的设定。

通过虚拟光驱加载iso文件
步骤:
1 用U盘将**.ISO文件copy至某一目录下例如:/var/osorg
2、mdconfig -a -t vnode -f **.iso
系统反馈md0
3、然后 加载至dist
mount_cd9660 /dev/md0 /dist
4、再更改sysinstall-》Options-》MediaType 选择File system 输入/dist
5、就能使用sysinstall了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值