打包替换内核
打包替换新内核使用的是make-kpkg命令,所以此方法只适合支持make-kpkg命令的系统版本,一般适合Ubuntu、Debian等系统,不适合RedHat系统。
1、定制内核
#make mrprobe ,清理源代码树。
#make menuconfig ,配置内核。
2、打包内核
(1)拷贝.confg文件:
执行#cp /boot/config-,然后按下Tab键,系统会自动填上该目录下符合条件的文件名,然后继续输入 .config,目的是使用在boot目录下的原配置文件。
不执行这一步的话,后面make的时候会提示找不到.confg文件。
如果在上一步配置了内核的话应该是会自动生成.config文件,但这里本人只是执行了一次#make menuconfig命令并没有配置内核。
(2)编译打包内核
#make-kpkg --initrd - -append-to-version=-pyh - -revision=zxxiong.0716 -j 4kernel_image kernel_headers
执行完以上命令后将在上一级目录生成两个.deb包:
头文件包:linux-headers-3.12.5-pyh_zxxiong.0716_amd64.deb
内核包:linux-image-3.12.5-pyh_zxxiong.0716_amd64.deb
【--initrd】选项会让make-kpkg自动帮我们生成initramfs;
【--revision】会给生成的deb文件加上一个版本信息。这个参数只是影响到文件名,如果不指定,默认会是“10.00.Custom”;
【--append-to-version】也是一种版本信息,它不仅出现在deb安装包的文件名里,也会影响到kernel的名称,比如本例中,内核更新完成之后,用“uname -r”察看会得到“3.12.5-pyh”;
【kernel_image】表示生成内核和默认模块的安装包。
【kernel_headers】这样make-kpkg会生成一个内核头文件的安装包。
如果我们用普通用户来执行make-kpkg,需要加上fakeroot运行
#fakeroot make-kpkg --initrd - -append-to-version=-pyh - -revision=zxxiong.0716 -j 4 kernel_image kernel_headers |
(注:需要设置平台 如-amd64在这里配置文件已经默认配置了,所以这里不用加,选项kernel_image是生成内核.deb包,选项kernel_headers是生成头文件.deb包,这两个选项可以只使用一个)
(3)安装内核
将上面生成的.deb包拷贝到需要替换内核的机器上,执行以下命令:
#dpkg –i linux-headers-3.12.5-pyh_zxxiong.0716_amd64.deblinux-image-3.12.5-pyh_zxxiong.0716_amd64.deb (接上一行)
或者直接在deb包所在目录执行:#dpkg –i ./*.deb
执行命令之后则会自动更新/boot目录下的文件(即自动执行命令:# update-initramfs -c -k3.12.5 和#update-grub2),然后重启系统并选定加载的内核就可以了,还可以修改/boot/grub/grub.cfg配置文件中的 set default=”0”, 默认为0,安装完后查看该文件新加载的内核是第几项就设置为几(从0开始),这样则不需要在开机时选择启动第几项了。
(5) 重启系统
#reboot