やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

SDカードにインストール済みのRaspbianをUSB接続HDDにコピーする

Raspbian入りSDカードを外付HDDにコピーする。

必要なもの

  • 所要時間: 4h
  • Raspberry pi 3 Model B
  • SDカード
    • TS32GUSD300S-AE
    • Raspbian
  • 外付HDD (USB接続)
    • HDD: MQ01ABD100
    • HDDケース: TS0GSJ25S3

前提

  1. Raspbianをダウンロードする
  2. RaspbianをSDカードに書き込む
  3. Raspbianを焼いたSDカードで初回ブートする

方法

 ラズパイを起動し、HDDをUSB接続する。マウントするダイアログに従う。

  1. HDDのデバイス名を確認する
  2. HDDを初期化する
  3. SDカードにあるRaspbianをHDDにコピーする
  4. ブート設定する

手順

1. HDDのデバイス名を確認する

$ df -h

 サイズなどで判断すること。ここではHDDのデバイス名が/dev/sdbだと仮定する。

2. HDDを初期化する

概要

  1. パーティションテーブルをmsdosにする
  2. パーティションを以下のように作成する
パーティション種別 フォーマット サイズ 用途
プライマリ FAT32 100MB ブート領域
プライマリ ext4 残り全部 システム領域

 注意! 全データ消去される。

2-1. パーティション作成

  1. ターミナルを起動する
  2. パーティション作成ツールpartedを実行する
$ sudo parted /dev/sdb

 以下の待ち受けにコマンドを入力していく。

(parted) 
mktable msdos
mkpart primary fat32 0% 100M
mkpart primary ext4 100M 100%
print
quit

 途中でYes/NoIgnore/Cancelのような選択肢が出ることがある。そのときは頭文字y,n,i,cを入力してEnterキー押下することで決定できる。

もしパーティションが既存なら

 全パーティションを削除してからパーティション作成する。

 既存パーティション番号を一覧する。

(parted) p

 指定した番号のパーティションを削除する。

(parted) rm 1

 これを全パーティションに対して行う。

2-2. HDDをフォーマットする

sudo mkfs.vfat -n BOOT -F 32 /dev/sdb1
sudo mkfs.ext4 /dev/sdb2

3. SDカードにあるRaspbianをHDDにコピーする

sudo mkdir -p /mnt/target
sudo mount /dev/sdb2 /mnt/target/
sudo mkdir -p /mnt/target/boot
sudo mount /dev/sdb1 /mnt/target/boot/
sudo rsync -ax --progress / /boot /mnt/target

 コピーに数時間かかった。

4. ブート設定する

 ブート時に参照するシステム領域をHDDにする。(SDカードのパーティションを指したままなので)

 HDDにコピーした以下のファイルを修正する。

  1. cmdline.txt
  2. fstab

4-1. デバイスのpart uuidを確認

ls -l /dev/disk/by-partuuid/
合計 0
...
lrwxrwxrwx 1 root root 10  8月 17 15:51 82c65ae3-01 -> ../../sdb1
lrwxrwxrwx 1 root root 10  8月 17 15:51 82c65ae3-02 -> ../../sdb2
lrwxrwxrwx 1 root root 15  8月 17 15:51 c06b0477-01 -> ../../mmcblk0p1
lrwxrwxrwx 1 root root 15  8月 17 15:51 c06b0477-02 -> ../../mmcblk0p2
SDカードHDD
ブート領域c06b0477-0182c65ae3-01
システム領域c06b0477-0282c65ae3-02

4-2. cmdline.txt

$ sudo leafpad /mnt/target/boot/cmdline.txt

 root=PARTUUID=の値はSDカードのc06b0477-02だが、これをHDDの82c65ae3-02に変更する。

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=82c65ae3-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh splash plymouth.ignore-serial-consoles

4-3. fstab

$ sudo leafpad /mnt/target/etc/fstab

 UUIDをSDカードのものからHDDのものへ修正する。

before

proc            /proc           proc    defaults          0       0
PARTUUID=c06b0477-01  /boot           vfat    defaults          0       2
PARTUUID=c06b0477-02  /               ext4    defaults,noatime  0       1

after

proc            /proc           proc    defaults          0       0
PARTUUID=82c65ae3-01  /boot           vfat    defaults          0       2
PARTUUID=82c65ae3-02  /               ext4    defaults,noatime  0       1

 完了。

情報源