Ubuntu 更新内核记录

Ubuntu 更新内核记录

Hyper v中安装的ubuntu 10.04 分配的cpu时常被完全占用(极高),找了一圈,没找到确切的问题原因,在某网上只提到升级内核.故有了以下动作.

据一周的观察,升级内核后,cpu占用率的问题没有再出现

下载内核
http://kernel.ubuntu.com/~kernel-ppa/mainline/
head 和 image 对应

dkpg –i 直接安装

 

以下是需编译的步骤,太麻烦,删除了

1:下载新内核
http://www.kernel.org/  挑选稳定(stable)的新内核下载一个. 或直接点击 Latest Stable Kernel

2: 解压到/usr/src下,使用命令如下:
bunzip2 linux-3.3.3.tar.bz2
tar xvf linux-3.3.3.tar

3:进入刚才的文件夹 /usr/src/linux-3.3.3,输入命令:
     $ make mrproper

     该命令的功能在于清除当前目录下残留的.config.o文件,这些文件一般是以前编译时未清理而残留的。而对于第一次编译的代码来说,不存在这些残留文件,所以可以略过此步,但是如果该源代码以前被编译过,那么强烈建议执行此命令,否则后面可能会出现未知的问题。

4: 配置编译选项

     作为操作系统的内核,其内容和功能必然非常繁杂,包括处理器调度,内存管理,文件系统管理,进程通讯以及设备管理等等,而对于不同的硬件,其配置选项也不相同,所以在编译源代码之前必须设置编译选项。

    可以使用 make menuconfig 或者make xconfig。这里使用的是make menuconfig,但是前提条件是要装ncurse

    make menuconfig过程中也会有一些选项需要你来设置*, y, n 或者m,选择*表示选项中的内容被直接编入内核中,选择m表示选项中的内容不编入内核,而只是编成独立的module,用到时才调用。

    make menuconfig

    根据菜单提示,选择编译配置选项,并保存配置文件为.config

5:确定依赖性 

    make dep

 

6:清除编译中间文件

   make clean

 

7: 生成新内核

    就是把配置过程中,我们选中编入内核中的程序编译链接生产linux内核,输入命令:

    make bzImage

 

8: 生成modules

    和上步差不多,就是把配置过程中,我们选中编成modules的程序编译链接成modules,输入命令:

    make modules

 

9: 安装modules

    就是把刚才编译生产的modules拷到系统文件夹下,以供新内核调用。输入命令:

    make modules_install

    

8,建立要载入ramdisk的映像文件

    如果linux系统按照在scsi磁盘上,这部是必须的,否则可以跳过。我的linux是装在vmware上的,用的是虚拟的scsi磁盘,所以必须要这一步。输入命令:

   mkinitramfs -o /boot/initrd-linux3.3.3.img  3.3.3

   如果你的linux不是ubuntu,而是其他的发行版本,那么使用的命令可能不是mkinitramfs,而是mkinitrd,但功能和用法类似。

 

9,安装内核

   输入命令:make install

   此时系统会把linux内核的镜像文件还有System.map考入到/boot.

 

10, 配置grub引导程序

   既然新的内核编译并安装好了,那么我们要配置系统的引导程序用新内核正确引导,这一步是手动的,对象是/boot/grub/grub.cfg,首先用chmod更改该文件的只读属性。然后参照里面的已有内容添加一个新启动项,我的新启动项是:

menuentry 'Ubuntu, with Linux 3.3.3-generic' –class ubuntu –class gnu-linux –class gnu –class os {
recordfail
insmod ext2
set root='(hd0,1)'
search –no-floppy –fs-uuid –set 140c9813-9b08-4f92-bc5f-93b2050ecca1
linux   /boot/vmlinuz-3.3.3 root=UUID=140c9813-9b08-4f92-bc5f-93b2050ecca1 ro   quiet splash
initrd  /boot/initrd-custom3.3.3.img
}   

上面粗体字,linux 后面指明了新内核映像文件的路径,initrd后面指明了ramdisk映像文件的路径。 

 

最后一点,别忘了把菜单超时时间设置为10秒钟,因为默认超时为0,而且是从原来的内核镜像启动系统。