2018年4月22日日曜日

続、ラズパイ外付けUSB-SSDから起動

すでにずいぶん前から外付けUSB-SSDで起動させていますが、改めて見直すとおかしなところがいっぱいあったので最新の環境で再度構築しました。自分の覚書として書いておきます。

そもそも、今更なんでそんなことをやっているかというと新しいおもちゃを買ったからです。もう少し言うと安いSSDをAliexpress経由で買ってみたのがキッカケです。

加えて起動ディスクとして使うSDカードも合わせて購入しています。Raspberry Piの起動用SDカードは容量が小さくても問題ないので、安いものはないかと探し回った挙げ句、Aliexpressで買ってみました。しかしAliexpressで買った1GBは不具合があり全滅、で、Amazonならいいかと思って買ってみたら同じ不具合があり全滅でした。どちらも最初の10%がぐらいが使える領域になっています。したがってちょっと書き込みテストをしただけでは問題が発覚しないようになっており非常にいやらしい構造です。Amazonで買ったものも安いやつは同じだったので、安いやつを買った人は一度、全領域に書き込みテストをしてみることをおすすめします。

で、一方のAliexpressで買った外付けSATA SSDはそれなりに使えています。ラズベリーパイで使うなら容量は16GBもあれば十分なので、16GBと32GBをいくつか買ってみました。

価格は16GBが送料込み1250円(笑)、32GBが送料込み1713円でした。送料込みでこの値段なので表示よりも容量が少ないとか最初からエラーありまくりとかじゃなければ、筐体がプラでできているなどの外側から見た品質は全く気になりません。といっても、中国直輸入は最初に話したSDカードみたいなことが当たり前にあるのでリスクは高いです。

そのままではRaspberry Piで使えないので、USBケースも購入します。もちろんAliexpressです。USB2.0のアルミエンクロージャタイプで送料込み350円。これで通販の信頼性があれば完璧なんですが世の中そうはうまくいきません。ただし、私の場合にはこれまで品物が送られてこなかったことはありませんでした。もっとも到着までに1か月上等!です。

で、試した結果がこちら!
(あとでスピードテスト結果を貼る予定(笑)

このスピード結果は最初からわかっていたことで、容量が少ないと遅いようです。私が買ったショップでは容量別のスピードが記載されており良心的です。でもSDカードに比べれば早いし、ラズパイで使用するので気にしていません。

さて、与太話も済んだことなので本題に入りましょう。

1.まず、最新のLinuxイメージを本家サイトから落とします。
2018-04-18-raspbian-stretch.zip
今回はこれを使いました。
RASPBIAN STRETCH WITH DESKTOP
Image with desktop based on Debian Stretch
Version:April 2018
Release date:2018-04-18
Kernel version:4.14
まあ特別な思いがあるわけではありません。

で、このイメージをEtcherをつかってSSDに書き込もうとしたんですが 撃沈。理由は面倒なので調査せず。サクッと今まで使っていた
win32diskimager-1.0.0-install.exe
をインストールして使うことにします。

2.Win32DiskImagerを使ってUSB-SSDにイメージを書き込みます。
パーティションが2つできていたので、ブートパーティションの内容をオールコピーしてSDカードに書き込みます。おっと、

3.後ろのほうが使えないSDカードをフォーマットして、USB-SSDのブートパーティションの内容をSDカードのにオールコピーします。また、ボリューム名をBOOTに変更します。今回はRaspberry Piの起動ディスクとして使用するため、ブート部分の総ファイルサイズが非常に少ないので、結果として壊れた領域は使わないことになり後ろの領域が壊れていても事実上問題ありません。また、USB-SSDにイメージを書き込んでそれをSDカードにコピーしているのでSDカードのcmdline.txtは変更せずにすみました・・・、と行きたかったんですが、後半部分があると動かないので潔く削除しました(笑)。暇があるときにその意味を考えます。
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=9cba179a-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh splash plymouth.ignore-serial-consoles

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
※実際にはroot=/dev/sda2の部分も変更しています。おそらく変更しなくても動くと思っているのですが面倒なので試していません(^^;)。

4.最後にUSB-SSDの/etc/fstabを変更します。
前回はSDメモリにインストールしたものを使ったのですが、今回はUSB-SSDに直接イメージを書き込んでいますのでboot側を修正します。
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
ひとまずこんなところでしょうか。

ということで覚書終了です。

これで家にある3台のRaspberry PiがすべてUSB-SSD起動となったわけです。1台目は相変わらず気温、湿度、気圧を測定し続けています。3代目はMP3サーバーとして使ってます。で、今回の2代目は・・・さて何に使おうか・・・(^^;)。

追記1
cmdline.txtはこれで動きました。

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles

rootの変更とinit=/usr/lib/raspi-config/init_resize.sh削除で動き出します。

追記2
まだ半信半疑なんだけど、
/dev/mmcblk0p1  /boot           vfat    defaults          0       2

/dev/mmcblk0p1  /           vfat    defaults          0       2
に変えました。こうしないとうまく動きません。理論的には正しいんだけど・・・。昔は上の指定で動いていた気がするんだけど・・・。

それから、勝手にリサイズするのも止めました。
起動中に勝手にリサイズするのを防ぐには、
pi@raspberrypi:~ $ sudo mv /mnt/etc/init.d/resize2fs_once /mnt/etc/init.d/resize2fs_once.bak
pi@raspberrypi:~ $ sudo mv /mnt/etc/rc3.d/S01resize2fs_once /mnt/etc/rc3.d/S01resize2fs_once.bak
詳細はググると出てくると思います。

0 件のコメント:

コメントを投稿