LinuxSir.cn,穿越时空的Linuxsir!

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

怎么又是这个错误?内核镜像怎么不见了?

[复制链接]
发表于 2006-9-28 19:39:20 | 显示全部楼层 |阅读模式
我用genkernel编译内核,
#USE="-doc symlink" emerge gentoo-sources
#emerge genkernel
#genkernel all
#ls /boot/kernel(此时按Tab,会自动补全为kernel-genkernel-x86_64-2.6.17-gentoo-r5),说明/boot下面有内核镜像吧?
#ls /boot/initramfs(Tab也是同样的情况)
但是当我装到后面,grub都设置好了,再重新ls一下,发现这两个文件不见了,为什么呢?

装完重启后在grub引导时就提示出错了(文件找不到)
我的grub.conf内容:(略去title之前的部分)
root (hd0,0)
kernel /kernel-genkernel-x86_64-2.6.17-gentoo-r5 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3 udev
initrd /initramfs-genkernel-x86_64-2.6.17-gentoo-r5

我曾经试过改成 kernel /boot/kernel-ge............   initrd /boot/initramfs-ge.........(这两个名都是和之前按Tab补全的结果一致的),还是不行,也试过
cp /usr/src/linux/arch/x86_64/boot/bzImage /boot/kernel-genkernel-........(名字和grub.conf的一致),但也还是不行.......

实在没辙了,唉。。。。

之前我也发过一个类似问题贴,但那次是手动编译的内核,设置grub.conf比较简单,虽然出现同样的问题,但把 /boot 去掉就好了,这次不行,

分区情况:
/dev/hda1       /boot
/dev/hda3       /
发表于 2006-9-28 21:36:01 | 显示全部楼层
我的是这样的,从格式看你的应该没什么问题:

title=Gentoo Linux (2.6.17-gentoo-r8)
root (hd1,1)
kernel /kernel-genkernel-x86-2.6.17-gentoo-r8 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hdb4
initrd /initramfs-genkernel-x86-2.6.17-gentoo-r8

觉得你有点不够小心,为什么不ls -l一下确认呢?

还有“装到后面文件就不见了”,中间都作了些什么呢?

不见了就不要重新启动嘛。

“文件找不到”的错误信息是什么?

先用LiveCD挂上/boot看看里面有什么文件吧
回复 支持 反对

使用道具 举报

发表于 2006-9-28 22:13:23 | 显示全部楼层
/dev/hda1       /boot
/dev/hda3       /
[color="Red"]root (hd0,0)
kernel /kernel-genkernel-x86_64-2.6.17-gentoo-r5 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3 udev
initrd /initramfs-genkernel-x86_64-2.6.17-gentoo-r5

直接在grub界面,按c,root (hd,0)--> kernel /boot/kernel.....补全试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-28 22:35:27 | 显示全部楼层
Post by 林文清
觉得你有点不够小心,为什么不ls -l一下确认呢?

还有“装到后面文件就不见了”,中间都作了些什么呢?


呵呵,下次装打算每做一步都 ls 一次,这样就知道在哪一步会不见了,
不过我觉得很可能在 emerge grub 的时候弄不见的,因为其他步骤都是手动写配置文件,不太可能会把文件弄丢了,就装 grub 这步写了 /boot 分区。

关键是,不见了这两个文件,我不知道从哪里可以拷贝回来,——之前不使用 genkernel 安装成功过一次的,但对于我的硬件,我不确定该将什么模块编入内核,因此想用 genkernel 将所有模块全编上,再看看系统加载了哪些模块,为下次重装手动编译内核做准备,不想第一次就遇到这样的问题。
回复 支持 反对

使用道具 举报

发表于 2006-9-28 23:00:00 | 显示全部楼层
或许你应该先熟悉一下编译内核,再用手动的方法安装gentoo
试试重新编译一下内核,再改一下grub.conf看看,这样grub应该不会破坏/boot里的文件了。

又或者先用LiveCD挂一下你的/boot分区看看问题出在哪:)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-29 14:09:15 | 显示全部楼层
Post by 林文清
或许你应该先熟悉一下编译内核,再用手动的方法安装gentoo
试试重新编译一下内核,再改一下grub.conf看看,这样grub应该不会破坏/boot里的文件了。

又或者先用LiveCD挂一下你的/boot分区看看问题出在哪:)


^_^,重装了一遍,这次是手动编译内核的,我每一步都ls了,结果和预想的一样,在 emerge grub 之前文件还在,emerge grub 之后就没有了。——不过对我装系统来说,没影响,因为手动编译内核的话,我知道从哪里拷贝内核文件到/boot下,重新拷贝一次就OK了,之后设置grub.conf以及启动都正常。

至于自动编译genkernel all,只是为了找出我的硬件需要哪些匹配的模块而已,手动编译一个尽可能符合自己硬件的内核是一定要学的,也是最终目的。

我是新手,经验不是很足,大家怎么确定内核中哪些模块是自己硬件需要的?哪些是不需要的?是不是用 liveCD,lsmod 和 lspci 查看?但我觉得这样查到的好像不是最简的,比如说我明明没有软驱,lsmod 都有软驱的模块。

我想现在转为讨论这个,emerge grub 为什么把 /boot 下的文件弄丢的问题,呵呵...^_^
回复 支持 反对

使用道具 举报

发表于 2006-9-29 14:26:35 | 显示全部楼层
lsmod只是在你确定有某个硬件但不知道他的模块名字时用来确认的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-29 14:36:15 | 显示全部楼层
Post by zhllg
lsmod只是在你确定有某个硬件但不知道他的模块名字时用来确认的

哦,原来如此,难怪每次 lsmod 都觉得有些多余的模块,就是自己明明没有那个硬件.....
那 lspci 的结果又怎么利用呢?什么时候需要参考 lspci 的结果?
谢版主。
回复 支持 反对

使用道具 举报

发表于 2006-9-29 14:52:03 | 显示全部楼层
大致搜了一下,好象很少有遇到这个问题的,grub install过程中破坏/boot的文件。

至于编译内核,我认为不用看LiveCD的lsmode,LiveCD是为大部分机器都能启动而编译的内核,驱动什么的编了很多进去,如果自己照做,内核会显得很臃肿。

我的做法是记下自己的显卡、声卡等硬件类型(显卡、CPU类型、主板芯片这些启动的时候就能看到,声卡网卡可以lspci),然后在编译内核的时候注意看自己机器上有的就选支持,没明显没有的就去掉。

编译内核,我的经验主要是多编译积累出来的,基本都是一个个选项看help,目前也没什么特别的文档可以学习,kernel的help大概是最好最全的文档了。

我觉得硬件支持只是内核的功能的很小的一部分,里面还有很多很深奥的东西,有时候显卡驱动装不上(比如你选了nv的 fb支持,就会和驱动冲突),或者一些东西始终emerge不过,都有可能是内核的配置不符合要求(比如网络的选项)。

在保持内核精简的基础上,满足其他程序运行的所有要求,应该是自己动手编译内核所追求的吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-29 20:50:48 | 显示全部楼层
Post by 林文清
我的做法是记下自己的显卡、声卡等硬件类型(显卡、CPU类型、主板芯片这些启动的时候就能看到,声卡网卡可以lspci),然后在编译内核的时候注意看自己机器上有的就选支持,没明显没有的就去掉。

编译内核,我的经验主要是多编译积累出来的,基本都是一个个选项看help,目前也没什么特别的文档可以学习,kernel的help大概是最好最全的文档了。

多谢分享经验,我会在这方面下点功夫的,另外问问,kernel 的 help 可以在哪个网站下载么?想打印出来看。
回复 支持 反对

使用道具 举报

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

本版积分规则

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