编译内核小总结

发表于:2007-07-04来源:作者:点击数: 标签:
几点关于内核编译的常识 make modules 只是將 modules 產生在 /usr/src/ linux -xxxx 底下。 make modules_install 才會 copy 到 /lib/modules/xxxx 那邊。 mkinitrd 的版本要跟着内核走。旧的要更新。 mkinitrd 是制作initrd.img的脚本。 initrd-version.im

几点关于内核编译的常识

make modules 只是將 modules 產生在 /usr/src/linux-xxxx 底下。
make modules_install 才會 copy 到 /lib/modules/xxxx 那邊。

mkinitrd 的版本要跟着内核走。旧的要更新。
mkinitrd 是制作initrd.img的脚本。
initrd-version.img,类似ramdisk,把一段程序打包到img里,然后在内存里开辟一段区域,一般是2m,释放到那里运行,都是一些初始化的程序.
如果机器使用的是scsi设备,则一定要做这一步。
因为scsi设备的驱动一般不编译到内核中,而放到initrd.img中
(存疑,如果scsi driver都选成build in,能否不要?)
   
用法
mkinitrd /boot/initrd-2.6.9.img 2.6.9
参数2 2.6.9 代表的是在/lib/modules/xxxx的xxxx
会按照这个目录下的module的内容来生成initrd img

将kernel 和 initrd.img配置好,可用的new-kernel-install 脚本。
这个脚本现在已经写道make install这个target 中了

用法
/sbin/new-kernel-pkg --mkinitrd --depmod --install

如果grub.conf 中的
新添内容
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img
加载失败
可改为
kernel /vmlinuz-2.4.20-8 ro root=/dev/hdax hdc=ide-scsi
这种写法。hdax就是linux 的 / 安装位置,比如目前我的就是hda3

如果没有initrd.img
可以写
no initrd

 

下面是内核配置的内容,
首先这个是请教来的

 

最保险的办法应该是使用第一次安装时生成的 config .

将老的config copy到当前的/usr/src/linux.verson/

然后make oldconfig
这个用法应该是使用上次的config,在这儿就是刚copy过来的那个。


一个常用技巧,在xconfig或gconfig编辑器Options选单下提供了几种非常有用的内核设置选项。
    ◆ Show all options选项。系统显示所有可用的内核设置选项,即使是某选项由于各种原因无法被选取(通常情况下是由于与之相关的选项未被选取)。这一选项可以帮助用户了解所需要的选项是否存在于内核资源中。
    ◆ Show debug info选项。系统显示与帮助窗口中所选选项相关的内核设置变量。这一选项可以帮助用户了解激活其它内核设置选项所需的前提选项。
    ◆ Show Name选项。系统显示与每个内核设置选项相关的内核设置变量的名称,可以帮助确定内核设置变量间的从属关系。

原文转自:http://www.ltesting.net