Total Pageviews

Tuesday 17 January 2012

FreeBSD桌面笔记

适用于对FreeBSD有兴趣的新手。看看除了Linux之外,还有别的天空。本教程适用于FreeBSD 8.x版本,7.x版本应该也可以借鉴。



第一部分:背景知识介绍

什么是FreeBSD?

FreeBSD是一种自由类Unix操作系统,是由经过BSD、386BSD和4.4BSD发展而来的类Unix的一个重要分支。FreeBSD拥有超过200名活跃开发者和上千名贡献者。 J

FreeBSD被认为是自由操作系统中的不知名的巨人。它不是Unix,但如Unix一样运行,具有兼容Unix的系统API。作为一个操作系统,FreeBSD被认为相当稳建可靠。

FreeBSD是以一个完善的操作系统的定位来做开发。其内核、驱动程序以及所有的用户层(Userland)应用程序(比方说是Shell)均由同一源 代码版本控制系统保存(目前使用Subversion并与CVS兼容)。相较于另一知名的的操作系统Linux,其内核为一组开发人员设计,而用户应用程 序则交由他人开发(例如GNU计划),最后再由其他团体集成并包装成Linux包。

FreeBSD缺省是无桌面环境的命令行界面,想要使用桌面环境必须自行安装,或是使用PC-BSD之类的桌面发行版。

FreeBSD在BSD许可证下发布,允许任何人在保留版权和许可协议信息的前提下随意使用和发行。BSD许可协议并不限制将FreeBSD的源代码在另一个协议下发行,因此任何团体都可以自由地将FreeBSD代码融入它们的产品之中去。

FreeBSD的优势在哪里?

FreeBSD 有许多非凡的特性。其中一些是:

抢占式多任务与动态优先级调整确保在应用程序和用户之间平滑公正的分享计算机资源,即使工作在最大的负载之下。

多用户设备 使得许多用户能够同时使用同一 FreeBSD 系统做各种事情。 比如,像打印机和磁带驱动器这样的系统外设, 可以完全地在系统或者网络上的所有用户之间共享,可以对用户或者用户组进行个别的资源限制, 以保护临界系统资源不被滥用。

符合业界标准的强大 TCP/IP 网络 支持, 例如 SCTP、 DHCP、 NFS、 NIS、 PPP, SLIP, IPsec 以及 IPv6。 这意味着您的 FreeBSD 主机可以很容易地和其他系统互联, 也可以作为企业的服务器,提供重要的功能, 比如 NFS(远程文件访问)以及 email 服务, 或将您的组织接入 Internet 并提供 WWW,FTP,路由和防火墙(安全)服务。

内存保护确保应用程序(或者用户)不会相互干扰。一个应用程序崩溃不会以任何方式影响其他程序。

FreeBSD 是一个 32 位操作系统 (在 Alpha,Itanium,AMD64,和 UltraSPARC 上是64 位), 并且从开始就是如此设计的。

业界标准的 X Window 系统 (X11R7)为便宜的常见 VGA 显示卡和监视器提供了一个图形化的用户界面(GUI),并且完全开放代码。

和许多 Linux,SCO,SVR4,BSDI 和 NetBSD 程序的二进制代码兼容性 zwU 8iVDe

数以千计的 ready-to-run 应用程序可以从 FreeBSD ports 和 packages 套件中找到。您可以顺利地从这里找到, 何须搜索网络?

可以在 Internet 上找到成千上万其它 easy-to-port 的应用程序。 FreeBSD 和大多数流行的商业 UNIX® 代码级兼容,因此大多数应用程序不需要或者只要很少的改动就可以编译

页式请求虚拟内存和“集成的 VM/buffer 缓存”设计有效地满足了应用程序巨大的内存需求并依然保持其他用户的交互式响应。

SMP 提供对多处理器的支持。

内建了完整的 C、 C++、 Fortran 开发工具。 许多附加的用于高级研究和开发的程序语言,也可以在通过 ports 和 packages 套件获得。

完整的系统源代码意味着您对您环境的最大程度的控制。当您拥有了一个真正的开放系统时, 为什么还要受困于私有的解决方案, 任商业公司摆布呢?

丰富的在线文档。

不仅如此!

FreeBSD 基于加州大学伯克利分校计算机系统研究组 (CSRG) 发布的 4.4BSD-Lite, 继承了 BSD 系统开发的优良传统。 除了 CSRG 优秀的工作之外, FreeBSD 项目花费了非常多的时间来优化调整系统, 使其在真实负载情况下拥有最好的性能和可靠性。在现今, 许多商业巨人正为给 PC 操作系统增加新功能、 提升和改善其可靠性,以便在其上展开激烈竞争的同时, FreeBSD 现在 已经能够提供所有这一切了!

FreeBSD 可以提供的应用事实上仅局限于您的想象力。从软件开发到工厂自动化,从存货控制到遥远的人造卫星天线方位控制, 如果商业的 UNIX 产品可以做到, 那么就非常有可能您也可以用 FreeBSD 来做! FreeBSD 也极大地受益于全世界的研究中心和大学开发的数以千计的高质量的应用程序,这些程序通常只需要很少的花费甚至免费。 可用的商业应用程序, 每天也都在大量地增加。

因为 FreeBSD 自身的源代码是完全公开的,所以对于特定的应用程序或项目,可以对系统进行最大限度的定制。这对于大多数主流的商业生产商的操作系统来说几乎是不可能的。 以下是当前人们应用 FreeBSD 的某些程序的例子:

Internet 服务: FreeBSD 内建的强大的 TCP/IP 网络使它得以成为各种 Internet 服务的理想平台, 比如:

FTP 服务器

World Wide Web 服务器(标准的或者安全的 [SSL])

IPv4 and IPv6 路由

防火墙和 NAT(“IP 伪装”) 网关 ]

电子邮件服务器

USENET 新闻组和电子布告栏系统

还有许多...

使用 FreeBSD, 您可以容易地从便宜的 386 类 PC 起步,并随着您的企业成长,一路升级到带有 RAID 存储的四路 Xeon 服务器。

教育: 您是一名计算机科学或者相关工程领域的学生吗? 学习操作系统,计算机体系结构和网络没有比在 FreeBSD 可提供的体验下动手实践更好的办法了。许多可自由使用的 CAD、数学和图形设计包也使它对于那些主要兴趣是在计算机上完成 其他工作的人非常有帮助。

研究: 有完整的系统源代码,FreeBSD 对于操作系统研究以及其他计算机科学分支都是一个极好的平台。 FreeBSD 可自由获得的本性, 同样可以使处在不同地方的开发团队在开放的论坛上讨论问题、交流想法与合作开发成为可能, 且不必担心特别的版权协定或者限制。

网络:需要一个新的路由器?一台域名服务器 (DNS)? 一个隔离您的内部网络的防火墙? FreeBSD 可以容易的把丢弃在角落不用的 386 或者 486 PC 变成一台完善的带包过滤能力的高级路由器。

X Window 工作站: FreeBSD 是廉价 X 终端的一种绝佳解决方案, 您可以选择使用免费的 X11 服务器。 与 X 终端不同,如果需要的话 FreeBSD 能够在本地直接运行程序, 因而减少了中央服务器的负担。 FreeBSD 甚至能够在 “无盘” 环境下启动, 这使得终端更为便宜和易于管理。

软件开发: 基本的 FreeBSD 系统带有包括著名的 GNU C/C++ 编译器和调试工具在内的一整套开发工具。

FreeBSD 可以通过 CD-ROM、DVD, 以及匿名 FTP 以源代码和二进制方式获得。请查看附录 A 了解获取 FreeBSD 的更多细节。

我从哪里可以获得FreeBSD安装介质?

FreeBSD提供了多种介质,包括CD,DVD,以及用于U盘的img镜像,最新的8.1-RELEASE镜像可以在此下载:ftp://ftp.freebsd.org/pub/FreeBSD/releases/

可以选择对应的架构和版本进行下载。

FreeBSD的分区如何表示?

FreeBSD与其它的UNIX一样,将每个分区和片视为一个特殊设备文件,并依据它的DOS分区号和BSD分区号对其进行命名。

第一IDE接口的主磁盘命名为/dev/ad0,磁盘上的每个片(通常称呼为DOS分区)用字母‘S’加上片号进行命名。例如,第一个片为/dev/ad0s1,第二个片为/dev/ad0s2。

包含FreeBSD类型分区的片则进一步由磁盘标签进行管理。片中的BSD分区则根据它在磁盘标签中分区表项的顺序为其分配字母。例如,如果第二个片为FreeBSD,则其中的第一个BSD分区为/dev/ad0s2a,第二个BSD分区为/dev/ad0s2b。

提示:BSD分区的命名字母有特定的规定,‘a’通常为根分区,存储有引导代码;‘b’通常为交换分区;‘c’通常为整个片;其他的分区由‘d’开始依次分配。

第二部分:开始安装FreeBSD

此部分可以参照http://www.freebsd.org/doc/zh_CN/books/handbook/install.html

在本教程就不再赘述。

第三部分:系统配置

以下内容涉及的命令,如无特殊说明,都需要root身份运行。

关于软件源的配置:

FreeBSD的软件源分为两部分,一部分是pkg_add所用的预编译包软件源,一部分是编译安装所用的ports软件源。

关于预编译包软件源的设置,可用root身份运行以下命令(以FreeBSD China的地址为例):

ee ~/.cshrc

添加

setenv PACKAGESITE ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/i386/packages-8.1-release/Latest/

到配置文件中。

关于ports软件源的设置,可用root身份运行以下命令(以我自己的配置文件为例):

ee /etc/make.conf

然后添加如下字段:



DISABLE_SIZE=yes

MASTER_SITE_OVERRIDE=\

[url=http://ports.hshh.org/${DIST_SUBDIR}/\]http://ports.hshh.org/${DIST_SUBDIR}/\[/url]

ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\



网络设置:

推荐使用系统的sysinstall命令,会出现一个配置界面,里面包含了系统的一些基本设置,根据提示进行设置即可。

更新源代码和ports:

首先需要安装一个包,叫做cvsup:

pkg_add -r cvsup

如果喜欢ports编译方式,可以使用:

portinstall cvsup

或者

cd /usr/ports/net/cvsup && make install clean

安装完成之后

cd /usr/share/examples/cvsup

然后用喜欢的编辑器修改standard-supfile,ports-supfile,doc-supfile和www-supfile,把其中default host后面的网址改为cvsup.freebsd.org,然后运行

cvsup -g -L 2 standard-supfile(其他三个文件也如此),就可以得到最新的ports和源代码树了。

使ports能够多线程下载源代码:

首先要安装wget:

pkg_add -r wget

或者

cd /usr/ports/ftp/wget && make install clean

然后在/etc/make.conf中加入:

FETCH_CMD=/usr/local/bin/wget -c -t 1

这样的话,ports安装时候就能使用wget的多线程下载源代码了。

安装基本的xorg环境:

用root身份运行:

pkg_add -r xorg

然后就会自动联网下载所需要的包,自动解决依赖关系。

如果喜欢ports编译,也可以使用命令

portinstall xorg

或者

cd /usr/ports/x11/xorg && make install clean

为了得到一个可用的配置文件,以root身份运行一下

Xorg -configure

然后

mv /root/xorg.conf.new /etc/X11/xorg.conf

安装桌面环境,以GNOME为例:

pkg_add方式:

pkg_add -r gnome2

ports方式:

portinstall gnome2

或者

cd /usr/ports/x11/gnome2 && make install clean

安装完GNOME以后,为了让开机可以自动运行GDM,把如下配置行加入/etc/rc.conf文件中:

hald_enable="YES"

dbus_enable="YES"

gdm_enable="YES"

另外,还要运行:

echo "/usr/local/bin/gnome-session" > ~/.xinitrc



安装Linux兼容层:

pkg_add -r linux_base-f10

或者

cd /usr/ports/emulators/linux_base-f10 && make install clean

为了让开机加载Linux模块,需要在/boot/loader.conf中加入

linux_load="YES"

同时,在/etc/rc.conf中加入

linux_enable="YES"

安装显卡驱动,需要Linux兼容层,以我的nVidia显卡为例:

nVidia驱动按照自己的显卡型号,选择适应的驱动。驱动在/usr/ports/x11 a

nvidia-driver-173

nvidia-driver-71

nvidia-driver-96

nvidia-driver

我7300 GO所以直接选择了nvidia-driver X

cd/usr/ports/x11/nvidia-driver && makeinstall clean

为了让FreeBSD开机加载nVidia驱动,需要在/boot/loader.conf加入

nvidia_load="YES"

另外,还要编辑/etc/X11/xorg.conf



Driver "nv"

改为

Driver "nvidia"

设置GNOME的中文环境:

由于GNOME默认是英文环境,所以需要在/etc/profile中加入如下内容:

export LANG=zh_CN.UTF-8

export MM_CHARSET=zh_CN.UTF-8

export LANGUAGE=zh_CN.UTF-8

export GDM_LANG=zh_CN.UTF-8 79

export LC_TYPE=zh_CN.UTF-8

export LC_TIME=zh_CN.UTF-8

export LC_LANG=zh_CN.UTF-8

export LC_ALL=zh_CN.UTF-8

重启一下就可以看到中文化的界面了。

另外,由于默认中文字体很难看,可以安装个文泉驿字体:

cd /usr/ports/x11-fonts/wqy && make install clean

安装ibus中文输入法:

pkg_add -r ibus ibus-pinyin

或者

portinstall ibus ibus-pinyin

安装完以后,按提示(cat /usr/ports/textproc/ibus/pkg-message)配置,

另外,在~/.xinit里加

ibus-daemon -x -d -r -v



安装火狐浏览器:

pkg_add -r firefox

或者

cd /usr/ports/www/firefox && make install clean

安装Flash:

cd /usr/ports/www/linux-f10-flashplugin10 && make install clean
mkdir /usr/local/lib/browser_plugins

ln -s /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so /usr/local/lib/browser_plugins

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

nspluginwrapper -v -a -i把以下这行加入 /etc/fstab

linproc /usr/compat/linux/proc linprocfs rw 0 0

cd /usr/local/lib/firefox3/plugins && ln -s /usr/local/lib/browser_plugins/npwrapper.libflashplayer.so npwrapper.libflashplayer.so



声卡驱动安装

首先使用命令加载所有能用声卡驱动

kldload snd_driver

使用命令查看你的声卡型号

cat/dev/sndstat

在出现 kldsnd_*** 字符位置 ***就是你的声卡信息

然后在编辑/boot/loader.conf.加上snd_***_load="YES"

重启,不出现意外的话你就能听到声音了。

如果是集成AC97声卡,试试:

ee /boot/defaults/loader.conf

修改snd_ich_load="NO" #Intel ich 把“NO”改为“YES”。



安装QQ:

由于FreeBSD的QQ是使用的QQ for Linux,所以需要按照前面的步骤安装并且开启Linux兼容层,然后终端输入命令: .

ee/etc/sysctl.conf

然后加入

compat.linux.osrelease=2.6.16

终端输入:

cd /usr/ports/net-im/qq && make install clean

如果QQ不能中文输入,执行:

/compat/linux/usr/bin/localedef-i zh_CN -f UTF-8 zh_CN eVy2



安装NTFS-3G:

cd /usr/ports/sysutils/fusefs-ntfs && make install clean

加入fuse加载:

ee /etc/rc.conf

加入以下这一行:

fusefs_enable="YES"

保存退出。

ee /boot/loader.conf

加入以下这一行:

fuse_load="YES"

保存退出。

注意:这两行一个是fusefs,一个是fuse,千万小心!

挂载ntfs分区:以我的windows分区为例:ntfs-3g /dev/ad0s1 /media/C

至此,一个基本完整的FreeBSD桌面就完成了,本人目前非常喜欢这个系统。

No comments:

Post a Comment