分页: 1 / 1

编译内核……

发表于 : 2007-07-19 8:14
thesunxy
想学习编译内核。像老手请教几个个问题,呵呵~ 谢谢你们的帮助了

1.我看书上说:内核的命名是:
主版本号-次版本号-修正版本号
但是我到www.kernel.org去下载,看到的却是2.6.22.1,后面这个.1是什么啊?

2.还有就是我看的网上教程是这样的
sudo make dep //也许系统会提示现在不必要进行make dep,那就下一步
sudo make clean //清除旧数据
sudo make bzImage //编译内核,bzImage是你给该新内核起的名字,将保存到/usr/src/linux/arch/i386/boot/下
sudo make modules //编译模块
sudo make bzImage install //安装内核
sudo make modules_install //安装模块
sudo mkinitramfs -o /boot/initrd.img-2.6.21.1 2.6.21.1
前面的有注释都明白,最后这一步是干什么的?

3.教程上说,以上面步骤(除了sudo mkinitramfs -o /boot/initrd.img-2.6.21.1 2.6.21.1这步)
都完成了之后,就会有/lib/modules/linux-2.6.21.1和/boot/vmlinuz-2.6.21.1
但是为什么我在实际编译的时候是得到了/lib/modules/2.6.22.1和/boot/vmlinuz-2.6.21.151
上面两个的文件名 一个是.1 一个是.151,这是为什么?是我操作的问题吗?
正因为这个,我想接着教程做sudo mkinitramfs -o /boot/initrd.img-2.6.22.1 2.6.22.1这步就不行了

4./boot/grub/menu.lst里的启动项,是
kernel /vmlinuz-2.6.15.1 root=/dev/sdb1 ro
initrd /initrd.img-2.6.15.1
但是我去根目录下,ls却看不见这两个文件,只有两个软链接,名字分别是vmlinuz和initrd
这是为什么?我把menu.lst中改成
kernel /boot/vmlinuz-2.6.15.1 root=/dev/sdb1 ro
initrd /boot/initrd.img-2.6.15.1
却进不了系统了,为什么啊?vmlinuz-2.6.15.1和initrd.img-2.6.15.1这两个文件,分明是存在于/boot/啊

罗里啰唆说了这些问题,麻烦高手耐心解答啊~ 呵呵

发表于 : 2007-07-19 8:27
蓝蓝
这个 很难吗?

发表于 : 2007-07-19 8:52
jarryson
不知道。不能帮助你。不过不知道你安装了相关软件没有。比方ubuntu的make需要的软件。

最后一步是声称内核镜像的,那个命令不知道你系统里面有没有。

Re: 编译内核……

发表于 : 2007-07-19 8:57
xhy
thesunxy 写了:想学习编译内核。像老手请教几个个问题,呵呵~ 谢谢你们的帮助了

1.我看书上说:内核的命名是:
主版本号-次版本号-修正版本号
但是我到www.kernel.org去下载,看到的却是2.6.22.1,后面这个.1是什么啊?
major.minor.patchlevel.x
major是主版本号 minor是次版本号 patchlevel是修订次数
最后一位是开发者对于当前修订再细分的修订次数


2.还有就是我看的网上教程是这样的
sudo make dep //也许系统会提示现在不必要进行make dep,那就下一步
sudo make clean //清除旧数据
sudo make bzImage //编译内核,bzImage是你给该新内核起的名字,将保存到/usr/src/linux/arch/i386/boot/下
sudo make modules //编译模块
sudo make bzImage install //安装内核
sudo make modules_install //安装模块
sudo mkinitramfs -o /boot/initrd.img-2.6.21.1 2.6.21.1
前面的有注释都明白,最后这一步是干什么的?
最后一步是生成initrd文件 2.4的内核需要这个

你看的教程比较老了 其实不需要这么复杂的 只要3步就可以了
sudo make //编译
sudo make modules_install//安装模块
sudo make install//自动把相关文件复制到/boot 并且自动修改menu.lst文件



3.教程上说,以上面步骤(除了sudo mkinitramfs -o /boot/initrd.img-2.6.21.1 2.6.21.1这步)
都完成了之后,就会有/lib/modules/linux-2.6.21.1和/boot/vmlinuz-2.6.21.1
但是为什么我在实际编译的时候是得到了/lib/modules/2.6.22.1和/boot/vmlinuz-2.6.21.151
上面两个的文件名 一个是.1 一个是.151,这是为什么?是我操作的问题吗?
正因为这个,我想接着教程做sudo mkinitramfs -o /boot/initrd.img-2.6.22.1 2.6.22.1这步就不行了
这步可以不做的


4./boot/grub/menu.lst里的启动项,是
kernel /vmlinuz-2.6.15.1 root=/dev/sdb1 ro
initrd /initrd.img-2.6.15.1
但是我去根目录下,ls却看不见这两个文件,只有两个软链接,名字分别是vmlinuz和initrd
这是为什么?我把menu.lst中改成
kernel /boot/vmlinuz-2.6.15.1 root=/dev/sdb1 ro
initrd /boot/initrd.img-2.6.15.1
却进不了系统了,为什么啊?vmlinuz-2.6.15.1和initrd.img-2.6.15.1这两个文件,分明是存在于/boot/啊
这步也可以不做的

罗里啰唆说了这些问题,麻烦高手耐心解答啊~ 呵呵

发表于 : 2007-07-19 10:36
thesunxy
需要运行的软件包都安装了 呵呵