我最早接触Linux是2006年,那时还是高中。当时我对Windows下的破解技术很感兴趣,那个时候看雪论坛很火,里边有很多破解教程,我就经常下载到电子词典里看。其中有一本书破解方面的书第一部分讲的是在Linux下破解,比如将scanf的缓冲区溢出漏洞,漏洞利用程序是用Perl写的(而Windows下破解基本都用GUI的工具,比如Ollydbg,我电子词典只能看文本文件,没有截图看起来很费事),后边还有很多ShellCode相关内容。我就去查了下Linux相关内容,虽然不是很感兴趣,但也感觉比较新鲜。

后来,我们教室安装了投影用的电脑,因为我对电脑比较熟悉,钥匙在我这。于是我经常没事就折腾,突然就想起了之前听说的Linux。第一次安装使用的发行版是很多人没听说过的ThizLinux,至于为什么是ThizLinux,原因很简单。当时我去电脑店问有没有Linux光盘,老板找了4张光盘出来,其中3张是Ret Hat的3张,另1张是ThizLinux。我一想反正就是装来玩的,1张比3张便宜,就它了吧(没从网上下载镜像的原因是当时u盘还没有流行,而且价钱很贵,我高三时买了个2G的u盘花了将近200块,而当时我只有一个128M的mp3可以用来存文件)。因为当时没有自己的电脑,但我们教室用了投影的电脑,我去网吧下了一个免安装版(因为电脑有还原卡,每次都安装很麻烦,如果安装后需要重启更没法用)的VMWare,装上了这个ThizLinux。

但教室的电脑毕竟不方便,尤其是不能上网,简单体验一下各个预装软件也就作罢。印象比较深的是桌面环境是KDE(当时没有概念,后来回想的),鼠标点开软件后软件的图标在鼠标旁边一跳一跳的,里边有个叫Kate的文本编辑器可以选择很多编程语言高亮方案,其他的基本都记不得了。后来我也尝试安装了Ubuntu 7.10,好像是在网吧电脑的虚拟机,细节基本完全忘记了。直到高中毕业我有了自己的笔记本,买回来几天就装上了Ubuntu 8.04(预装的Windows XP还保留),自然那时是08年,Ubuntu已经比较火了,同时比较有名的桌面发行版就是Fedora。家里也没有网,所有十分不方便,我曾经去网吧把源里的deb包下到u盘里回来安装,但经常因为少下了依赖而安装不上,后来索性不折腾了。

悲剧的是大一不让带电脑,我上学期就没有带。但悲剧地发现有同学带来电脑也没人管……那时我们专业有一个免费机房,但上不了网,我们周末经常去那玩(还有个收费机房,应该是一块钱一小时,比较大,印象最深的就是病毒猖狂,基本随便找个机器插上u盘,都无一幸免)。系统是Windows 2000的,我就想着弄个虚拟机装Linux。但试了几个都用不了,费了不少事找到了一个支持Windows 2000的Virtual PC。

当时的记录,下同
20081109
找到了
终于找到W2K下能用的V PC了,我都快放弃了.更让我激动的是找到一带gnu编译程序包的LINUX LIVE CD ISO,这样工具就全了,也不用再忍受计算中心病毒之苦了.

有次我下了个Puppy Linux,然后用虚拟机体验了下,感觉这个发行版好小,里边工具却很多,挨个点开玩了玩。有次在大街上还看到有人卖Open Solaris的光盘,果断买了一张,结果发现真的可以启动起来,界面和Linux相差不大。

20081107
光盘引导
学校那计算中心,我啥也不说了.今天却发现一个好办法,用光盘引导.虽然是solaris的,和linux的看上去差不多.

当时我还是对Windows更了解的,无论是使用上还是编程方面。但当时我作了一个决定,把平台全部切换的Linux,原因大概有这样几个吧:机房里的Windows系统病毒太猖狂,用起来非常难受;教材里C语言还使用VC 6.0开发编译,用起来不方便;机房里电脑里的软件都是盗版的,对盗版软件很反感等等。当时写了这样一篇文章(现在看来有点想笑):

20081228
不得不考虑

也许对于一般用户,用什么系统和软件并不十分重要,然而对于另一些人,则至关重要,因为这与发展方向密切相关.
想着最近发生的事,太多的要考虑,以至于我不知道从何谈起.

还是熟悉的XP,不同的感觉,八年的驰骋,让许多人为之震撼,然而它又能撑多久?
技术的落后无法挽救,越来越大的阻力终会让现在只靠惯性运动的它.VISTA无法接任,唯有不远将来的WIN7.也许会吧,但真的很乐观吗?我们到时候还会很自然地说“走,上网下个深度的WIN7”吗?即使可以,我们还会这么舒服吗.雨林木风宣布止步了,其他的还会远吗?
更重要的是,学WIN底层和平台编程也许会很糟糕,会有变化吧.能不能用起呢?......
种种原因,我作以下决定:
将开发平台全部转至linux,放弃开发和学习基于WIN API的软件和技术.放弃对WINDOW下平台相关破解及逆向等技术的学习研究.放弃对其下病毒作技术性研究.放弃深入研究基于COM的脚本技术.拒绝研究.net平台,拒绝研究其内核和驱动.拒绝研究WINCE WM 平台相关技术.
上述决定很痛苦,因为我曾投入相当多精力,而今却要挥手离去.
我决定从寒假回校起以linux作为开发平台和主应用平台,用WIN作辅应用平台,并争取摆脱WIN.不再使用msoffice vc iis ie 等软件.只给WIN分30G以下大小的分区.
以后界面程序以QT库应用为主......

以及这篇:

20090206
盗版的反思

  盗版,忘记了最初接触是什么时候了,印象中有一个小插曲。在看一些台湾教程时,常看作者提到过“D版光盘“,当时不太理解,还以为光盘还分ABCD四等呢,后来才知道其实就是“盗版光盘“。也许是因为今年发生挺多和盗版相关的事(从番茄花园,到XP黑屏,到微软产品降价……)吧,应该人们对这个词已经不陌生了,然而仅是知道这个词是不行的。
  打开你的电脑,或者到网吧、机房或是一些小公司看看,看看什么是盗版吧。拿我几个月前的电脑来说吧(因为那时的比现在的更有特点)。打开电脑,Windows xp系统就启动了,这个系统也有点来头。深度技术Ghost xp6.5,应该是我高三下学期在电脑小店买的,安过多少次我也记不清了,而且每次安后我都要进行一系列麻烦的设置,直到我没有看着不顺眼的地方。里边有我常用的软件(其实有些很少用,但看起来舒服),如Office2003,Foxit Reader,Autocad 2004,Photoshop6.0,VC++6.0,WinRar3.71,3dmax8.0,Mathematica5,VMwareWorkstation6.0,玩转手机,一直感觉挺不错的,虽然我知道这些都是盗版的,而且其价格不菲。我也习惯上网下载软件时找“……破解版”“……特别版”之类的,而且因为有几个喜欢的软件一直找不到破解版的而十分郁闷。我想有许多人都也都是这么想吧,会认为怎么会有人傻到花几千甚至几万去买一个软件回来。但当真冷静想这些时,不由得有些怕了。
  我写过软件,当然知道一个能让crackers为了破解它而不择手段的软件是多么艰辛;我也学过破解软件,当然明白破解一个用商业加密技术保护的软件有多么困难。然而他们都没有错,一个为了谋生,为了计算机相关领域的发展;另一个则更为高尚,他们为了软件的普及,付出那么多却很少在乎个人利益(如果不信去网上找一找相关资料吧),如果没有他们,中国恐怕二十年之后电脑也不会这样普及(虽然硬件越来越便宜,但软件的价格成倍上涨,想想吧)。然而结果呢,我们看上去是占了便宜,而实质上则是主动放弃了一次又一次机会,使国内相关技术水平被落得越来越远。
  前些日子在学校时,我打算下载一个XPsp3系统,但我在gougou翻了几十页也没找到一个能下载的连接,这不禁让我心为之一震,当然我知道如果想下一定可以找到,但我也知道迟早有一天会找不到的。系统这样,软件又有什么区别,到那一天我们怎么办?尤其是一个学软件工程的人,到时候连操作系统都买不起,自己写一个吗,笑话。
  再次打开VC++6.0感觉更加别扭了。如果不是书上用的是它,我无论如何都不会去用,我宁可用EditPlus + gcc,而那个EditPlus也是盗版的,我无语。我不得不承认在Windows下,离开盗版的日子是没法过的。况且连系统都已经是盗版的了,又何必在乎那几个软件呢?
  临回来时,我下了一个Window7测试版和一个Ubunbu衍生版,想试一试哪一个更好用,因为我还没有作好离开Windows的准备,同时也想体验新技术了。但一件事使我放弃了尝试Win7的打算。电脑又感染病毒了,一塌糊涂,手边也没有什么东西,害得我丢了许多东西。我受够Win下的病毒了,仅一个学期我的U盘就被感染不下几十回。我不怕病毒,尤其是那些一看就明白是怎么回事的病毒,我只是不想把时间和精力扔到那没有用的东西上。当然Linux下也会有,但至少我用不着提心掉胆地动不动就怀疑是不是又感染病毒了。
  所以对我来说没有什么其它更好的选择了,我不想再用看着就别扭的Windows了,也不想弄其下独有的技术了,包括我我高中费尽心思学的Win32编程和平台软件破解,还有基于COM对象的脚本,等等。我突然发现离开了Windows,我几乎一无所有。但也许这样会轻松些。
  但种种原因,我还离不开Windows,离不开盗版。mtk手机同步工具肯定是没有Linux版的了,U盘量产工具也一样吧,下学期还学什么3dmax,我都快疯了,放着专业课不学,学这种不可能用到的东西,还有我现在也不知道怎么能让它识别出摄像头,……。
  慢慢的,我发现许多时候不用盗版的东西也能轻松地解决问题,我也习惯了这种方式。感觉一些事情挺好笑的,也挺正常的,分怎么看吧。前几天去书店看一看,还是那些书,盗版软件不可能不流行,或者说如果一个商业软件如果不被破解就永远不会流行起来。突然想来老师的那句话,我发现有人买盗版的OS/2,回去告诉他们,他们兴奋地蹦起来,OS/2终于有盗版的了!前几天我真的有兴看到os/2的界面了,的确,是图形界面的鼻祖。
  不管怎样,感觉中国的软件事业的前景还是很堪忧的。一个几乎完全模仿别人的软件也会成为“国人的骄傲”,获得各种奖项,我无语。开源的东西到国内多半就变成商业的了,我也没什么可说的了。
  如果有一天盗版会从中国消失,我想……,我应该不用想了,至少我在有生之年是看不到了。

直到大一下学期,我终于有了自己的能上网的电脑了。立即将原来的Ubuntu 8.04改成Ubuntu 8.10,但当时用的是一个Ubuntu衍生版,貌似是以C开头的一个名字,镜像2G多,黑色调,源还是Ubuntu的。然后平时就使用Ubuntu,很少用Windows(忘了从什么时候开始把Windows删掉的)。当时的截图很难找到了,找了半天翻出来一个能看清的:
image
这张是当时用Dropbox时写了篇文章( http://osily.lofter.com/post/161c56_3dfe4a )截的,鹦鹉螺文件浏览器。这个绿色的主题我用了一年以上,当时还自己将一些图标换成更好看的,现在看还是有些感情的。

然后想起了输入法。Ubuntu预装的是SCIM,感觉不大好用。当时比较流行的是Fcitx,但感觉那个输入法状态条很丑(细细的,颜色惨白,最左边有一只小企鹅。几年之后这个状态栏变好看了。)有次突然发现一个新的输入法,叫yong(小小输入法)。装上后十分吃惊,又好用又美观,论坛里还有很多漂亮的皮肤。

当时写的文章,开始:

20091019
小小输入法
终于可以换个输入法了,fcitx用了一年多,不是因为它有多好,而是找不到比它更好的了。之前试了三四个输入法,不是太慢太大就是功能不全,有的兼容性还有问题……
昨天又重试了一下小小输入法,感觉有不少长进,终于可以换上了。感觉除了模糊拼音它没有,我再不需要别的功能了,另外平时很少用拼音,有没有也无所谓了。
首先界面上,这是我见得最好的,虽然界面并不能作为选择的第一标准,但常用的输入法,界面自然比其他软件重要的多,在这一点我实在无法忍受fcitx。它可以换皮肤,这在linux下似乎绝无仅有,因为这,我特意自己做了几个皮肤,但遇到点问题直到刚才才基本解决。
在我看来比较好的特点:
码表txt格式,易于修改。
用户词汇和主词库分开,易于备份。(fcitx就是合并的,很麻烦)
可以很容易地外挂词库,而且词库里只写词就可以了,而不用写码。
安装方便,还可以外挂。(当初安fcitx真是费劲,乱码问题都折腾我好久)
界面不错,设置方便。
体积很小,速度也可以。
跨平台。(虽然Windows下我想会用搜狗五笔……)
更新较快。(fcitx几年了也没把全角字符问题解决了,无语……)
论坛比较活跃。
这些对我来说就足够了,没什么太高要求了……
贴几个图:

image
(有点像“绿色软件”,安装后只是把主程序链接到/usr/bin里,一些词库会拷到家目录。)
image
(这个功能可能需要完善一些……)
image
image
image

前两个是自己从搜狗的改的。搜狗的皮肤真不少,如果能写个程序自动转换就好了……
状态条在这个主题下显示不正常,也不习惯用,就让它隐藏了,另外这让做皮肤轻松了许多。

当时写的文章,结束

还写了一个搜狗输入法皮肤转小小输入法皮肤的工具。

当时喜欢逛Ubuntu中文,有个子版块是Arch,开始时没注意,后来有次进去看了下,发现经常有人从Ubuntu转到Archlinux的。当时学校事情也比较少,平时也没事情做,就也尝试下Archlinux,那时是09年。先在Virtualbox安装,比较顺利,当时写的文章(博客周转了好几个地方,居然还能找到):

当时的文章,开始:

20100108
安装archlinux
按这系列文章(dante.im/archlinux-on-virtualbox-note-2-setup)安装,果然十分顺利,虽然中间也遇到一些文章,还是比较方便地解决了。安gnome时下载了300M+的东西,又是在virtualbox里,用了不少时间,又因为中间有一次虚拟机出错,重下了一回,源不好用,中途换源,最后总算看到桌面了:

image
image

尤其是这回分区和网络都没有出任何问题,配置文件也没有太大的改动,总体感觉并不难。总结起来,大致步骤:
1.启动后,以root登陆,运行/arch/setup运行安装程序:

image
2.进入1,选择cd,2可以先不管,3分区格式化,4选择包,5安装包,6设置系统,7安装grub,就完了。但也不像ubuntu那么容易,3就不好弄,可以看下http://antimalicious.blogspot.com/2009/04/archlinux.html
习惯就行了,也不算很难。
再就是7了,现在可以不设置太多,设置点基本信息,再就是设置下源,当然这些也可以在安装后在设置。

image
3.重启后以root登陆,不出意外就可以继续了,如果以lan联网不用设置就能上网,不然就要设置了。然后更新:
pacman –Sy 让pacman将本地的包数据库与远程的仓库进行同步
pacman -Su 是对系统自带的包进行更新。
pacman -S xorg #提示没有这个包,但提示一些,安装就行
pacman -S hal dbus
/etc/rc.d/hal start
startx
这就进入了一个图形环境,非常简陋,有三个xterm,一个时钟如果鼠标键盘能用就没问题了。
pacman -S gdm
pacman -S gnome
然后改/etc/rc.conf
DAEMONS=(syslog-ng network netfs crond hal dbus gdm)
重启后如果正常就进入gdm里,登陆(以非root,之前要创建)就能进入gnome。
再安几个软件试试,有的软件找不到,不知道是包名称错了,还是源没设置明白。但安装的包版本都比较高。
因为没安装额外的包,感觉有点别扭,shell的补全奇差,但估计能设置好。

当时的文章,结束。

但在实体机安装就比较痛苦的,主要是显卡驱动非常麻烦,我的笔记本显卡是ati x2300,费了不少劲才把X启起来并把分辨率弄对,但用起来还是比Ubuntu卡(当时流行跑glxgears,结果一直比之前在Ubuntu的低)。安装折腾了我将近两天,然后发现使用也比Ubuntu麻烦,比如无线网卡驱动和蓝牙驱动折腾了我好几回,显卡驱动性能一直感觉有问题。装的是64位系统,但当时Archlinux是没有multilib的,如果想使用32位软件需要chroot等方法,十分不方便,而有几个软件是没有64位的。其他的小问题就想不起来了。但慢慢也习惯了,主要是感觉系统轻巧了不少。当时用Ubuntu时经常感觉系统预装的东西太多,想删一些,但包太多不知道都是什么功能,删错了就会出各种问题。而Archlinux预装的包很少,就不用考虑这个问题了。

后来就感觉Gnome特别臃肿,而且看起来也没有Ubuntu的好看。有个印象特别深刻的事情是Gnome左上角的菜单上有几个我从来用不到的Avahi相关菜单项,看起来十分烦人,但没有办法单独卸载Avahi相关的东西。于是就慢慢不想用Gnome了。当时逛论坛很多人用轻量级WM,我也尝试了好多,基本能装上的都试过了。试了几个发现openbox不错,配上tint2,很简洁,资源占用也上,于是用来几个月。后来有看到很多人推荐平铺式WM,之前我用不习惯也不想记那么多快捷键,基本上装上看一眼就卸了,这次又重新装上试一试,发现dwm比较合我胃口。主要是体积小,印象深刻,代码一共不到2000行,编译后好像只有17K,内存占用也很少。于是用它取代了openbox和tint2,从此再也没换过,直到后来我不再使用Linux的GUI环境。

期间也听人说Gentoo很好用,我也试了试,在Archlinux上编译,然后直接使用Archlinux自己的内核把Gentoo启动起来。因为当时我已经不需要编译Gnome之类的大家伙了(当时用的openbox),安装十分顺利,也直接切换了过去。

当时写的笔记,开始:

20100304

gentoo安装和使用体验

进行了将近一天的惊心动魄的升级后(很庆幸系统没有挂掉,而且感觉更快了),终于想静下心来把一个星期以来的安装、配置以及升级gentoo大致写出来,一是想纪念一下,另外也许对其他想用gentoo的朋友有一些参考价值。
我使用linux不算很长,大概用了一年半的ubuntu和一年的archlinux。用archlinux时逛论坛经常有人谈及gentoo,好像用gentoo的都是高手。当时感觉可笑,各各发行版区别都那么大吗,之前用ubuntu转到archlinux也就是显卡驱动那碰到点问题,其他都比较顺利,gentoo又能难到哪去呢?另外gentoo安装软件都是要编译的,我的本性能也不好,就想如果以后换了新的再考虑吧,所以中间虽然想了几次,但一定没有尝试。
一个星期前(2010 3月4号),我把mplayer和ffmpeg都手动升级下,发现编译起来有点纠结,mplayer需要ffmpeg的源码,但ffmpeg还要单独编译,后来让mplayer用ffmpeg的so后升级ffmpeg后mplayer居然挂了,重编了几回才弄好。系统里有好几个包都自己编译,主要是想去掉不用的依赖,但手动维护太麻烦了,于是又想到了gentoo。当时已经10点多了,于是想第二天开始着手。
废话完毕。

之前的硬盘分区就这样的:
/dev/sda1 ext4 6g /
/dev/sda2 2g 未使用
/dev/sda3 ntfs 30g
/dev/sda4 jfs 66g /home
其中/dev/sda2是以前的swap,但后来不用休眠功能后感觉swap意思不大,就不用了。其余的三个分区都比较重要,基本动不得,这给怎么装啊。想来想去,先用sda2试试吧,如果装不上就没事了,装上再进一步考虑吧。
于是把sda2格成了reiserfs(某人说这种格式好,但我从来没用过,正好体验一下)。下载 stage3-i686-20110301.tar.bz2 和portage-latest.tar.xz。(前一个文件一周一更新)(我用的32位)
国内的镜像有:
http://mirrors.163.com/gentoo/
http://mirrors.sohu.com/gentoo/
http://mirror.bjtu.edu.cn/gentoo/
http://mirrors.xmu.edu.cn/gentoo/
这两个文件可以在里边找。

把sda2挂在/media/z上,并把文件放进去:
sudo mount /dev/sda2 /media/z
sudo tar xvpf stage3-i686-20110301.tar.bz2 -C /media/z
sudo tar xvpf portage-latest.tar.xz -C /media/z/usr
准备chroot环境:
sudo mount -t proc none /media/z/proc
sudo mount -vt devpts devpts /media/z/dev/pts
sudo chroot /media/z/ /bin/bash
现在就chroot进去了,之后的操作如不特别说时都是在这个环境下进行的。

初始化环境变量:
env-update;source /etc/profile

修改/etc/make.conf,这个非常重要,最好首先改到位,不然之后有你受的(我就是,不得要领,改了多回,改完还要重编译各种东西):
加入源:
GENTOO_MIRRORS="http://mirror.bjtu.edu.cn/gentoo/"
SYNC="rsync://mirror.bjtu.edu.cn/gentoo-portage"
上边那四个网站都有说明如何写这个。
MAKEOPTS="-j3" #-jn,n是内核数加1,多线程编译用的,不设置也行
INPUT_DEVICES="keyboard mouse synaptics" #键盘、鼠标、触摸板
#下面的是很重要的USE,开始时可以只用USE="X gtk",但最开始写好以前就省事了,不然以后会麻烦重重。
USE="-pppd -alsa -fortran sse sse2 ssse3 mmx sdl v4l v4l2 oss oss4 X gtk unicode truetype jpeg png gif cairo zsh-completion fontconfig video opengl"
VIDEO_CARDS="radeon" #这个至关重要,显卡驱动类型,具体请查看官方wiki,我的是ati x2300,只能用这个开源驱动。
#CCEPT_KEYWORDS="~x86" #这个要注意,如果要用最新的软件,可以加上这行,但如果是第一次装,强烈不建议加,不然会提升安装难度
先改这些就差不多了。

改/etc/locale.gen,加(按照自已需要写)
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_CN.GB2312 GB2312
zh_CN.GBK GBK
运行locale-gen

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改/etc/conf.d/clock
CLOCK="local"
TIMEZONE="Asia/Shanghai"

改/etc/resolv.conf,把本机的/etc/resolv.conf内容写出其中,不然上不了网。
改/etc/fstab,这个也可以安装完内核再写,这个应该都会写。

查看网络是否正常(如果电脑联网了,resolv.conf也改了就可以上了),然后同步portage(如果portage-latest.tar.xz是刚下的也可以略过这步,但最好还是运行下吧):
emerge --sync
安装内核源码:
emerge gentoo-sources
下边就开始编译内核了,如果有手动配置内核的经验强烈建议手动配置编译:
cd /usr/src/linux
make menuconfig
make; make modules_install
cp arch/x86/boot/bzImage /boot
,不然最好使用genkernel:
emerge genkernel
cd /usr/src/linux/
genkernel --menuconfig all

关于配置内核请上网自行查询,如果下一种方式实在不会也可以不配置,一般也能启动起来。
编译时间和很多因素有关,几十分钟到几小时不等。

用户相关:(osily是自己要创建的用户名)
passwd
useradd -m -G audio,cdrom,portage,usb,video,wheel,users -s /bin/bash osily
passwd osily

如果fstab之前没改好现在一定要改好,然后改自己系统的/boot/grub/menu.lst。
此处官方wiki写的很清楚,建议查看。

现在可以继续安装其他软件,如xorg-server,但最好还是重启看看能不能进去。
如果不能的话多半是内核(尤其是自己编译的内核)的问题,如果内核没问题,看看/boot/grub/menu.lst是不是有问题,多改几回。
如果可以正常进去的话,可以直接在这继续编译,但最好还是返回原来的系统继续。

可以写个类似这样的脚本:
#!/bin/bash
sudo mount /dev/sda2 /media/z/
sudo mount -t proc none /media/z/proc
sudo mount -vt devpts devpts /media/z/dev/pts
sudo chroot /media/z/ /bin/bash

运行就可以进去chroot环境,如果进去环境变量不正常运行:
env-update;source /etc/profile
然后就是安装需要的东西了,主要看自己了,比如dhcpcd、sudo、vim……,一般的工具直接
emerge xxx就可以了,emerge的具体用法网上查吧。
但如果你想要桌面环境的话,最好按以下的步骤:
安装点基本工具后,直接安装xorg-server,注意前提/etc/make.conf里显卡和输入设备等变量一定是正确的。
这会安装许多东西,基本要用一个小时以上,耐心等待吧。
安装完后:(xorg-x11和驱动相关,请查看官网wiki相关部分,这部好像可以省略,记不清了)
eselect opengl set xorg-x11
如果安装好了,可以先重启试试,进去后,运行startx,这是很刺激的一刻了,如果显示找不到xterm找不到什么的,恭喜你,显卡驱动基本正常了,不然就会有各种稀奇古怪的问题&……&×……&……%×&,那么也恭喜你,在接下来的时间你将对安装显卡驱动、写xorg.conf等有深刻而透彻的了解。
如果是前者,你可以回去继续安装其他东西,如xterm(最好安装完再重启下看看是不是正常,如果不正常,那么你可以回过头处理显卡驱动问题了)、openbox甚至gnome、kde。下文再说。
如果是后者或者刚才的xterm显示分辨率不对、鼠标键盘触摸板不能用,那么你要折腾一会了,虽然之前安装内核没有难到你,这里很可能让足够纠结甚至放弃。

这也是我安装过程中最混乱的地方,已经没法清晰地回忆了,因为这的问题我先后重装了4次,(第一次因为2g空间不够,2、3次都因为X段错误,非常纠结),而且其中改了几回显卡驱动类似,重编译了多回。
如果是X段错误,看出错信息是不是加载某个so出的错,如果是可以先把那个so移到别的地方重试。如果不是段错误,可能是xorg.conf有问题,有的驱动是不需要这个问题的,默认也是没有了,所以如果有先删掉试试,不行的话用
X -configure
生成一个新的再
X -config xorg.conf.new
尝试
如果不行的话,还很有可能是内核没配置的问题,这往往比较麻烦,可以先仔细阅读官网wiki,不行再去linuxsir等论坛去找找或者问问。重编译内核后最好把和X相关的包也重编译下(有许多……)。
再有很可能是你选择的驱动不支持你的显卡,比如老的ati显卡很多都不能用现在的闭源驱动。这样可以试试其他的,改/etc/make.conf,然后必须把相关的包重新编译。
还有其他的可能吧……
如果xterm能进去了,但鼠标键盘等不能用,保证/etc/make.conf正确的话,安装xf86-input-evdev,如果
xf86-input-keyboard xf86-input-mouse xf86-input-synaptics 没有的话说明/etc/make.conf没写对,这时安装上这几个包也未必好用,可能要重新编译更多包。
这个问题应该是比较好解决的。
如果分辩率不正常,首先要确认用的不是xf86-video-vesa的驱动(按我的流程不会安装到这个包),如果是那很可以分辨率就不调不正常了。然后还是显卡驱动安装问题,还有xorg.conf,上网多找找吧。
显卡驱动问题如果一时解决不了的话,可能会拖很长时间,甚至直到放弃,或者你甘愿不用图形界面。

如果以上都正常了,gentoo离你就很近了。
接下来主要部署桌面环境,推荐比较轻量的,(如openbox、fluxbox、fvwm、dwm、awesome等),可以配合面板(tint2、bmpanel、pypanel等),不然要花很长时间编译。
安装完后就按自己的需要进行配置了。

现在还没有涉及的问题主要还有:声卡、网卡、摄像头等设备的驱动,以及触摸板不正常等。

如果触摸板用手指点无反应,但手指移动有反应,试试:
synclient TapButton1=1
如果横向滚动不能用:
synclient HorizEdgeScroll=1
其他问题请查询synclient用法
要把上边的命令放在启动脚本里,如是.xinitrc,确保它能在进入X前被调用。

声卡问题,如果用alsa的话,genkernel默认编译的内核包含了alsa驱动,应该就要以正常使用了,如果没包含就要有点麻烦。
如果内核包含了oss驱动(这是旧版本的),可能也可以正常用,但效果应该不好,能忍就算了吧。
如果都没有的话如果内核启用的声卡支持(menuconfig里有一层的里边是alsa和oss,它的上一层要选上),你可以选择安装alsa或者oss驱动,个人推荐用oss4,它音质比较好,占用资源少(我试和内核的alsa里比mplayer放mp3时cpu占用省了一半)。但安装oss4不是很容易,因为它不在portage里,要用layman,还要能连接国外网。alsa没装过,官网wiki有详细说明。
如果现在就要安装oss4,也好:
emerge layman
layman -a oss-overlay
然后再/etc/make.conf里加一句:
source /var/lib/layman/make.conf
然后
emerge oss或者emerge oss-devel
如果网络没问题的话应该正常安装。
要保证/usr/src/linux指向的是当前用的内核
然后/etc/init.d/oss start,一般要等几分钟因为要编译内核模块,如果成功了基本就可以用了,可以试试osstest,不成功的话问题就麻烦了,很可能你要重新编译内核了,看是不是有什么漏选或多选了。在此处我重编译了一次内核,因为之前把alsa编译进去了。
如果解决不了还是多读官网wiki,不行再逛论坛或者问别人。
但总体声卡驱动安装还是比较容易的。

然后你可能发现无线网卡没驱动起来,运行
ifconfig -a
找不到无线网卡,那么恭喜你又基本又需要重编译内核了。
而且要先确实自己网卡的型号(lspci|grep net),然后去menuconfig选项里找,如果没有的话可能要再安装驱动。我的是Atheros,调整选项重编译内核可以了。不行的话还是看官网wiki,上过说的比较清楚,各论坛也有许多相关的贴子。

摄像头的话看/dev/video0是否存在,如果不存在,那么你应该猜到了,再调整选项重编译一回内核吧。其实应该只重编一回把驱动问题都解决了,不然真是痛苦啊。关于怎么改选项wiki和论坛也有……

如果你还有其他一些东西(如麦克风)无法驱动,解决的办法是类似的。

注意,即使你用的genkernel编译的内核也很可能少各种驱动,所以如果对内核选项不了解的话基本就寸步难行了。但如果感觉某个设备可以先不用的话可以先学习点基础东西再回过来处理。

如果你的各种驱动都正常了,那么基本问题都解决了,剩下的问题一般不会很难如果你不想再折腾了。

你可以安装上所有自己需要的东西,而且安装过程一般不会出什么问题,除了时间比较长。
你可以好好熟悉gentoo的和配置文件和启动流程,按自己的方式修改。
再有就是熟悉emerge和其他相关命令是非常必要的,但这也许比你想象的复杂,开始我想到相关命令和archlinux的一一对应起来,但发现这是不大可能的,二者差别很大,你必须从头认识和了解。

网上有些资料是过时的,你很可能发现上边说的某个文件系统里根本就没有,但到现在应该有足够的能力解决这样的问题了。

如果没有什么其他的需求,就可以正常用了。

如果你想启用~ARCH,那么在升级时还要折腾一番,而且如果准备不充分很可以把辛辛苦苦配好的系统弄得一团糟甚至挂掉。
如果你准备好了要用~ARCH的软件(更新,但出bug的几率更高),在/etc/make.conf(32位的)里加:
ACCEPT_KEYWORDS="~x86"
然后选择合适的时间进行系统升级:
gentoo的升级尤其是大幅度升级不想某些发行版是一条命令的事,要做好充足的准备。
如果你想用新的gcc编译包,可以先升级gcc (注意,编译gcc要1G以上的空间,具体我也不清楚,如果/var/tmp是内存虚拟的一定要看看够不够2G或更多,如果没有还是先用硬盘吧):
emerge -u gcc
但这条命令我没用,当时我感觉安装和升级是一个概念,就直接用了
emerge gcc 我不大清楚结果是不是一样的。
但这并不会直接升级gcc,而不是两个gcc并存,而且默认是之前那个,要手动调整成后一个:
gcc-config -l
gcc-config i686-pc-linux-gnu-4.5.2 #选择后一个版本
然后最要先升级python(我开始没有这么做,出了不少麻烦)
不想有些发行版python2和python3是分两个包,gentoo里这是一个包,现在如果你要把python2.6升级到2.7,直接
emerge -u python,它会安装python2.7但不会马上卸了2.6,此时的操作非常重要:
不要忙着去升级其他包而要先把python的问题解决明白了,不然你可以自己感受下~~
先把python2.7设成默认的python2
eselect python list
eselect python set --python2 num #num是上面输出的行号
python-updater
这将会用不少时间,其中会升级一些包。
如果没有错误,那么可以升级其他包了:
emerge -uDN system
同样要用许多时间,如果中间出错了只是按实质情况解决了。如果有的包提示python语句错误很可能是有的用python2但写的是#!/usr/bin/python,这样的话要先手动按之前的方法把默认python改成python2:
eselect python list
eselect python set num
一般就能解决。

之后可以升级其他包:
emerge -uDN world

这个运行之后还没有完,一定要注意:
清除没有用的包
emerge --depclean
检查依赖
revdep-rebuild
更新配置文件
dispatch-conf

更新配置文件时要注意,不要把自己有用的配置给覆盖了,或者留下了不兼容的旧配置文件,了解清楚再选择。

注意在整个升级前要把USE确定好,不要在升级中改USE,不然要能要重编译许多包。

整个升级要用挺长时间,如果要中断可以用ctrl+c,恢复再用之前的命令,如果要关机就要注意,系统完全可以启动不正常,如分区不能正常挂载、X不能启动、声音不正常等,要有能力处理这些问题,但有些问题是要等升级完才能完全解决的,所以先临时处理下就行。

升级中一些低层的包有较大改动,如openrc,这样配置文件会有不小的改变,要了解清楚再作改动。

如果升级圆满成功,那折腾基本告一段落了,可以去做自己喜欢做的事了。

其中许多细节记不大清了,许多东西也是参考了网上的许多资料。

当时的笔记,结束。

除了安装软件需要编译慢了些,其他的还好,于是决定改用Gentoo。后来也用自己编译的内核替换掉了Archlinux的,甚至为了缩小内核体积,反复修改配置编译,最后缩到大概1M多,没有initrd。

当时的截图:

image

可能看不清,是openbox+tint2,uname -a的结果:

Linux localhost 2.6.36-gentoo-r5 $1 SMP Mon Mar 7 15:09:30 CST 2011 i686 Intel(R) Pentium(R) Dual CPU T2390 @ 1.86GHz GNU/Linux

但用了大概两个月,感觉Gentoo没有人们说的那么好。当时写的东西找不到了,现在回想大概有这样几个问题:

  1. USE的定制不够细。当时在Archlinux,我为了精简软件包的大小,手段是否苛刻,像vim、mplayer、ffmpeg等比较大依赖比较多的包,我全部自己修改PKGBUILD去掉自己不需要的依赖重新编译,基本上缩得不能再小了。而Gentoo的USE虽然能定制,但不能这么细地定制。而且我发现ebuild文件没有PKGBUILD好写,索性也不想改了。
  2. 系统里有很多没有被Portage跟踪的文件,也就是说很多文件是查不到属于哪个包的,这对有洁癖的我是很难接受的,Archlinux绝大多数文件都是属于某个包的,除了少数安装或者运行时产生的配置文件或者pyc之类文件,不仅量很少,也与已有的包相关。
  3. 系统配置没有Archlinux方便。当时Archlinux还是rc.conf一统天下,/etc下的其他配置文件很少需要改,修改配置十分方便。而Gentoo就要改好几个文件,甚至还有/usr下的文件。
  4. Archlinux的netcfg(现在的netctl)是否方便,而Gentoo网络的配置就比较繁琐了,现在我已经想不起来怎么配了。
  5. 安装软件包太慢,我笔记本性能也不是很好,发热严重。像firefox之类大软件源里有bin包,但我用了一阵发现bin包的质量普遍堪忧,比如我遇到过依赖的so文件和系统中的so版本不兼容,也无法使用USE,和自己编译的完全不是一个体验。
  6. 最重要的问题,我没有发现对我来说Gentoo的优势。USE对我的吸引力很少,同一软件的多版本共存也是,因为我从来都是追最新版本。

于是我又换回了Archlinux,还好当时没有删。从此我再没有更换过发行版,最多偶尔用Live CD试用体验一下。

再然后就开始工作了。上学时我几乎不使用虚拟机(当折腾过wine,折腾过好多次,至今还感觉不适不想提起),在学校基本没有什么是Linux搞不定的。当工作后发现一个麻烦的问题,需要使用一个只要Windows版本的聊天软件,虽然也有Web版,但Web版功能过于简略(我开始时还是用Web版的,但比如关了浏览器聊天记录就再也找不回来了,功能上也有严重缺失,最后不用了),只好用Virtualbox装个XP虚拟机(除了那个聊天软件,偶尔也需要用下Word、Excel等。有个插曲是之前用永中Office,但它有个bug,保存出来的文件可以再也打不开了,被坑一次后我再也不敢用了。Openoffice对doc文档的支持很成问题,完全走了样没法用。Wps的Linux版本已经是后来的事情了。)。

然后这个虚拟机对我来说就如鲠在喉,特别不爽。比如占用大量的内存,当时电脑内存是4G的,平时工作都需要开着虚拟机(里边一直运行的聊天软件也不是省油的灯,偶尔需要开MS Office等)、浏览器(Firefox)、邮件客户端(Thunderbird)、终端模拟器(Xterm),有时浏览器页面开多了内存就不足了。界面切换也比较麻烦,当时还是用的dwm,第一个桌面是Xterm和Firefox,第二个桌面是Thundervird,第三个桌面是Virtualbox。Xterm和Firefox是用Ctrl+Tab切换,3个桌面是用Win+数字切换。但进了Virtualbox后,Win键就被XP占用了,得按下右Ctrl才能再用Win+数字切换到其他桌面。虽然习惯了也能用,但还是不爽。我们是有一个笔记本加一台显示器(22寸),开始时我只有显示器,因为同时看显示器和笔记本屏幕(12.5寸)不是很方便,高度也不好调节。后来因为Virtualbox切换麻烦,加上经常没有及时看到聊天软件的消息,把Virtualbox的窗口放到笔记本屏幕上了,这样稍微好了些。

工作后的另一个改变,是很少再折腾桌面Linux了,时间原因还是其次,主要是没兴趣了。所以经典的软件搭配(dwn+Firefox+Zsh+Tmux+Xterm+工作后新加的Thunderbird)一直用到最后我也没再换。但并不是没有问题,前三个还好,Xterm的主要问题是不支持实时调节字体大小,和使用Tmux时rz、sz没法使用。字体大小平时是不需要调节的,但接投影演示时是需要的,只能去改配置文件重启,比较麻烦。更麻烦的是rz、sz,因为我们登陆服务器要经中转机,直接scp文件是不行的,比较方便的办法就是rz、sz(C-Kermit是支持的,直接用ssh不支持),或者走Samba(在Linux用比较麻烦),或者自己在服务器搭Http Server(更麻烦)。所以需要传文件时,需要另开一个不进Tmux的Xterm,有时一着急就容易忘,直接把Tmux的一个Tab卡死,有时那个Tab是很重要的,比如有重要的history,或者中转了好几个机器才进去的,就非常麻烦)。

直到14年,当时我对桌面Linux已经没什么热情了,我才想是不是可以改用Windows。当时只是试一试,但没想到不到两周的时间,我已经完全适应了在Windows下工作,另外装了Cygwin(后来改成Msys2)和Virtualbox中的Archlinux。一般的操作在Cygwin都是可以完成的,用起来和原生Linux相差不多,如果不频繁启动新进程,性能上也没有明显差距。而运行着Archlinux的Virtualbox内存占用通常不到50M(里边看使用了23M左右)。内存问题完全解决,再没出现浏览器开了过多页面内存不足的情况。Xterm改成了Xshell+mintty。连接中转机统一使用Xshell,不得不说Xshell还是很好用的,虽然多数功能我都用不到。而本地的Cygwin和Archlinux都用mintty,我感觉比Xterm好用。

这里提下我为什么坚守Xterm,而不要Urxvt和各种基于vte的终端模拟器。基本上我见过的都尝试过了,Urxvt的问题是字体方面,怎么调整都别扭,不是字体间距有问题,就是有些全角字符显示有问题,而对我来说,相比Xterm几乎没有什么优势,资源占用还更多。而基于vte的终端模拟器有一个共同的问题,就是在里边用Tmux时,下边的色块显示有问题,这个不大好形容,不影响功能,但看起来十分别扭,我多次试图解决都无功而返。而且vte本身的主要问题是能配置的东西太少,没记错的话背景颜色都没法改,比Xterm功能还有少很多。而基于vte的家伙一个比一个臃肿,那些功能都不是我想要的,有因为vte那个共性的问题,我最多尝试来其中某个一两天时间就又放弃了。另外一个值得一提的是mlterm,看起来很漂亮,配置也比较方便。但有一个致命的问题,一时想不起来了,好像是无法快捷地复制,要不就和中文有关,或者有个什么致命的bug,说数次尝试都发现问题犹在而无法使用。最后发现能用的只有Xterm。但Xterm也有几个问题,除了之前说的不能实时更改字体大小,还有配置文件比较麻烦,经常需要上网各种搜,然后改一下重启一下Xterm(有时为了调整字体和字体间距需要改好多次效果才可以接受),不能配置成右键用来粘贴(印象中是这样,可能记错了),复制好像也存在问题(后来好像在配置文件里配的某个快捷键是复制,或者选择直接复制,想不起来了),命令输出内容过多时需要滚动好久等等。而这些问题mintty都没有。

关于和Windows的其他事情需要以后再单独写了。