LoginSignup
0
2

More than 3 years have passed since last update.

外付けSSDで動かしているラズパイのデータ移行

Posted at

今回は、現在動かしているラズパイの外付けの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分近くかかってしまいました…

0
2
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
2