「エッセンシャルLinuxデバイスドライバー」という本を読み始めました。新しいカーネルをコンパイルして起動するプロセスに従っています。ただし、新しくコンパイルされたカーネルを起動できません。grubで新しいカーネルを選択すると、何も表示されません。画面は同じままです。
この本で説明されているように、私が取っている手順は次のとおりです(この本の基になっているので、カーネル2.6.24を使用しています)。
cd /usr/src/linux-2.6.24 # the base dir of the kernel I downloaded
make clean
cp Arch/x86/configs/i386_defconfig .config
make bzImage
cp Arch/x86/boot/bzImage /boot/vmlinuz
本はそれを言います:
新しいブートイメージの到着についてブートローダーに警告する必要がある場合があります。 GRUBブートローダーを使用している場合、これは自動的に計算されます。
私の場合、GRUBでこのカーネルを選択するオプションがなかったため、自動的に認識されませんでした。そのため、ターミナルでupdate-grubと入力して手動で行いました。そして、これもうまくいきませんでした。ただし、ファイル名をvmlinuzからvmlinuz-2.6.24に変更し、update-grubと入力すると、ファイル名が取得されました。そのため、本の11ページでは、すでに複数のものが除外されているようです。
この本には、マシンを再起動するように書かれています。
とにかく、GRUB)でこのカーネルを選択できるようになりましたが、上記のように正しく起動しないため、画面に何も表示されず、変更されません。この本の指示に正確に従った。私はこの本に50ユーロを費やした後、この問題のために11ページを超えることができなくなった。
VirtualBoxでUbuntuを使用しているという事実は問題ではないと思いますか?私は仮想マシンUbuntuの起動中にgrubに入り、新しくコンパイルされたカーネルを選択するだけで、それがどのように問題になるのかわかりません。
Ubuntuには、Debianからインポートされたスクリプトがインストールされています。カーネルをコンパイルした後、Sudo make modules_install install
を実行するだけで、カーネルが正しくインストールされます。
後で編集: ここ はUbuntuとDebianが使用するスクリプトです。上記のインストールコマンドを発行し、ディストリビューション固有のインストールを実行すると、カーネルMakefileによって自動的に呼び出されます。
各Linuxディストリビューションには、パッケージの展開に関する独自のメカニズムとポリシーがあります。これはカーネルでも同じです。ほとんどのディストリビューションは、ほとんどの場合バイナリパッケージを提供するツールでコンパイルプロセスを隠しています。
特定のLinuxディストリビューションでカスタムカーネルをコンパイルする場合は、システムを壊さずにコンパイルする方法について、このディストリビューションのハウツーに従う必要があります。
Ubuntuには、Achlinuxでも同じ、Redhatでも同じ、Gentooでも同じ方法があります。
したがって、Ubuntuの場合は、こちらのドキュメントに従ってください https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel
Grub.confファイルには、これに類似したエントリが含まれている必要があります
title My Linux Kernel
root (hd0,0)
kernel /boot/gentoo-kernel root=/dev/sda1
あなたのUbuntuカーネルは次のようなものを持っているかもしれません
initrd /boot/initrd.img
ハードウェアでカーネルをコンパイルするときには、これは必要ありません。これが問題の原因である可能性があります。
Grub.confファイルにコメントしてください。それを見ていきます。さもなければ、あなたの設定は責任があるかもしれません。
古いカーネルには、新しいハードウェアに必要なドライバーがない場合もあります。
新しいubuntuシステムは、多くの問題なしに古いカーネルバージョンに戻ることはありません。
そのカーネルバージョンに近いバージョンまたはkernel.orgの最新のカーネルバージョンを実行する古いubuntuを試すことができます。