x86上的那些UNIX——BSD篇+主流桌面

jackyjkchen 2012-07-11 01:04:17
http://topic.csdn.net/u/20120621/03/6a19d53c-5fb7-44f7-a257-22ffea0fc3ab.html
http://topic.csdn.net/u/20120625/23/30a95467-6a5a-4ed4-a237-bb728d4ac3ad.html

这两篇“古老编程环境展”很明显第二弹的受众就不如第一弹多了,可能全是黑框框吧

我想把古老编程环境系列完成,这是unix篇,其实从linux开始,该系列就有些变味了,变成了操作系统的介绍,本unix篇将分FreeBSD、Solaris、SCO等几个部分,unix的发行版不是很多,有些像AIX、HP-UX、IRIX等根本不能用在x86上,所有做个全面的介绍是有可能的。有些老的unix确实难装,而且vmware作为虚拟化软件,对老系统兼容性不如bochs、dosbox等模拟器,说不定有些版本在vmware上根本就是无解的,既然标题不强调old-os了,那些太古旧也就算了。因篇幅较长,按BSD、Solaris、SCO等分开,先发BSD篇。

虽然是unix,但是基本全是桌面图,免得像上一篇LFS那样千篇一律(编译Xorg、Qt、kde、gnome、libreoffice之类的你知道多恐怖么……)。

1.BSD篇
本篇以FreeBSD为主线,穿插其它的BSD。从法律意义上讲,BSD不能称为unix,因为不是The Open Group成员,也没有获得任何unix认证,不能在公开场合自称unix。

没耐心的请略过下一段,直接到有图的部分

首先我们必须明白关于FreeBSD的一些概念。
1.FreeBSD的开发代号比较迷惑人,release代表正式发行相当于Debian Stable,"stable"代表较稳定的测试分支相当于Debian Testing,Current是不稳定测试分支相当于Debian Sid,所以一些小白可能会误将Stable当做正式版本。

2.狭义的Linux只是一个操作系统内核,而狭义的FreeBSD是一个基本操作系统,包含了基本系统工具和编译器,如ls、cat、sed、tar等在linux中由其他软件包提供的工具,在FreeBSD中是基本系统的一部分

3.作为广义上发行版套件概念的FreeBSD和linux发行版是类似的,都是完整的操作系统套件。但是和其它的定期发行的linux发行版(如Debian/RHEL)不同,FreeBSD社区(或者说核心社区)真正维护的其实只有前面所说的基本系统——内核、系统工具、编译器,这些东西是能够真正体现freebsd质量和稳定性的,其他的软件包(ports、package)属于二等公民,从安装位置(/usr/local)就可以看出来。而大多数linux定期发行版,整套发行版都是受管理的,发行版生命周期内所有软件版本不变,只有bugfix。由上述事实可以知道,你用RHEL、Debian,发行方对你使用的所有软件仓库内的软件负责。而FreeBSD则只对基本系统负责,对ports负一半责——release版的ports保证编译的成功和一定的安全性、稳定性,但如果你更新了ports树,并升级了软件包,是有可能出问题的。因此,若想保持FreeBSD在生产环境的稳定,除了使用release之外,其升级原则是只给基本系统打补丁,不要随便升级ports软件(但你可以在保持ports树为当前release版本的状态下用ports安装软件,只要你不更新ports树且不随意改补丁和编译选项,品质和release版二进制包是没有区别的),所以,所谓的鼓励你用ports、鼓励你升级ports的做法,其实更多是站在开发者和学习者角度考虑的,如果你是生产环境,就尽量不要去升级ports。关于package和ports的不可靠,Openbsd的faq是明确说明了的,几大BSD的开发模式基本类似,而FreeBSD不知是有意还是无意的回避了这一点(至少我没找到FreeBSD文档中有明确的说法),这可能与OpenBSD更注重安全的严谨作风有关——OpenBSD事先告诉你哪里可能会出问题让你别去尝试,而FreeBSD则希望你多试验并反馈问题。

4.BSD和GPL不是技术路线之争,而是意识形态的根本对立,相当的有火药味。因此,在BSD社区你别抱怨基本系统里的gcc为什么还是4.2,4.3以后gcc是GPLv3,和BSD协议从根本上就对立了,这其实就是FreeBSD忙于搞clang的原因,你不换clang,那就永远gcc 4.2吧,更高版本的gcc是不可能进入基本系统的,只能在ports里做二等公民;相对的,你也别在Linux社区抱怨用不上zfs文件系统了,zfs虽然不是BSD,但他用的sun公司的CDDL协议,与BSD兼容,与GPL不兼容,因此永远不可能出现在linux内核中,作为fuse又基本丧失了意义。Stallman在BSD社区绝对是个令人厌恶的存在,GPLv3其实也得罪了linux社区,许多人其实都视FSF为一个极端宗教组织……linux内核到现在也不愿意换GPLv3,除了技术上的原因外(内核规模太大,全面检查代码工作量太大),更重要的原因在于如果用了GPLv3,那现在所有的闭源驱动程序都成了非法的了,大量的开源代码恐怕也得从内核中剔除(维护这些代码的公司或组织或个人,可能不原意接受GPLv3,那怎么办,删呗,就像FreeBSD删除AT&T代码那样,删到最后连系统都起不来了,重新发明轮子吧,内核一夜变回20年前!)。


综上所述,因此FreeBSD生产系统的维护要比企业级linux困难一些,不仅概念晦涩,而且升级系统务必相当谨慎。你可以把FreeBSD的版本号x.y看做和Windows NT的版本号类似,Windows NT的小版本号之间往往会有明显区别,如2000(NT 5.0)和XP(NT 5.1),Vista(NT 6.0)和7(NT 6.1),FreeBSD也是,而且还会伴随着package和ports的大幅度更新。整个系统的组织结构也更类似于Windows——基本系统+第三方软件。因此,在你没有深刻的理解FreeBSD之前,照套linux的话,你很难把FreeBSD用稳定。


FreeBSD十数年来安装程序都没有什么变化,到9.0这一代却完全不同了,安装的时候不再是传统的sysinstall。我这个人有bugfix癖,对于x.0这种软件都没有好感。我这一版安装的是PC-BSD 9.0,和FreeBSD 9.0是二进制兼容的,但对桌面做了优化。安装过程中我就感到了PC-BSD发行版的不成熟,中文化支持有限,中文安装界面还有空白字符,桌面性能也很一般,甚至不如自己用FreeBSD 8.3+kde配的桌面(所谓的优化恐怕也就是自带闭源驱动、提供了PBI包管理系统和默认安装桌面了)。

KDE-4.7.3,PC-BSD的声显网全部自动弄好,桌面自动装好,对于FreeBSD初学者,减少了配置,但对于有一定操作经验的人来说,并没有太大吸引力,它的定位应该就是初学者




其实,如果你想在桌面上用BSD的话,我推荐Debian kfreebsd squeeze,用的FreeBSD 8.1内核。Debian严格来说不是一种linux,而是一个unix like操作系统计划的统称,除了linux/freebsd内核外,还有hurd/opensolaris内核,目前只有linux和freebsd相对成熟。
Debian kfreebsd利用glibc隔离了freebsd内核,加上debian本身的apt软件包管理系统,用起来和一般的Debian/Ubuntu差别都不大,不过要注意,FreeBSD内核可以明显感到在桌面响应等方面不如linux,Debian kFreeBSD装不上vmware-tools,虚拟机上更加剧了这一点,而且freebsd内核硬件兼容相对差些,比已经很挑机器的linux更挑机器。
总之,PC-BSD和Debian kfreebsd这两个FreeBSD桌面给人的感觉都是比较慢,尤其明显的就是FreeBSD的内核I/O是会阻塞用户交互的,具体体现就是狂读硬盘的时候键盘鼠标会卡,而linux/Windows上都不会卡(除非用了某些输入法,因为有些输入法磁盘I/O量很大,如ibus、搜狗)。另外可能是ufs文件系统的问题,FreeBSD处理大量小文件的性能似乎很差,比如说在解压ports包的时候,50M左右的tgz/tbz包能解压10多分钟,对于旧版本更慢(应该是ufs2和ufs的差别),而硬盘灯却是常亮的,磁盘占用率是满的,I/O速率却只有几K到几百K。在Linux上的体验要好得多,Linux kernel也是和ports包类似的大小,如果也这么慢,我做LFS的时候早疯了。

xfce-4.6,和Debian Stable的linux版一样,熟悉的星星主题,apt包管理,自动配好的bash-completion,绝对是Debian啊,但是看uname -a的结果。可能应为Debian的软件仓库庞大(比FreeBSD的ports内的软件数量多得多),有些软件并没有完美移植到freebsd下,所以/proc/version虚拟了一个linux的版本号




Debian kfreebsd证明了FreeBSD也可以很易用,但FreeBSD的桌面效果不好(别总将Mac OS X和FreeBSD扯一块,他们的差别已经非常大了,我还说Windows NT也继承了部分BSD代码呢),下面就是传统的FreeBSD了。十几年来,FreeBSD不开桌面的话(桌面的进化是比较明显的),安装程序上、系统配置上基本看不出是哪代,这也是FreeBSD的卖点——不改用户界面,用户使用新版本不需要学习什么新东西。

FreeBSD 8.3
FreeBSD内核是为服务器优化的,且不说前面所说的I/O会影响交互式应用的问题了,连VESA这种老掉牙的基本视频驱动默认都是不编译的,而且FreeBSD的amd64版本直到RELENG_8才支持VESA(i386版本早得多,在RELENG_4),相应的linux的amd64在2.4.20+就有VESA支持。因为我在FreeBSD下X用的很少,基本都在控制台,所以8.3的内核是重新构建的以支持VESA,在控制台下能开出高分辨率。kde/gnome/xfce/lxde四大桌面都配好了,字体都是文泉驿微米黑,计算机上中文衬线字体比较好看的操作系统只有Windows,他那个宋体是下了真功夫的,其他系统老老实实上黑体,衬线字体都有种
“破碎”的感觉。Vmware tools对FreeBSD 7、8支持都不好,认不出Xorg,不过还好,这两版xorg在无配置情况下都能良好运行,不过如果想要更好的用户体验,配置是必须的,FreeBSD的ports/packages自带vmware的视频和鼠标驱动,装上之后把xorg.conf的鼠标驱动改成vmmouse支持自动客户/宿主切换,视频驱动改成vmware支持更平滑的图形界面,总之需要改好几处,网上的说法也不全对,改不好的话经常出现鼠标卡死的情况。总而言之,花了功夫后效果好于PC-BSD。

kde-4.7.4,stable能升到4.8.4,区别不太大,4.7.4的kde能在虚拟机的烂显卡上开xfce那样的二维透明特效,因为开了宽屏,所以截一半



gnome-2.32.1,FreeBSD似乎不准备上gnome3,基本是默认主题,FreeBSD不像Debian、Ubuntu那样提供了许多额外主题,和kde、xfce一比,开不动compiz的gnome倒成了最逊的



xfce-4.8.3,我最喜欢的unix like桌面,简约而不简单,也能在vmware上开透明



lxde-0.5.5,在xfce逐渐走向重量级的情况下,lxde接过了轻量级桌面的棒



FreeBSD 7.4
amd64的freebsd 7.4不支持VESA了,控制台老老实实640x480吧。7.x和8.x都可以用freebsd-update升级基本系统,比从源码构建快多了。FreeBSD的控制台终端默认不分delete和backscpace……而且我把LFS那边配好的inputrc直接过来竟然没用,看来语法还不完全一样,ee、vim和X终端都没问题,也不是shell的问题,我实在受不了简陋的cshell,装好FreeBSD的以后第一件事就是换bash,虽然bash是packages/ports,没有作为基本系统的cshell稳定,但cshell太影响操作效率了,即便cshell配置到极限,应该也不如bash+bash-completion好用吧,zshell据说最强,但我没试过,其开发也不如bash活跃,优势应该是越来越小。这里不得不吐槽一下某些软件,不管你的出身多么高贵,来源于大型机也好,使用某硬件终端机也好,来自学术机构也好,你当年开发时用的那种键盘布局和机器特性早已被扔进垃圾堆了,你现在最主要的用户是pc……vi你笑什么,你也一样,默认配置下想删除一个字符都得按esc退回命令模式用x,否则你就体验一下delete键越删字越多的思想感情吧……不过vim已经改善很多了,没那么反人类了。用linux的童鞋可能有疑问,在linux下vi和vim不是一个软件么?那是因为vim这个软件包本身提供了一个vi的符号链接,而在freebsd中,vi是基本系统的组件,vim是ports/packages。

kde-4.5.5,开不了任何特效,但是kde4到了4.5已经比较稳定了,以前用过debian stable的4.3.4都不是很稳定,跟别说其他发行版了


同样gnome-2.32,不贴

xfce-4.6.4,这不是我刻意配的,xfce-4.6本来默认就是这种仿win的主题,Debian Stable上的也是(参见之前的debian kfreebsd)



FreeBSD 6.4
smp支持不是FreeBSD的强项(至少在7之前)。6.4的smp还算靠谱,毕竟默认是打开的,以freebsd的作风,不靠谱的功能绝对不敢默认打开。从6.x以下,就不是官方支持的old-release了,freebsd-update要么不能用,要么只能升级一部分。6.4我是用cvsup升级源码(那个慢啊……而且绝不单是网络的原因,CVS的问题,老掉牙的东西),然后整体重新构建的基本系统(为了升级到最终的p11版本)。freebsd对基本系统的构建支持很好,非常简单,但是千万别去看网上菜鸟写的小报文章,无论是在哪个领域,网上的小报技术文90%都是错的,一定要看官方文档,FreeBSD的中文官方文档,是所有unix like系统中最好的之一(因为gentoo也很好,所以加了之一)。

kde-3.5.10,末代kde3,也算是一代经典,kde4刚出来时极度不稳定,不知道少人怀念他,这是最后能开宽屏的X Window,后面都是1024x768


gnome-2.22,无甚特色,不贴


xfce-4.4.2,vmware中在gnome/kde都开不了特效的情况下,xfce反而是最华丽的,请注意透明特效,三大桌面中他最早支持vmware上的特效





FreeBSD 5.5
5.5默认是关闭smp的,因为不靠谱……windows、linux、freebsd的smp完善基本都是在2000-2005年这段时间,这和硬件的发展有关——这段时期intel和amd相继推出多核处理器,smp开始向普通pc用户普及。不过windows起步最早,NT设计之初(80年代末)就支持smp,90年代中期的NT3.51/NT4就有一定实用性了;linux的进度也一直比FreeBSD快,从2.0(90年代中期)开始支持,虽然全局内核锁直到2.6末期才完全消除,但在FreeBSD 3、4、5、6这段时间,linux的smp支持明显强于FreeBSD。cvsup更新源码树,改内核配置,再重新构建基本系统,支持了smp,带来的后果就是单进程的速度下降,如果用8个核,则整体性能下降非常厉害,而且系统稳定性糟糕,时常死机,4个以下核还凑合。对于这些早期的没有文泉驿ttf字体的版本,先用楷体凑合吧,也比开源的宋体好看,我个人很反感从windows中偷字体这种方式,也不喜欢不同版本软件包互用。5.5之下如果要装vmware tools,建议装vmware workstation 5.5.9这个老版本的tools,从linux版安装包里解出来freebsd.iso,即可安装。

kde-3.5.1和3.5.10无甚区别,不贴

不得不提一下freebsd基本系统维护了一个无模式的简单编辑器ee,不像vi那样的反人类,初接触unix的童鞋恐怕会很喜欢,我其实接触freebsd比linux要早,在linux下苦苦寻找类似产品,找到个nano,不过习惯vim之后,ee/nano也用的少了


相对于kde的变化,gnome真有些千篇一律了


xfce-4.2.3已经差不多成型了,现在的xfce除了应用更丰富、有透明特效等外,大体框架就是这样,浏览器是firefox 1.5,不过时才有鬼,不过貌似Mozilla滥用了这句话(除了firefox,其他浏览器都说过时……),导致2007年左右firefox扩张地盘最猛的那几年招来了许多骂名




FreeBSD 4.11
从4代开始就没有amd64架构了。4.x以下的FreeBSD,smp支持很差。4.11的smp如果只开2个内核勉强还能用,但带来的副作用已经很明显——光驱挂载超时……莫名其妙的错误,仍然用smp内核,但把虚拟机CPU核数改成1就没事……SMP情况下启动的时候偶尔也会出现检测光驱那一步一直超时的情况,建议如果用SMP,请默认不连接光驱。

kde-3.3.2,这是最后有比较好的中文支持的FreeBSD了,后面就是英文了,要赞一下KDE,中文支持很早就非常完整


人们抨击gnome 2一直没创新,此话不假,看这个gnome与gnome 2.32是不是大差不差,gnome 1是蒙昧时代,2有了重大进步,赶上了kde(red hat居功至伟),但此后发展一直不快


xfce-3.8.18.3才是真正的“轻量级”,xfce4已经显得太“完整”了

...全文
3090 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
辰岡墨竹 2012-08-23
  • 打赏
  • 举报
回复
以前也尝试过FreeBSD,但是ports的安装方式实在不习惯。我是喜欢安装的DVD就带不少软件,可以直接装避免下载的,而以源代码安装为主的ports更是不太喜欢。还是觉得预编译包在发布时经过的测试更多,更可靠一些。总觉得ports上的东西就像nightly版似的。
反正现在BSD类系统,除了MacOS X外,基本没有多少生产力。虽然以前FreeBSD曾经作为最稳定和最高效的Web Server被很多大公司用,不过FreeBSD不够开放的委员会方式还是让其更新速度太慢,已经落后了很多了。
虽然我也用了Linux差不多十年了,可是我还是更喜欢OS X。尤其是Fedora、GNOME现在这么衰落,唉。原来的那个电脑能完美用黑苹果的,基本上就不怎么进别的系统了,那个时候是Leopard,启动只要15秒,而且各种用的软件也够,反正我不怎么玩游戏。
不过现在这个本子还是主要用Fedora和LinuxMint,因为驱动不全。Linux就是开发太散漫没有计划了,很多软件质量不太够格(生产力环境),交互性易用性不行。在这个电脑上摆弄集显+独显花了好长时间,Bumblebee装了好几次才弄好,然后Cinnamon又花了不少时间。而另外一个Radeon独显的电脑,干脆每次开机都手动vgaswitchroo关掉独显。
Qyee16 2012-08-22
  • 打赏
  • 举报
回复
lz很闲,很有魄力。。。。。。
mobz 2012-08-22
  • 打赏
  • 举报
回复
楼主对操作系统研究很深啊。果断学习了。
morris88 2012-07-26
  • 打赏
  • 举报
回复
ioaq 2012-07-19
  • 打赏
  • 举报
回复
这个是不是收费的啊
jackyjkchen 2012-07-15
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xunxun1982 的回复:]

我再来看看
[/Quote]

明天Solaris+SCO应该就可以了,跨CPU的我不想折腾了(用qemu),应该是末篇了。
jackyjkchen 2012-07-15
  • 打赏
  • 举报
回复
jackyjkchen 2012-07-15
  • 打赏
  • 举报
回复
实验
jackyjkchen 2012-07-12
  • 打赏
  • 举报
回复
今天晚上搞了一晚openbsd,虽然也是current、stable、release,但是意义上做了调整,stable是真正的stable,openbsd的release是绝对不变的,stable其实就相当于freebsd的patchlevel
jackyjkchen 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
不过我对BSD中使用的Clang的链接器是啥感到些疑问

不论ld还是gold不都是GPL的吗,那他使用的哪个?

LLVM自身的链接器还不成熟啊

还有调试器用的啥来……
[/Quote]

binutils新版本好像也GPLv3了,FreeBSD虽然不爽GPLv2,但勉强还能接受,GPLv3根本就是极端宗教的产物,BSD不爽、linux不爽、NVIDIA等封闭硬件厂商更不爽

FreeBSD换clang也不是没有可行性,clang只编译基本系统,连接器如果暂时搞不出自己的,就用GPLv2的老版本先凑合

对于ports,指望clang通吃绝对不可能,不过ports是二等公民,可以允许GPLv3的存在,现在的ports里不就有gcc 4.6、4.7么,所以编译ports恐怕得先弄个gcc
pathuang68 2012-07-11
  • 打赏
  • 举报
回复
建议Jacky写一本书,书名替你想好了:《操作系统发展简史》,应该很不错的。
xunxun 2012-07-11
  • 打赏
  • 举报
回复
不过我对BSD中使用的Clang的链接器是啥感到些疑问

不论ld还是gold不都是GPL的吗,那他使用的哪个?

LLVM自身的链接器还不成熟啊

还有调试器用的啥来……
xunxun 2012-07-11
  • 打赏
  • 举报
回复
GCC较新版本在BSD中确实默认没有,不过可以自行构建来着

Clang目前的性能还是比不上GCC,唯一两个优势大概是编译速度和模块化
jackyjkchen 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
为什么hurd/opensolaris放在一起说呢?
[/Quote]
linux/freebsd是成熟可用的

hurd/opensolaris内核的Debian目前基本不可用,只是以这个想法分了个类
xunxun 2012-07-11
  • 打赏
  • 举报
回复
为什么hurd/opensolaris放在一起说呢?
xunxun 2012-07-11
  • 打赏
  • 举报
回复
先占个位子,回来再看
jackyjkchen 2012-07-11
  • 打赏
  • 举报
回复
了解FreeBSD后更坚定了我的观点,那就是操作系统稳定与否90%在于使用者。

Windows的生态环境极度开放和混乱,能做到现在的稳定性真的很了不起了,看看linux下那一坨一坨的教你“编译安装”的菜鸟技术文,linux普及后稳定性只会比windows更差
W170532934 2012-07-11
  • 打赏
  • 举报
回复
又见大牛了。
jackyjkchen 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
建议Jacky写一本书,书名替你想好了:《操作系统发展简史》,应该很不错的。
[/Quote]

等毕业后吧,说不准,现在没那个想法
  • 打赏
  • 举报
回复
加载更多回复(4)

2,161

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 UNIX文化
社区管理员
  • UNIX文化社区
  • 文天大人
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧