LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1287|回复: 15

在一台机子上编译的内核,怎么拿到另一台机子上用啊?

[复制链接]
发表于 2009-10-29 14:49:19 | 显示全部楼层 |阅读模式
我在虚拟机里面编译2.6内核成功,能够进入系统。可是我该怎把这个内核拿到另一台机子上呢?因为另一台机子上是2.4内核,我想能否直接把2.6内核拿过去使用呢?或者另一台如果也是2.6内核,又该怎么移呢?
发表于 2009-10-29 19:37:53 | 显示全部楼层
这里有两层问题,一个是移植内核,另一个是升级内核

一般情况下,要移植内核并不困难,只要提 /boot 下的内核映像、System.map 及 /lib/modules 下相关的模块目录打包,到新系统对应的位置就行,有些发行版的内核就可能要重建 initrd,但也简单

可是另一个问题就不是太容易了,别说 2.4 内核,就是从 2.6.1 升级到今天的 2.6.31.x 也不是很直接的事情,当中泄及很多内核自身的变化,如废止 devfs 改用 udev 之类,当中可能要重建系统部份的核心软件,而且相关的依赖如要逐一解决,所费的精力绝不比重装全新的系统容易。与其如此,还不如彻底把系统全面更新好了
回复 支持 反对

使用道具 举报

发表于 2009-10-29 19:53:20 | 显示全部楼层
ls说的移植内核能够做什么用呢?
回复 支持 反对

使用道具 举报

发表于 2009-10-29 20:00:30 | 显示全部楼层
当然是启动系统呀,楼主不是在问麽?

其实想深一层,如果你的内核不是你自己编译出来的,那麽你用发行版提供的内核还是"移植"自别人上的机器编译出来的,只不过打过包而矣
回复 支持 反对

使用道具 举报

发表于 2009-10-29 20:21:32 | 显示全部楼层
哈哈,对极了
只要出身不是 ./configure, make, make install 都叫移植
不管叫 rpm, aptget 还是叫 cp...
回复 支持 反对

使用道具 举报

发表于 2009-10-29 20:26:54 | 显示全部楼层
ls补充的好,明白了,呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-29 22:51:10 | 显示全部楼层
d00m3d 说的对极了,我现在就是在用2.6.18的内核,想在上面更新到2.6.31,结果编译就是不能过,不知道是不是你说的原因。

多谢指点。另外您说的有些发行版的内核就可能要重建 initrd,能否明确一点呢?是不是重建系统的启动ramdisk镜像-initrd.img?具体的步骤能否指点一下呢?


我是新手,刚刚接触Linux不到一个月,不过越玩越觉得Linux舒服。
回复 支持 反对

使用道具 举报

发表于 2009-10-30 05:45:26 | 显示全部楼层
内核废止 devfs 改用 udev 是在 2.6.13.x 的时候发生的,如果原来是 2.6.18 的内核,情况应该没那麽糟,能否把编译错误的结果贴出来看看?

一般发行版都有借助 initrd、initramfs 之类的玩意协助引导,但这些其实并非必要的,我自己就一直不用。部份发行版如 Debian,他们的内核维护者好像有洁癖,不愿意把文件系统的支援编入内核,但编编成模块,所以必需引用 initrd、initramfs 等进行二次引导,否则启动时会因为根分区无法加载而引致 kernel panic

如果不打算用,那麽内核在配置的时候就必需将必要的文件系统及某些硬件支援直接编入内核,不能编译成模块才行

以上说的,可能是编译内核比较低层的范围,可能对新手来说有点覆杂,希望你看得懂。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-31 10:34:24 | 显示全部楼层
我在编译2.6.31的时候,编译完了以后总是出现Kernel Panic问题,具体的提示忘记了,但是在同样机子上采用同样的方法编译2.6.25就没有问题。现在也不知道怎么回事。

d00m3d您说的在编译内核的时候需要把必要的文件系统及硬件支持直接编入内核,这里的文件和硬件的信息我应该如何查看呢?硬件是不是就直接看我用的电脑上的配置就行了?文件系统呢?

还有您说不用initrd那些引导,那是不是就自己在grub里面输入代码呢还是用make install让它自动生成呢?我理解的不知道对不对。
回复 支持 反对

使用道具 举报

发表于 2009-10-31 11:16:07 | 显示全部楼层
Post by xuyaosong;2041477
我在编译2.6.31的时候,编译完了以后总是出现Kernel Panic问题,具体的提示忘记了,但是在同样机子上采用同样的方法编译2.6.25就没有问题。现在也不知道怎么回事。
是否 CONFIG_RELOCATABLE 作怪?

http://www.linuxsir.cn/bbs/thread356469.html

Post by xuyaosong;2041477
d00m3d您说的在编译内核的时候需要把必要的文件系统及硬件支持直接编入内核,这里的文件和硬件的信息我应该如何查看呢?硬件是不是就直接看我用的电脑上的配置就行了?文件系统呢?

必要的硬件支援指 IDE、SATA、SCSI、USB。。。之类,要足够使系统启动时能辩认根分区所在的硬件;而文件系统就是指根分区所使用的文件系统的支援,如 ext3、ReiserFS、xfs、jfs 之类,足够令系统在启动时能成功挂载根分区

Post by xuyaosong;2041477
还有您说不用initrd那些引导,那是不是就自己在grub里面输入代码呢还是用make install让它自动生成呢?我理解的不知道对不对。

make install 是不会自动生成什麽代码的。另,我习惯自己修改 /boot/grub/menu.lst
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表