- 论坛徽章:
- 0
|
2.6.18内核编译过程
整整两天时间,就忙活着编译内核了。网上的信息太繁杂,基本上大同小异。但是不一定哪篇文章就有与众不同之处,或许正是所需要的。
我的系统是DEBIAN3.1,LINUX-2.6.8内核,编译2.6.18内核。
1.准备
安装最新版本的module-init-tools、modutils-2.4.21-23.src.rpm。
2.源代码取得
我装的系统不附带源码,/usr/src目录是空的。2.6.18源码存在WINDOWS的d盘,我把d盘挂过来,linux-2.6.18.tar.gz复制到/usr/src下。
3.解压
#tar xvfz linux-2.6.18.tar.gz
生成linux-2.6.18代码目录。
4.进入代码目录
#cd linux-2.6.18
5.清理代码树
#make mrproper
该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖。确保源代码是干净的。
6.配置新内核
以下命令都是配置内核的,选一个
#make config(基于文本的最为传统的配置界面,不推荐使用)
#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)
#make oldconfig(默认为旧内核相同的配置,只有新东西提示你自己配置)
#make allyesconfig(所有的项一次性选成yes)
我用的“make xconfig”,方便,而且很清楚究竟是如何配置的。不过要预先装QT开发库,否则不能用。
对应项前的小方格里画“√”即该项编译进内核,画“• ”即编译成模块,空着是不选择。保证文件系统编译进内核,其他根据情况选。
7.编译
#make
相当于#make bzImage; #make modules
8.安装
#make modules_install
实际做了下面动作:
#cp /usr/src/linux/System.map /boot/System.map-2.4.18
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.4.18
#cd /boot
#rm -f System.map vmlinuz
#ln -s vmlinuz-2.4.18 vmlinuz
#ln -s System.map-2.4.18 System.map
bzImage是压缩的内核映像
vmlinux是未压缩的内核,vmlinuz是vmlinux的压缩文件。
initrd一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。
System.map是一个特定内核的内核符号表。它是你当前运行的内核的System.map的链接。
9.生成initrd.img
#make -o /boot/initrd-2.6.18.img 2.6.18
说2.6.18内核编译自动生成,但不行。开始没这一步,重启无法进新内核。
10.生成模块间依赖关系
#depmod –a
11.进入/boot/grub,修改menu.lst
#cd /boot/grub
#vi menu.lst 或在X-WINDOWS下直接改(推荐,vi麻烦)
添加:
title Debian Linux kernel 2.6.18
root (hd0,6) //根分区和你的sda*对应
kernel /boot/vmlinuz-2.6.18 root=/dev/sda7 ro
initrd /boot/initrd-2.6.18.img
savedefault
boot
12.重启进入新内核
#reboot
开始,我按照资料上的做,但不成功。有些情况与资料上的不符,如initrd.img不能自动生成,grub要手动设置等。反正我是这样编译成功了。 |
|