在GPT盘的ZFS上安装FreeBSD8

在GPT盘的ZFS上安装FreeBSD8

本文参考了Installing FreeBSD Root on ZFS using GPT

通过DVD或者Memstick启动,选择Fixit。

硬盘gpt分区

创建gpt盘

gpart create -s gpt ad0

创建引导区

gpart add -s 64K -t freebsd-boot ad0

创建swap分区(标记label,避免将来硬盘接口改变导致无法识别)

gpart add -s 8G -t freebsd-swap -l swap0 ad0

创建用于zfs的分区

gpart add -t freebsd-zfs ad0

写入freebsd的zfs引导

gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad0

创建zpool

加载zfs模块

kldload /mnt2/boot/kernel/opensolaris.ko
kldload /mnt2/boot/kernel/zfs.ko

创建zpool

mkdir /boot/zfs
zpool create zroot ad0p3
zpool set bootfs=zroot zroot

创建zfs分区(计划通过md加载/tmp,所以在这里没有建立/tmp)

zfs create zroot/var
zfs create zroot/usr
zfs create zroot/home

安装系统

export DESTDIR="/zroot"
cd /dist/8.*
cd base && ./install.sh
cd ../lib32 && ./install.sh
cd ../manpages && ./install.sh
cd ../src && ./install.sh all
cd ../kernels && ./install.sh generic
cp -Rlpv /zroot/boot/GENERIC/* /zroot/boot/kernel/

配置基础系统和zfs引导配置

chroot /zroot

基础配置文件

/etc/src.conf

LOADER_ZFS_SUPPORT=YES

/boot/loader.conf

zfs_load="YES"
vfs.root.mountfrom="zfs:zroot"
vfs.root.mountfrom.options="rw"
vfs.zfs.prefetch_disable=0

/etc/rc.conf

hostname="gptzfsboot.freebsd.org"
defaultrouter="10.0.0.1"
ifconfig_re0="inet 10.0.0.1 netmask 255.255.255.0"
tmpmfs="YES"
tmpsize="512M"
zfs_enable="YES"

/etc/resolv.conf

nameserver 8.8.8.8

/etc/fstab

/dev/gpt/swap0 none swap sw 0 0

编译安装支持zfs的bootloader

mount -t devfs devfs /dev
export DESTDIR=""
cd /usr/src/sys/boot/
make obj && make depend && make
cd i386/loader
make install

基础的设置命令

passwd

tzsetup

cd /etc/mail && make aliases

退出chroot

umount /dev
exit

完成安装

cp /boot/zfs/zpool.cache /zroot/boot/zfs/
export LD_LIBRARY_PATH=/mnt2/lib
zfs unmount -a
zfs set mountpoint=legacy zroot
zfs set mountpoint=/usr zroot/usr
zfs set mountpoint=/var zroot/var
zfs set mountpoint=/home zroot/home
exit

原文链接:http://wiki.freebsdchina.org/doc/z/8_gpt_zfs

FreeBSD下安装LibreOffice

FreeBSD下安装LibreOffice

LibreOffice安装已经不需要依赖JDK了,所以有没有JDK没什么关系 软件比较大所以最好在有足够时间的情况下执行,本人曾因为中断编译导致出错,没找到解决办法,最后重新开始了。

安装

安装 OpenOffice.org

#cd /usr/ports/editors/libreoffice/ && make install clean

注意:如需简体中文版请加上LOCALIZED_LANG=zh-CN

#make LOCALIZED_LANG=zh-CN install clean

包括的组件

LibreOffice 3.3 Base
使用 Base 管理数据库并创建查询和报表,以对信息进行跟踪和管理。

LibreOffice 3.3 Calc
使用 Calc 进行计算、分析信息以及管理电子表格中的列表。

LibreOffice 3.3 Draw
使用 Draw 创建并编辑图形、流程图和徽标。

LibreOffice 3.3 Impress
使用 Impress 创建并编辑幻灯片、会议和网页中使用的演示文稿。

LibreOffice 3.3 Math
使用 Math 创建并编辑科学公式和方程式。

LibreOffice 3.3 Writer
使用 Writer 创建并编辑信函、报表、文档和网页中的文本和图形。

包安装和中文化

FreeBSD 8.2-RELEASE已经包含libreoffice的编译包,所以升级系统之后可以直接

#pkg_add -r libreoffice

省去了大量的编译时间(人生苦短)。不过这个编译包不含中文语言文件。

经实践可以采用Linux的中文语言包来支持中文化。 在这里http://download.documentfoundation.org/libreoffice/stable/3.3.0/rpm/

根据i386/amd64平台分别选择x86/x86_64。这里以amd64为例,下载

http://download.documentfoundation.org/libreoffice/stable/3.3.0/rpm/x86_64/LibO_3.3.0_Linux_x86-64_helppack-rpm_zh-CN.tar.gz

执行以下命令:

#tar -xvf LibO_3.3.0_Linux_x86-64_helppack-rpm_zh-CN.tar.gz
#cd LibO_3.3.0rc4_Linux_x86-64_langpack-rpm_zh-CN/RPMS/
#mkdir tmp
#cd tmp
#foreach f (`ls ../*rpm`)
foreach? rpm2cpio $f | cpio -i –make-directories
foreach? end
#cp -R opt/libreoffice/* /usr/local/lib/libreoffice/

打开你的libreoffice,啊,多么熟悉的界面!好好享受人生吧……

原文链接:http://wiki.freebsdchina.org/software/l/libreoffice

其它基于FreeBSD的各类BSD发行版

名称 网址 简述
PC-BSD http://www.pcbsd.org/ 专注于桌面,KDE 环境。
GhostBSD http://www.ghostbsd.org/ 专注于桌面,Gnome 环境。
DragonFly BSD http://www.dragonflybsd.org/ FreeBSD 的分支版本。
FreeNAS http://freenas.org/ 基于 FreeBSD 的开源 NAS 系统。
VirtualBSD http://www.virtualbsd.info/ 构建于 VMware 中的 FreeBSD 发行版,也可安装到硬盘,专注桌面,使用 XFCE4 环境,主要是为了让你不用安装就可马上体验 FreeBSD 。
FreeSBIE http://www.freesbie.org/ FreeBSD Live CD
PFsense http://www.pfsense.com/ 基于 FreeBSD 构建的防火墙系统。
m0n0wall http://m0n0.ch/wall/ 基于 FreeBSD 构建的防火墙系统。
TinyBSD http://www.tinybsd.org/tinybsd 方便开发嵌入式系统的 FreeBSD 分支。
MiniBSD https://www.minibsd.org/  
FreeBSD LiveCD http://livecd.sourceforge.net/  
MaheshaBSD http://www.freebsd.nfo.sk/maheshaeng.htm 基于 FreeBSD 的 Unix 发行版,a (LiveCD/DVD/USB) modular toolkit!
DesktopBSD http://desktopbsd.net/ 基于 FreeBSD 的桌面 BSD 发行版,KDE 环境。
MirOS http://www.mirbsd.org MirOS的重点是制作一种简洁和稳定的服务器 操作系统

 

原文链接:http://wiki.freebsdchina.org/os/other

FreeBSD使用固定设备节点名操作设备

使用固定设备节点名操作设备

eric.siroh(AT)gmail.com

FreeBSD-6之后,采用devfs管理设备节点,设备名称在设备联机时动态创建,增加了灵活性。但也带来另一些问题:一些外部设备,如USB、PCCard等设备并不总是在开机之前就连接到计算机,如果存在相同类型的设备,这些设备的在/dev的节点名称会因为设备连接到计算机的先后顺序而发生变化,这会给一些应用程序的设置造成一些不便。然而,正是因为devfs的灵活性,也带来很好的方法来支持这些外部设备使用固定设备节点名称。

这里通过两台USB接口打印机EPSON Stylus CX3700、Brother FAX-2820的设置来说明这一方法。

查看devfs基本配置

首先,查看/etc/devd.conf文件,确定有关的基本配置情况

#more /etc/devd.conf

options {
   # Each directory directive adds a directory the list of directories
   # that we scan for files.  Files are read-in in the order that they
   # are returned from readdir(3).  The rule-sets are combined to
   # create a DFA that’s used to match events to actions.
   directory "/etc/devd";
   directory "/usr/local/etc/devd";
   pid-file "/var/run/devd.pid";

   # Setup some shorthand for regex that we use later in the file.
   #XXX Yes, these are gross — imp
   set scsi-controller-regex
      "(aac|adv|adw|aha|ahb|ahc|ahd|aic|amd|amr|asr|bt|ciss|ct|dpt|\
      esp|ida|iir|ips|isp|mlx|mly|mpt|ncr|ncv|nsp|stg|sym|trm|wds)\
      [0-9]+";
};

通过这两行:

   directory "/etc/devd";
   directory "/usr/local/etc/devd";

得知用户定制配置文件目录为/etc/devd,/usr/local/etc/devd。如果没有相应的目录,自行建立就可以了。当然也可以自行修改,不过不建议修改。

获得设备信息

在编写配置文件之前,需要得到设备的必要参数。可以通过在前台运行调试模式的devd来查看。现在不要连接设备,运行

#/etc/rc.d/devd stop
#/sbin/devd -Dd

屏幕上会出现一些信息,表明devd已经运行了。这时把设备连接到计算机,然后再拔掉设备。这个过程中屏幕会有很多输出,只需要查看以Processing event开头信息。以下两行示例是U盘的插拔发生的信息。

Processing event ‘+umass0 vendor=0x1043 product=0x8012 devclass=0x00 devsubclass=0x00 release=0x0100 sernum="" intclass=0x08 intsubclass=0x06 at port=1 interface=0 vendor=0x1043 product=0x8012 devclass=0x00 devsubclass=0x00 release=0x0100 sernum="" intclass=0x08 intsubclass=0x06 on uhub1’
Processing event ‘-umass0 vendor=0x1043 product=0x8012 devclass=0x00 devsubclass=0x00 release=0x0100 sernum="" intclass=0x08 intsubclass=0x06 at port=1 interface=0 vendor=0x1043 product=0x8012 devclass=0x00 devsubclass=0x00 release=0x0100 sernum="" intclass=0x08 intsubclass=0x06 on uhub1’

umass0是devfs为U盘在/dev下自动生成的设备节点,+umass0表示umass0连接上计算机了,-umass0表示umass0设备被拔出。

我们需要得到设备信息主要是vendor,product,sernum三个参数。vendor是制造商的代码,product是设备型号代码,sernum是设备的序列好,这三个参数基本上应该可以确定唯一一台设备。

如果没有多于一台同一厂家同一型号(或同一系列,有点厂家设备虽然标识的型号不同,但是product值却是一样的)的设备,实际应用中vendor和product也就可以确定不同的设备了,这里还是使用sernum来增加确定性。在上面的示例中sernum为空,说明有的U盘没有序列号,没有序列号的U盘,不能用这三个参数来唯一确定。对于U盘可以通过glabel加标签的方法标识不同的U盘,会更方便一些。

获得必要的设备信息之后,就可以在控制台按Ctrl+C退出devd进程。

本例当中的两台USB打印机通过上述方法得到有关参数分别如下:

EPSON Stylus CX3700   product 0x0818   vendor 0x04b8   sernum L34020604060324210
Brother FAX-2820      product 0x0187   vendor 0x04f9   sernum 000H5J658204

编写配置文件

得到上述的这些信息之后,就可以动手编写配置文件了,配置文件应该保存在/etc/devd.conf文件中指定的目录下,本例中为/etc/devd/ulpt.conf,内容如下:

# EPSON Stylus CX3700 printer
# product  0x0818
# vendor   0x04b8
# sernum   L34020604060324210
attach 100 {                                              # 定义设备连接时的动作。100为优先级,用来控制
                                                          # 配置文件中该设备其他可能动作的先后次序
   device-name "ulpt[0-9]+";                              # 检测设备名称
   match "product"      "0x0818";                         # 检测product
   match "vendor"       "0x04b8";                         # 检测vendor
   match "sernum"       "L34020604060324210";             # 检测sernum
   action   "/bin/ln -sf /dev/$device-name /dev/epPRN";   # 如果该设备符合上面三个条件,
                                                          # 那么就在创建一个指向实际设备名的指定名称连接
};

# Brother FAX-2820 printer
# product  0x0187
# vendor   0x04f9
# sernum   000H5J658204

attach 100 {
   match "product"      "0x0187";
   match "vendor"       "0x04f9";
   match "sernum"       "000H5J658204";
   action   "/bin/ln -sf /dev/$device-name /dev/brPRN";
};

# For detach USB printer, For 6.x, 7.x
detach 100 {                                              # 定义设备拔出时的动作
   device-name "ulpt[0-9]+";
                                                          # 当设备拔除时,删除相应的连接
   action   "/bin/rm /dev/`/bin/ls -l /dev | /usr/bin/awk ‘/^l.*$device-name\$/{print \$9}’`";
};

在上面的示例文件生效后,当EPSON Stylus CX3700联机时,devd服务进程就会根据配置文件指定的条件,创建一个指向自动分配给这个打印机的节点的名为/dev/epPRN的连接。对于Brother FAX-2820,则创建/dev/brPRN的连接。

FreeBSD 8.x 以后,devd实现了在设备拔除时也能给出product、vendor、sernum等信息,这样拔除设备时删除连接的方式就不需要写一大串天书一样的代码(这样的代码用来炫耀还是不错的;P)

# For 8.x or later
detach 100 {
   match "product"      "0x0187";
   match "vendor"       "0x04f9";
   match "sernum"       "000H5J658204";
   action   "/bin/rm -f /dev/brPRN";
};

这样,无论两台是单独联机还是同时联机,也不管两台打印机联机的先后次序,/dev/epPRN总是指向为EPSON Stylus CX3700创建的设备节点,而/dev/brPRN总是指向为Brother FAX-2820创建的设备节点。

保存配置文件后,重新启动devd服务,配置就可以生效了。

#/etc/rc.d/devd start

如果没有生效,再次前台运行调试模式的devd来查看有关信息排除错误。

应用程序配置

经过这样的设置,在CUPS配置时就不用为设备节点名称不固定而头疼了,配置EPSON Stylus CX3700时,打印机URI使用usb:/dev/epPRN,而Brother FAX-2820则使用usb:/dev/brPRN。其他热插拔设备应当可以参照上述方法设置。

原文链接:http://wiki.freebsdchina.org/doc/s/devfs