0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Hyper-VのLinuxゲストを別のインスタンスへコピー

Last updated at Posted at 2022-11-01

動機

HyperVで動かしていたVM,なぜか大量のチェックポイントが生成されてしまい,チェックポイントを削除してマージもできなくなった.
そこで,新VM(第2世代)を作成し,旧VM(第1世代)からファイルをコピーすることにした.

手順

新VM

  1. 新VMを準備.このとき世代を第2世代で作成した.セキュアブートはMicrosoft WindowsからMicrosoft UEFI証明機関に変更しておく.LiveCDで起動.こちらもDebianのnetinstで起動.
  2. ipを192.168.xxx.yyyに設定
  3. ディスクのパーティションを設定する.
    • EFI用にパーティション(sda1)を準備.
    • /用のパーティション(sda2)を用意.このとき元のVMだとext4でフォーマットしていたが,btrfsにした.
    • swap用のパーティション(sda3)を用意.
  4. mkdir /tmp/root
  5. mount -t btrfs -o compress=lzo /dev/sda2 /tmp/root
  6. btrfs subvolume create /tmp/root/@rootfs
  7. umount /tmp/root
  8. mount -t btrfs -o compress=lzo,subvol=@rootfs /dev/sda2 /tmp/root
  9. これで新VMの準備ができたので,旧VMからファイルを受け取るために以下のコマンドを実行.
    cd /tmp/root; nc -l -p 12345| tar xvpf -

旧VM

  1. 旧VMのlinuxをシャットダウン
  2. LiveCDで起動.今回はDebianのnetinstを使った.
  3. 旧VMからファイルを送る.まずファイルシステムをマウントする.
    mkdir /tmp/root; mount /dev/sda2 /tmp/root; cd /tmp/root
  4. 新VM(192.168.xxx.yyy)へファイルを送信する.netinstではrsyncとかないのでncを使う.
    tar cvf - . | nc 192.168.xxx.yyy 12345

新VMの後処理

  1. EFIパーティションをマウント
    mount /dev/sda1 /tmp/root/boot/efi
  2. chroot後に必要なファイルシステムを設定.
    for f in /dev /dev/pts /proc /sys ; do mount -B $f /tmp/root$f; done
  3. chroot /tmp/root
  4. modprobe efivarfs
  5. grub-install --target=x86_64-efi --efi-directory=/boot/efi --recheck /dev/sda
  6. /etc/fstabを修正.blkidでuuidを確認して変更する.また/をext4からbtrfsに変更したのでファイルシステムとオプションcompress=lzo,subvol=@rootfsなどを設定.

まとめ

LiveCDで起動して,ファイルシステムをtarとncを使ってリモートへ送ってコピーする.今回はHyperVで行なったが,実機でも同じようにできるはず.またイメージではなくファイルのコピーを行なっているので,ext4からbtrfsへファイルシステムの変更も可能.

HyperVのVMを第2世代にしたことで,biosではなくEFIでブートすることになるが,grubの設定を更新することで無事にブートした.

netinstのイメージがあったのでnetinstを利用したが,別のliveCDがあればそれを使うのが便利だとおもう.試してないがantiXとかを使うと使えるコマンドも増えてよさそう.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?