另一种编译内核(生成initrd.img)的方法

编译打包和其他
回复
bestmomo
帖子: 33
注册时间: 2008-02-04 8:35

另一种编译内核(生成initrd.img)的方法

#1

帖子 bestmomo » 2012-11-24 22:52

按照论坛高手的方法编译了内核,不过发现没有initrd.ing这个文件

现提供一种方法实现 生成内核和initrd.img文件

下载内核,我下载的是2.6.35.8

环境是ubuntu10.04 amd64

解压

cd linux-2.6.35.8/

make mroprper #如果是第一次或重新配置内核这条命令是必需的

make clean #应该上跳指令也包含这个

make xconfig#如果报错是没有装依赖 google一下吧 我不记得了



Local version - append to kernel release #版本号 这可以写上自己的名字 如果多次编译 这里的命名不同 就可以避免建立多个文件夹 否则时会有冲突 我这里写的是momo2

Initial RAM filesystem and RAM disk (initramfs/initrd) support#这个一定要选上 因为要用initrd.img引导

Optimize for size #其实就是gcc -O2选项 优化代码 不过我没选

Processor family#选一下把 和gcc的编译参数有关

网络部分 我没动

设备驱动我大多设置成模块

内核配置选项就不多细说了 网络参考上很多


选完之后

sudo make all #包含sudo make vmlinux sudo make modelues sudo bzImage 这三步


make install


如果你在boot文件夹下看到 vmlinuz-2.6.35.8momo2 System.map-2.6.35.8momo2这两个文件就说明成功了


现在我们来做最后一个文件


还是在 inux-2.6.35.8/下

make modules_install

ll /lib/modules/

如果在/lib/modeles下看到


看到 文件夹2.6.35.8momo2说明成功

好了现在可以做initrd.img文件了

sudo vim /etc/initramfs-tools/initramfs.conf


将MODULES=most 改为MODULES=dep

强制写入退出vi


没有这步也能做出来 不过img文件很大

sudo mkinitramfs -o /boot/initrd.img-2.6.35.8momo2 2.6.35.8momo2

如果在 /boot下 看到initrd.img-2.6.35.8momo2 说明成功

备份.config文件

在linux-2.6.35.8/下 sudo cp .config /boot/config-2.6.35.8momo2

最后更新grub

cd /boot/grub

sudo vim grub.cfg
找到
menuentry 'Ubuntu,Linux 2.6.35-32-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,4)'
search --no-floppy --fs-uuid --set 7ee88091-5e9b-4f94-a301-2927fca56723
linux /vmlinuz-2.6.35-32-generic root=UUID=217e1150-eb64-44c2-aba7-59ad72232323 ro quiet splash
initrd /initrd.img-2.6.35-32-generic
}
复制到后面

注意是复制不是直接改 想想万一失败的后果把

改为

menuentry 'Ubuntu,Linux 2.6.35.8momo' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,4)'
search --no-floppy --fs-uuid --set 7ee88091-5e9b-4f94-a301-2927fca56723
linux /vmlinuz-2.6.35.8momo2 root=UUID=217e1150-eb64-44c2-aba7-9ad72232323 ro quiet splash
initrd /initrd-2.6.35.8momo2
}
强制写入退出vi

嫌麻烦试试update-grub 不过我没验证过

sudo reboot

重启选刚编译好的内核试一下吧
回复