web-dev-qa-db-ja.com

別のマシンから復元した後、GrubのUUIDを修正する方法は?

Ubuntu 12.04の完全なtarバックアップを、すべてのカスタマイズ、ドキュメント、インストールされたソフトウェアなどとともに別のマシンに復元したい。

次のコマンドでバックアップを作成しました。

Sudo su
cd /
tar cvpzf ububackup.tgz --exclude=/ububackup.tgz --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/tmp --exclude=/media /

新しいコンピューターで、Ubuntu 12.04を新規インストールし、バックアップファイルをそのコンピューターに移動して、次のバックアップファイルを使用して復元しました。

tar xvpfz backup.tgz -C /

予想どおり(この質問に対するMike Whateverの回答を参照してください: すべての設定を使用してUbuntuのディストリビューションを1台のコンピューターから別のコンピューターにコピーします )コンピューターの電源を入れると、エラーが発生します。

error: no such device: ...

press any key to continue ...

Grubが壊れている理由は、探しているUUIDがコンピューターのハードドライブではなく古いハードドライブで一致しているためだと思います。

GRUBを修正して新しいハードドライブを認識するにはどうすればよいですか? 「Fix GRUB UUID」というヘルプをオンラインで探しましたが、手順が古いか複雑であるように見えました。上記にリンクしたマイクからの応答は、これを修復するためのかなり簡単な方法があることを願っています。

21
snowguy

現在の問題を解決するには、「/ etc/fstab」および「/boot/grub/grub.cfg」のUUIDを変更する必要があります(非常に注意が必要です)。

UbuntuインストールCDを使用して、gpartedでUUIDを取得できます(UUIDを取得するパーティションを右クリックし、[情報]をクリックして、UUIDを選択し、CTRL + C)またはコマンドライン(Sudo blkid)。

次に、gedit、nanoなどを使用して、適切なボリュームの「/ etc/fstab」を編集する必要があります。

ターミナルで、次を入力します。

gksudo gedit /etc/fstab

古いUUIDを新しいものに置き換えます。

重要:もちろん、ブートCDを使用してこれを行う場合、「/ etc/fstab」の前に「/ media/xxxxx」を追加する必要があります。「/ media/xxxxx/etc/fstab」。 gksudo geditを使用してファイルを開き、自分で編集することもできます。

警告:「/boot/grub/grub.cfg」の変更は非常に注意が必要です。通常は、Sudo update-grubコマンドで生成する必要があります。

「/boot/grub/grub.cfg」内の古いUUIDを新しいものに置き換えます。ターミナルに次のように入力します。

gksudo gedit /boot/grub/grub.cfg

重要:もちろん、ブートCDを使用してこれを行う場合、「/ boot/grub/grub.cfg」の前に「/ media/xxxxx」を追加する必要があります。「/ media/xxxxx/boot/grub/grub」。 cfg」。 gksudo geditを使用してファイルを開き、自分で編集することもできます。

トリッキーなソリューションを使用する場合は、システムを正常に起動したら、Sudo update-grubを起動することをお勧めします。

Grubを適切に再構成するよりクリーンでシンプルな方法は、「Boot-Repair-Disk」のようなブート修復ディスクを使用することです。 http://sourceforge.net/p/boot-repair-cd/home/Home/

これが問題の解決に役立つことを願っています。

ただし、コメントに示されているように、Clonezillaを使用して古いコンピューターを新しいコンピューターに複製することを検討してください。

19
Golboth

おそらく、これはgrubが起動し、Ubuntuを起動するオプションを表示することを意味しますが、それを選択すると起動しませんか?

次の2つのオプションがあります。

  1. GRUB行エディターを使用して、Linuxブートオプションを変更し、Linuxを正しくロードします(そして、ルートとしてgrub-installを実行して、正しい構成を永続的に設定します)。
  2. Ubuntu USBスティックから起動し、ubuntuディスクパーティションをマウントし、そこにchrootしてからgrub-installを実行します。

最初のケースは、Ubuntuのみでハードディスクが1つしかない場合に簡単です。その場合、「Ubuntuリカバリ」オプションを選択し、「e」を押して編集します。

エントリは次のようになります。

insmod gzio
insmod part_msdos
insmod ext2
set root=('hd0,msdos0')
search --no-floppy --fs-uuid --set=root XXXXXX
linux /boot/vmlinuz-YYYYY root=UUID=XXXXXX ro recovery nomodeset
initrd /boot/initrd.img-YYYYY

「search」行を削除し、「linux」行の「root = UUID = XXXXX」を「root =/dev/sda1」に置き換えます。これを試して起動してください。しばらくするとUbuntuのリカバリメニューが表示され、grubオプションが表示され、grubが適切に再インストールされるはずです。

それ以外の場合、または直接grubをいじりたくない場合(ヘルス警告が表示されるはずです、 https://help.ubuntu.com/community/Grub2/Installingに記載されているCD/USBスティックを使用してください#Reinstalling_GRUB_2

3
chronitis

私の場合、grubがインストールしたUUIDは、Windowsパーティションの現在のUUID(Sudo blkid)とは異なりました(grub.cfgで確認済み)。さまざまな方法を試してみましたが失敗しました。最後に、ファイルマネージャーでWindowsパーティションをマウントし、update-grubを再度実行し、grub.cfgでUUIDが正常に更新されました。

0
Tavo

Fstabとgrubを編集する代わりに私がしたこと:

  1. Ubuntuの新規インストールでそれらのファイルをバックアップしました(tar -cvf /somedir/boot.tar /etc/fstab /boot/grub/grub.cfg
  2. バックアップから復元されました(tar -xvpf /mnt/remotebk/full.tar
  3. 復元されたfstabファイルをコピーします(cp /etc/fstab /somedir/fstab.restored
  4. フレッシュインストールブートファイルを復元する(tar -xvpf /somedir/boot.tar -C /
  5. 再起動し、動作しました。

Vmware仮想マシンを使用しています。このプロセスを実行して、1つのLinuxサーバーを1つのホストから別のホストに移動しました。

0
Roberto Dimas