🔍

ネットワーク越しにディスクコピーする(Linux , macOS)

2021/08/11に公開

環境

Ubuntu 14.04 LTS

ディスクのパーテーションは

  1. swap 2GB
  2. / (ext4) 40GB

動機

物理マシン上で動いている Linux をそのまま仮想マシンにしたかった。

動機は Linux マシンの転送ですが、仮想マシンの Windows(ESXi)を同(Hyper-V)に移行する際に

同様の手順で実施可能な事を確認しています。その他、物理マシン上の Windows のディスクコピー等、物理コピーでどうにかなるものなら大抵なんとかなります。

準備(転送元)

パーティションをできるだけ小さくする。 gparted live dvd を使用した。

この手順はオプションなので、やらなくても良い。

準備(転送先)

仮想マシンを作成(ディスク容量は、転送元のパーティションがコピーできるだけの容量を確保)

Ubuntu の Live DVD で起動して、パーティションを転送元と同じブロック数で確保した。

転送元と転送先で、fdisk  のブロック数が同じになるようにパーティションを作成。

ブート可能フラグを立てるのを忘れない(ブートしたい場合は)

なお、この手順はディスク丸ごと転送する場合は不要。

次の手順のデバイス名を /dev/sda とすればディスク丸ごと転送になる。

この場合、ブート可能フラグは自動で立つはず。

転送準備

転送元、転送先の両方の PC で同じ操作をする。

PC を Ubuntu Live DVD で起動する。(以下の手順は 14.04LTS で動作確認している)

起動後、Ubuntu を試す を選択してしばらく待ち、UI が起動するのを待つ。

起動したら、Windows キー(Linux 的には Super キー)を押下して、 terminal とタイプ。

すぐ下に、端末 というアイコンが出るのでそれをクリックする。

紫色のコマンドプロンプトみたいな何かが起動すれば OK。

転送

転送先 → 転送元の順で操作する。

ようするに、書いてある順に操作すれば OK。デバイス名を間違えると悲しいことになるので要注意。

転送先
# 転送先で以下のコマンドを打つ。デバイス名は適宜調整して下さい。(例: ディスク全体なら /dev/sda等)
sudo su -
nc -l 12345 | dd of=/dev/sda2
転送元
# 転送元で以下のコマンドを打つ。デバイス名は適宜調整して下さい。(例: ディスク全体なら /dev/sda等)
sudo su -
dd if=/dev/sda2 bs=10240000| nc [転送先IPアドレス] 12345
転送元
# 進捗確認用
# 転送元の別コンソールから使用すると、10秒ごとに進捗が dd を実行しているコンソールに表示される
sudo su -
watch -n 10 pkill -USR1 dd

# 今回は関係ないですが、 macOS上のdd は USR1 を送ると終了してしまいます。
# watch -n 10 pkill -INFO dd
# とすれば希望する動作になります。

起動してみる

新しくできた VM を起動してみると、GRUB Rescue の画面に入ってしまい起動できない場合がある(あった)

その場合の操作は以下の通り

grub rescue> set prefix=(hd0,2)/boot/grub
grub rescue> set root=(hd0,2)
grub rescue> insmod normal
grub rescue> normal

Windows の場合は、とりあえず Windows のセットアップ用 ISO を入れて起動し、diskpart コマンドを

使ってブートローダを上書きしてみる感じでしょうか(未検証)

20180123 追記 macOS 上でやる場合

いくつか違いがあります。

ディスクの一覧を表示
sudo diskutil list

ここでは、ディスクのデバイス名が /dev/diskN と表示されますが、ddを行う際は
/dev/rdiskN を使用するほうがよいかもしれないです。

参考

ddの進捗を確認 - Qiita
http://qiita.com/tukiyo3/items/5e3fd748287ffa4b6612

Linux 上の GRUB 2 がブートできなくなったときの対処方法
https://jp.linux.com/news/linuxcom-exclusive/418274-lco20140625

MacでRaspberry PiのSDカードをハードコピー(バックアップ) http://karaage.hatenadiary.jp/entry/2015/06/09/080000

Discussion