カーネルパッチを適用する必要があるので、カーネルの構築に取り掛かりました。まずソースを取得し、依存関係を構築しました。
# apt-get source linux-image-`uname -r`
# apt-get build-dep linux-image-`uname -r`
ソースディレクトリに入り、パッチを適用し、現在のカーネル構成を取得してビルドを実行しました。
# cp -vi /boot/config-`uname -r` .config
# make-kpkg --initrd --append-to-version=-test kernel-image kernel-headers
最後に、../で作成されたDEBから新しくビルドされたカーネルをインストールしました。
# dpkg -i linux-image-3.13.11.4-test_3.13.11.4-test-10.00.Custom_i386.deb
# dpkg -i linux-headers-3.13.11.4-test_3.13.11.4-test-10.00.Custom_i386.deb
再起動時にGrubメニューにカーネルが見つかりましたが、起動しようとすると
Gave up waiting for root device
...
ALERT! /dev/disk/by-uuid/[my-correct-disk-uuid-here] does not exist.
結果のBusyBoxプロンプトで/dev/を見てみましたが、ディスクドライブは存在しません。これは、ディスクコントローラのカーネルモジュールがロードされていないことを示しているようです(/proc/modulesにはありません)。しかし、これを入力しているときに実行しているのと同じカーネルバージョンを使用しているのに、なぜこのようなことが起こるのでしょうか。同じ構成で? カーネルの構築は、私が日常的に行うものではなく、また楽しみのために行うものでもありませんので、この点についてご助力いただければ幸いです。
編集:Grub コマンドラインで /dev/sd** 構文を使用してみましたがroot=
、結果は同じでした。つまり、UUID ルックアップが失敗しているわけではなく、ディスク コントローラが存在しないのです。参考までに、このマシンは Intel の 855PM チップセット (PATA HDD) を搭載した Thinkpad X32 です。
答え1
さて、UUID エラーのため、ファイル システム情報 (UUID) がマウントされる場所である /etc/fstab の情報を確認する必要があると感じています。
まず、古いカーネルまたはライブディスク セッションで起動します。
ルート パーティションの UUID を見つけるには、次のコマンドを実行します。
sudo blkid -o list
出力は次の例のようになるはずです。
/dev/sda1 ext4 home / bac7229a-e019-5679-931d-5e14f15ff4bc
/dev/sda2 ntfs c (not mounted) 40Ajghyr-65uB-EA5C-7y8y9t6g54j5
/dev/sda3 ext4 (not mounted) 640565a9-310b-5d6r-8d8v7-e887do893f80
/dev/sda5 ext4 (not mounted) e777547b-3a3a-7tgd-9a12-2769wsrbd92
/dev/sda6 swap <swap> d72b694e-4976-3333-hso5-7894e6s9d2
次に、「nano」、「vi」、「gedit」、「mousepad」など、お気に入りのテキスト エディターを使用して、/etc/fstab 内のルート パーティションにリストされている UUID を編集または確認します。この例では、nano を使用します。
sudo nano /etc/fstab
さて、私たちの情報によると、暗号化されていない、" / " にマウントされた単一パーティション設定を使用していると仮定すると、/etc/fstab 情報は次のようになります。
# / was on /dev/sda1 during installation
UUID=bac7229a-e019-5679-931d-5e14f15ff4bc / ext4 errors=remount-ro 0 1
# swap was on /dev/sda6 during installation
UUID=d72b694e-4976-3333-hso5-7894e6s9d2 none swap sw 0 0
/etc/fstabの情報が間違っていて、それに応じて情報を更新した場合、今必要なのは再起動することだけです/etc/fstab は grub の後にロードされ、initrd.img の構成とは直接関連付けられていないためです。
(システムは /etc/fstab の情報を読み取り、そこから正しいパーティションを自動的にロードします)
これで問題が解決しない場合、または /etc/fstab の情報が正確である場合は、次を実行する必要があります。
sudo update-initramfs -v -c -k all
「all」を特定のカーネルバージョンに置き換えることもできます既存の initrd イメージをすべて更新したくない場合は (この方法では起動しないイメージだけを更新できます)、詳細についてはここを参照してください。https://stackoverflow.com/questions/9645073/how-to-make-an-initrd-img-in-ubuntu
すべてがうまくいったら、以下を忘れずに実行してください:
sudo update-grub2
再起動する前に。
間違いがあれば投稿してください。