以下の手順で,インストール済みの linux環境 を新しいHDDやSSDに複製できます
(2016/3/22追記: 細かい点について説明を加筆しました)
新しいHDDのフォーマット
予め新しいHDDやSSDをPCに接続し,フォーマットしておきます
おすすめの手順は別エントリに書いてます
http://d.hatena.ne.jp/pyopyopyo/20160604/p1
以下,フォーマット済みのパーティションを /dev/sde1 とし, /mnt にmountするものとして手順を説明します
$ sudo mount /dev/sde1 /mnt
既存システムのマウント
システムを複製する場合は /proc や /sys などの複製しなくて良いディレクトリを除外する必要があります
除外する方法はいくつかありますが,今回は手っ取り早い方法として 既存システムの / パーティションを /media にマウントします
$ sudo mount --bind -oro / /media
"--bind"を使うのがポイントです.さらに念の為 "-oro" で read-only つまり書き込み禁止にしておきます
データのコピー
/media 以下にあるファイルを /mnt へコピーします
コマンドはrsyncを使います
まず dry-run でコピーされるファイル達を確認します
$ sudo rsync -aDnv --exclude "/mnt/" /media/ /mnt
rsyncには
注意すべき点が2つあります
1つ目は "D"オプションです.rsyncのオプションには "a" だけでなく "D" もつけないと /dev 以下のデバイスファイルがコピーされません
2つ目は "--exclude" オプションです. "/mnt" を除外しないと,"/mnt" 以下に "/mnt/mnt" がコピーされ,それがさらに "/mnt/mnt/mnt"にコピーされ,データが無限増殖します
以上の2点に注意して,問題なければ "n"を外して,実際にコピーを実行します
$ sudo rsync -aDnv --exclude "/mnt/" /media/ /mnt
コピーが終わったら混乱を避けるために /media のマウントを解除しましょう
$ sudo umount /media
次に、新しくコピーした /mnt 側の環境の設定を修正します
複製した環境の確認
chroot を使うと、PCを再起動することなく複製した環境の動作確認が行えます
$ sudo mount --bind /dev /mnt/dev $ sudo mount --bind /proc /mnt/proc $ sudo chroot /mnt
急ぎの場合は
$ sudo chroot /mnt
だけでも大丈夫な場合が多いですが、aptを使う場合、grubを使う場合は /devや/procをマウントした方が安心です。
必要最低限の作業-1) ディスクラベル,fstab の確認
/etc/fstab でディスクのラベルや,UUIDを指定している場合は適宜修正します
$ sudo /usr/sbin/chroot /mnt
# sudo vi /etc/fstab
必要最低限の作業-2) ブートローダのインストール
新しいディスク/dev/sde の MBR に grub2 を入れる場合は以下の手順になります
$ sudo mount --bind /dev /mnt/dev $ sudo mount --bind /proc /mnt/proc $ sudo /usr/sbin/chroot /mnt # /usr/sbin/grub-install /dev/sde
必要最低限の作業-3) ブートローダの設定
$ sudo /usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg
umount
以上で複製は完了です.最後にディスクを umount しましょう
$ sudo umount /media/dev $ sudo umount /media/proc $ sudo umount /media
複製後に知っておくと便利な事
ホスト名の更新方法
sudo vi /mnt/etc/hostname
sshd の鍵の再作成
$ sudo /usr/sbin/chroot /mnt # rm /etc/ssh/ssh_host_* # ssh-keygen -A
メール関連(exim4)
メール関連で,ホスト名が書かれているファイル
- /etc/mailname
- /etc/exim4/update-exim4.conf.conf
更新方法
$ sudo vi /etc/mailname $ sudo vi /etc/exim4/update-exim4.conf.conf $ sudo /usr/sbin/update-exim4.conf