web-dev-qa-db-ja.com

ルートデバイス14.04を待ってあきらめた

これを修正する方法はたくさんありますが、私の場合は解決策を適用できませんでした。

私の状況は次のとおりです。

  • Ubuntu 12.04は完全に動作しています
  • Ubuntu 14.04をインストールしました
  • 14.04を起動しようとしたときにエラーが発生しました(12.04は正常に動作しています)

14.04でusbスティックを使用し、12.04で作業しているので、修正を適用したり、さらにデバッグしたりできます。

Sudo grub-updateを実行すると、次のことがわかります。

> Generating grub.cfg ... Found linux image:
> /boot/vmlinuz-3.5.0-52-generic Found initrd image:
> /boot/initrd.img-3.5.0-52-generic Found linux image:
> /boot/vmlinuz-3.5.0-46-generic Found initrd image:
> /boot/initrd.img-3.5.0-46-generic Found linux image:
> /boot/vmlinuz-3.5.0-45-generic Found initrd image:
> /boot/initrd.img-3.5.0-45-generic Found linux image:
> /boot/vmlinuz-3.5.0-23-generic Found initrd image:
> /boot/initrd.img-3.5.0-23-generic Found memtest86+ image:
> /boot/memtest86+.bin Found Ubuntu 14.04 LTS (14.04) on /dev/sda6 
> done

私が試した解決策の1つは、grub menueを押し、IDを/dev/sda6に置き換えることでしたが、何も変わりません。

問題の原因は何ですか?また、12.04を使用してGRUBを修正する簡単な方法はありますか?


enter image description here

enter image description here


enter image description hereenter image description here

    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
    linux   /boot/vmlinuz-3.5.0-52-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro   quiet splash $vt_handoff
    initrd  /boot/initrd.img-3.5.0-52-generic
}
--
    search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
    echo    'Loading Linux 3.5.0-52-generic ...'
    linux   /boot/vmlinuz-3.5.0-52-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro recovery nomodeset 
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-3.5.0-52-generic
--
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
    linux   /boot/vmlinuz-3.5.0-46-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro   quiet splash $vt_handoff
    initrd  /boot/initrd.img-3.5.0-46-generic
}
--
    search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
    echo    'Loading Linux 3.5.0-46-generic ...'
    linux   /boot/vmlinuz-3.5.0-46-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro recovery nomodeset 
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-3.5.0-46-generic
--
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
    linux   /boot/vmlinuz-3.5.0-45-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro   quiet splash $vt_handoff
    initrd  /boot/initrd.img-3.5.0-45-generic
}
--
    search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
    echo    'Loading Linux 3.5.0-45-generic ...'
    linux   /boot/vmlinuz-3.5.0-45-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro recovery nomodeset 
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-3.5.0-45-generic
--
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
    linux   /boot/vmlinuz-3.5.0-23-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro   quiet splash $vt_handoff
    initrd  /boot/initrd.img-3.5.0-23-generic
}
--
    search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
    echo    'Loading Linux 3.5.0-23-generic ...'
    linux   /boot/vmlinuz-3.5.0-23-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro recovery nomodeset 
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-3.5.0-23-generic
--
    set root='(hd0,msdos6)'
    search --no-floppy --fs-uuid --set=root ee707b14-31a7-4f86-a6e5-1b9aa38bdd68
    linux /boot/vmlinuz-3.13.0-30-generic root=UUID=ee707b14-31a7-4f86-a6e5-1b9aa38bdd68 ro nomodeset quiet splash $vt_handoff
    initrd /boot/initrd.img-3.13.0-30-generic
}
--
    set root='(hd0,msdos6)'
    search --no-floppy --fs-uuid --set=root ee707b14-31a7-4f86-a6e5-1b9aa38bdd68
    linux /boot/vmlinuz-3.13.0-30-generic root=UUID=ee707b14-31a7-4f86-a6e5-1b9aa38bdd68 ro nomodeset quiet splash $vt_handoff
    initrd /boot/initrd.img-3.13.0-30-generic
}
--
    set root='(hd0,msdos6)'
    search --no-floppy --fs-uuid --set=root ee707b14-31a7-4f86-a6e5-1b9aa38bdd68
    linux /boot/vmlinuz-3.13.0-30-generic root=UUID=ee707b14-31a7-4f86-a6e5-1b9aa38bdd68 ro recovery nomodeset nomodeset
    initrd /boot/initrd.img-3.13.0-30-generic
}
--
    set root='(hd0,msdos6)'
    search --no-floppy --fs-uuid --set=root ee707b14-31a7-4f86-a6e5-1b9aa38bdd68
    linux /boot/vmlinuz-3.13.0-24-generic root=UUID=ee707b14-31a7-4f86-a6e5-1b9aa38bdd68 ro nomodeset quiet splash $vt_handoff
    initrd /boot/initrd.img-3.13.0-24-generic
}
--
    set root='(hd0,msdos6)'
    search --no-floppy --fs-uuid --set=root ee707b14-31a7-4f86-a6e5-1b9aa38bdd68
    linux /boot/vmlinuz-3.13.0-24-generic root=UUID=ee707b14-31a7-4f86-a6e5-1b9aa38bdd68 ro recovery nomodeset nomodeset
    initrd /boot/initrd.img-3.13.0-24-generic
}
2
gotqn

上記のエラーの2つの考えられる原因は次のとおりです(インストールが完全に壊れていないことを前提としています)。

a)Grubが14.04のブートに正しいルートをロードしていない

b)14.04インストールのfstabおよび/またはinitrdのルートのエントリが壊れています。

問題のコメントを考えると、a)が原因になる可能性は低いようです。その理由は、grubでroot =/dev/sda6に置き換えても役に立たなかったからです。 12.04 grubエントリは正しいように見えますが、実際のgrubインストールは現在14.04である可能性があります(フロントgrubブートページに表示されるエントリから確認でき、14.04と12.04は代替画面に表示されます)。そのため、先に述べたように、12.04 grubに置き換えることを最初に試すことができますが、おそらく問題ではありません。作業中の12.04環境から:

Sudo grub-install /dev/sda

オプション:Sudo gedit /etc/default/grub、GRUB_HIDDEN_TIMEOUTとGRUB_TIMEOUTの両方がゼロ以外の10(タイムアウト10秒)を選択できるように、grubにタイムアウトが設定されていることを確認してから、Sudo update-grubを実行します。再起動すると、フロントブート画面に12.04が表示され、14.04が代替画面に表示されます。 14.04が動作するようになったら、完了です。14.04環境からSudo grub-install /dev/sdaを実行して、14.04のgrubをインストールするだけです。それ以外の場合、次のようにb)の修正を試みます。

B)については、2つの方法があります。 1つは、ライブCDから起動し、既存のインストールをマウントして修正することです。その他は、作業中の12.04インストールから修正することです。 1つ目のオプションはかなり似ていますが、既存の12.04インストールの代わりにライブCDで起動するという違いがありますが、2つ目について詳しく説明します。

12.04で起動したら、最初にルートシェルにドロップして、Sudoの繰り返し呼び出しを避けます:Sudo -i

ここで、14.04のインストール(たとえば/mnt/trusty)とchrootをマウントして、14.04をそのシェルの新しいルートとしてインストールします(そして、シェルを14.04として効果的に作成します)。昔のLinuxの時代には、これはシェルから14.04環境で動作するのに十分でしたが、新しいカーネルでは/devのデバイスファイルのほとんどが動的になり、udevデーモンに置き換えられました。最初に多くのこと。ただし、fstab/initrdを修正する目的では、そのままで問題ありません。それでも、警告/エラーを回避するためにいくつかのことを行う必要があります-現在のmtabをコピーしてprocをマウントします.

mkdir /mnt/trusty
mount /dev/sda6 /mnt/trusty
cp /etc/mtab /mnt/trusty/etc/mtab

この時点で、chrootingの前にfstabをチェックして修正し、14.04カーネルのinitrdイメージを再生成する準備が整いました。それを開いて:gedit /mnt/trusty/etc/fstab、最初のコメント化されていない行にルート(/)のマウントポイントの正しいUUIDがあることを確認します。この場合、14.04のルート/ dev/sda6のUUIDがee707b14-31a7-4f86-a6e5-1b9aa38bdd68であることがわかりました。したがって、fstabがUUIDを修正し、fstabを保存して閉じることも同じことを示していることを確認してください。これで、initrdを再生成できます。

chroot /mnt/trusty
mount -t proc proc /proc
update-initramfs -k all -c

これはエラーなしで終了するはずです。次に/ procをアンマウントし、chroot環境からログアウトし、14.04をアンマウントします。

umount /proc
exit
umount /mnt/trusty

ここでリブートして、14.04を開始してみてください。正常に起動したら、前述の14.04のgrubに置き換えます。14.04環境のSudo grub-install /dev/sda。また、chrooted環境にいくつかの違いがあった場合に備えて、14.04環境内からinitrdを再生成することをお勧めします:Sudo update-initramfs -k all -c

4
sumwale

私は同じエラーメッセージを受け取りましたが、何も助けませんでした。私の場合、エラーはファイルシステムの破損であることが判明しました。ディスクからの読み取りに失敗していました。

Linuxドライブ(/ dev/sdaN)で-fオプションを指定してfsckを実行することで修正しました。その方法で、fsckにドライブのエラーチェックを強制し(最後のチェックからフラグを読み取るだけではなく)、見つかったエラーを手動で修正しました。

エラーが修正されると、システムは再起動後にオンラインに戻りました。これがお役に立てば幸いです。

1
Projjwal