web-dev-qa-db-ja.com

Crubzillaクローンは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 Promptで次の操作を行わないとマシンを起動できません。

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を再インストールする」はデフォルトですでに選択されています)

私が試すことができる他のことはありますか?

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

(ここで、またはスーパーユーザーの方が問題に適しているかどうかはわかりませんでしたが、適切に移行できてうれしいです。)

2
jam

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

追加の手順を実行するのが少し面倒ですが、少なくともブートパーティションのクローンを復元するには数秒しかかかりません。

2
jam

これを修正するための作業手順では、インストール/クローンの失敗、または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を使用して複製されたOpenSuse Leap 42.2でこれを行いました(プライマリラップトップディスクをより大きなSSDに移行)。

参考文献: 起動しないものを救う方法GRUB 2
壊れた修復GRUB Ubuntuの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/

0
wp78de

TL; DR

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


@jamと同じ問題がありましたが、私の場合、私は持っています:

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

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

それを可能にするために、私はSSDにclear ubuntuをインストールし、HDDで作成されたとおりにパーティションを作成し、さらにESP(EFI System Partition)を追加しました。次に、このパーティションを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-grubgrub-installエラーあり

grub-install: error: will not proceed with blocklists

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

0
Egor Panfilov

私はMBRブートでこれとまったく同じ問題(Centos 7)を抱えていました-ディスク、パーティション、Clonezillaのバージョンなどの観点から何を試してもかまいませんでした-最後に、スレッドで以前に参照されたPartedMagic ISOを購入しました-とはいえそれはCLonezillaを使用しました-クローンされたディスクは手動の介入なしで起動するので、プロセスの最後に明らかにいくつかの魔法を実行しました。

クレイグ

0
Craig