今回は、現在動かしているラズパイの外付けのSSD(120GB)をHDD(500GB)に移行したので、備忘録として残しておきたいと思います。
環境
Raspberry Pi 4 Model B (4GB)
OS :Raspbian GNU/Linux 10 (buster)
SSD:SanDisk 内蔵 2.5インチ SSD / SSD Plus 120GB
HDD:家に余ってたThinkPadに付いてた古いHDD(500GB)
参考
OSは違いますが、やり方としては前回の記事と大体同じです。
Raspberry Pi 4でCentOS7を外付けSSDで動かす
手順
外付けHDDのフォーマット
まずは、任意のOSでRaspberry Pi Imagerをダウンロードして移行先のHDDをフォーマットします。
Raspberry Pi Downloads - Software for the Raspberry Pi
HDDを探す
フォーマットしたHDDをラズパイに繋いで、以下のコマンドで場所を見つけます。
fdisk -l
そしたら、既にSSDがsda1, sda2にマウントされているので、sdbかsdcにあると思います。
私は、sdcにありました。
(中略)
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 8192 532479 524288 256M c W95 FAT32 (LBA)
/dev/mmcblk0p2 532480 61157375 60624896 28.9G 83 Linux
Disk /dev/sda: 111.8 GiB, 120040980480 bytes, 234455040 sectors
Disk model: Tech
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x2fe51e63
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 12582911 12580864 6G 83 Linux
/dev/sda2 12582912 234455039 221872128 105.8G 83 Linux
Disk /dev/sdc: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: 00LPVX-08V0TT5
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/sdc1 2048 976773119 976771072 465.8G b W95 FAT32
パーティションの作成を行う
前回と同様に、先頭から6GBをswap, 6GBから最後までをrootパーティションとします。
以下のコマンドで、パーティションの作成準備を行います。
parted /dev/sdc
そして、以下のコマンドで分割を行います。
(parted) mktable msdos
警告: いま存在している /dev/sda のディスクラベルは破壊され、このディスクの全データが失われます。続行しますか?
はい(Y)/Yes/いいえ(N)/No? y
(parted) mkpart primary ext4 0% 6G
(parted) mkpart primary ext4 6G 100%
分割したら、以下のコマンドでsdcがsdc1とsdc2に別れてることを確認します。
blkid
swap領域のフォーマット
swapも同様に、以下のコマンドでフォーマットします。
mkswap -c /dev/sdc1
ddコマンドでsda2をsdc2にコピー
ifとofの場所を間違えると全部消えることになるので、気をつけて実行しましょう。
dd if=/dev/sda2 of=/dev/sdc2 bs=300M status=progress
コピーしたパーティションの修復を行う
念のため、以下のコマンドでsdc2パーティションの修復を行います。
e2fsck -f /dev/sdc2
パーティションの拡張を行う
現状では、sda2でコピーした105GBの範囲しか使えないので、以下のコマンドで拡張します。
resize2fs /dev/sdc2
UUIDを変更する
ddした直後は、sda2と同じUUIDになってしまっているので、以下のコマンドでsdc1, sdc2のUUIDを更新します。
tune2fs -U random /dev/sdc1
tune2fs -U random /dev/sdc2
sdc1, sdc2のPARTUUIDを調べる
以下のコマンドで、それぞれのPARTUUIDを調べてメモします。(UUIDではないので注意)
blkid
私の場合だと、こんな感じになります。(sdc1=166038d6-01、sdc2=166038d6-02)
/dev/mmcblk0p1: LABEL_FATBOOT="boot" LABEL="boot" UUID="592B-C92C" TYPE="vfat" PARTUUID="b4eedfbc-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="706944a6-7d0f-4a45-9f8c-7fb07375e9f7" TYPE="ext4" PARTUUID="b4eedfbc-02"
/dev/sda1: UUID="9868f215-60fc-4cfb-bda8-acd2ccc51faa" TYPE="swap" PARTUUID="2fe51e63-01"
/dev/sda2: LABEL="rootfs" UUID="2ce08958-9dee-4938-908c-b78ce0138a3e" TYPE="ext4" PARTUUID="2fe51e63-02"
/dev/sdc1: UUID="0ceee9c8-65ad-4384-b6bc-eb6881b5c124" TYPE="swap" PARTUUID="166038d6-01"
/dev/sdc2: LABEL="rootfs" UUID="ab24a9e6-3c3e-463e-a398-c0346f1fcf8e" TYPE="ext4" PARTUUID="166038d6-02"
/dev/mmcblk0: PTUUID="b4eedfbc" PTTYPE="dos"
HDDの変換アダプタの情報を調べる
移行元の変換アダプタを移行先に使いまわして利用するなら、ここは飛ばして大丈夫です!!
どれがベンダIDなのかとかは前回の記事を参照。
lsusb
私のベンダIDとデバイスIDは、 174c:55aaでした。
/boot/cmdline.txtの編集
移行元の変換アダプタを移行先に使いまわして利用するなら、ここも飛ばして大丈夫です!!
既にある、SSDの変換アダプタのベンダIDとデバイスIDを上で調べた、HDDの変換アダプタに変更します。(usb-storage.quirks=ベンダID:デバイスID:u)
usb-storage.quirks=174c:55aa:u
その続きに、あるrootパーティションをsdc2のPARTUUIDに変更します。
root=PARTUUID=166038d6-02
私の場合は、こんな感じになりました。
usb-storage.quirks=174c:55aa:u console=ttyAMA0,115200 console=tty1 root=PARTUUID=166038d6-02 rootfstype=ext4 elevator=deadline rootwait
/mnt/etc/fstabの編集
まだ、マウントしてなければsdc2をマウントします。
mount /dev/sdc2 /mnt
そして、/mnt/etc/fstabのswapをsdc1, /をsdc2のPARTUUIDに変更します。
私の場合は、こんな感じになりました。
proc /proc proc defaults 0 0
PARTUUID=b4eedfbc-01 /boot vfat defaults 0 2
PARTUUID=166038d6-02 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
PARTUUID=166038d6-01 swap swap defaults,noatime 0 0
/bootはmicroSDなので、触らないように注意しましょう。
再起動
以上で、移行は完了です。
電源を切った後に、SSDを抜いて、電源を入れてちゃんと動くことを確認しましょう。
私の場合はHDDがボロボロすぎて初回の起動に3分近くかかってしまいました…