長年こんなことをやってます.ただし,年がら年中でなく,時々思い出したようにやるのでたいてい前のことは覚えていません.
そんなわけで自分用のメモです.
前提条件
稼働している実マシンないし仮想マシンから,定期的にrsyncにて差分もしくは完全バックアップを取っている.
まあ,完全と言っても,/dev, /tmp, /proc, /sysはたいてい外していると思います.
また,バックアップ元のマシンはSWAPはzramのみでSWAPパーティションはなく,ルートパーティションも一本でマウントするボリュームはなしです.
仮想ディスクの作成
仮想ディスクは,qemu-imgで作ります.形式はQEMU/KVMならばqcow2,VMWareならばvmdkでしょう.もちろんraw形式や他の形式でも大丈夫ですが,最終的に収まる仮想マシンのデフォルトにしておくのが無難でしょう.
qemu-img create -f qcow2 ファイル名.qcow2 40G
次にパーティションを切ります.nbdの出番です.以下はroot権限での作業になります.
modprobe nbd
qemu-nbd --connect /dev/nbd0 ファイル名.qcow2
fdisk /dev/nbd0
パーティション形式はGPTにします.EFI用のパーティション512MBを “BIOS boot” 形式にして,残りをLinux filesystemにします.
そして,mkfsでフォーマットします.
mkfs -t ext4 -j /dev/nbd0p2
mkfs -t vfat /dev/nbd0p1
引き続き,/dev/nbd0p2を/mnt/hdなどにマウントして,
rsync -artlvd --numeric-ids バックアップのディレクトリー /mnt/hd
バックアップしてない必要なディレクトリーを作ります.
cd /mnt/hd
mkdir dev tmp sys proc
chmod -v a+rwx tmp
cd
umount /mnt/hd
qemu-nbd --disconnect /dev/nbd0
rmmod nbd
仮想ディスクをブータブルに (GPT)
仮想ディスクを仮想マシンのホストで一つの仮想マシンのディスクとして登録します.次に,バックアップしたDebianと同じバージョンのインストーラーをダウンロードして,その仮想マシンのDVD/CDとして登録し,起動ディスクに指定します.
あとは,Advanced > Rescueとして,メニューに従って進めば,仕立てた仮想ディスクをルートにマウントしてくれるので,
dpkg-reconfigure grub-pc
とすれば,ブータブルになりますので,DVD/CDを外してディスクから起動させます.何かエラーが出たら修正します.
仮想ディスクをブータブルに(MBR)
仮想ディスクをGPTでなくてMBRでパーティションを切ってしまった場合,上記の方法ではうまく行かないかもしれません.この場合,筆者の標準的なパーティションはルートだけの一つになっています.
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
で,うまく行くと思います.
起こりがちなエラー
エラーとしてありがちなのは,/etc/fstabに記したルートドライブの情報が仮想マシンの仮想ディスクとマッチしないことです.その場合は,もう一度レスキューモードにして,/etc/fstabを修正したうえで,dpkg-reconfigure grub-pc
をやり直します.
ネットなどについては起動してから修正できます.
案外簡単です.