次のパーティションを持つマシンを複製しました。
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構成、その他のシステムファイル、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、500GB)
- 膜バイオリアクター
- Windowsデュアルブート
- ターゲットディスク(SSD、256GB)
- GPT
そのため、/home
ディスク全体の代わりにClonezillaを使用して、Linuxパーティション(システムの場合はsda5、システムの場合はsda6)のみを複製しました。
そのために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
ディスク、パーティション、Clonezillaバージョンなどで何を試しても、MBRブート(Centos 7)とまったく同じ問題がありました。 - Clonezillaを使用したにもかかわらず、スレッドで前述のPartedMagic ISOを購入しました。 、手動介入なしで複製されたディスクが起動されるため、プロセスが終了すると魔法が機能します。
クレイグ