跳至主要内容

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

上一章讲到如何配置 gnome 桌面环境以及 firefox 浏览器,很快你会发现上网时不能播放 flash,这是因为 Adobe Flash 没有提供 FreeBSD 版本,为了运行这类没有开源只有编译好的 Linux 版程序,我们需要安装一个 Linux 二进制兼容包。[注1]

1、安装 Linux 二进制兼容包
为了确保安装顺利,最好把 FreeBSD Ports 更新一下。[注2]
# portsnap fetch

第一次运行这个命令会下载最新的 Ports Collection,大概半小时左右下载完,然后展开安装文件:
# portsnap extract

使用 portsnap update 命令更新已安装的 Ports:
# portsnap update

这样更新就完成了。下面开始安装 Linux 二进制兼容包,[注3]先开启 Linux KLD 模块:
#kldload linux

如果希望 Linux 兼容支持在系统初始化过程中自动启用,则应在 /etc/rc.conf 中增加:
linux_enable="YES"

可以使用 kldstat 命令检查KLD模块是否已经加载成功(以百分号开头的命令表示可以用普通帐号操作,下同):
% kldstat

如果看到 linux.ko 字样则表示加载成功。下面还要安装 Linux 运行时库,

# cd /usr/ports/emulators/linux_base-f10
# make install distclean

这又是一个漫长的等待过程,运行完毕之后还要挂载 Linux 进程文件系统,使用如下命令:
# mount -t linprocfs linproc /usr/compat/linux/proc

如果希望机器启动时自动挂载,需要在文件 /etc/fstab 里面加上这一行
linproc    /usr/compat/linux/proc  linprocfs   rw  0   0

2、安装浏览器 Flash 插件 [注4]
我们开始下载安装 Flash 的 Linux 版插件:
# /usr/ports/www/linux-f10-flashplugin10
# make install clean

安装 wrapper:
# /usr/ports/www/nspluginwrapper
# make install clean

还要创建一个符号链接
# ln -s /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so \
 /usr/local/lib/browser_plugins/

按照 FreeBSD 版本, 在安装了正确的 Flash port 之后, 插件必须由每个用户运行 nspluginwrapper 安装:
% nspluginwrapper -v -a -i

现在重启浏览器并转到有 flash 的网站,终于看到 Flash 了。帖一幅效果图:



3、美化一下桌面
使用过 Ubuntu 的用户会发现 FreeBSD 的 gnome 界面比较简朴,比较明显的是窗口和菜单缺少阴影,解决方法其实很简单,只要在 gnome 里面激活 compositing_manager 就可以了,执行下面的命令:
% gconftool-2 -s --type bool /apps/metacity/general/compositing_manager true

阴影就出来了,如果不用命令的话,打开 gconf-editor 修改 /apps/metacity/general/compositing_manager 一项的值也是可以的。看一幅效果图吧:




资料来源
[1] http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/linuxemu.html
[2] http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/updating-upgrading-portsnap.html
[3] http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/linuxemu-lbc-install.html
[4] http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/desktop-browsers.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...