编译内核……

为当前最终发行版之前的所有版本提供支持
回复
thesunxy
帖子: 12
注册时间: 2007-03-29 11:20
送出感谢: 0
接收感谢: 0

编译内核……

#1

帖子 thesunxy » 2007-07-19 8:14

想学习编译内核。像老手请教几个个问题,呵呵~ 谢谢你们的帮助了

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/啊

罗里啰唆说了这些问题,麻烦高手耐心解答啊~ 呵呵
头像
蓝蓝
帖子: 953
注册时间: 2007-06-09 9:19
来自: 上海
送出感谢: 0
接收感谢: 0
联系:

#2

帖子 蓝蓝 » 2007-07-19 8:27

这个 很难吗?
头像
jarryson
帖子: 4002
注册时间: 2005-08-14 19:53
送出感谢: 1 次
接收感谢: 2 次
联系:

#3

帖子 jarryson » 2007-07-19 8:52

不知道。不能帮助你。不过不知道你安装了相关软件没有。比方ubuntu的make需要的软件。

最后一步是声称内核镜像的,那个命令不知道你系统里面有没有。
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星
送出感谢: 1 次
接收感谢: 0

Re: 编译内核……

#4

帖子 xhy » 2007-07-19 8:57

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/啊
这步也可以不做的

罗里啰唆说了这些问题,麻烦高手耐心解答啊~ 呵呵
目前负债150多万
thesunxy
帖子: 12
注册时间: 2007-03-29 11:20
送出感谢: 0
接收感谢: 0

#5

帖子 thesunxy » 2007-07-19 10:36

需要运行的软件包都安装了 呵呵
回复

回到 “老旧版本支持”