LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: Untitled

安装Gentoo出错,请大虾出手看看,可怜我的P3编译了2天2夜啊

[复制链接]
发表于 2009-1-9 11:28:07 | 显示全部楼层
对内核不了解的话最好用genkernel

以后可以自己慢慢调整

一开始装系统的话还是稳定为主
回复 支持 反对

使用道具 举报

发表于 2009-1-9 11:52:26 | 显示全部楼层
你有用uvesafb嗎?我也是同样的错误就改用vesafb了。

后来我把uvesafb编成module,在开机后modprobe也有这个stack overflow的问题,但起码不会因为影响到重要的swapper而kernel panick。反正vesafb也用得很开心就没有心情去弄uvesafb了。

试试kernel parameter只用一个root=/dev/sd??看能不能开机。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-10 11:02:51 | 显示全部楼层
重新编译内核之后已经可以启动,make menuconfig一个一个选项仔细对照了一遍。
回复 支持 反对

使用道具 举报

发表于 2009-1-10 11:05:05 | 显示全部楼层
Post by pxbfeiniao;1936117
另外建议,楼主到archlinxu版,找人要个archlinux的内核,用来启动。(arch默认能产生一个fallback的initrd.img,里面集成了很多启动所需的模块)

arch的内核可以用,但是initrd不行,因为里面有arch的启动脚本,而没有gentoo的。
回复 支持 反对

使用道具 举报

发表于 2009-1-10 12:29:37 | 显示全部楼层
Post by coderoar;1936507
arch的内核可以用,但是initrd不行,因为里面有arch的启动脚本,而没有gentoo的。

试了再说话!
你理解有误,initrd中的脚本只负责内核态的事物,一旦进入用户态,/sbin/init就接管了控制权。
回复 支持 反对

使用道具 举报

发表于 2009-1-10 14:08:11 | 显示全部楼层
Post by pxbfeiniao;1936527
试了再说话!

试了,不行。

的确,在说话前我并没有尝试。但是,我知道那不行,因为我试着读过、改过genkernel和mkinitrdcpio的代码,起码知道initrd的大致结构。那么你呢?
Post by pxbfeiniao;1936527
initrd中的脚本只负责内核态的事物,一旦进入用户态,/sbin/init就接管了控制权。

看来是你理解有误,核心态是特权状态,只有操作系统(包括驱动程序)才能运行在核心态,使用CPU支持的特权指令,无限制地对系统存储、外部设备进行访问。

而用户态属于非特权状态。initrd里的程序一般包括一个init脚本、一个很小的shell(gentoo中是busybox,功能较强,arch里是基于klibc的"sh",只有几个命令)、以及像modprobe这样的必备工具。这些程序都是普通的程序,只能运行在用户态,不能使用特权指令,只能通过调用系统API来实现那些需要特权的功能。

这一部分启动的具体过程是:
1. 运行initrd上的init脚本,进行挂载根分区前的准备
2. 加载根分区,启动initrd上的基于klibc的kinit(Arch)或根分区上的/sbin/init(Gentoo)

此时,在Gentoo里就会显示
  1. INIT: version *.** booting
复制代码
而Arch里是
  1. "Arch Linux\n"
  2. printhl "${C_H2}http://www.archlinux.org"
  3. printhl "Copyright 2002-2007 Judd Vinet"
  4. printhl "Copyright 2007-2008 Aaron Griffin"
  5. printhl "Distributed under the GNU General Public License (GPL)"
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-1-10 14:49:09 | 显示全部楼层
那就怪了,别说archulinux的内核,opensuse,mandriva,ubuntu等发行版的内核都可以启动gentoo(不要奇怪,我的电脑上有7,8个发行版).

我说使用archlinux的内核,包括三部分:/boot/vmlinuz26 ,/boot/kernel26.img,/lib/modules/2.6.xx-ARCH
你确定你用的archlinux的内核包含这三部分?mkinitcpio配置正确?

至于内核态,用户态,就算我理解有误吧!
回复 支持 反对

使用道具 举报

发表于 2009-1-10 15:14:39 | 显示全部楼层
用archlinux最新的内核作了试验(2.6.27.10),成功!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2009-1-10 15:58:16 | 显示全部楼层
OK,一个bug。这是由于我的根分区在lvm上。其实arch也在lvm上,但就啥事没有
  1. IP-Config: no devices to configure
  2. Waiting 0 s before mounting root device...
  3. kinit: cannot open root device dm-3(254,3)
  4. kinit: init not found!
  5. Kernel panic - not syncing: Attempt to kill init!
复制代码

必须在initrd里的init脚本里添加一行,让它停一下,等udevd配置好lvm,之后才能正确启动。
  1. ~ $ uname -a
  2. Linux * 2.6.27-ARCH #1 SMP PREEMPT Sun Dec 21 09:13:30 UTC 2008 x86_64 Intel(R) Core(TM)2 Duo CPU T8100 @ 2.10GHz GenuineIntel GNU/Linux
  3. ~ $ lsb_release
  4. LSB Version:        n/a
  5. ~ $ lsb_release -a
  6. LSB Version:        n/a
  7. Distributor ID:        Gentoo
  8. Description:        Gentoo Base System release 2.0.0
  9. Release:        2.0.0
  10. Codename:        n/a
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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