1

我在虚拟盒中运行 Fedora 17。我正在尝试做一些内核开发。因此,我从kernel.org获取了源代码,然后执行了以下步骤:

make oldconfig
make
sudo make modules_install

这让我得到了bzImage我复制到的文件/boot。然后我运行grub2-mkconfig更新了我的 grub 条目。

现在我可以在 grub 菜单中看到我的自定义内核。但是,当我尝试运行它时,会出现以下屏幕:

在此处输入图像描述

我搜索了intel_agp错误,发现人们在他们的系统上同时拥有GPU和时遇到了这个错误intel graphics。但是我的GPU机器上没有。另外,我不确定是否安装了模块?

我在这里做错了吗?如何解决此错误?

4

2 回答 2

0

您的发行版看起来像 Ubuntu,对吗?如果是这样,那么生成 initrd 的命令是:

(假设您的当前目录与包含内核源代码的目录相同)

update-initramfs -c -k `cat include/config/kernel.release`

然后是:

update-grub 

initrd 和 rootfs 的逻辑(大致)是这样的:

首先做一个 blkid 和 df:

blkid
/dev/sda5: UUID="251ce906-e4db-4eac-a2c7-58d5e1ed86a3" TYPE="reiserfs" 

df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda5             24412432  22360832   2051600  92% /
none                   2959228      2352   2956876   1% /dev

你会看到 rootfs 位于 /boot 所在的 reiserfs 上。所以这意味着当内核加载时 reiserfs 内核模块必须在那里,否则它无法读取 /boot,vmlinuz 内核映像喜欢的地方。所以initrd就是为了这个目的。

使用 initrd(你可以随时执行 gunzip -c existing_initrd_file | cpio -idmv)解压内容并查看所有 fs.*ko 文件。我的是:

./lib/modules/2.6.32-33-generic/kernel/fs/reiserfs/reiserfs.ko
./lib/modules/2.6.32-33-generic/kernel/fs/nfs_common/nfs_acl.ko

然后你尝试将其与配置文件匹配:

CONFIG_REISERFS_FS=m

但是如果你已经完成了 CONFIG_REISERFS_FS=y,那么你将不需要在 initrd 中的 reiserfs.ko。

总之,您现在的问题是缺少 initrd 文件,或者如果在命令行中指定了 initrd 文件,则 initrd 中缺少必要的 fs 内核模块,这将使您能够读取 /boot 目录。

是的,这也不完全正确,当涉及 grub2 时 - /boot/grub 将包含它自己的 fs 内核模块来加载 /boot 目录,并且 grub.cfg 将具有必要的 insert reiserfs 语句来加载模块。对不起,太多细节无法描述。

于 2012-06-12T12:17:43.370 回答
0

您的问题不是缺少 intel_agp 模块。你的问题是下一行,它说你不能挂载你的根文件系统。最可能的原因是您缺少一个 initramfs,它包含您的根块设备或文件系统的驱动程序。

我并不是真正的 Fedora 专家,但您可能需要mkinitrd生成一个 initramfs 之类的东西,它还需要进入 /boot 并包含在您正在构建的新模块的 grub 配置中。

或者您可以将内核配置更新为内置(即,将配置选项设置为“y”而不是“m”)您需要构建的所有内容。但这需要对您的系统及其所需的 Linux 驱动程序有相当多的了解。

于 2012-06-11T02:59:04.070 回答