Raspberry PiにHDDを繋いで、OSをインストール
USBブートは上手くいきませんでした......(;-ω-)
やったこと
今回は環境を一新&USBブート化したいと思って、
microSDカードにdd
コマンドでイメージファイルを書き込む操作を、
HDDに対してやってみました。
とりあえず"環境を一新"するほうはできたのでメモ。
環境
- ハードウェア
- Raspberry Pi 3B ("+"じゃないほう)
- microSDカード(16GB, class10)
- HDD (2TB, 3.5inch)
- SATA USB 3.0 変換アダプタ(ACアダプタ付き)
- OS
- Raspbian GNU/Linux 9.6 (stretch)
HDDにOSをインストール
今回はmicroSDカードに入っているRaspbianから操作しています。
- HDDの接続を行う
- デバイスファイルを確認(今回は
sda
がHDD、mmcblk0
はSDカード)- 以下は
blkid
を使った例
- 以下は
user@raspberrypi:~$ blkid NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 1.8T 0 disk mmcblk0 179:0 0 14.7G 0 disk ├─mmcblk0p1 179:1 0 43.1M 0 part /boot └─mmcblk0p2 179:2 0 14.6G 0 part /
- OSのイメージファイルを用意する
- 私はPCで公式サイトからDLして、それからラズパイに転送しました
- 今回は
2018-11-13-raspbian-stretch-lite.zip
- ファイルを解凍する
$ unzip 2018-11-13-raspbian-stretch-lite.zip
- HDDにイメージファイルを書き込む(危険なコマンドなので慎重に)
# dd bs=4M if=2018-11-13-raspbian-stretch.img of=/dev/sda conv=fsync
- パーティションの拡大
- 注: この段階ではUSBブートしようとしていたのでブート領域をそのままにしています
root@raspberrypi /home/user# parted /dev/sda (parted) print Number Start End Size Type File system Flags 1 4194kB 50.2MB 46.0MB primary fat32 lba 2 50.3MB 1866MB 1816MB primary ext4 (parted) resizepart 2 100% (parted) print Number Start End Size Type File system Flags 1 4194kB 50.2MB 46.0MB primary fat32 lba 2 50.3MB 2000GB 2000GB primary ext4 (parted) quit
ブートローダの設定
※USBのみでブートしたい場合はやることが異なるので注意
... console=tty1 root=PARTUUID=XXXXXXXX rootfstype=ext4 ...
書き込んだRaspbianの設定
sda2
をマウントする# mount /mnt/ /dev/sda2
fstab
のPARTUUIDを書き換える- ex.
# vi /mnt/etc/fstab
YYYYYYYY
をmmcblk0p1
のPARTUUIDに読み替えてください
- ex.
proc /proc proc defaults 0 0 PARTUUID=YYYYYYYY /boot vfat defaults 0 2 PARTUUID=XXXXXXXX / ext4 defaults,noatime 0 1
sda2
をアンマウントする# umount /mnt
結果
うまく設定できていれば、
みたいな流れでRaspbianが起動します。
上手くいかなかった場合は他のPCを使って設定を直しましょう。
ディスクIOのベンチマーク
hdparm
はAPTのパッケージが使えます。
- # apt install hdparm
user@raspberrypi:~$ sudo hdparm -t /dev/mmcblk0 /dev/mmcblk0: Timing buffered disk reads: 30 MB in 3.09 seconds = 9.71 MB/sec user@raspberrypi:~$ sudo hdparm -t /dev/sda /dev/sda: Timing buffered disk reads: 102 MB in 3.02 seconds = 33.77 MB/sec
およそ270Mbps。 USB2.0の理論値(480Mbps)には届かず。
USBブートできなかった原因
$ dmesg | less
... [ 2.551665] usb 1-1: New USB device found, idVendor=0424, idProduct=9514 [ 2.563530] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 2.576437] hub 1-1:1.0: USB hub found [ 2.585444] hub 1-1:1.0: 5 ports detected ... [ 11.301430] usb 1-1.2: new high-speed USB device number 5 using dwc_otg [ 11.442967] usb 1-1.2: New USB device found, idVendor=174c, idProduct=55aa [ 11.455298] usb 1-1.2: New USB device strings: Mfr=2, Product=3, SerialNumber=1 [ 11.468045] usb 1-1.2: Product: 3.0 [ 11.476864] usb 1-1.2: Manufacturer: USB [ 11.486118] usb 1-1.2: SerialNumber: 000000000001 [ 11.496730] usb-storage 1-1.2:1.0: USB Mass Storage device detected ...
おそらくHDDがスピンアップする前にタイムアウトしたのでしょうね...
(program_usb_boot_timeout
でも5秒でタイムアウト)
まとめ
ひとまずラズパイで大きなストレージが扱えるようになったので、良しとします。
USBブートしたい方は、ちょっと奮発してSSDとかにするのもアリなのかもしれませんね。
参考にしたページ
https://www.raspberrypi.org/documentation/installation/installing-images/linux.md
https://www.raspberrypi.org/forums/viewtopic.php?t=209416
https://wiki.archlinux.jp/index.php/GNU_Parted
https://www.raspberrypi.org/forums/viewtopic.php?t=164500