星期四, 十一月 23, 2006

LFS kernel compling

之前构建 LFS 时直接使用了老系统的内核,将 vmlinuz 和 initrd.img 直接拷贝过去再编辑 grub.conf 的,系统可以启动。

但现在编译 Xorg-6.9.0 却有问题,在日志中有如下信息:
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: Open failed
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: Open failed
[drm] failed to load kernel module "i915"
(II) I810(0): [drm] drmOpen failed
(EE) I810(0): [dri] DRIScreenInit failed. Disabling DRI.

推测可能和内核有关,于是重新编译内核。将原理系统的 .config 文件拷贝过来。但 LFS 本身是没有 initrd 的,所以有几个模块必须编译到内核中才能保证系统可以启动。解档 initrd(initrd.img解档)后可以查看 lib 下的几个模块,这几个模块需要注意:
ahci.ko
ata_piix.ko
ext3.ko
jbd.ko
libata.ko
scsi_mod.ko
sd_mod.ko

在 make menuconfig 时将 SCSI disk support 和 ext3 file system 编译到内核中,但是 ahci.ko, ata_piix.ko 和 libata 不知道是哪个子选项,于是直接编辑 .config 文件:
# sed -i 's/CONFIG_SCSI_ATA_PIIX=m/CONFIG_SCSI_ATA_PIIX=y/' .config
# sed -i 's/CONFIG_SCSI_SATA=m/CONFIG_SCSI_SATA=y/' .config
# sed -i 's/CONFIG_SCSI_SATA_AHCI=m/CONFIG_SCSI_SATA_AHCI=y/' .config

没有评论: