あっきぃ日誌

ラズピッピブログのようなオタクブログのようななにか

Pi 5/Pi 500+に載せたM.2 NVMe SSDへのOSの書き込み方

Raspberry Pi Advent Calendar 2025 2日目です。

Raspberry Pi Advent Calendar 2025 - Adventar

Pi 5に搭載したM.2 NVMe SSDに書き込む場合、通常はM.2 HATからSSDを取り外して、USB変換アダプターとかに差し変えてPCに接続して書き込んでいます。が、いつの間にかSSDを取り外さなくても、Pi 5ごとUSBマスストレージに見せるブート環境がusbbootリポジトリに整備されていたようです。この方法はPi 500+でも有効なので、OS書き込みのためにキーボードを分解する必要がなくなってラクができます。また、CM5のeMMCもこの方法でPCにストレージとして認識させられます。

github.com

やりかた

https://github.com/raspberrypi/usbbootリポジトリをクローンして来て、READMEに従ってrpibootをコンパイルします。

そして、mass-storage-gadgetディレクトリに移動して、rpibootコマンドを実行します。

% cd mass-storage-gadget
mass-storage-gadget64 % sudo ../rpiboot -d .

するとPC側はRaspberry Piが接続されるのを待機する状態になります。

M.2 NVMe SSDを搭載したPi 5もしくはPi 500+の電源ポートとPCを、電源ボタンを押しながらUSB接続します。すると、待機していたrpibootコマンドがブートイメージをRaspberry Piに転送し始めます。

転送が終わると、M.2 NVMe SSDがPCで認識されます。こうなったらあとはいつも通りにRaspberry Pi ImagerなどでOSを書き込みます。

Pi 5とPi 500+のUSB-CポートをOTGポートとして使っているわけですが、USB2.0接続なので、転送速度はもちろん遅くなります。USB変換アダプターに差し替えたほうが転送自体は早いでしょうが、Pi 500+はキーボードを外すのがそれなりに面倒なので、この方法を覚えておくと良いかもしれません。

ネットワークインストーラーを使うのもアリ

あるいは、Pi 5とPi 500+のどちらでも使える方法として、ネットワークインストールがあります。有線ネットワークを接続した状態で、通電開始直後にShiftキーを長押しすると、インターネット経由でRaspberry Pi Imager相当のアプリケーションをダウンロードして起動できます。これもスピードはそれほど早くないのですが、用意するものがない点ではアリかもしれません。

www.raspberrypi.com

まとめ

そのPi 5に刺さってるSSD、いちいち外さなくても(ツールを用意していれば)イメージ流し込みができるぜ、という話でした。

Imagerでrpibootもカバーしてくれるようになったら激アツですけど、流石にそれは期待しすぎですね。

C107新刊「Raspberry Pi 5で学べる!Cockpitで作る仮想化&コンテナ基盤入門」

コミケの告知をやる時間が取れなくてアレでしたけど、仕事の合間にサクッと書きましょ。

C107は12/31の2日目 南2ホール j-11b「こくだランド」です。

新刊は「Raspberry Pi 5で学べる!Cockpitで作る仮想化&コンテナ基盤入門」です。春に自宅サーバーをCockpit環境にしたので、Cockpit入門ネタをPi 5を環境にやっていく本になりました。が、別にPi 4でも普通のPCでも何でも良いです。

VMを立ててあれこれ運用する話と、Podmanでコンテナをやっていく話を扱います。Podmanをpodまで使うのは初めてだったけど、完全に理解したの状態になりました。たぶん。

いつも通りメロンブックスさんで予約を開始しているので、当日は無理やねんという方はよければぜひ。電子版も後日BOOTHでPDFを頒布します。

www.melonbooks.co.jp

そして表紙はかつとさんにお願いをして作っていただきました。制服ミクさんがバシッとキメた表紙が最高にいい感じです。制服ミクが癖なの、バレてたのかもしれない(?)。グッズも作成中なので、詳細はまた後日!

Raspberry Pi Advent Calendar 2025 1日目: Raspberry Pi OSにcloud-initとNetplan.ioがやってきた

今年もAdvent Calendarの時期が来ました。Raspberry Pi AC 2025の1日目です。

adventar.org

今年で11回目になりました。うっかり惰性で作りましたが、今回は多忙で無理そうなので、完走はたぶん無理ですな。

今年Raspberry Piでやったこと、Picoで作ったもの、来年やりたいことなど、お気軽にご参加ください。

Raspberry Pi OSにcloud-initとNetplan.ioがやってきた

いきなり時事ネタを拾うだけの記事なんですけど、いいネタなので。先週Raspberry Pi OS Trixieにアップデートがあり、cloud-initとNetplan.ioが含まれるようになりました。

www.raspberrypi.com

cloud-init

cloud-initは、初回起動時のOSに対して初期設定を行うためのツールです。YAMLフォーマットの設定ファイルを用意してOSに渡すことで、ユーザー設定やネットワーク設定やコマンド実行などを行うことができます。各種Linuxクラウド環境などで幅広く使用されています。個人的にはUbuntuクラウドイメージをESXiとかProxmoxとかKVMにデプロイしたときに使っています。便利。

Raspberry Pi OSでは、これまでは独自のシェルスクリプトを/boot/firstrun.shに配置して、これを実行して初回の設定を実行していましたが、これがcloud-initで置き換えらたという感じです。

cloud-initの各設定ファイルは、/boot以下に配置することで設定が可能になります。配置されるのはこの3つのファイル。設定があるのはuser-dataとnetwork-configの2つですね。

Raspberry Pi Imagerを使用しているユーザーの場合は、同じく最近リリースされたバージョン2.0.0を使用すると、カスタム設定がcloud-initの設定ファイルとして/bootに書き出されるようになります。ゼロから自分で設定を用意するよりは、Imagerで設定を作らせて、設定ファイルだけ取り出しておいたのを、別の機会に流用するのが楽ちんかもしれません。

なお、cc_raspberry_piモジュールによってcloud-initに拡張が加えられているらしく、I2CとかSPIとかの設定もできます。ウソ……めっちゃ便利ですやん!

以下は実際にImagerが出力したuser-dataファイル。パッケージの導入が必要ならpackagesに足せばいいですし、rpiのinterfacesにi2cとかspiを書けばいきなりこれらを有効にできます。強い。ただ、何故か昔からlocaleの設定は入れてくらないのが謎ではあります。notoなら最低限入ってるのになあ。なんなら言語設定に応じてフォントも入れられるようになりますし(ネットに繋がっていればなんですけど)。

#cloud-config
hostname: zuhosd
manage_etc_hosts: true
packages:
- avahi-daemon
apt:
  conf: |
    Acquire {
      Check-Date "false";
    };
timezone: Asia/Tokyo
keyboard:
  model: pc105
  layout: "jp"
enable_ssh: true
users:
- name: akkie
  groups: users,adm,dialout,audio,netdev,video,plugdev,cdrom,games,input,gpio,spi,i2c,render,sudo
  shell: /bin/bash
  lock_passwd: false
  passwd: (略)
  ssh_authorized_keys:
    - (略)
  sudo: ALL=(ALL) NOPASSWD:ALL
rpi:
  interfaces:
    serial: true

network-configはこんな感じ。宿からやってて東横インSSIDなんですが、それはさておき。

network:
  version: 2
  wifis:
    wlan0:
      dhcp4: true
      regulatory-domain: "JP"
      access-points:
        "toyoko-innXXXX":
          password: "略"
      optional: true

network-configの中身はnetplanに展開されますが、NetworkManagerに食わされるっぽいので、ファイル名もそんな感じになっていました。

$ ls /etc/netplan/
90-NM-3f029ea6-3e48-3383-8c9e-f18e2942a649.yaml

Netplan.io

Netplan.ioは、ネットワーク設定をYAMLで記述することで、OSのネットワークバックエンドに合わせて設定をレンダリングしてくれるツールです。Ubuntuユーザーであればすでに馴染み深いかと思います。

NetworkManagerに投入された設定とNetplanのYAMLが衝突しないように、いくつかパッチを作成して考慮しているようです。network-configの中身が90-NMナニナニになっていたのもそういう都合っぽいですが、詳細は追えておらず。

つまりどういうこと

独自のスクリプトから業界標準的なツールに移行したことで、豊富な設定例を探して記述することができるようになりました。カスタムも、シェルスクリプトからYAMLに変わることで、メンテナンスがしやすくなるかと思います。

ネットワーク設定も、nmcliのちょっと難しい設定がnetplan のYAMLで記述できるようになるので、結構ラクをできるようになると思っています。既存設定との衝突の部分だけ気をつけたら多分結構ラクをできるようになるはず。ただまあ、RPiで複雑なネットワークを構成することはあまりなくて、せいぜいIPの固定くらいだもんなあ、という気はしなくもないですが。

OSC2025 Okinawaレポート

昨日はOSC2025 Okinawaでした。沖縄のレポートを書こうとしたら福岡のレポートを書いてなくて、慌てて今書きましたよね。

そんなわけで2週連続のOSCですが、なんと沖縄はOSC2018以来なんと7年ぶりの参戦となりました(開催自体は2019もありました)。コロナの空白を経て今年は20周年!と言うわけで、ODC2025のときに「行く!」と手を上げて参加表明したのですが、飛行機と宿と懇親会だけ申し込んで満足していたら、タイムテーブルも展示も確定していることに開催1週前に気づき、なんとか展示だけねじ込んでもらいました…。

というわけで今回のブース。Pi 500とHyperPixel4 Squareとgitキーボードのみの激シンプル構成。というかね、本当は普段からこのくらいシンプルで良いような気もするんですよね!

せっかくgitキーボードを持ってきて、セミナー中は人もなかったので、これを作った理由でもあるMastodonのアップデート作業をゴリッとやって、4.4系から4.5系に移行しました。事前の準備はRCリリース中にしてたので、そんな大掛かりな作業ではなかったですが。

出展・スピーカー参加の人たちは全国各地の常連なので、そういう人たちはもう知ってるしという感じであまり来ずでしたが(それはそう)、現地の一般参加の方に興味を持って見てもらえたのでこの構成で良かったです。シンプルだけどキャッチーだし持ち運びもしやすいですし。

交流会。近くのセブンイレブンで飲み物とお菓子類を買い込んできたのですが、何だこのオリオンの種類は!?翌日スーパーを見て回っても、いろんなフレーバーのオリオンが売られていて、全部飲みきれないですね。すごい。

開始前に撮り忘れていましたが、今回の会場であるさくらインターネットさんの入口にて。お洒落でいい場所でした。ありがとうございました!

懇親会は、アテにしていた店がNGだったらしく、近くのお店で開催に。予約無しで18人という無茶なアレでしたが、なんとか入れてもらえるお店があって感謝感謝。泡盛とミク。

そしてシメの沖縄そば。うまい。実は前日にも社長と二人で沖縄そばにいってるのですが、沖縄そばとか毎日でも大丈夫ですもんね(??)


前日の

ちなみに前日は牧志オリオンビールのお店でクラフトビールとかをたらふく飲んで来ました。

シメは国際通りのタイラ製麺所の沖縄そば。ここ美味しかったです。


首里城観光

OSCは午後から開催だったので、午前は宮原さんやもちゃたちと首里城へ。がしかし、私が10分ほど遅刻したので、合流したのは首里城の有料ゾーン内でした。

守礼門

首里城といえば火災で本殿とその周りが焼け落ちてしまったのが2019年のことでしたが、本殿の外観がほぼ出来上がっていました。6年で再建はすごいな……。

裏から。

ミク。

次来るときは中が見られるようになっているといいですね〜。

お土産屋でいつものあのメダルがあったので購入。OSC OKINAWAと刻印してきました。


サニーゴとかりゆしピカチュウ

沖縄といえばPokemonGoのサニーゴですが(??)そういえば数年前からかりゆしピカチュウも出ているらしいことを忘れていて、今のところなんとか2匹まで捕まえています。サニーゴもかりゆしピカチュウも全然いなくて、いたと思えば妙に遠いところに出るので、なかなか確保が難しく。ぐぬぬ


1週間います

来週も沖縄でイベントがあるらしく、仕事として出展の説明員をすることになったので、来週の土曜日までいます。1週間の沖縄滞在は流石に初めてや。週の中盤からは沖縄感もなく仕事で終わりますが、まあ、うすいほんのやることも全部終わりましたんでね〜。

OSC2025 Fukuokaレポート

先週末はOSC2025 Fukuokaでした。昨年に続き、今年も九州産業大学での開催となりました。

私はというと、2週間ほど喉鼻の風邪をやってしまい、極端にひどくならないのを良いことに、うすい本の執筆をもりもりやっていたら、背中とみぞおちのあたりを痛めてしまい、なんか微妙に不調な状態での参戦となりました。会場片付けの途中でエネルギー切れを起こして、懇親会でなんか食べるまで立つのもやっとになっていたりしましたが、生きて帰ってきました。

というわけで今回のブース。東京に引き続き、Pi 500+を展示しました。

展示物の構成は東京秋から多分それほど変わらず。そしてEjectPicoのQRコードをまた忘れたのですが、Pico Inky Packで表示してgot kotonaki。

説明の紙が古いのはアップデートが必要ですね……。

Pi 500+。gitキーボードにしているTinyPicoElevenも説明の紙が欲しいところでしたが、間に合わず。そもそも、説明の紙でやるスタイルも、とっ散らかって微妙な説があり、どうしたものか。

そして不定期的にやらかすHQcamのデモ環境。今回はHyperPixel 2.1 Roundが、RPi OSのカーネルが6.12になってから動かなくなっているとは知らずに、前日夜に何を思ったかOSをTrixieで再構築しようとしてハマりました……。結局カーネル6.6に戻して対応しましたが、勘弁してほしい。当初やりたかった、labwcをアップデートしてカーソルを非表示にする作業は、labwcだけアップデートすることで対応しました。

帰ってきてから状況を調べて報告。

github.com

どうも2週間前に知られていたようなのですが見落としていて、ちょっとduplicateな感じになってしまいました。6.6系で独自にSPIサポートをしたのが、6.12のアップストリームにもSPIサポートが入り(しかも日本人によるコミットらしい)、衝突するので保留されたままだった模様。アップストリームの作法に合わせて移植し直せば動きそうですが、このブログを書いている今は沖縄なうなので、作業できず。

観光とか

去年は乗れなかった福岡市営地下鉄の新型4000系に乗れました。良かった。SynTRACSの一旦音階が下がるやつ、独特よね。

youtu.be


前夜祭のモツ鍋と焼酎と日本酒。当日ぐったりめだったの、飲みすぎたのも良くなかったよね(当たり前)

OSC翌日はどこかに観光に行くわけでもなく、天神を歩いて京都福寿園のお年賀茶を買い、長浜屋でラーメンをして、櫛田神社の梅が枝餅を食べ、クリスマスマーケットでマグカップを買うやつをやってきました。これ3年連続のルーティンになってるの、どうなんだ。

いつものコースじゃなかったのは、エンジニアカフェに立ち寄ったこと。薄い本の校正作業をするのに場所をお借りしたのですが、レトロな雰囲気が良かったです。

ちなみに、エンジニアカフェには、太田さんが持ち込んだ私の薄い本が置かれていて、今回自分の本と再会することができました。

キャナルシティに行ったら、大正製薬がキャンペーンをやっていて、リポDとステッカーをもらいました。リポD配布は太っ腹では……!

気づいてなかったけれど、七隈線延伸のときにはやかけんの色違いが出てたんですね。買いました。

そして帰り。夕日がきれいでした。