LINUX内核编译过程

哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处

http://blog.csdn.net/woshixingaaa/archive/2010/11/07/5993648.aspx

基础知识:

/boot/vmlinuz<version> 启动压缩内核

/boot/System.map<version> 内核符号的地址

/boot/initrd.img<version> 初始化RAM硬盘,存储根文件系统挂载所需的模块

/lib/modules目录

内核的模块和自己编译的模块都在这里.

/lib/modules/<kernel-version>/build

存储为该版本编译内核所需要的文件

/lib/modules/<kernel-version>/kernel

存储内核的目标文件,都是(.ko后缀),它的目录组织和内核源码中的kernel目录组织相同

/lib/modules/<kernel-version>/modules.alias 模块别名定义,模块加载工具使用它来加载

/lib/modules/<kernel-version>/modules.dep 定义了模块间的依赖关系

/lib/modules/<kernel-version>/modules.symbols 指定符号属于哪个模块


我使用的是Ubuntu8.04 默认内核是2.6.24.16

从下面的链接下载2.6.25.1内核

http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.1.tar.bz2

默认下载到tmp目录

sudo cp /tmp/linux-2.6.25.1.tar.bz2 /usr/src/

拷贝到/usr/src

sudo tar jxvf linux-2.6.25.1.tar.bz2

cd linux-2.6.25.1

如果以前编译过就用

make clean

make mrproper

清一下

如果是第一次安装则不需要直接进行下面的操作

1.内核配置工具

(1)make config

(2)make menuconfig(常用)

在Ubuntu 8.04下需要安装 libncurses5-dev,因为menuconfig需要ncurse库的支持,其他

Ubuntu的发行版版本可能需要不同的包。

sudo apt-get install libncurses5-dev

(3)make xconfig

这里需要自己进行配置,如果是初学者,可以用现成的配置文件,这个是最适合自己电脑的,

以免自己配置错误

sudo cp /boot/config-2.6.24-16-generic /usr/src/linux-2.6.25.1/

sudo mv config-2.6.24-16-generic .config

在menuconfig中选中

General setup --->
() Local version - append to kernel release ()

默认就是.config

选中然后退出

2.编译内核

sudo make

这个需要一两个小时或以上根据机器配置。

这个相当于手工执行下面两步:

#make bzImage

#make modules(编译可加载模块)

其中make bzImage 将在/usr/src/linux-2.6.25.1/arch/i386/boot 目录下生成bzImage

然后将其复制到/boot目录下

sudo cp /usr/src/linux-2.6.25.1/arch/i386/boot/bzImage /boot/

3.sudo make install

4.sudo make modules_install

安装模块

5.制作initrd.img

编译2.6.14以后的内核需要使用mkinitramfs

sudo apt-get install bootcd-mkinitramfs

sudo mkinitramfs -o /boot/initrd-img-2.6.25.1 2.6.25.1

6.添加符号链接

ln -sf vmlinuz-2.6.25.1 vmlinuz

ln -sf System.map-2.6.25.1 System.map

ln -sf initrd.img-2.6.25.1 initrd.img

ln -sf config-2.6.25.1 config

7.然后修改grub

cd /boot/grub

chmod 777 menu.lst

sudo gedit menu.lst 添加

title Ubuntu 8.04.4 LTS, kernel 2.6.251
root (hd0,0)
kernel /boot/vmlinuz-2.6.25.1 root=UUID=db857fbd-ed11-4146-a010-7f97cc55d41d ro quiet splash
initrd /boot/initrd.img-2.6.25.1
quiet

8.重启 大功告成

你可能感兴趣的:(linux,.net,ubuntu,Blog)