Update-manager によって GRUB がアンインストールされました - Ubuntu に戻すにはどうすればいいですか?

Update-manager によって GRUB がアンインストールされました - Ubuntu に戻すにはどうすればいいですか?

私は Ubuntu 14.04 を使っていて、いつも定期的に (ほぼ毎日) アップデートしています。今日 7 月 8 日、Ubuntu のアップデートがいつもと違う動作をしました。「すべてのアップデートをインストールできるわけではありません」と表示され、「部分的なアップデート」が提案されました。試したことはありませんが、Ubuntu を信頼しています。アップデート リストで気付いたことの 1 つはブートローダー GRUB でしたが、まあ、Ubuntu を信頼しています。

完了後、再起動するように求められ、再起動すると、Windows が直接起動します。つまり、GRUB は事実上アンインストールされ、Ubuntu を起動するかどうかを選択できません。私は Linux にも Windows にも精通しているわけではありませんが、Windows 8 (バンドルされたばかり) ではかなり不利な状況に陥っているように感じます。

Ubuntu はまだラップトップにインストールされていますか? インストールされている場合、できるだけ早く元に戻すにはどうすればよいですか? (週末にプレゼンテーションを行う予定があり、新しいシステムのセットアップとバックアップ データの取得に時間がかかります)。


Christian Benke の回答に従って grub-install に失敗する


現在、Ubuntu USB スティックを使用してシステムを調査しています。

ubuntu@ubuntu:~$ sudo parted -l
Model: ATA TOSHIBA THNSNJ25 (scsi)
Disk /dev/sda: 256GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name                  Flags
 1      1049kB  1075MB  1074MB  ntfs            Basic data partition  hidden, diag
 2      1075MB  1180MB  105MB   fat32           Basic data partition  boot
 3      1180MB  1314MB  134MB   ntfs            Basic data partition  msftres
 4      1314MB  44.7GB  43.4GB  ntfs            Basic data partition  msftdata
 6      44.7GB  46.7GB  2000MB  linux-swap(v1)
 7      46.7GB  244GB   197GB   ext4
 5      244GB   256GB   12.1GB  ntfs            Basic data partition  hidden, diag

簡単に「sudo mkdir /media/[mountpoint]」に続いて「sudo mount /dev/sda[X] /media/[mountpoint]」を実行すると、パーティションを検査できます。

/dev/sda1  Windows boot files
/dev/sda2  EFI files
/dev/sda3  Empty
/dev/sda4  Windows system
/dev/sda5  Toshiba recovery
/dev/sda6  Ubuntu swap partition (not mountable)
/dev/sda7  Ubuntu system

明らかに、/dev/sda7 を引き続き使用したいと思います。

ubuntu@ubuntu:~$ sudo mkdir /media/oldroot
ubuntu@ubuntu:~$ sudo mount /dev/sda7 /media/oldroot
ubuntu@ubuntu:~$ sudo mount --bind /dev /media/oldroot/dev
ubuntu@ubuntu:~$ sudo mount --bind /proc /media/oldroot/proc
ubuntu@ubuntu:~$ sudo mount --bind /sys /media/oldroot/sys
ubuntu@ubuntu:~$ sudo chroot /media/oldroot /bin/sh 
# lsb_release -d
Description:    Ubuntu 14.04.2 LTS
# grub-install /dev/sda
Installing for x86_64-efi platform.
grub-install: error: cannot find EFI directory.
# exit

明らかに、grub-install は /dev/sda2 で EFI ファイルを見つけられませんでしたが、事前に /media/oldroot/boot/efi にマウントすると問題なく動作するようです。

ubuntu@ubuntu:~$ sudo mount /dev/sda2 /media/oldroot/boot/efi
ubuntu@ubuntu:~$ sudo chroot /media/oldroot /bin/sh 
# lsb_release -d
Description:    Ubuntu 14.04.2 LTS
# grub-install /dev/sda
Installing for x86_64-efi platform.
Installation finished. No error reported.
# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.16.0-43-generic
Found initrd image: /boot/initrd.img-3.16.0-43-generic
Found linux image: /boot/vmlinuz-3.16.0-41-generic
Found initrd image: /boot/initrd.img-3.16.0-41-generic
Found linux image: /boot/vmlinuz-3.16.0-40-generic
Found initrd image: /boot/initrd.img-3.16.0-40-generic
Found linux image: /boot/vmlinuz-3.16.0-39-generic
Found initrd image: /boot/initrd.img-3.16.0-39-generic
Found linux image: /boot/vmlinuz-3.16.0-38-generic
Found initrd image: /boot/initrd.img-3.16.0-38-generic
Found linux image: /boot/vmlinuz-3.16.0-37-generic
Found initrd image: /boot/initrd.img-3.16.0-37-generic
Found linux image: /boot/vmlinuz-3.16.0-36-generic
Found initrd image: /boot/initrd.img-3.16.0-36-generic
Found linux image: /boot/vmlinuz-3.16.0-34-generic
Found initrd image: /boot/initrd.img-3.16.0-34-generic
Found linux image: /boot/vmlinuz-3.16.0-33-generic
Found initrd image: /boot/initrd.img-3.16.0-33-generic
Adding boot menu entry for EFI firmware configuration
done
# exit    

しかし、これで問題は解決しませんでした。再起動すると、GRUB は表示されず、再び Windows に直接入りました。これまでのところありがとうございます。今回の問題は何でしょうか?


影響を受けるパッケージの再インストールに失敗する


提案されたように、apt/history.log ファイルを見て、GRUB の動作を停止させた「部分的な更新」中に何が起こったかを確認します。残念ながら、7 月 8 日の更新に関するエントリは含まれていません。

ubuntu@ubuntu:~$ cat /media/summer7/var/log/apt/history.log

Start-Date: 2015-07-03  09:32:40
Commandline: aptdaemon role='role-commit-packages' sender=':1.79'
Upgrade: lightdm:amd64 (1.10.5-0ubuntu1, 1.10.5-0ubuntu1.1), liblightdm-gobject-1-0:amd64 (1.10.5-0ubuntu1, 1.10.5-0ubuntu1.1)
End-Date: 2015-07-03  09:32:42

Start-Date: 2015-07-05  20:02:01
Commandline: aptdaemon role='role-commit-packages' sender=':1.85'
Upgrade: libxcomp3:amd64 (3.5.0.31-0~605~ubuntu14.04.1, 3.5.0.32-0~668~ubuntu14.04.1), nxproxy:amd64 (3.5.0.31-0~605~ubuntu14.04.1, 3.5.0.32-0~668~ubuntu14.04.1), irqbalance:amd64 (1.0.6-2ubuntu0.14.04.1, 1.0.6-2ubuntu0.14.04.2)
End-Date: 2015-07-05  20:02:04

Start-Date: 2015-07-07  20:00:24
Commandline: aptdaemon role='role-commit-packages' sender=':1.81'
Install: linux-image-3.16.0-43-generic:amd64 (3.16.0-43.58~14.04.1), linux-headers-3.16.0-43:amd64 (3.16.0-43.58~14.04.1), linux-headers-3.16.0-43-generic:amd64 (3.16.0-43.58~14.04.1), linux-image-extra-3.16.0-43-generic:amd64 (3.16.0-43.58~14.04.1), linux-signed-image-3.16.0-43-generic:amd64 (3.16.0-43.58~14.04.1)
Upgrade: linux-signed-image-generic-lts-utopic:amd64 (3.16.0.41.33, 3.16.0.43.34), libfontembed1:amd64 (1.0.52-0ubuntu1.4, 1.0.52-0ubuntu1.5), linux-image-generic-lts-utopic:amd64 (3.16.0.41.33, 3.16.0.43.34), cups-browsed:amd64 (1.0.52-0ubuntu1.4, 1.0.52-0ubuntu1.5), linux-signed-generic-lts-utopic:amd64 (3.16.0.41.33, 3.16.0.43.34), cups-filters-core-drivers:amd64 (1.0.52-0ubuntu1.4, 1.0.52-0ubuntu1.5), cups-filters:amd64 (1.0.52-0ubuntu1.4, 1.0.52-0ubuntu1.5), libgtksourceview2.0-0:amd64 (2.10.5-1ubuntu2, 2.10.5-1ubuntu2.14.04.1), linux-generic-lts-utopic:amd64 (3.16.0.41.33, 3.16.0.43.34), linux-libc-dev:amd64 (3.13.0-55.94, 3.13.0-57.95), libgtksourceview2.0-common:amd64 (2.10.5-1ubuntu2, 2.10.5-1ubuntu2.14.04.1), linux-headers-generic-lts-utopic:amd64 (3.16.0.41.33, 3.16.0.43.34), libcupsfilters1:amd64 (1.0.52-0ubuntu1.4, 1.0.52-0ubuntu1.5)
End-Date: 2015-07-07  20:01:11

実際、長さが少し短いように思えますね。また、最後のエントリは、ファイルが最後に変更されたときと比較して 2 時間後のものでした。

ubuntu@ubuntu:~$ ls -l /media/summer7/var/log/apt/history.log
-rw-r--r-- 1 root root 1925 Jul  7 18:01 /media/summer7/var/log/apt/history.log

ということは、おそらくここでファイルの破損が発生しているのでしょうか? まあ、apt-get update を試してみましたが、うまくいきませんでした:

ubuntu@ubuntu:~$ sudo mount --bind /dev /media/oldroot/dev
ubuntu@ubuntu:~$ sudo mount --bind /proc /media/oldroot/proc
ubuntu@ubuntu:~$ sudo mount --bind /sys /media/oldroot/sys
ubuntu@ubuntu:~$ sudo chroot /media/oldroot apt-get update

「解決できませんでした」というエラーですべて取得に失敗しました。この質問. 次のものは失敗します

ubuntu@ubuntu:~$ sudo chroot /media/oldroot ping dk.archive.ubuntu.com
ping: unknown host dk.archive.ubuntu.com

/media/oldroot/etc/resolv.conf ファイルは完全に空です。これは悪い兆候でしょうか?

答え1

私もあなたと同じ日に同じ問題に遭遇しました。いくつかの作業を行っていたところ、Ubuntu が部分的なアップデートを提案したのでそれに従い、昨日のほとんどを GRUB の再インストールに費やしました (無駄でした)。

私のインストールは Windows 8.1 とのデュアル ブートだったので、Windows パーティションの他に、システム用 ("/")、ホーム用 ("/home")、スワップ用の 3 つの Linux パーティションがありました。ブート修復を使用して GRUB を再インストールできなかったため、Ubuntu サムドライブを使用してブートし、インストーラーを起動しました。

何をしたいのか尋ねられたので、別のものを選択しました。次に、元のシステム ディレクトリ「/」をルート パーティションに設定し、インストーラにフォーマットするように指示しました。スワップを swap に設定し、ホーム ディレクトリを「/home」に設定しましたが、インストーラにはホーム ディレクトリをフォーマットしないように指示しました。

また、インストーラーに、ブートローダーをパーティションではなくディスク (私の場合は /dev/sda) にインストールするように指示しました。インストールが完了し、再起動時に grub が表示され、Ubuntu と Windows 8.1 に再起動できました。

ホーム ディレクトリは完全にそのままで、デスクトップの背景と .bashrc は自動的に読み込まれ、プログラムの再インストールを開始すると、TeamViewer、Chrome などに自動的にログインし直されました。

/home パーティションとシステム パーティションが別々である場合、これが最善の修正方法かもしれません。データの損失はなく、再インストールに時間がかかりません。

答え2

次のような小さな起動可能なライブシステムを使用できます。グルムそしてコマンドchroot壊れたブートローダーを修復するために古いシステムに戻ります。

ライブ CD から起動したら、インストールした Linux システムのファイルシステムにアクセスする必要があります。まず最初に、インストールした Linux のルート パーティションをマウントします (ライブ CD 環境では root ユーザーとして)。

# mkdir /media/oldroot
# mount /dev/sda1 /media/oldroot

Linux パーティションがどれであるかわからない場合は、使用可能なパーティションをすべてマウントし、どれがルート パーティションであるかを確認します。

機能的なchroot環境を取得するための次のステップは、疑似ファイルシステムをマウントすることです(/開発/proc/システム) を、先ほどマウントしたルート パーティション内のライブ CD 環境から実行します。

# mount --bind /dev /media/oldroot/dev
# mount --bind /proc /media/oldroot/proc
# mount --bind /sys /media/oldroot/sys

これで、システムはchroot化の準備ができました。これは、ライブCDの環境をインストールされたシステムで「置き換える」ことを意味します(また、バイナリインストールされた環境のコマンドプロンプトとして:

# chroot /media/oldroot /bin/sh
# 

以前にインストールした Linux であることを確認します。

# lsb_release -d
Description:    Ubuntu 14.04.2 LTS

chrootから実行してみる

# grub-install /dev/sda

ハードディスクのマスターブートレコードに grub-bootloader を再インストールします。

grub2 が実際にアンインストールされていて、grub-install が存在しない場合は、grub2 パッケージを USB スティックにコピーして再インストールできます。

debファイルをダウンロードしてくださいhttp://packages.ubuntu.com/trusty/grub2それを USB スティックにコピーします。USB スティックを chroot 内にマウントします (Alt-F2 を使用してライブ CD 環境に 2 番目の tty を作成して USB スティックをマウントし、その後 Alt-F1 で chroot 環境に戻ります)。

-- Press <Alt-F2> to get to the second tty of the live-cd-env
# mkdir /media/oldroot/media/<yourusername>/usb_stick
# mount /dev/sdb1 /media/oldroot/media/<youruser>/usb_stick

-- Press <Alt-F1> to get back to the first tty to our chroot
# cd /media/<yourusername>/usb_stick
# ls
dpkg -i grub2_2.02~beta2-9_amd64.de
# dpkg -i grub2_2.02~beta2-9_amd64.deb

その後は、grub インストール

関連情報