web-dev-qa-db-ja.com

USBスティックのインストールでのカーネルの更新がgrub-probeエラーで失敗する

Ubuntu 11.10のUSBスティックインストールを使用して、ハードウェアの問題を診断しています。

USBスティックは、Ubuntu Webサイトで推奨されているように、11.10イメージとpendrivelinux.comメソッドでセットアップされました。 USBスティックは8 GBです。

私のノートブックではUSBから直接起動できるため、HDDはMicro $ oftスタイルの起動構造のままです(Windows 7)。

O/Sを少し遊んだ(そして、私のHDDに15000個の再割り当てされたセクターがあることを知った)後、アップデートマネージャーはいくつかのアップデートをインストールするように促しました。カーネル更新(3.0.0.14)を除くすべてが正しく更新されました。

Grubエラーがあるようです:

ubuntu@ubuntu:/dev$ Sudo apt-get install
Reading package lists... Done  
Building dependency tree   
Reading state information... Done  
0 upgraded, 0 newly installed, 0 to remove and 21 not upgraded.  
3 not fully installed or removed.  
After this operation, 0 B of additional disk space will be used.  
Setting up linux-image-3.0.0-14-generic (3.0.0-14.23) ...  
Running depmod.  
update-initramfs: deferring update (hook will be called later)  
Examining /etc/kernel/postinst.d.  
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.0.0-14-generic /boot/vmlinuz-3.0.0-14-generic  
update-initramfs: Generating /boot/initrd.img-3.0.0-14-generic  
cryptsetup: WARNING: failed to detect canonical device of overlayfs  
cryptsetup: WARNING: could not determine root device from /etc/fstab  
run-parts: executing /etc/kernel/postinst.d/pm-utils 3.0.0-14-generic /boot/vmlinuz-3.0.0-14-generic  
run-parts: executing /etc/kernel/postinst.d/update-notifier 3.0.0-14-generic /boot/vmlinuz-3.0.0-14-generic  
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.0.0-14-generic /boot/vmlinuz-3.0.0-14-generic  
/usr/sbin/grub-probe: error: cannot find a device for / (is /dev mounted?).  
run-parts: /etc/kernel/postinst.d/zz-update-grub exited with return code 1

これは、インストールを繰り返し行おうとすると持続します。幸いなことに、システムは障害にもかかわらず常にブート可能な状態のままになります。

カーネルを更新するには特別な手順を踏む必要がありますか?これを乗り越えるために手動で対処する必要のある微妙なインストールの問題がありますか?

O/Sの古いバージョンで、少なくとも1人が 同じ問題 を持っています。ラップトップに再びアクセスできるようになったら、(前の質問で要求されたように)mountの出力を提供します。

編集:mountの結果:

/cow on / type overlayfs (rw)   
proc on /proc type proc (rw,noexec,nosuid,nodev  
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)  
fusectl on /sys/fs/Fuse/connections type fusectl (rw)  
udev on /dev type devtmpfs (rw,mode=0755)  
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)  
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)  
/dev/sdb1 on /cdrom type vfat  (rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)  
/dev/loop0 on /rofs type squashfs (ro,noatime)  
none on /sys/kernel/debug type debugfs (rw)  
none on /sys/kernel/security type securityfs (rw)  
tmpfs on /tmp type tmpfs (rw,nosuid,nodev)  
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)  
none on /run/shm type tmpfs (rw,nosuid,nodev)  
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)  
gvfs-Fuse-daemon on /home/ubuntu/.gvfs type Fuse.gvfs-Fuse-daemon (rw,nosuid,nodev,user=ubuntu)

編集#2:pendrivelinux.comフラッシュドライブユーティリティがこれに関与している可能性があると判断しました。 Ubuntuディストリビューションを含むUSBスティックはFAT32としてフォーマットされ、インストールされているブートローダーは実際にはGRUBではなく、boot_info_scriptスクリプトによるSYSLINUXです。

Grubがブートプロセスに一切関与していないことを考慮して、grub-probeが何をすべきか判断できないことは理にかなっています。

(これにより、カーネルの更新を試みる前にapt-getが依存関係としてgrubブートローダーをチェックしないのはなぜだろうと思います)

次のステップは、SYSLINUXをGRUB=で上書きし、その方法でスティックを起動できるようにしてから、更新が機能するかどうかを確認することです。

これを最初に突き刺したところ、システムが起動できなくなりました。grubがロードされていたため、カーネルをロードできましたが、rootとしてマウントするものがわかりませんでした。フラッシュドライブを再度ワイプして再インストールする必要がありました。

1
Adam Lawrence

あなたはあなたの問題を修正したようです(Windows 7を使用して...実際には解決策ではなく、とにかく)。私は解決策を見つけました。問題に遭遇する可能性のある他のユーザーのために、ここに投稿しています。

これを修正する方法を見つけました。インストールを中断する行は次のとおりです。

run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.0.0-15-generic /boot/vmlinuz-3.0.0-15-generic

(カーネルのバージョンはインストール環境によって異なる場合があります)

問題のあるファイルを編集して、Grubを更新する行にコメントを付けます。非常に小さなファイルなので、それほど難しくありません。

[〜#〜] note [〜#〜]:最初にファイルをバックアップする場合(通常は賢明なアイデアです)、別のディレクトリにコピーします(/rootは良いもの、/tmpは、再起動後も存続しないためです。同じフォルダでバックアップを作成する場合(/etc/kernel/postinst.d/)、それは同様に呼び出しになり、失敗します。

編集/etc/kernel/postinst.d/zz-update-grub 15行目をコメントアウトします。

前:

    */postinst.d/*:|*/postinst.d/*:configure|*/postrm.d/*:|*/postrm.d/*:remove)
        exec update-grub
        ;;

AFTER:

    */postinst.d/*:|*/postinst.d/*:configure|*/postrm.d/*:|*/postrm.d/*:remove)
#       exec update-grub
        ;;

構成スクリプトを実行します。

Sudo dpkg --configure -a

最後にエラー行ではなく、多くのデバッグが表示されるはずです。

確認するには、構成を再実行してください。ログなしですぐに終了するはずです:

Sudo dpkg --configure -a

これで、zz-update-grubファイル。後で他のカーネルをインストールし、gruboverlayfsで動作し始める場合に備えて。

5
bbp

問題を修正しましたか?ここにも同じエラーがあります。本当に修正する必要はありません。USBスティックにシステムを簡単に再インストールできますが、チャレンジが好きです:)

これを修正する賢い方法は、Grubにoverlayfsを理解する方法を教えることですが、これのためにインストールしなければならないパッケージ(もしあれば)がわかりません。 USBスティックはまだ起動可能なので、apt-getにこの警告を無視させます。 I.E.このパッケージが完全に真実ではない場合でも、インストールされていると考えてください。技術的には、適切にインストールされており、GrubのみがMBRの更新に失敗しています。最新バージョンのカーネルを起動しているため、大した問題ではありません。

パッケージを設定しようとしますがGrubが失敗するため、ロールバックしてGrubが再び失敗するため、すべての試行に時間がかかります...

私は次のことを試みましたが成功しませんでした:

(apt-get -f is for fixing problems)
Sudo apt-get -f install
Sudo apt-get -f --force-yes install
Sudo apt-get --force-yes install linux-image-3.0.0-15-generic
Sudo apt-get install --force-yes linux-image-3.0.0-15-generic
Sudo dpkg --force-all -i linux-image-3.0.0-15-generic
Sudo apt-mark manual linux-image-3.0.0-15-generic
(the following command is the one that trigger the bug)
Sudo dpkg --configure -a
Sudo dpkg --configure --force-all -a
(I think the next one need the .deb file)
Sudo dpkg --force-confmiss -i linux-image-3.0.0-15-generic
Sudo dpkg --force-confold -i linux-image-3.0.0-15-generic
Sudo dpkg --no-triggers -i linux-image-3.0.0-15-generic

... などなど...

0
bbp