debian的内核编译是比较轻松的,版本控制也很方便。
首先,需要下载fakeroot和kernal-package包,当然,开发包不可少。
然后进入源代码目录,make conifg。当然,我喜欢用make xconfig,这需要安装libqt3-dev包:apt-get install libqt3-dev即可。
make xconfig里边非常多的 选项,搞不好就会导致机器启动不了。由于我是笔记本,显卡、网卡、声卡什么的,总不会换,所以我只选择适合我的东西,只得注意的是,为了支持休眠,要把ata支持编译进核心而不能是模块;而且,尽管本本不可能有scsi控制器,但是USB硬盘、USB CD、U盘都是模拟scsi的,所以需要scsi支持;network呢,我选上自己的网卡e100就好了,另外去掉IPV6和许多什么IPX、Appletalk一辈子用不到的东西的支持可能会让系统工作高效一些;characher device一项中,选自己的agp芯片组和显卡类型就可以了 ;对新手比较困惑的是graphic选项,这个几乎没有用,因为你也许永远不会想去在控制台用中文,一般而言,我把vesafb编译进核心,如果把自己的显卡编译进核心,无非就是可以让控制台在高于1024
×768的分辨率下工作,看的东西多一点;声卡呢,选上alsa就行了,oss已经废弃了,但是好多程序都还是使用oss的/dev/dsp设备,如果不选oss,你需要在/etc/modules里边手动添加snd_pcm_oss,这样就和oss兼容了,但是quake2对ALSA支持不好;USB是个好东西,你几乎不要动它的编译选项,不过我把uchi-hcd编进了核心,因为我是intel芯片组,要指出的是,USB鼠标只需加入usbhid模块即可;文件系统呢,为了不用initrd(4M大的空间),我把ext2文件系统编译进核心,去掉了compressed ROM fs support,然后是光盘文件(DVD使用UDF)系统,DOS文件系统(vfat、ntfs之类),pseudo文件系统不要去动它,其他出了smbfs,我一概不要;其他什么MTD、AR、Ftape、old-cdrom等等一堆东西,就不要选了。
上面提到休眠支持,这个需要给核心打swsusp2补丁的,下载地址在http://softwaresuspend.berlios.de/,尽管核心自己带有休眠支持(stock-suspend),但是工作情况不好,没有swsusp2好用,所以还是需要打这个补丁。在编译的时候要注意,自带的休眠选项不能选,apm不要,swsusp2选前面三个就好了,LZF是压缩内核镜像用的,可以减少休眠写盘内容,加快写盘速度。
好了,可以编译核心了:
fakeroot make-kpkg --append_to_version -1-686 kernel-image
一个命令把make mrprper bzImage modules modules-install全部搞定,如果想使用initrd,并且在内核里边选上了Compressed ROM file system support,那么可以这么做:
fakeroot make-kpkg --append_to_version -1-686 --initrd kernel-image
会有警告性提示,选no即可。--append_to_version -1-686是把附加版本定位-1-686。
编译完成之后,回到/usr/src下面,就可以dpkg -i kernel-image××××.deb 了。
要注意的是,这种安装方法,如果在你有这个文件 : /etc/kernel-img.conf
# Do not create symbolic links in /
do_symlinks = yes
relative_links = yes
do_bootloader = no
do_bootfloppy = no
do_initrd = yes
link_in_boot = no
postinst_hook = /sbin/update-grub
postrm_hook = /sbin/update-grub
那么你dpkg -i kernel-image××××.deb之后,grub会自动生成启动选项。非常方便。我把lilo改成grub,这也是一个原因。
ALSA的设置
论坛里边ALSA的设置一大堆,但是Debian的ALSA设置非常简单。
首先,要确认你的核心支持alsa,用lsmod看,必须要有snd_intel8x0,snd_ac97_codec,snd_mpu401_uart,snd_rawmidi,snd_seq_device,snd_pcm_oss,snd_pcm,snd_timer,snd_mixer_oss这一堆模块,(注意,我笔记本是的是AC97
声卡,所以是snd_intel8x0,snd_ac97_codec硬件模块,而snd_pcm_oss是我为了兼容OSS手动而不是靠hotplug方式自动加载的),如果没有,那么你要按我上边写的那样去编译ALSA支持和ALSA模块。
下载alsa-utils,它会顺带下载alsa-base:
apt-get install alsa-utils
然后用alsaconf命令来自动配置,如果你的声卡模块对头,它会自动检测到的。并且会在/etc/init.d/下面添加一个启动脚本alsa。
这样你绝对可以mpg123来听mp3了,当然,还需要gnome下的gstreamer支持alsa,下载这个插件软件包gstreamer0.8-alsa:
apt-get install gstreamer0.8-alsa
然后,你就可以在gstreamer-properties程序里边选择ALSA进行发声测试了。