跳至主要内容

在家用PC里体验 FreeBSD 8.1(上)

FreeBSD (http://www.freebsd.org/) 是一个开源免费的操作系统,最早接触FreeBSD是约7年前在 @hplcsz 挂bbs的服务器,后来很少关注了,最近接触到 Apple 的 MacOS 和 iOS (基于FreeBSD衍生出来的操作系统)联想起FreeBSD项目,才发现它已经更新到8.1版了。
恰好家里多出一台电脑暂时没有用,于是尝试用FreeBSD 8.1配置一台适合家用的电脑(用来看看新闻灌灌水的那种),于是有了如下一篇文章。
(注:这里假设读者已经有一定的Linux/BSD基础)

首先访问 FreeBSD 项目的官方网站,下载 FreeBSD 8.1的安装镜像文件(ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.1/),这里提供CD版、DVD版和U盘版,考虑到我有DVD刻录机,所以下载了DVD版。

下载过程是一个漫长的等待,期间强烈推荐阅读一下官方的《FreeBSD使用手册》(中文版,以下简称《使用手册》)(http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/index.html),如果对Linux/BSD不是很熟悉,前3章是很有必要阅读的,否则会被折腾到2012年。等待DVD镜像下载完,大概已经看到第10章了。

1、安装 FreeBSD 8.1
刻录下载回来的DVD镜像文件,从光驱启动然后选择“Quick模式”即开始安装过程。结合《使用手册》一般没有多大问题,因为这篇文章重点是如何搭建家用PC的环境,所以具体的安装过程这里就省略了。小技巧:

A、FreeBSD 必须安装在主分区,在安装之前你必须腾出一个至少10来GB的主分区。
B、当安装问你是否安装“Ports(相当于软件商店、软件中心)”时,要选择“YES”。
C、当安装接近完成时,程序会问你 “Would you like to browse the collection now?“,这一步是问你是否安装DVD上附带的软件,选择Yes,然后把下面这两个大块头选中,这样能避免从网络下载桌面环境的安装文件,节省时间和网络流量,减低碳排放:
+ X11/xorg-7.5
+ gnome/gnome2-2.30.1-1

2、基础网络设置
系统安装好之后,重启就会进入命令行界面,使用 root 帐号登录。注:为了简化起见,以下所有带井号开头的命令都是用 root 帐号操作的,实际应用时最好创建一个普通帐号并以普通帐号使用sudo方式执行。

FreeBSD默认使用的Shell是sh,因为我更习惯 Bash Shell,所以第一步先把 Shell 改为 Bash,
# chsh -s /usr/local/bin/bash

#exit 退出后重新登录,熟悉的 Bash 迎面而来 :)

下面开始配置网卡,先用 ifconfig 命令查看你的网卡名称,我这台电脑的网卡名是 msk0,分配一个IP给它以及设置默认路由:
# ifconfig msk0 192.168.0.123/24
# route add default 192.168.0.1
测试能不能PING通家用的那台路由器:
# ping 192.168.0.1

如果能PING通,则可以在 /etc/rc.conf 文件里添加如下文字,让每次开机自动配置网卡:
ifconfig_msk0="inet 192.168.0.123 netmask 255.255.255.0"
defaultrouter="192.168.0.1"
hostname="yangbsd.home"

如果你的家用路由器开启了DHCP功能,还可以把上面文字的头两行用这样一行替代:
ifconfig_msk0="DHCP"

因为上面的第三行修改了本机的hostname,所以需要编辑文件 /etc/hosts 把 my.domain 替换为 yangbsd.home,并且加上以下两行:
::1 yangbsd.home
127.0.0.1 yangbsd.home

然后设置域名解析,新建文件 /etc/resolv.conf,添加如下文字:
nameserver 208.67.222.222
nameserver 8.8.8.8
nameserver 8.8.4.4

看能不能PING通互联网上的网站
# ping www.google.com

ps:如果 google.com 不能PING通的话,最好换另一个互联网上“存在”的网站试试,因为 google.com 有时会在国内消失。

3、配置 Gnome 桌面环境
作为家用电脑,没有桌面环境是不行的,这里我选择个人比较喜欢的 Gnome,先创建一个 ~/.xinitrc 文件:
# echo "gnome-session" > ~/.xinitrc

然后使用 startx 命令启动 Xorg 以及 Gnome:
# startx

如果桌面环境能进入但鼠标指针动不了,需要在 /etc/rc.conf 加入如下两行:
dbus_enable="YES"
hald_enable="YES"

重启电脑再次进入 Gnome,熟悉的 Gnome 迎面扑来 :)
Gnome 自带的那个浏览器功能有点简单,下面安装个 firefox :
# pkg_add -r firefox

好了,至此一个能上网浏览网页的电脑已经配置好了。不过还不能上网灌水,是不是缺少了中文输入法?

4、中文输入法及中文字体设置
安装输入法引擎 ibus:
# pkg_add -r ibus

安装完 ibus 之后会提示添加环境变量,下面是针对 Bash Shell 的,在 ~/.bashrc 文件里加入如下文字

export XIM=ibus
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=xim
export XMODIFIERS=@im=ibus
export XIM_PROGRAM="ibus-daemon"
export XIM_ARGS="--daemonize --xim"

然后安装拼音输入法 ibus-pinyin:
# pkg_add -r zh-ibus-pinyin

安装完拼音输入法之后在 ~/.profile 文件里加入如下一行文字,否则iBus会一直显示 No input window:
export LC_CTYPE=zh_CN.UTF-8

重启 Gnome,现在中文输入法有了,不过。。。是不是觉得中文显示特别别扭?下面添加一个名为“文泉驿”免费字体,这样中文就变靓靓了。
# pkg_add -r wqy-fonts

下载了字体之后并不能立即生效,还需要配置 Xorg,先生成一个配置文件:
# Xorg -configure

执行之后会在 $HOME 目录里产生一个 xorg.conf.new 文件,编辑这个文件,在 Section "Module" 一节最后一行插入:
Load "freetype"

在 Section "Files" 一节最后一行插入:
FontPath "/usr/local/lib/X11/fonts/wqy/"

然后把这个配置文件复制到 /etc/X11
# cp xorg.conf.new /etc/X11/xorg.conf

再次重启 Gnome,靓靓中文扑面而来。

5、安装声卡驱动
作为家用电脑,没有音乐是不行的 :),先探测一下自己电脑的声卡:
# kldload snd_driver

执行之后查看一下 /dev/sndstat 文件的内容:
# cat /dev/sndstat

我的电脑结果如下:
FreeBSD Audio Driver (newpcm: 32bit 2009061500/i386)
Installed devices:
pcm0: <HDA Realtek ALC662 PCM #0 Analog> (play/rec) default
pcm1: <HDA Realtek ALC662 PCM #1 Analog> (play/rec)

这里大致知道 FreeBSD 能驱动你的声卡以及你的声卡型号,根据文件 /boot/defaults/loader.conf 罗列的声卡找到相应驱动的名称(只要某些字眼配对就足够了),我的声卡有 HDA 字样,所以估计对应的应该是 snd_hda_load="NO" 这行。

把 snd_hda_load="NO" 这一行文字复制到 /boot/loader.conf 里面,并且把“NO”改为"YES",重启电脑,播放一首mp3听听。

帖一幅播放音乐的截图:

至此一台基本能用于上网看看新闻灌灌水的 FreeBSD 配置完成了,如果中途遇到什么问题,最好看一下《使用手册》。下面讲一下小技巧。

想要完整体验一下全新操作系统,就不应该把它放在虚拟机里运行。
解决 FreeBSD 跟其他操作系统共存的方法

1、跟 Windows 7 共存
先装 Windows 7,再装 FreeBSD。安装 FreeBSD 过程中选择安装 BootManager 引导程序即可。

2、跟 Ubuntu(Linux) 10.x 共存
Ubuntu 10.x 使用 Grub2 引导,所以在安装 FreeBSD 过程中不需要安装任何引导程序,安装完 FreeBSD 之后,重启进入 Ubuntu,
修改 /etc/grub.d/40_custom 文件,增加如下文字

menuentry "FreeBSD" {
   set root=(hd0,2)
   chainloader +1
}

这里需要注意的是要确认你的 FreeBSD 安装在哪个主分区,如果是在第二个主分区,那么上面一段的第二行应该写 (hd0,1),如果是第三个主分区则应该写 (hd0,2)。执行 sudo update-grub2 更新 grub 引导配置文件,重启完成。

FreeBSD 8.1 跟 Ubuntu 10.x 的主观比较
1、Ubuntu 的安装比较简单,几乎不用费劲,相对来说 FreeBSD 显得有点困难。
2、FreeBSD 的系统资源占用比较少,运行程序感觉身轻如燕,Firefox 3貌似能跑出 Chrome的速度(这点基于目测以及惨杂了大量个人感情 :))。

帖一幅截图:

由于开始接触 FreeBSD不久,如果文章有错误的地方欢迎批评指正,转载本文请保留原文链接地址:http://ivarptr.blogspot.com/2011/01/pc-freebsd-81.html,谢谢!


下一章将会讲在FreeBSD里安装 flash 。

参考资料:
[1]《FreeBSD使用手册》http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/index.html

评论

此博客中的热门博文

使用 Sendmail 在 CentOS 5.5 架设邮件服务器

假如你要架设一个有会员管理的网站,可能会遇到诸如“我忘记密码了”、“你有一年没来过了,有空过来瞧瞧吧”这类的问题,一般这类问题都是使用邮件解决的,比如发送一个重置密码的链接或者发送一封提醒邮件。 发送邮件的方法有很多,比如使用外面专业SMTP中继服务(一般收费惊人)、使用类似 Google Apps (Free) 的免费邮件发送服务(限制比较多,比如一天不能超过500封等),而比较廉价且彻底的解决方法应该是在自己的服务器上搭建邮件服务器(SMTP服务器)。假如你使用的是 Linux 系统,那么一般邮件服务器早已安装好了,比如 CentOS(RedHat、Fedora等)内置的  Sendmail 服务程序,你只需设置几下即可使用。 1、域名的设置 首先你要设置域名DNS的MX记录和SPF记录,一般我们只要有如下几条DNS记录就可以了: 记录类型    主机名   目标 ------------------------------------ A                  @           123.123.123.123 (这里应该是你的服务器IP) CNAME      www       your-domain.com CNAME      SMTP      your-domain.com MX              @            smtp.your-domain.com TXT              @            v=spf1 a mx ~all MX记录是邮件服务器必须依赖的,而TXT(SPF)是用来防止自己的邮件服务器发送的邮件不被当成垃圾邮件(spam email),假如不增加这条记录的话对方邮箱服务要么把你的邮件直接丢弃、要么塞到垃圾邮件文件夹里,所以这条记录也是必不可少的,更多的SPF设置方法参阅这里: http://www.openspf.org/ 2、设置 Sendmail 我现在使用的 Sendmail 版本是 8.14,设置方法已经变得非常简单了,首先确保你系统已经有 sendmail 及其相关服务了: #yum install sendmail  (这个必须的) #yum install sendmail-cf #yum install send

日志工具 SLF4J 的来龙去脉

J ava 界里有许多实现日志功能的工具,最早得到广泛使用的是 log4j ,许多应用程序的日志部分都交给了 log4j,不过作为组件开发者,他们希望自己的组件不要紧紧依赖某一个工具,毕竟在同一个时候还有很多其他很多日志工具,假如一个应用程序用到了两个组件,恰好两个组件使用不同的日志工具,那么应用程序就会有两份日志输出了。 为了解决这个问题, Apache Commons Logging  (之前叫 Jakarta Commons Logging,JCL)粉墨登场,JCL 只提供 log 接口,具体的实现则在运行时动态寻找。这样一来组件开发者只需要针对 JCL 接口开发,而调用组件的应用程序则可以在运行时搭配自己喜好的日志实践工具。 所以即使到现在你仍会看到很多程序应用 JCL + log4j 这种搭配,不过当程序规模越来越庞大时,JCL的动态绑定并不是总能成功,具体原因大家可以 Google 一下,这里就不再赘述了。解决方法之一就是在程序部署时静态绑定指定的日志工具,这就是  SLF4J  产生的原因。 跟 JCL 一样,SLF4J 也是只提供 log 接口,具体的实现是在打包应用程序时所放入的 绑定器 (名字为 slf4j-XXX-version.jar)来决定,XXX 可以是 log4j12, jdk14, jcl, nop 等,他们实现了跟具体日志工具(比如 log4j)的绑定及代理工作。举个例子:如果一个程序希望用 log4j 日志工具,那么程序只需针对 slf4j-api 接口编程,然后在打包时再放入 slf4j-log4j12-version.jar 和 log4j.jar 就可以了。 现在还有一个问题,假如你正在开发应用程序所调用的组件当中已经使用了 JCL 的,还有一些组建可能直接调用了 java.util.logging,这时你需要一个 桥接器 (名字为 XXX-over-slf4j.jar)把他们的日志输出重定向到 SLF4J,所谓的桥接器就是一个假的日志实现工具,比如当你把 jcl-over-slf4j.jar 放到 CLASS_PATH 时,即使某个组件原本是通过 JCL 输出日志的,现在却会被 jcl-over-slf4j “骗到”SLF4J 里,然后 SLF4J 又会根据绑定器把日志交给具体的日志实现工具。过程如下