LinuxSir.cn,穿越时空的Linuxsir!

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

Gentoo启动时 能用ubuntu的内核么?

[复制链接]
发表于 2010-3-25 15:09:45 | 显示全部楼层 |阅读模式
如题 ,如果能 要怎么操作啊,我按了N次Gentoo总是启动不了,我还有个ubuntu正常使用 ,我把它的内核文件已经复制出来了  怎么弄?
呜呜呜 谁帮帮我呀
发表于 2010-3-25 16:00:20 | 显示全部楼层
我试过MIPS debian内核用在Gentoo上没问题,记得把/lib/下的modules和firmware两个文件夹也考过去。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-25 16:12:13 | 显示全部楼层
哦 就是单纯的复制么?
我在ubuntu中 为什么复制不进去呢?我的gentoo boot在单独的一个分区里
回复 支持 反对

使用道具 举报

发表于 2010-3-25 16:24:40 | 显示全部楼层
单纯地复制,但如果你的gentoo安装了依赖于linux-headers的程序,并且新的内核和老的内核提供的linux-headers不同的话,需要把对应版本的linux-headers复制过来然后重新编译这些程序,另外,如果拷贝过来的内核用了initrd,可能要重新生成initrd。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-25 17:39:51 | 显示全部楼层
哇 zeyata 说的太专业 呵呵我是新手昂  你能具体帮帮我么? 我的QQ号 38352959
回复 支持 反对

使用道具 举报

发表于 2010-3-25 18:31:43 | 显示全部楼层
Post by VIDEN;2077813
哇 zeyata 说的太专业 呵呵我是新手昂  你能具体帮帮我么? 我的QQ号 38352959
新手不是理由啊,这些东西虽然基本,也不是一两个回帖能说清的,你看不懂,总可以按照你不懂的关键词在google里搜吧,教程很多。就我个人来说,不鼓励太新的新手装gentoo,建议你试一下archlinux,了解一点基础知识,一两个月后差不多就行了。
回复 支持 反对

使用道具 举报

发表于 2010-3-25 18:38:29 | 显示全部楼层
Post by VIDEN;2077787
哦 就是单纯的复制么?
我在ubuntu中 为什么复制不进去呢?我的gentoo boot在单独的一个分区里
复制不进去是什么意思?是不是你在ubuntu使用用户帐户权限不够?你应该使用sudo cp -a命令,而不是在nautilus里把文件拖过去。

当然,不要把gentoo的根分区挂载成只读的。不过默认的挂载状态就是可写的。
回复 支持 反对

使用道具 举报

发表于 2010-3-25 18:39:59 | 显示全部楼层
如果因为内核启动不了,可以按手册上的说明 安装genkernel 这样一般不会出问题
回复 支持 反对

使用道具 举报

发表于 2010-3-25 18:55:26 | 显示全部楼层
这样的事情我没做过,我上面说的只是根据我对linux以及debian/gentoo发行版的知识进行的推测。我个人认为把其它版本的内核用在gentoo上比自己编译内核还麻烦,不推荐这么做。

就拿debian系发行版来说,你用过ubuntu,可能注意到ubuntu安装很多软件包时会触发重新生成initrd的操作,这是因为debian系的initrd在新安装的系统上不一定包含对这些软件包需要的内核模块的挂摘,所以需要更新。
举个例子,ntfs-3g这个软件包需要内核fuse相关模块,但新安装的ubuntu系统里的initrd可能不包含这些模块。
由此,很难判断你正在使用的ubuntu内核在启动时是否会挂摘你在gentoo上已经安装或以后需要安装的软件包依赖的内核模块。
以上是initrd带来的问题。大多数人安装gentoo内核都不会使用initrd方式,而宁愿采用把大多数需要的模块编译进内核,少数在kernel启动后自动或手工挂摘,就是因为initrd麻烦。
initrd方式在大多数二进制发行版中被采用是为了能尽量支持各种各样的硬件配置,而gentoo这种基于源码的发行版没有这种需求,所以不推荐使用。

至于内核头文件,这个问题好理解,有些库或程序需要知道内核的一下信息,内核头文件就提供这类信息。虽然内核头文件相比内核其它部分变化的速度慢得多,但不同版本也不是完全兼容的。
在我的gentoo系统里,我还没换内核,~x86关键词也没开启,正使用gentoo默认的内核。
  1. miahiu ~ # equery d linux-headers
  2. [ Searching for packages depending on linux-headers... ]
  3. media-video/ffmpeg-0.5_p20373 (v4l? sys-kernel/linux-headers)
  4.                               (v4l2? sys-kernel/linux-headers)
  5. net-misc/iputils-20071127 (virtual/os-headers)
  6. net-misc/openssh-5.3_p1-r1 (virtual/os-headers)
  7. sys-apps/baselayout-1.12.13 (virtual/os-headers)
  8. sys-apps/hal-0.5.13-r2 (kernel_linux? >=sys-kernel/linux-headers-2.6.19)
  9. sys-apps/sysvinit-2.87-r3 (virtual/os-headers)
  10. sys-apps/util-linux-2.16.2 (virtual/os-headers)
  11. sys-fs/udev-149 (>=sys-kernel/linux-headers-2.6.29)
  12. sys-libs/glibc-2.10.1-r1 (virtual/os-headers)
  13.                          (>=sys-kernel/linux-headers-2.6.9)
  14. sys-libs/libcap-2.17 (sys-kernel/linux-headers)
  15. x11-drivers/xf86-input-evdev-2.3.2 (>=sys-kernel/linux-headers-2.6)
复制代码
  1. miahiu iotop # eix linux-headers
  2. [i] sys-kernel/linux-headers
  3.      Available versions:  2.4.33.3!b!s ~2.4.36!b!s 2.6.23-r3!b!s 2.6.27-r2!b!s ~2.6.28-r1!b!s ~2.6.29!b!s 2.6.30-r1!b!s ~2.6.32!b!s ~2.6.33!b!s
  4.      Installed versions:  2.6.30-r1!b!s(18:41:55 03/19/10)
  5.      Homepage:            http://www.kernel.org/ http://www.gentoo.org/
  6.      Description:         Linux system headers
复制代码
从中可以看出linux内核2.6.30和2.6.32和2.6.33的头文件就不一样。
如果更换的内核版本变化太大,而不基于相应的内核头文件重新编译的话,很有可能不能正常工作。其中最核心的库glibc都得依赖于linux-header,那也就是说几乎整个系统都依赖于linux-headers。所以如果更换前后的内核版本差别太大,最好谨慎些。当然,如果只是为了避免自己编译内核而拿来一个相同版本的内核,不会有这方面的问题。
回复 支持 反对

使用道具 举报

发表于 2010-3-25 19:39:29 | 显示全部楼层
lz最好别这么干,

不同版本的内核提供的系统调用可能有少许变化,对应的glibc也可能不同,也就是说你没办法保证API相同,

而且你根本不能保证构建ubuntu kernel的gcc和构建gentoo stage3的gcc的版本相同,也就是说你没有办法保证ABI相同,

就算是你勉强启动了系统也很难保证能正常运行,

另外,你学gentoo就一定得会编译内核。
回复 支持 反对

使用道具 举报

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

本版积分规则

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