ルーター機のブートドライブを300GのHDDから32GBのSSDに交換しました。
逆の場合であれば# dd
で一発なのですが、ディスク容量が小さい方への移行なのでそうはいきません。なので地道にやってみました。OSはルータがDebian、母艦がUbuntuです。最悪、起動しなくても最初のほうでバックアップを取ってるので復旧は容易かと思われます。
・ファイルシステムのバックアップ
旧HDDを母艦に接続して丸ごとcp -R
するだけです。
# 旧HDDのUUID (gpartedかなにかで調べられます)
HDD_UUID=732cf650-8bc9-44b0-b2fd-9aa1a7743f60sudo cp -R /mount/${HDD_UUID} .
・新SSDのフォーマット
gpartedかなにかでやると楽です
・新SSDへファイルをコピー
# 新SSDのUUID (gpartedかなにかで調べられます)
SSD_UUID=3fe19005-d2cb-4dd7-ae79-858ca95de327cd ./${HDD_UUID}
sudo cp -R . /media/${SSD_UUID}
・ブート領域を作ってあげる
僕が前に書いた記事GRUBを飛ばしてしまいシステムが起動しなくなったときの救出方法と同様のことをやります(再掲)
詳しくは元リンクを参考にしてください。
# /boot パーティションのUUID./ 上に/boot がある(救出先のシステムで/boot を切り分けてない)なら省略
BOOT_UUID=0e0670da-9711-4eab-8025-b26dba90d576# 救出先システム上/ のUUID
SYS_UUID=21427729-aef2-4a52-8d28-d6e90804c659sudo mount --bind /proc /media/${SYS_UUID}/proc
sudo mount --bind /sys /media/${SYS_UUID}/sys
sudo mount --bind /dev /media/${SYS_UUID}/dev
# / 上に/boot がある(救出先のシステムで/boot を切り分けてない)なら省略
sudo mount --bind /media/${BOOT_UUID} /media/${SYS_UUID}/bootsudo chroot /media/${SYS_UUID}
# たとえば/dev/sdeに grub をインストールしたい時
grub-install /dev/sde
update-grub
exitsudo umount /media/${SYS_UUID}/proc
sudo umount /media/${SYS_UUID}/sys
sudo umount /media/${SYS_UUID}/dev
# / 上に/boot がある(救出先のシステムで/boot を切り分けてない)なら省略
sudo umount /media/${SYS_UUID}/boot
・HOMEディレクトリのownerを元に戻す
HOMEの所有者を旧HDDシステムで使っていたユーザ名に戻してやります。やらないと、SSHが通らなかったり何かと不便です。
cd /media/${SSD_UUID}/home
sudo chown -R user:user ./user
・suが通るようにする
これもパーミッション設定なのですが、あまり見慣れない形式です。詳しくはsudo で 「sudo: must be setuid root」と怒られる - 不会忘記的一天に書いてあるとおりです
# chmod 4511 /usr/bin/sudo
・繋ぐ
SSDを繋いで起動することを確認。以上。