次のパーティションを持つマシンのクローンを作成しました:
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 を使用していましたが、プロセスの最後に何らかの魔法が働いたようで、クローン ディスクが手動操作なしでブートしました。
クレイグ