Clonezillaクローンはgrub2を再インストールしないと起動しない

Clonezillaクローンはgrub2を再インストールしないと起動しない

次のパーティションを持つマシンのクローンを作成しました:

Device                   Type        Label
/dev/sda 
    /dev/sda1            Ext4        boot
    /dev/sda2            Linux LVM      
    /dev/system/         LV system     
    /dev/system/home     LV          home
    /dev/system/root     LV          root
    /dev/system/swap     LV          swap

これらはラベルによって参照されます

/etc/fstab:

LABEL=root     /        ext4
LABEL=boot     /boot    ext4
LABEL=home     /home    ext4
LABEL=swap     /swap    swap

そしてgrub.cfg:

menuentry 'openSUSE, with linux <version>' --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-<version>-simple-<UUID>' {
    insmod ext2
    set root='hd0,msdos1'
    linux /vmlinuz-<version> root=/dev/mapper/system-root resume=/dev/disk/by-label/swap <other options>
    initrd /initrd-<version>
}

このクローンを別の同一マシンにインストールしようとしています。インストールは成功しますが、表示される grub プロンプトで次の操作を行わないとマシンを起動できません。

grub> set root=(hd0,1)
grub> linux /boot/vmlinuz-<version> root=/dev/sda1
grub> initrd /boot/initrd.img-<version>
grub> boot

これらの手順を必要としないイメージを取得したいのですが、問題がどこにあるのかわかりません (grub config、その他のシステム ファイル、clonezilla)。これまでに試したことは次のとおりです。

  • /etc/defaults/grub を編集し、' GRUB_DISABLE_LINUX_UUID=true' のコメントを解除しました
  • search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}grub.cfg が生成されるときに追加されないように、次のような行をコメントアウトするように grub-mkconfig_lib を編集しました。
  • (そして再生成grub.cfg
  • 高度な clonezilla インストールを選択し、その後 MBR を再インストールするように指示しました (オプション -j1。オプション -g auto「クライアント ディスク MBR に grub を再インストールする」はデフォルトで既に選択されています)

他に試せることはありますか?

hd0 に「sda1」がリストされていることに気付きました/boot/grub2/device.mapが、クローンをインストールすると他のマシンの HD が sda1 として検出されるため、これが原因である可能性は低いと思います。

(この質問に対して、こことスーパーユーザーのどちらが適しているかわかりませんでしたが、適宜移行していただければ幸いです。)

答え1

最終的に、元のマシンのブート パーティションのパーティション クローンを作成し、詳細オプションから「-j1」を選択して他のマシンにインストールすることでこの問題を解決しました。

余分な手順が必要なので少し面倒ですが、少なくともブート パーティションのクローンの復元には数秒しかかかりません。

答え2

これを修正するための作業手順は、インストール/クローン作成が失敗した後、または MBR のディスクが破損した後に、GRUB(2) を手動でインストールする必要があります。

さて、再起動後、grub ブートを修正しましょう。

sh:grub>set pager=1 # for paging long command outputs; There must be no spaces on either side of the equals sign. 
grub> set root=(hd0,XY)
'grub> insmod /boot/grub/linux.mod # AFAIK, optional step
grub> linux /boot/vmlinuz-4.4.92-36-default root=/dev/sdaXY
grub> initrd /boot/initrd.img-4.4.92-36-default
grub> boot

Linux を正常に起動したら、修復を永続的に実行します。

# update-grub
# grub-install /dev/sda #or what ever your system disk is

エラーが発生した場合update-grub command not found心配しないでください。これは単に物事を簡単にするために作成されたシェル スクリプトです。実際には、次のようになります。

set -e
exec grub2-mkconfig -o /boot/grub/grub.cfg "$@"

grub-install を実行すると、システムは正常に戻るはずです。私は Clonezilla 2016-02-10 (ラップトップのプライマリ ディスクをより大きな SSD に移行) を使用して、クローン化された OpenSuse Leap 42.2 でこれを実行しました。

参照:Linux で起動しない GRUB 2 を修復する方法
Ubuntu で壊れた GRUB 2 ブートローダーを修復する

Linux を起動せずに機能する代替アプローチを次に示します。

$ sudo fdisk -l (From this you need to find the device name of your physical drive that won't boot, something like “/dev/sdxy″ - where x is the drive and y is the root partition. Since I was using a software RAID, root (/) was on md1)
$ sudo mount /dev/sdxy /mnt (Mount the root partition)
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys
$ sudo chroot /mnt  (This will change the root of executables to your your drive that won't boot)
$ grub-mkconfig -o /boot/grub/grub.cfg (insure that there are NO error messages)
$ grub-install /dev/sdx (NOTE that this is the drive and not the partition. try grub-install --recheck /dev/sdxy if it fails)
Ctrl+D (to exit out of chroot)
$ sudo umount /mnt/dev
$ sudo umount /mnt/proc
$ sudo umount /mnt/sys
$ sudo umount /mnt

参照:http://redsunsoft.com/2016/06/how-to-repair-a-server-stuck-at-the-grub-prompt/

答え3

要約

GPT にインストールされた Ubuntu では、システムにログインした後に BootRepair を使用します。


@jam と同じ問題がありましたが、私の場合は次のとおりです:

  • クローンしたかったUbuntu 16.04
  • ソースディスク(HDD、500 GB)
    • MBR
    • Windowsとのデュアルブート
  • ターゲットディスク(SSD、256 GB)
    • GPT

/homeそこで、ディスク全体ではなく、Linux パーティション (システムの場合は sda5、 の場合は sda6) のみを Clonezilla でクローンしました。

これを可能にするために、SSD にクリアな Ubuntu をインストールし、HDD で作成したのと同じようにパーティションを作成し、ESP (EFI システム パーティション) も追加しました。次に、このパーティションを Clonezilla (HDD パーティションを SSD に) で上書きしました。その結果、GRUB プロンプトが表示されました。

それから私は

grub> set root=(hd0,gpt2)  # NOTICE: used gptX instead of simple number
grub> linux /boot/vmlinuz-<version> root=/dev/sda1
grub> initrd /boot/initrd.img-<version>
grub> boot

@jam が行ったように、@wp78de が提案したように (また、彼の参照でも述べられています)。

それから私はエラーでupdate-grub立ち往生しましたgrub-install

grub-install: error: will not proceed with blocklists

理由はGPTにありました。これスレッドですが、最も簡単な方法はブート修復BootRepair によって特別な作業が実行されたかどうかはわかりませんが、GRUB を再インストールして確認したところ、すべて正常に動作するようになりました。

答え4

私も MBR ブートでまったく同じ問題 (Centos 7) に遭遇しました。ディスク、パーティション、Clonezilla のバージョンなど、何を試してもダメでした。結局、このスレッドで前に言及されていた PartedMagic ISO を購入しました。これは CLonezilla を使用していましたが、プロセスの最後に何らかの魔法が働いたようで、クローン ディスクが手動操作なしでブートしました。

クレイグ

関連情報