Post Tagged with: "debian"
在 Debian 上编译 Linux 内核
从前编译Linux内核就是一件麻烦的事情,要搞很多配置参数。而现在虽然仍然配置很多内容,但是已经比以前简化多了。在Debian上还有一个十分方便的工具,叫make-kpkg。
首先是安装编译Linux内核所需要的组件:
sudo apt-get install build-essential kernel-package libncurses5-dev
安装结束以后,自然就是下载Linux的内核源代码。可以去kernel.org下载官方的压缩包,当然也可以去下载Zen这种经过激进改良的版本。下载完成就解压,然后就在终端里进入解压目录。
其次就是配置内核选项。内核选项众多是世人皆知的事实,但是究竟哪些模块是必要的,哪些模块是适合自己机器的,就不是很多清楚了。从2.6.32内核开始,内核的Makefile提供了一个新的选项。
make oldmodconfig
此选项是保证用户设定的内核选项都包含了适用于本机硬件的驱动。然后就提供了一个悠长的问答题让用户选择新版本内核中提供的新模块。这似乎也花上一段不短的时间。喜欢手动的朋友可以坚持用:
make menuconfig
具体应该怎样配置内核,金步国先生的内核配置大作或者后续更新。配置结束后,就可以借助make-kpkg进行编译内核了。如果内核已经编译过一次了,还是先清理一下。
make-kpkg clean
然后就是正式开始编译内核了。
fakeroot make-kpkg –initrd –bzimage –revision 2.6.35.5-1 –append-to-version -custom-amd64 binary
这里解释一下make-kpkg的选项,–initrd表示会在编译内核的同时生成initrd文件,–bzimage表示使用bzip压缩内核(话说现在内核支持用lzma压缩,在menuconfig选了lzma会有啥后果呢?),–revision是子版本号,这个可以随意定制,若不指定系统会默认设为10.00.Custom。–append-to-version是额外增加的软件版本号。
binary是make-kpkg的目标,binary包含两个分目标:binary-arch和binary-indep。前者包含了kernel_image和kernel_headers,后者包含了kernel_source、kernel_manual和kernel_doc。此外还有用于编译额外内核模块的modules和创建内核libc的libc-kheaders.
make-kpkg还有更多参数,包括–cross-compile、–arch、–subarch用于交叉编译。编译出来的内核包会是以下格式的文件名,假设是在amd64架构上编译2.6.35.5内核:
linux-image-2.6.35.5-custom-amd64_2.6.35.5-1_amd64.deb
linux-headers-2.6.35.5-custom-amd64_2.6.35.5-1_amd64.deb
…
最后还是要吐槽一下Debian还要依赖的那个linux-kbuild,详情留意我早前的网志:http://www.liangsuilong.info/?p=670
Debian 7.0 被命名为 Wheezy
早前已经提及过 Debian 6.0 Squeeze 已经开始冻结,进入了漫长的修 Bug 阶段。经过一段时间的冻结以后,现在 Squeeze 进入了深度冻结阶段,只会为严重的 Bug Report 推送更新,而且更新的审核将会更加严格。另外现在还会为翻译和文档在作进一步审核,为最后的发布做足准备。
同时,经过一番遴选,开发者最终选择了 Wheezy 这个名字作为 Debian 7.0 的 Codename。Wheezy 是出现在第二部玩具总动员的一个角色,是一个带着煲呔的玩具企鹅。Wheezy 仅仅出现在《玩具总动员 2》,这也是 Debian 选择的第一个玩具总动员角色是没有出现在该系列的所有电影里面。
至于何时把 testing 分支指向 wheezy,暂时没有进一步消息。估计要等 Debian 6.0 Squeeze 发行以后了。
关于 Wheezy 的角色:http://en.wikipedia.org/wiki/List_of_Toy_Story_characters#Wheezy
Debian 6.0 宣布冻结
翘首以待的 Debian 6.0 Squeeze 已经被宣布特性冻结,这意味着,Debian 6.0 将不会再添加新特性,而现在的目标则是让这些软件尽快稳定,到达发行的标准。
Debian 6.0 Squeeze 使用 Kernel 2.6.32。包括 KDE 4.4.5, Gnome 2.30.0, LXDE 0.5.0, XFCE 4.6.2, X.org 7.5, OpenOffice.org 3.2.1,Apache 2.2.16, PHP 5.3.2,MySQL 5.1.48, PostgreSQL 8.4.4, Samba 3.4,Python 2.6 and 3.1, Perl 5.10, GHC 6.12 和 GCC 4.4等等组件包。
而想继续追新的朋友可以继续使用 Unstable 和 Experimental 两个仓库。这两个软件仓库将一直保持更新。
使用 xz 压缩 deb 包
Debian 和 Ubuntu 的 deb 包,本质上其实是一个包含着已编译好的文件的压缩包,默认使用的是 gzip 压缩的,但是 gzip 的压缩率不高一直为人诟病。现在 rpm 都使用 xz 压缩了,dpkg 同样支援 xz 压缩的。
就和平时打 deb 包一样,只需要添加 -Zxz 这个参数就可以了,比如
dpkg-deb -b -Zxz xxx/ xxx.deb
xxx 是要打包的目录名字,xxx.deb 是生成的 deb 包的名字。
对比一下,就以 mysql-workbench 为例,gzip 的 deb 包就需要接近 42MB 的大小,而 xz 压缩的仅仅要 26MB。奇怪 Debian 和 Ubuntu 都不把 dpkg 默认的压缩格式改为 xz。
自己制作 linux-kbuild 的 deb 包
我之前写过一篇牢骚文发泄对 Debian 不出 linux-kbuild 的不满,后来在 Debian Wiki 找到了帮助,自行解决了 linux-kbuild 的问题。
说到底还是自己编译,首先到 debian 的 SVN 服务器抓取一份 linux-kbuild 的源代码,然后下载一份完整的内核源代码压缩包,随后用内核的源码包生成一个 linux-kbuild 经过 debian 化的 orig 源码包,最后就是编译生成 linux-kbuild 的 deb 包即可。
详细方法可以参考以下文章:http://www.liangsuilong.info/?p=670












评论