0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【2025年09月版】rsyncで /dev/sda から /dev/sdb に Ubuntu をコピーして起動可能にするメモ【UEFI版】

Posted at

はじめに

  • OSをそのまま別ディスクにコピーしたい、けど、単なるコピーでは無理な方向けの記事
    • 大きいディスクを小さいディスクにしたいなど
  • 移行元HDDが、移行先HDDより大きい場合で、ddなどではコピーできない場合の手法
  • rsyncで /dev/sda (64GB) から /dev/sdb (16GB) に Ubuntu をコピーして起動可能にするメモ
  • ubuntu24.04 をコピーしています
  • /dev/sda から /dev/sdb にコピーします
  • x86_64-efi、または、arm64-efi 環境

/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 

パーティション作成

  • sdb1 → EFI
  • sdb2 → /boot
  • sdb3 → LVM
sudo parted /dev/sdb mklabel gpt

# EFI 512MiB
sudo parted -a opt /dev/sdb mkpart ESP fat32 1MiB 513MiB
sudo parted /dev/sdb set 1 esp on

# /boot 1GiB
sudo parted -a opt /dev/sdb mkpart primary ext4 513MiB 1537MiB

# 残りを LVM に全部
sudo parted -a opt /dev/sdb mkpart primary 1537MiB 100%
sudo parted /dev/sdb set 3 lvm on

フォーマット

# EFI
sudo mkfs.fat -F32 /dev/sdb1

# /boot
sudo mkfs.ext4 /dev/sdb2

# LVM 初期化
sudo pvcreate /dev/sdb3
sudo vgcreate ubuntu-vg-b /dev/sdb3
sudo lvcreate -l 100%FREE -n lv-0 ubuntu-vg-b   # 100% 利用
sudo mkfs.ext4 /dev/ubuntu-vg-b/lv-0

マウント

sudo mount /dev/ubuntu-vg-b/lv-0 /mnt
sudo mkdir -p /mnt/boot /mnt/boot/efi
sudo mount /dev/sdb2 /mnt/boot
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/sdb1 /mnt/boot/efi

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/sdb2 /dev/ubuntu-vg-b/lv-0

/mnt/etc/fstab の修正

控えた UUID に変更。

  • /dev/ubuntu-vg-b/lv-0 の UUID → /
  • /dev/sdb2 の UUID → /boot
  • /dev/sdb1 の UUID → /boot/efi
sudo vim /mnt/etc/fstab

例:

UUID=<uuid-of-sdb2>   /boot     ext4  defaults        0 2
UUID=<uuid-of-sdb1>   /boot/efi vfat  umask=0077      0 1
UUID=<uuid-of-lv0>    /         ext4  defaults        0 1

GRUB をインストール

sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt

# x86_64の場合は以下
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
# ARMの場合は以下
#grub-install --target=arm64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
update-grub
exit

アンマウント

sudo umount -R /mnt

起動テスト

/dev/sda のHDDを、/dev/sdb のHDDと交換して、UEFI でブート順を指定して起動する。

起動しない場合は、Live USB で起動して再度 grub-install と update-grub を実行するとうまくいくこともある。

さいごに

かんたんでしたね。

リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?