跳至主要内容

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

评论

此博客中的热门博文

一个人用的 Git

Git 是目前比较时髦的版本控制系统,虽然 linux 内核源码是使用它来管理的,但系统非常小巧而且使用简单,比起 svn (subversion) 系统,git 有一个明显的优势就是在不联网的情况下也可以查阅或者回滚历史版本,有时带着笔记本出外工作这个功能是非常有用的。下面介绍一下用 Git 管理个人电脑上的个人文档文件。(@ivarptr)

这篇文章有几个假设前提:
a、你从事的工作有很多文档需要书写或者整理,而且文档篇幅比较大需要经常修修改改,有时还可能需要回档(即恢复到历史的某个版本)。
b、你的文档具有关联性的,比如一个项目策划书,有多份文本文档、电子表格、图片,希望平时能整体记录一个版本(快照)。
c、你有多台工作用的电脑,为了简单起见,下文假设只有两台电脑。
d、你有一台能够在互联网上访问的服务器,最好是跑 linux 系统而且有 ssh 登录权限。
e、为了简明,省略了安全权限设置和Git最为突出的特性“分支”。

1、几个必须厘清的概念
a、svn只有一个远程仓库集中管理所有的版本,而Git分有“本地仓库”和“远程仓库”之分,在提交你的最新文档过程中,需要两层提交,一次是提交到本地仓库,然后才可以提交到远程仓库。
b、svn的远程仓库保存的总是全局最新的版本,各个支点(小组成员)必须对此仓库负责。而Git则没有集中远程仓库之说,理论上每个人的地位是平等的,同时每个人的本地仓库也可以配置为给他人访问的“远程仓库”。不过对于个人或者一个小团队来说,为了简便起见我们通常会协商好让某个远程服务器上的仓库保持最新并且集中管理,这点跟Svn类似。
c、svn的每次提交会产生一个递增的数字作为版本号码,而git每次提交会产生一个“快照”,快照不是用一个递增的数字作为名称的,而是一个hash值,当然用一个hash值来呼叫某一次提交也太累赘了,所以在实际应用过程中我们往往只用hash指的头4~6位就可以了(类似一个人的昵称)。

2、在服务器上创建 Git 仓库
关于在 linux 系统里如何安装 Git 程序可以参考这篇《在CentOS 5.5里安装Git以及搭建Git服务器最简单教程》,要记住 Git 程序是不区分服务端或客户端的。

首先我们要创建一个Git仓库,使用 ssh 登录到你的服务器,在用户home文件夹里创建一个文件夹,为了容易识别,最好在文件夹名字后面加一…

修改CentOS Linux 的 SSH服务默认设置,提高系统安全性

最近登录一台CentOS Linux(5.5)服务器发现 /var/log/secure 文件出奇巨大,查看其中的记录发现原来不断有人试图穷举服务器的帐号密码,幸好当时 root 密码设置非常复杂,否则可能早就被人攻陷了。(ps:那台服务器平时只做对内的服务,从没在公网上暴露过,看来即使这样的服务器也不能掉以轻心啊)接着使用 netstat -nat 查看网络连接发现扫描器仍在乐此不彼地工作,所以决定还是更改 ssh 服务的默认设置。

步骤如下


1、禁用 root 的 ssh 远程登录
这步我觉得很有必要,因为扫描器一般都是冲着这个帐号过来的。修改 /etc/ssh/sshd_config 文件里的 PermitRootLogin 一行的值为 no 即可。不过要注意在禁用 root 的 ssh 登录之前一定要确定服务器内还有其他帐号可以远程登录,否则你的服务器自己也别想进去了。所以比较妥当的方法是建立一个普通的帐号,并把它加入到 wheel 组,
然后在 /etc/sudoers 里启用 wheel 组的 sudo 功能,再禁用 root 的远程登录。

2、设置登录密码输入的等待时间和最大重试次数
还是修改  /etc/ssh/sshd_config 文件,找到 LoginGraceTime 和 MaxAuthTries 两行,分别设置为 30 和 3,则表示打开ssh连接之后你要在30秒内输入正确的密码否则断开连接,以及密码最多给重试 3 次。

3、重启 sshd 服务,这次 secure log 终于平静下来了

一些对安全有益的心得

1、平时 ssh 登录尽量避免密码输入方式,应该采用验证钥匙方式登录,如果客户端也是 linux 系统,则这步骤很简单,先 ssh-keygen -C 'yang@home' 创建一个验证钥匙,然后使用 ssh-copy-id somebody@host.domain 把钥匙复制到服务器上,这样以后 ssh 登录就再也不用输入密码了。对于客户端是 windows 和 mac os 系统的估计也有相类似的工具,具体的操作不太清楚。

2、审视一下 /etc/passwd 文件,看看有没有平时不会直接登录帐号,比如有时安装某些软件会自动创建一些帐号,对于这类帐号赶快把最后一段 /bin/bash 改为 /sbin/nologin 吧…

如何让100台计算机同时为你计算同一道算术题?——分布式计算Hadoop配置及实践(一)

假如你有一个比较复杂的算术题,用1台普通计算机需要计算3个月才能出结果,有什么办法可以让它能在1天内出结果呢?
比较“廉价”的方式可能是用100台普通计算机搭建一台“超级计算机”,让100台计算机同时计算,那么理论上1天就可以完成。
Apache Hadoop 是一个分布式计算框架,你只需要定义如何将一个计算任务拆分(Map)以及如何将各个分任务的结果合并(Reduce),剩下的事情比如如何协调100台计算机一起工作,如何保证即使某一台计算机中途坏掉了也不会影响整个工作等,都由 Hadoop 帮你代劳。Hadoop 同时也是一个分布式的基础架构,在其基础上有:

HDFS 分布式储存HBase 分布式NoSQL数据库Nutch 分布式全文搜索
等等一大堆重量级产品,这些都是构建一个大型应用所必须的基础设施。@ivarptr

这里我简单介绍基本的 Hadoop 系统的搭建方法,Hadoop 在运行时由5个程序组成:
1个NameNode,用于管理命名空间以及客户端对文件的访问;
1个JobTracker,用于调度工作以及分配任务(Task);
1个SecondaryNameNode,用于辅助NameNode的工作;
1~N个DataNode 用于数据储存;
1~N个TaskTracker 用于执行任务,DataNode 和 TaskTracker 总是在同一台计算机里运行。

前3个程序一般是分别在三台不同的计算机里运行,为了简单起见下面的例子我会在同一台计算机里运行这3个程序,然后再另外找3台计算机运行DataNode(连同TaskTracker),一共需要4台计算机。结构图如下:


下面是详细的搭建过程

1、下载 Apache Hadoop

到这里 http://hadoop.apache.org/ 下载 HDFS,我使用的版本是 0.20.2,下载回来的一个压缩包就已经包含了上面提到的5个程序。

2、配置 Hadoop
虽然在一个典型的 Hadoop 系统里会有 4种不同角色的计算机,不过我们为了简单起见可以先在某一台计算机编辑好配置文件,然后再分发到其他计算机,这样可以避免一台台地配置浪费时间。

a、编辑 conf/hadoop-env.sh,设置正确的 JAVA_HOME 环境变量,比如
export JAVA_HOME=/usr/lib/jvm/java-6-open…