あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

昨日の長津田検車区(さよなら8606F)

8606Fが離脱したと聞き、昨日検車区の歩道橋から屋根を見たのが最後になったなと思ったので書く次第。

上京してまもなくて、まだほとんど鉄道を知らないながらもすでに全編成乗車とか言うマニアックなことをしていた私は、それでも8609Fが離脱したあたりで「8606Fもそろそろ廃車されてどこかに譲渡されるのかしら」などと思っていた時期がありましたが、それから12年。まさか2000系とか8642Fよりも長生きするとは思ってもみませんでした。なんかちょっと感慨深いものがありますね。長い間お疲れさまでした。

そんなわけで最後に拝んだ8606Fの屋根。検査通せばきれいになったりするのかもしれませんが、もう十分役目は果たした感じが伝わって来るような。

f:id:Akkiesoft:20200511180212j:plain

検車区全体はこんな感じ。9001Fが出場して洗車線で留置。5163Fと5165Fは変わらず。2136Fも場所は変わらずでした。なので8606Fの屋根を見た以外特に何もなしです。

f:id:Akkiesoft:20200511180726j:plain

f:id:Akkiesoft:20200511180832j:plain

帰りに2135Fに初乗車。新車の香り is GOOD。多分まだ乗っていない2134Fも運用に入っていたのですが、行きの駅で目の前で発車してしまい逃しました。おしい。

f:id:Akkiesoft:20200511180935j:plain

8606Fの離脱で8500系は16本に。2136Fも含めると2020系と同数になりましたね。また、方向幕車と恒久的なサークルK編成もいよいよ消滅となりました。

実際にPi4を1台ネットワークブート環境に移してみる

Raspberry Pi 4 のPXE対応の続き。

akkiesoft.hatenablog.jp

家ではPi4が1台常時稼働しており、MySQLが動くなどSDカードをしばくかんじの環境なので、PXEブート&ReadyNASNFSストレージ化してみました。

やり方はここを参照。

www.raspberrypi.org

ReadyNASの設定

ReadyNAS(スクショはReadyNAS 102)に、NFSの共有を作ります。クオーターはつけなくて良いですが、なんとなくSDカードっぽく16GBに設定。

f:id:Akkiesoft:20200510132049j:plain

次に共有設定。192.168.29.39はDHCPサーバーのアドレスで、/bootをここに置くのでアクセス権限が必要です。ただ、リードオンリーでもいいかも。Pi4アドレス(192.168.29.82)はリードライトとROOTにチェックを入れます。

f:id:Akkiesoft:20200510132857j:plain

SDカードで稼働中のPi4での作業

まずPXEに対応するために、冒頭に貼った先日の記事の通りブートローダーをアップデートして、PXEブートの有効化を済ませておきます。

SDカード内のデータをNFSrsyncします。ここはドキュメントと同じやり方で良いでしょう。

$ sudo mkdir /nfs
$ sudo mount 192.168.29.12:/data/rpi-rastv /nfs
$ sudo rsync -xa --progress --exclude /nfs / /nfs/
$ sudo rsync -xa --progress /boot/ /nfs/boot/

NFSにコピーした側の起動設定を変えていきます。192.168.29.12がReadyNASのアドレスです。

$ sudo vi /nfs/boot/cmdline.txt

console=serial0,115200 console=tty1 root=/dev/nfs nfsroot=192.168.29.12:/data/rpi-pi4,vers=4.1,proto=tcp rw ip=dhcp elevator=deadline fsck.repair=yes rootwait

$ sudo vi /nfs/etc/fstab
# PARTUUIDで始まる行はコメントアウトする
#PARTUUID=56cd6262-01  /boot           vfat    defaults          0       2
#PARTUUID=56cd6262-02  /               ext4    defaults,noatime  0       1
192.168.29.12:/data/rpi-pi4/boot /boot nfs defaults,vers=4.1,proto=tcp 0 0

最後に、Pi4のシリアル番号をメモしておきます。以下の出力からabcd1234の8ケタの部分をdnsmasqの設定でつかいます。

$ cat /proc/cpuinfo

Serial		: 10000000abcd1234

dnsmasqサーバーの設定

家ではすでにdnsmasqが動いていて、PXEっぽい設定も済ですがこんな感じで設定してます。ドキュメントではMACアドレス限定してなかったですが、家ではなんでこうしていたか忘れたな。多分いらない。

enable-tftp
tftp-root=/tftpboot

# PXE for Raspberry Pi
dhcp-mac=set:rpi,b8:27:eb:*:*:*
dhcp-mac=set:rpi4,dc:a6:32:*:*:*
pxe-service=tag:rpi,0,"Raspberry Pi Boot"
pxe-service=tag:rpi4,0,"Raspberry Pi Boot"

# Pi4のアドレスはDHCP側で固定にしてやるとラク。この例では192.168.29.82に固定
dhcp-host=<Pi4のMACアドレス>,192.168.29.82,infinite

fstabにNFSのマウント設定を書きます。マウント先は/tftpboot/です。先程確認したabcd1234を入れます。

$ sudo mkdir -p /tftpboot/abcd1234

$ sudo vi /etc/fstab

192.168.29.12:/data/rpi-pi4/boot /tftpboot/abcd1234 nfs ro 0 0

$ sudo mount /tftpboot/abcd1234
$ ls /tftpboot/abcd1234
(こんな感じで/bootの中身が見えていればOK)
bcm2708-rpi-b.dtb         bcm2711-rpi-4-b.dtb  fixup.dat         start4cd.elf
bcm2708-rpi-b-plus.dtb    bootcode.bin         fixup_db.dat      start4db.elf
bcm2708-rpi-cm.dtb        cmdline.txt          fixup_x.dat       start4.elf
bcm2708-rpi-zero.dtb      config.txt           issue.txt         start4x.elf
bcm2708-rpi-zero-w.dtb    COPYING.linux        kernel7.img       start_cd.elf
bcm2709-rpi-2-b.dtb       fixup4cd.dat         kernel7l.img      start_db.elf
bcm2710-rpi-2-b.dtb       fixup4.dat           kernel8.img       start.elf
bcm2710-rpi-3-b.dtb       fixup4db.dat         kernel.img        start_x.elf
bcm2710-rpi-3-b-plus.dtb  fixup4x.dat          LICENCE.broadcom
bcm2710-rpi-cm3.dtb       fixup_cd.dat         overlays

起動する

あとはPi4の電源を落として、SDカードを抜いて電源を入れ直せばPXEブートして、NFSファイルシステムにして起動してくるでしょう。今回は移行なのでSSHホスト鍵の再生成はしませんでしたが、必要に応じてドキュメントの手順に従って実施すると良いでしょう。

起動しない場合、ReadyNASなどNASNFSがV4に対応しているかの確認をします。していない場合はNFSマウントオプションから「,vers=4.1」を削ると起動します。

ちなみにReadyNASの場合はシステム設定のサービスのところで有効化できました。

f:id:Akkiesoft:20200510135424j:plain

速度は……

SDカードが無くなったことによって、ストレージの信頼性はぐいっと上がるものと考えられます。ギガビットなのでNFSストレージのIOで帯域をつかいきることもそれほどないでしょう。

ddコマンドでファイル作成スピードを計測したところ、10MB/s前後でした。100Mbpsかな……?これはもしかするとSDカードのほうが早いかもしれない🤔?自宅のReadyNAS 102はHDD2本構成なので、たとえば4本構成とか、今ならSSDNASなんてのもあるので、そういうのを使えばもっと快適なNFSを提供できるかもしれません。使用中の環境はIO速度は求めないはずなので、これでしばらく様子見でしょうかね。

まとめ

初めてRaspberry PiPXEブートを本番にぶっこんでみました。様子見してダメそうならSDに戻しますが、まあ多分大丈夫なんじゃないかなあ、と思います。

いまさら触ったラズピッピ4とかでできるやつ2つ

すでにさわってるひとも結構多いっぽい機能も、へえ~そうなんだ〜とスルーしていたので、いまさらながら自分で触ったやつを2つメモ。

Raspbianを64bitにする

/boot/config.txtに以下の1行を追記するとarmv7lからaarch64になるというもの。動かしたいアプリの対応アーキテクチャがaarch64というときには有効なのかも。

arm_64bit=1

ドキュメントにも書かれておる。kernel8.imgが/bootにあるリリースで利用可能。busterリリース以降かしらん。

www.raspberrypi.org

ちなみに、/boot/config.txtに書くとき、[pi4]セクションに書くとPi4ではaarch64、それ以外ではarmv6l or armv7lで起動するといった使い方ができた。これのありがたみのほどは不明。

(略)
[pi4]
arm_64bit=1

[all]
(略)

さらに、[pi4]セクションと同じノリで、[pi3 +][pi3]…と書くこともできるらしい。これも知らんかった。できたらいいなと思って書きながらググったら出てきた。

www.raspberrypi.org

なので、64bit使えるモデルでは全部aarch64で起動してほしいなら、こう書いても良さそう。

(略)
[pi4]
arm_64bit=1
[pi3 +]
arm_64bit=1
[pi3]
arm_64bit=1

[all]
(略)

Raspberry Pi 4のUSB-C電源コネクターでOTG

いつからだろうと思って調べてたら最初からっぽかった。私が調べたときはなんかいつもとは違うOTGのやり方してる人のブログを見かけてた気がするけど、掘り返せなかったー。

www.raspberrypi.org

Zeroでやるようにconfig.txtとcmdline.txtに一言ずつ書いたら普通にEthernetバイスとして見えるようになりました。マジかー。

とはいえ普段からOTGで使ってるものがあるかと言われると、そんなにない……。

バッファローの超小型USB接続SSDを誕生日プレゼントにいただいたのでレビューする

先月末で32歳になりました。0x20歳ともいいます。キリが良い数字ですね。

あまり手入れをしていないAmazonの欲しい物リストを貼ったところ、色々と贈り物をいただきました。皆様ありがとうございました。お前たちの誕生日も祝ってやる。

つついさんからはバッファローの超小型USB接続SSDをいただきまして、大変恐縮だったのでブログでレビューします。前に記事かなんかで見て、すげえほしい!となり、いつかクリアファイルのおまけに買おうかと思いつつ突っ込んでいたものなので本当に恐縮。

www.buffalo.jp

もう本当に小さい。2.5インチSATA SSDも持った時に重心が端子側にあるというか、つつくと空洞音しかしないような昨今、このサイズまで小さくできるのかという感想です。サイズ比較は、同じく誕生日プレゼントに頂いたMicroSDカードとキーキャップ。

f:id:Akkiesoft:20200506173222j:plain

惜しいところはUSBコネクターがいまどきMicro USB 3.0コネクターなところでしょうか。USB-Cだと厚みが増すのかしら。このため、付属品はMicro USB 3.0 to AケーブルとA to C変換の2点になっています。もっとも、USB-CをUSB-Cとして差し込めるPCなどいまだに限られているので、この構成でいいといえばいい気はします。個人的にはUSBメモリーっぽく使えたら便利じゃね?と思い、変換アダプターを別途ポチってみました。

f:id:Akkiesoft:20200506173811j:plain

ディスプレイのUSBハブに接続したところ。良い。

f:id:Akkiesoft:20200506174214j:plain

素の状態では中はNTFSでフォーマットされており、ドライブ画像に使える製品アイコンと、謎の使えないランチャーが入っていました。NTFSでは他のOSで使えないので、アイコンだけ退避してMacLinuxもいけるExFATでフォーマットし直し、アイコン画像を戻しました。MacでもUSBストレージのアイコンを設定できるので、アイコン画像をPNGに変換したものを設定。

f:id:Akkiesoft:20200506174159p:plain

NTFSの状態で取得した結果ですが、CrystalDiskMarkではご覧の通り、SATA SSDとたいして変わらない感じの良い速度が出てきました。この小ささで速さで480GB(上位は960GBもある)。技術の進歩すごい……すごい……。

f:id:Akkiesoft:20200506174249p:plain

さあ、用途は何も考えていなくて本当にヽ('ω')ノ三ヽ('ω')ノもうしわけねぇもうしわけねぇ状態ですが、Raspberry Piの作業用外部ストレージ用として重宝しそうな気がしたので、まずはmikutterのAppImage生成作業にこれを使おうと環境構築中です。これならmikutterにも貢献できて良いですなガハハ!

Raspberry Pi 4がPXEブートに正式対応していた

Raspberry Pi 4のブートローダーEEPROMイメージが更新されて、長らくベータ扱いだったPXEブートが正式版となりました。リリースノートのコミット日を見るに1週間前にはリリースされていた模様。見落としていなければ公式ブログには出ていなかった気がするので、ブログにするほどの記事ではなかったか、あるいはこれから記事になるかのどちらかでしょうか。フーム、ここのリリースノートもちゃんとRSSで読むようにするか……。

github.com

アップデートは、aptでrpi-eeprom-imagesとrpi-eepromパッケージを最新の6.0-1に更新して、rpi-eeprom-updateコマンドで更新します。rpi-eeprom-updateコマンドはRaspbian起動時に自動実行されるようになっているので、おそらく手動実行しなくても再起動を2回(たぶん、1回目の再起動でイメージ適用、2回目で適用済みのイメージで起動)実行すれば勝手に上がるはずです。

pi@yamanooku:~ $ sudo apt update;sudo apt upgrade
pi@yamanooku:~ $ sudo rpi-eeprom-update 
BCM2711 detected
*** UPDATE REQUIRED ***
BOOTLOADER: update required
CURRENT: 2019年  9月 10日 火曜日 10:41:50 UTC (1568112110)
 LATEST: 2020年  4月 16日 木曜日 17:11:26 UTC (1587057086)
 FW DIR: /lib/firmware/raspberrypi/bootloader/critical
VL805: up-to-date
CURRENT: 000137ad
 LATEST: 000137ad

新しいイメージを適用した後も、ブートローダー(起動順)はデフォルトではSDカードのみなので、PXEブートを有効にするために下記のドキュメントに従ってブート設定を更新する必要があります。

www.raspberrypi.org

ドキュメントどおりですが、日本語コメントを添えつつ手順です。

# 設定前にパラメータを確認したい人はこれで
$ vcgencmd bootloader_config

# ブートローダーEEPROMイメージをコピー
$ cp /lib/firmware/raspberrypi/bootloader/stable/pieeprom-2020-04-16.bin pieeprom.bin

# ブートローダーEEPROMイメージからブート設定ファイルを抽出
$ rpi-eeprom-config pieeprom.bin > bootconf.txt

# ブート設定ファイルを編集
$ vi bootconf.txt

BOOT_ORDERを0x1から0x21に書き換え。
BOOT_ORDER=0x1
↓
BOOT_ORDER=0x21

# 編集したブート設定ファイルとコピーしたブートローダーEEPROMイメージを使って新しいブートローダーEEPROMイメージを生成
$ rpi-eeprom-config --out pieeprom-new.bin --config bootconf.txt pieeprom.bin

# 生成されたブートローダーEEPROMイメージをrpi-eeprom-updateでEEPROMに書き込み
$ sudo rpi-eeprom-update -d -f ./pieeprom-new.bin

# 再起動して新しいブートローダーEEPROMで起動
$ sudo reboot

# 再起動後にパラメータを確認したい人は再度これで
$ vcgencmd bootloader_config

BOOT_ORDERは0x0がNONE、0x1がSDカード、0x2がネットワークブートです。下位ニブル(4bit)から試行されるので、0x21ではSD→ネットワークブート→NONE(停止)となります。

あとは、公式ドキュメントの手順にそっとRaspberry PiPXEブート環境を整備すればネットワークブートができるようになります。このブログでは省略。

www.raspberrypi.org

さて、同時にHDMI diagnostics screenというものが実装されたらしく、PXEブートはベータのうちにもう触っていてわかっている私としてはこれのほうが見たかったので、TFTPサーバーにおいたまま忘れてたPi4のシリアル番号入ディレクトリをリネームで隠してわざと失敗させてみました。

こんな感じの画面。見るだけなんですけど、ちょっとBIOS画面っぽくてかっこいい。ブートローダーのバージョン、Pi4のシリアルやMACアドレスなどの情報や、設定されたブートローダーの値、DHCPサーバーから取得できたIPアドレス、ネットワークブートに失敗したログが確認できました。

f:id:Akkiesoft:20200506162732j:plain

ちなみにブートローダーを変更する前の状態でSDカードを抜いて表示した画面はこちら。BOOT_ORDERの値がちゃんと違ったり、SDカードがねえぜ!とログを出して止まっていたりしているのが確認できます。

f:id:Akkiesoft:20200506163114j:plain

というわけで、新しいバージョンのブートローダーEEPROMイメージを適用してPXEブートを有効にする手順の確認でした。Pi4ならGbEなので、SDカードをナシにしてPXE+NFSストレージにしてもまあまあ運用できるのではないかと思います。そうするとSDカードの故障とかの悩みからは開放されそうですね。NASがある家ならNASNFS共有を有効すれば良いでしょうし便利そう。家の常設Pi4でやってみようかしらん🤔?

ついでに宣伝

在庫が死ぬほど余っとる薄い本もついでに宣伝しておきます。昨日までエアコミケだったので。新刊のEject本と合わせてよろしくおねがいします。

www.melonbooks.co.jp

ec.toranoana.shop

電子版もラズピッピいじり3・4までリリースしました。こちらはBOOTHにて販売中。

eject.booth.pm