当前位置: 技术问答>linux和unix
ubuntu换内核
来源: 互联网 发布时间:2016-08-10
本文导语: 我现在用的是ubuntu9.10默认的内核是2.6.31,我想换成2.6.30应该怎样做? 谢谢 | 你想升级成2.6.30,那么我查到的稳定版本是2.6.30.10(stable).其实源代码中的README中已经介绍的比较清楚了,这里我简...
我现在用的是ubuntu9.10默认的内核是2.6.31,我想换成2.6.30应该怎样做?
谢谢
谢谢
|
你想升级成2.6.30,那么我查到的稳定版本是2.6.30.10(stable).其实源代码中的README中已经介绍的比较清楚了,这里我简单说下吧。
1. 下载源代码,同时有两种方法选择:
一种是直接下载源代码包,一种是通过源代码管理工具Git更新代码。我感觉直接下载源代码包速度要快点。不过通过Git可以不停的更新该版本的代码。
2. 确保源代码目录下没有之前生成的.o或其他文件(刚下载的源码里肯定没有这些了)。
进入源代码目录,执行make mrproper
3. 确保编译代码过程所需要工具都安装了,并且版本是所要求的。
这个参考 Documentation/Changes里面说明的
4. 配置内核,通常执行make menuconfig就可以了。还有其他的工具,不过目的是一样的,生成.config文件。
5. 编译内核(这一步是耗时间最长的,慢慢等:))
Example:
kernel source code: /usr/src/linux-2.6.N
build directory: /home/name/build/kernel
To configure and build the kernel use:
cd /usr/src/linux-2.6.N
make O=/home/name/build/kernel menuconfig
make O=/home/name/build/kernel
sudo make O=/home/name/build/kernel modules_install install
这里你可以在此之前设置一个内核编译的目录环境变量,例如KBUILD=/home/name/build/kernel
这样就能为以后编译方便一点点,如下:
cd /usr/src/linux-2.6.N
make O=$KBUILD menuconfig
make O=$KBUILD
sudo make O=$KBUILD modules_install install
6. 生成initrd.img-2.6.N文件
切换到/boot/下看看,我们编译完内核后,还差一个initrd.img-2.6.N文件,如何生成呢?
在Fedora下面一般是用mkinitrd,而在Ubuntu/Debian下是用mkintramfs.
它们的用法稍微有些不一样,如下所示:
(Fedora) mkinitrd /boot/initrd.img 2.6.N
(Ubuntu) mkintramfs 2.6.N -o /boot/initrd.img
其中2.6.N为/lib/modules下的目录名称.
7. 修该/boot/grub/menu.list,添加类似下面几行:
title Jaunty,V2.6.34-rc1
uuid ab55829a-82da-4da6-8868-faa16e292d91
kernel /boot/vmlinuz-2.6.34-rc1 root=UUID=ab55829a-82da-4da6-8868-faa16e292d91 ro locale=zh_CN quiet splash
initrd /boot/initrd.img-2.6.34-rc1
quiet
Notes: title - 随便修改
uuid - 和其它的一样
kernel- 你编译的内核映像,改成你编译的那个版本
initrd - 第6步生成的 .img文件
8. 最后一步,见证奇迹的时刻!怎么见证?重启啊!:)
1. 下载源代码,同时有两种方法选择:
一种是直接下载源代码包,一种是通过源代码管理工具Git更新代码。我感觉直接下载源代码包速度要快点。不过通过Git可以不停的更新该版本的代码。
2. 确保源代码目录下没有之前生成的.o或其他文件(刚下载的源码里肯定没有这些了)。
进入源代码目录,执行make mrproper
3. 确保编译代码过程所需要工具都安装了,并且版本是所要求的。
这个参考 Documentation/Changes里面说明的
4. 配置内核,通常执行make menuconfig就可以了。还有其他的工具,不过目的是一样的,生成.config文件。
5. 编译内核(这一步是耗时间最长的,慢慢等:))
Example:
kernel source code: /usr/src/linux-2.6.N
build directory: /home/name/build/kernel
To configure and build the kernel use:
cd /usr/src/linux-2.6.N
make O=/home/name/build/kernel menuconfig
make O=/home/name/build/kernel
sudo make O=/home/name/build/kernel modules_install install
这里你可以在此之前设置一个内核编译的目录环境变量,例如KBUILD=/home/name/build/kernel
这样就能为以后编译方便一点点,如下:
cd /usr/src/linux-2.6.N
make O=$KBUILD menuconfig
make O=$KBUILD
sudo make O=$KBUILD modules_install install
6. 生成initrd.img-2.6.N文件
切换到/boot/下看看,我们编译完内核后,还差一个initrd.img-2.6.N文件,如何生成呢?
在Fedora下面一般是用mkinitrd,而在Ubuntu/Debian下是用mkintramfs.
它们的用法稍微有些不一样,如下所示:
(Fedora) mkinitrd /boot/initrd.img 2.6.N
(Ubuntu) mkintramfs 2.6.N -o /boot/initrd.img
其中2.6.N为/lib/modules下的目录名称.
7. 修该/boot/grub/menu.list,添加类似下面几行:
title Jaunty,V2.6.34-rc1
uuid ab55829a-82da-4da6-8868-faa16e292d91
kernel /boot/vmlinuz-2.6.34-rc1 root=UUID=ab55829a-82da-4da6-8868-faa16e292d91 ro locale=zh_CN quiet splash
initrd /boot/initrd.img-2.6.34-rc1
quiet
Notes: title - 随便修改
uuid - 和其它的一样
kernel- 你编译的内核映像,改成你编译的那个版本
initrd - 第6步生成的 .img文件
8. 最后一步,见证奇迹的时刻!怎么见证?重启啊!:)