跳至主要内容

在家用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

评论

此博客中的热门博文

Apache Cassandra 0.7 的集群配置

跟 Hadoop/HBase 一样, Apache Cassandra 也是 NoSQL 产品中最为重要的成员之一,跟 HBase 相比,因为 Cassandra 使用了一种去中心化的模式(类似memcached集群), 使用 Cassandra 搭建 NoSQL 集群更为简单容易,特别是在 0.7 版本之后,下面简述使用 Cassandra 0.7 搭建一个集群。 @ivarptr 前提条件 a、准备3台或以上的计算机。下面假设有3台运行Linux操作系统的计算机,局域网的IP地址分别为 192.168.0.100, 192.168.0.101 和 192.168.0.102。 b、Java 1.6。 c、到 这里下载 0.7.x 版本的Cassandra 二进制发行包。 1、基本配置 挑选其中的一台机开始配置,先展开 cassandra 发行包: $ tar -zxvf apache-cassandra-$VERSION.tar.gz $ cd apache-cassandra-$VERSION 其中的 conf/cassandra.yaml 文件为主要配置文件,由于 0.7 版不再采用XML格式配置文件,如果对 YAML 格式不熟悉的话最好先到 这里 了解一下。 Cassandra 在配置文件里默认设定了几个目录: data_file_directories: /var/lib/cassandra/data commitlog_directory: /var/lib/cassandra/commitlog saved_caches_directory: /var/lib/cassandra/saved_caches data_file_directories 可以一次同时设置几个不同目录,cassandra 会自动同步所有目录。另外在日志配置文件 log4j-server.properties 也有一个默认设定日志文件的目录: log4j.appender.R.File=/var/log/cassandra/system.log 一般情况下采用默认的配置即可,除非你有特殊的数据储存要求,所以现在有两种方案:一是按照默认配置创建相关的目录,二是修改配置文件采用自己指定的目录。 下面为了简...

日志工具 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 又会根据绑定器把日志交给具体的...

如何在应用程序里使用 Hadoop HDFS ——分布式计算Hadoop配置及实践(二)

上一篇 讲到 Hadoop 的配置,我们在搭建分布式计算系统的同时也已经搭建好分布式储存系统了。下面简述如何在应用程序(可以是 Console Application,也可以是 Web Application)调用 Hadoop HDFS。 我们除了可以使用 Hadoop 命令行 管理里面的文件和目录之外,也可以通过 Hadoop API 管理。 1、先创建一个Java Application (Console) 程序,然后引用 hadoop-core-0.20.2.jar ,因为这个包同时引用非常多其他包,所以最好使用 Maven 引用这个包。 2、在项目根目录创建 core-site.xml : <?xml version="1.0"?> <configuration> <property>   <name>fs.default.name</name>   <value>hdfs://192.168.0.10:9000</value> </property> </configuration> 程序会自动寻找 CLASS_PATH 里面的 core-site.xml 文件,假如缺少这个文件的话,程序会使用本地文件系统。 3、创建 Helloworld.java: import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class HelloWorld { public static void main(String[] args) { try { HelloWorld helloWorld = new He...