USB メモリにインストールした Arch Linux を別のへコピーする

目的

元々ある USB メモリにインストールしてあった Arch Linux を別の USB にブート可能な形で移動する。 コピー先の方が容量が小さいので、 dd は使えない気がする(?)。

登場人物

UUID を知るには lsblk -f, サイズを知るには lsblk -m

  • コピー元USBメモリ : sdc

    • 名前 マウントポイント, フォーマット, UUID, サイズ
    • sdc1 /boot, ext2, d3e1cf..., 100M
    • sdc2 /, ext4, baa04a..., 7.5G
  • コピー先 : sdb

    • sdb1: , fvat, 226A-xxxx, 3.8G

    全削除する

方針

  1. sdb を普通インストールするときと同じようにパーティション分けする
  2. 両方を mount し、 rsync か何かを使って全パーティションをコピーする
  3. /boot 以下のファイル、 /etc/fstab でディスクの UUID を新しいものに書き換える

ログ

  1. パーティション分け、フォーマット

     # gdisk /dev/sdb
    

    o で新たにパーティションテーブルを作り、 n でパーティションを作る。 先頭から 100M とそれ以外の全部に分ける。 あと一応 c でラベルをつけておく (Boot_ArchLinux, Root_ArchLinux)。 w で書き込んで終了。

     # mkfs.ext2 /dev/sdb1
     # mkfs.ext4 /dev/sdb2
    
  2. ファイルのコピー

     # mkdir usbcp && cd usbcp
     # mkdir src
     # mkdir dst
     # mount /dev/sdc1 src
     # mount /dev/sdb1 dst
     # rsync -aAXv src/ dst
     ## 動いてるシステムのコピーじゃないので exclude は不要
     # umount src dst
    
     # mount /dev/sdc2 src
     # mount /dev/sdb2 dst
     # rsync -aAXv src/ dst
     # umount src dst
    
  3. ファイルの書き換え

     # mount /dev/sdb2 dst
     # vi dst/etc/fstab
     ## UUIDを書き換える
     # umount dst
    
  4. ブートローダのインストール

     # mount /dev/sdb2 /mnt
     # mount /dev/sdb1 /mnt/boot
     # arch-chroot /mnt
     # syslinux-install_update -i -a -m
     # exit
     # umount -R /mnt
    

参考