概要
- RaspberryPi3では、USBストーレジから起動できるようになったらしく、そのファームウェアの対応したらしい(まだベータ扱い)。
- ソース
-
RASPBERRY PI BLOG:: PI 3 BOOTING PART I: USB MASS STORAGE BOOT BETA
# ネットワーク起動の説明をあしたする、とのこと。(stay tuned for the next part on booting over Ethernet tomorrow) - HOW TO BOOT FROM A USB MASS STORAGE DEVICE ON A RASPBERRY PI 3
-
RASPBERRY PI BLOG:: PI 3 BOOTING PART I: USB MASS STORAGE BOOT BETA
- あ、ほんとに、起動した..
環境
- Raspberry Pi 3
2016-05-27-raspbian-jessie-lite.img
- USBストレージ(USBのSDカードリーダにmicroSD..意味あるのか?!)
手順
ファームウェアの更新・設定 (microSDにて)
- まずは通常通りに、microSDに、Raspbianを書き込んで作業はじめる
# APTレポジトリデータベース更新.
sudo apt-get update
#
# Raspbian liteでは、rpi-updateをインストール.
sudo apt-get install rpi-update -y
#
# 'next'ブランチから、ファームウェア等々、更新.
sudo BRANCH=next rpi-update
# 今回使用したもの
# > *** If no errors appeared, your firmware was successfully updated to 193f081a0ed502b62483aa707a79cf245db9b028
#
# USBブートモードを有効に.
echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
#
# 現在の otpの値を確認.
vcgencmd otp_dump | grep 17:
# > 17:1020000a
#
# 再起動
sudo reboot
#
# otpの値を確認
vcgencmd otp_dump | grep 17:
# > 17:3020000a となっていればOK
USBストレージの準備
-
USBストレージをらずぱいに挿す ( =>
/dev/sda
になるはず)
pi@raspberrypi:~ $ ls -l /dev/sda
ls: cannot access /dev/sda: No such file or directory
pi@raspberrypi:~ $ ls -l /dev/sda
brw------- 1 root root 8, 0 Aug 4 19:57 /dev/sda
pi@raspberrypi:~ $
2. `sudo parted /dev/sda`<br>パーティション作成
```txt:partedに打つコマンド
mktable msdos
Yes
mkpart primary fat32 0% 100M
mkpart primary ext4 100M 100%
print
quit
-
パーティションフォーマット(mkfs)
mkfs
sudo mkfs.vfat -n BOOT -F 32 /dev/sda1
sudo mkfs.ext4 /dev/sda2
4. 実行例
```shell-session:partedとmkfs(フォーマット)の実行例
pi@raspberrypi:~ $ sudo parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mktable msdos
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes
(parted) mkpart primary fat32 0% 100M
(parted) mkpart primary ext4 100M 100%
(parted) print
Model: Generic STORAGE DEVICE (scsi)
Disk /dev/sda: 3905MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 99.6MB 98.6MB primary fat32 lba
2 99.6MB 3905MB 3805MB primary ext4 lba
(parted) quit
Information: You may need to update /etc/fstab.
pi@raspberrypi:~ $ sudo mkfs.vfat -n BOOT -F 32 /dev/sda1
mkfs.fat 3.0.27 (2014-11-12)
pi@raspberrypi:~ $ sudo mkfs.ext4 /dev/sda2
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 929024 4k blocks and 232464 inodes
Filesystem UUID: 2cf0a8cc-917b-4bb5-9e37-982695d7c4e6
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
pi@raspberrypi:~ $
-
今使ってるRaspbianのシステムをUSBへコピー
今使ってるRaspbianのシステムをUSBへコピー.
sudo mkdir /mnt/target
sudo mount /dev/sda2 /mnt/target/
sudo mkdir /mnt/target/boot
sudo mount /dev/sda1 /mnt/target/boot/
sudo apt-get update; sudo apt-get install rsync
sudo rsync -ax --progress / /boot /mnt/target
```txt:時間を計ってみたら
# Raspbian Liteにて。
real 6m57.916s
user 0m23.290s
sys 0m26.180s
-
sshホストキーの再生成
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
7. `/boot/cmdline.txt`と`/etc/fstab`の編集
- mmcblk0p => sda みたいにする
```bash
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
-
ファイルシステムのアンマウントして、らずぱい電源オフ. (ちゃんとオフになるのを待つように)
cd ~
sudo umount /mnt/target/boot
sudo umount /mnt/target
sudo poweroff
9. USBストレージで起動
- 電源を抜いて、
- SDカードを抜いて、
- 電源をさす。
- => すべてがうまく行っている場合は、Piが数秒後に起動を開始するはずだ。
## その他
- [qiitapoi@twitterにて](https://twitter.com/qiitapoi/status/761404408173244416)
<!-- https://twitter.com/dexdev/status/776713696391245824 -->