はじめに
- OSをそのまま別ディスクにコピーしたい、けど、単なるコピーでは無理な方向けの記事
- 大きいディスクを小さいディスクにしたいなど
- 移行元HDDが、移行先HDDより大きい場合で、ddなどではコピーできない場合の手法
- rsyncで /dev/sda (64GB) から /dev/sdb (16GB) に Ubuntu をコピーして起動可能にするメモ
- ubuntu24.04 をコピーしています
- /dev/sda から /dev/sdb にコピーします
- BIOS環境
UEFI版はこちらの記事を参照してください
【2025年09月版】rsyncで /dev/sda から /dev/sdb に Ubuntu をコピーして起動可能にするメモ【UEFI版】
/dev/sda には 以下のパーティションのみがある場合の手順です。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 64G 0 disk
├─sda1 8:1 0 1G 0 part /boot/efi
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 60.9G 0 part
└─ubuntu--vg-lv--0 252:0 0 60.9G 0 lvm /
手順
- コピー先のディスクの準備
- rsync でコピー
- システム設定修正
- 起動テスト
コピー先のディスクの準備
/dev/sda と /dev/sdb の状態
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 64G 0 disk
├─sda1 8:1 0 1G 0 part /boot/efi
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 60.9G 0 part
└─ubuntu--vg-lv--0 252:0 0 60.9G 0 lvm /
sdb 8:16 0 16G 0 disk
パーティション作成
sudo parted /dev/sdb -- mklabel msdos
sudo parted /dev/sdb -- mkpart primary ext4 1MiB 1GiB # /boot
sudo parted /dev/sdb -- mkpart primary ext4 1GiB 100% # LVM PV
フォーマット
# /boot
sudo mkfs.ext4 /dev/sdb1
# LVM
sudo pvcreate /dev/sdb2
sudo vgcreate ubuntu-vg-b /dev/sdb2
sudo lvcreate -l 100%FREE -n lv-0 ubuntu-vg-b
sudo mkfs.ext4 /dev/ubuntu-vg-b/lv-0
マウント
sudo mount /dev/ubuntu-vg-b/lv-root /mnt
sudo mkdir /mnt/boot
sudo mount /dev/sdb1 /mnt/boot
rsync でコピー
除外リストをつけてルートを丸ごとコピー
sudo rsync -aAXHv --progress / /mnt \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}
-aAXH : パーミッション・ACL・ハードリンク保持
--progress : 進行状況表示
--exclude : 除外、ランタイム系ディレクトリ(/dev, /proc, …)
システム設定修正
UUID の取得
UUID を控える
sudo blkid /dev/sdb1 /dev/ubuntu-vg-b/lv-0
/mnt/etc/fstab の修正
控えた UUID に変更。
sudo vim /mnt/etc/fstab
例:
UUID=<uuid-of-sdb1> /boot ext4 defaults 0 2
UUID=<uuid-of-lv0> / ext4 defaults 0 1
GRUB をインストール
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run
sudo chroot /mnt
# initramfs 再生成
update-initramfs -u -k all
# BIOS 用に GRUB インストール
grub-install --target=i386-pc /dev/sdb
update-grub
exit
アンマウント
sudo umount -R /mnt
起動テスト
/dev/sda のHDDを、/dev/sdb のHDDと交換して、BIOS でブート順を指定して起動する。
起動しない場合は、Live USB で起動して再度 grub-install と update-grub を実行するとうまくいくこともある。
さいごに
かんたんでしたね。