パーティション全体のイメージを作成し、別のパーティションにイメージを復元し、新しいパーティションから起動するスクリプトを作成しようとしています。
新しいパーティションから起動するように変更する最後の部分に問題があります。
これを行うには、自動パーティショニングを使用してUbuntu / Debianをインストールし、ハードドライブを次のように構成しました。
- /dev/sda
- /dev/sda1 - /boot/efi
- /dev/sda2 - / (Ubuntu/Debian)
- /dev/sda3 - スワップ
- /dev/sda4 - マウントされていない - sda2 イメージのコピー/復元のためのターゲット・パーティション
だから私がしたいのは、イメージを作成し、dev/sda2
それを復元し/dev/sda4
てから起動することです/dev/sda2
。
その理由は、完全なUnixインストールイメージを提供し、インターネット接続なしで特定のIoTデバイスを「更新」できるからです。したがって、新しいイメージを提供するたびに、イメージはパーティションの1つに復元され、そのパーティションはブートパーティションになります。このプロセスは、新しいイメージをプロビジョニングするたびに、つまりパーティション切り替えが開始されるたびに適用されます。新しいイメージの適用/インストールに問題がある場合は、ブートパーティションを変更せずに「前の作業」パーティションからブートする必要があります。
これまで、イメージを正常に作成し、ターゲットdump
パーティションに復元しました。
grubにリカバリダンプの他のパーティションから起動するように変更する際に問題があります。
grub-install
復元されたインストールにルートを変更し、これらのコマンドを実行するなど、さまざまな方法を試しましたが、update-grub
正常に動作しませんでした。
私が望むことを達成するために何をすべきかを説明できる人はいますか?
答え1
最新のLinuxディストリビューションでは、ファイルシステムUUID(またはそれに対応するエントリ)を使用して起動するファイルシステムを識別するようにGRUBを設定する傾向があります。sda2
に複製すると、sda4
同じUUIDを持つ2つのファイルシステムが作成されます。 GRUBは、一致するUUIDを持つ最初のシステムを起動したり、一致するUUIDが複数検出された場合に停止する可能性があります。
したがって、ファイルシステムを複製した後に最初にすべきことは、sda4
UUIDが再び一意になるように新しいUUIDを新しい複製に割り当てることです。これは、さまざまな種類のファイルシステムでUUIDを変更する方法を指定する回答を含む質問です。私の考えでは、あなたはこのステップを逃したと思います。
2番目のステップは、配置されたミニオンを更新することですgrub.cfg
。これには、デフォルトのGRUB構成ファイルを含むファイルシステムを見つけるためのコマンドが含まれています。 UUID を更新すると、GRUB は元のファイルシステムの代わりに新しいレプリカでその設定を探します。sda1
/boot/efi/EFI/<name of distribution>/grub.cfg
search.fs_uuid
/boot/grub
/boot/grub/grub.cfg
最後に、それを実際に使用するには、新しいレプリカと新しいUUIDを更新する必要があります。/etc/fstab
sda4
sda4
(UUIDの代わりにパーティション/デバイス名を使用することを選択した場合でも、同じ場所をすべて変更する必要があります。)