開発機としてのRaspberry Pi3に、HDD(SSD使いたいけど、HDDがあったから)を繋いでHDDからブートして使うためのメモ書きです。もちろんswapもHDDに設定してるので安心とかです。
2018/08/18 ファイルシステムへのラベル付を追記。
1. オリジナルの情報
How to Boot from a USB Mass Storage Device on a Raspberry Pi3
Pi3 Booting Part I: USB Mass Storage Boot Beta
まだベータ状態でしたっけ。
2. ラズパイの更新
$ sudo apt update
$ sudo apt install -y rpi-update
$ sudo rpi-update
3. /boot/config.txtの修正
$ echo "program_usb_boot_mode=1" | sudo tee -a /boot/config.txt
$ echo "program_usb_boot_timeout=1" | sudo tee -a /boot/config.txt
$ vcgencmd otp_dump | grep 17:
> 17:1020000a
$ sudo reboot
$ vcgencmd otp_dump | grep 17:
> 17:3020000a
4. USBデバイスの準備
4.1 パーティション作成
ここでは/dev/sda
としていますが、もちろん正しいデバイス名にしましょう。
$ sudo parted /dev/sda
(parted) mktable msdos
Yes
(parted) mkpart primary fat32 0% 100M
(parted) mkpart primary ext4 100M 100%
(parted) print
(parted) quit
4.2 ファイルシステム作成
$ sudo mkfs.vfat -n boot -F 32 /dev/sda1
$ sudo mkfs.ext4 /dev/sda2
$ sudo e2label /dev/sda2 rootfs
4.3 mSDからのコピー
$ sudo mkdir /mnt/target
$ sudo mount /dev/sda2 /mnt/target/
$ sudo mkdir /mnt/target/boot
$ sudo mount /dev/sda1 /mnt/target/boot/
$ sudo apt update; sudo apt install -y rsync
$ sudo rsync -ax --progress / /boot /mnt/target
一応 sshの鍵を再作成。
$ cd /mnt/target
$ sudo mount --bind /dev dev
$ sudo mount --bind /sys sys
$ sudo mount --bind /proc proc
$ sudo chroot /mnt/target
$ rm /etc/ssh/ssh_host*
$ dpkg-reconfigure openssh-server
$ exit
$ sudo umount dev
$ sudo umount sys
$ sudo umount proc
4.4 ブートデバイスの設定
$ sudo sed -i "s|root=/dev/mmcblk0p2|root=/dev/sda2|" /mnt/target/boot/cmdline.txt
$ sudo sed -i "s|/dev/mmcblk0p|/dev/sda|" /mnt/target/etc/fstab
4.5 USBデバイスをアンマウントして再起動
$ cd
$ sudo umount /mnt/target/boot
$ sudo umount /mnt/target
$ sudo shutdown -h now
停止後にmSDを抜いてUSBデバイスだけにしてから電源を入れ直してみましょう。