ubuntu上编译kernel
时间:2016-05-21 14:48 来源:linux.it.net.cn 作者:IT
一、操作环境
二、kernel 编译
三、init ram disk 解包
四、参考网页
操作环境:
virtualbox上安装ubuntu10.04,可正常连接网络
kernel编译:
源码默认在/usr/src/目录下,默认安装情况下,只有头文件,没有code。编译完成后会在/lib/modules/下生成一些文件,可用来生成initramfs。
先查下在ubuntu的源中可下载哪些kernel版本:
sudo apt-cache search linux-source
选择一个版本安装:(转到/usr/src/目录下)
sudo apt-get install linux-source-source_version
完成后会在/usr/src/目录下生成kernel的gz包,解包然后编译:
先配置kernel,建议使用默认config,以免编译出错:make oldconfig
make
make bzImage
make install
这时vmlinux已经安装到到了/boot目录下,下面是编译和生成initramfs
make modules
make modules_install
cd /lib/modules/source_path/
mkinitramfs -o /boot/initrd.img-source_version -v source_version(这条命令要注意。默认情况下mkinitramfs会根据当前运行的内核版本来生成initrd,但很多情况下我们下载的内核和正在运行的内核版本是有些差异的,这时要用-v加上你编译的内核版本号。)
然后copy initrd到/boot目录,并修改grub的配置文件。再重启。
init ram disk 解包:
这次使用自己编译的boot image,很多次都报错,主要就是initramdisk的生成出错了。这时候需要解压开initrd.img来看看到底哪里出错(其实就是mkinitramfs时没加-v)。
先copy initrd.img到一个临时目录,重命名后缀为gz,然后gunzip 解压;在
cpio -i < initrd.img-xxx
这样就解包了。
(责任编辑:IT)
一、操作环境 二、kernel 编译 三、init ram disk 解包 四、参考网页 操作环境: virtualbox上安装ubuntu10.04,可正常连接网络 kernel编译: 源码默认在/usr/src/目录下,默认安装情况下,只有头文件,没有code。编译完成后会在/lib/modules/下生成一些文件,可用来生成initramfs。 先查下在ubuntu的源中可下载哪些kernel版本: sudo apt-cache search linux-source 选择一个版本安装:(转到/usr/src/目录下) sudo apt-get install linux-source-source_version 完成后会在/usr/src/目录下生成kernel的gz包,解包然后编译: 先配置kernel,建议使用默认config,以免编译出错:make oldconfig make make bzImage make install 这时vmlinux已经安装到到了/boot目录下,下面是编译和生成initramfs make modules make modules_install cd /lib/modules/source_path/ mkinitramfs -o /boot/initrd.img-source_version -v source_version(这条命令要注意。默认情况下mkinitramfs会根据当前运行的内核版本来生成initrd,但很多情况下我们下载的内核和正在运行的内核版本是有些差异的,这时要用-v加上你编译的内核版本号。) 然后copy initrd到/boot目录,并修改grub的配置文件。再重启。 init ram disk 解包: 这次使用自己编译的boot image,很多次都报错,主要就是initramdisk的生成出错了。这时候需要解压开initrd.img来看看到底哪里出错(其实就是mkinitramfs时没加-v)。 先copy initrd.img到一个临时目录,重命名后缀为gz,然后gunzip 解压;在 cpio -i < initrd.img-xxx 这样就解包了。 (责任编辑:IT) |