另一种编译内核(生成initrd.img)的方法
发表于 : 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
重启选刚编译好的内核试一下吧
现提供一种方法实现 生成内核和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
重启选刚编译好的内核试一下吧