1

仮想ボックスで Fedora 17 を実行しています。カーネル開発をしようとしています。そのため、 kernel.orgからソースを取得し、次の手順を実行しました。

make oldconfig
make
sudo make modules_install

これにより、bzImageコピー先のファイルが得られました/boot。次にgrub2-mkconfig、grubエントリを更新して実行しました。

これで、grub メニューにカスタム カーネルが表示されます。ただし、実行しようとすると、次の画面が表示されます。

ここに画像の説明を入力

エラーを検索したところ、システムにとintel_agpの両方がある場合にこのエラーが発生することがわかりました。しかし、私のマシンには がありません。また、モジュールがインストールされているかどうかわかりませんか?GPUintel graphicsGPU

ここで何か間違ったことをしていますか?このエラーを解決するにはどうすればよいですか?

4

2 に答える 2

0

あなたの問題は intel_agp モジュールの欠落ではありません。問題は、ルート ファイル システムをマウントできないという次の行です。最も可能性の高い理由は、ルート ブロック デバイスまたはファイル システムのドライバーを含む initramfs がないことです。

私は Fedora の専門家ではありませんが、おそらくmkinitrdinitramfs を作成する必要があり、これも /boot に移動し、構築している新しいモジュールの grub 構成に含める必要があります。

または、ビルドに必要なすべてのものを組み込むようにカーネル構成を更新できます (つまり、構成オプションを 'm' ではなく 'y' に設定します)。ただし、それには、システムと必要な Linux ドライバーについてかなりの知識が必要です。

于 2012-06-11T02:59:04.070 に答える
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 カーネル モジュールが存在する必要があることを意味します。そうしないと、vmlinuz カーネル イメージが好む /boot を読み取ることができません。したがって、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 ファイルが指定されている場合、必要な fs カーネル モジュールが initrd にないため、/boot ディレクトリを読み取ることができません。

はい、これも完全には正しくありません。grub2 が関係している場合、/boot/grub には /boot ディレクトリをロードするための独自の fs カーネル モジュールが含まれ、grub.cfg にはモジュールをロードするために必要な insert reiserfs ステートメントが含まれます。申し訳ありませんが、説明するには詳細が多すぎます。

于 2012-06-12T12:17:43.370 に答える