Tag: Pxe Posted: 2026-06-06
| Tags:
ansible ,
dhcp ,
openwrt ,
pxe
DHCP Option 224でPXE boot後のrole情報を渡す 目的 PXE boot では、firmware、initramfs、rootfs 上の network manager がそれぞれ DHCP を使うことがある。
このうち、OS 起動後の automation に必要な metadata を DHCP Option 224 で渡すと、同じ rootfs から起動する client でも role や stage を切り替えやすい。
ここでは Option 224 を overlay_id / role / roles / stage のような runtime config 伝播に使う設計をまとめる。
使い方 Option 224 の値は、単純な key-value 文字列にする。
overlay_id=pi-node-1,role=base,roles=base,worker,stage=staging
client 側では DHCP hook がこの値を受け取り、runtime env file を作る。
systemd unit や wrapper はこの env file を読み、対象 role でなければ skip する。
Read more... Posted: 2026-06-06
| Tags:
dracut ,
gentoo ,
overlayfs ,
pxe
dracutでNFS rootfsにtmpfs upperのoverlay rootを作る 目的 PXE boot した Linux client で、NFS rootfs を lower とし、client 側 tmpfs を upper/work にした overlay root を作る。
rootfs の差分は reboot で破棄し、base rootfs は server 側で一元管理する。
現行構成 kernel cmdline では NFS root と overlayfs を指定する。
root=nfs4:192.0.2.1:/rootfs/20260601,vers=4.2,proto=tcp ip=dhcp rd.neednet=1 rd.overlayfs=1
192.0.2.1 は例示用である。実機の OpenWrt/PXE では外部 inventory の openwrt_gentoo_server_host から root server を決め、openwrt_lan_ipaddr や ansible_host への暗黙 fallback に頼らない。
dracut の overlayfs module は、NFS rootfs を lower として、client 側に upper/work を作る。
Read more... Posted: 2026-06-06
| Tags:
ansible ,
gentoo ,
pxe ,
raspberry-pi
Raspberry Pi PXEのTFTP artifactとNFS rootfsを同じrelease境界で扱う 目的 Raspberry Pi を PXE / network boot で運用すると、boot firmware が読む TFTP artifact と、Linux が mount する NFS rootfs が別々の場所に置かれる。
この 2 つの対応がずれると、kernel / DTB / initramfs / module set / rootfs のどこで壊れたかを追いにくい。
ここでは、TFTP artifact と NFS rootfs を同じ release 境界で promote する設計をまとめる。
前提 構成は次のように分ける。
DHCP / TFTP server
-> TFTP root
dates/<release>/
<board-or-host-prefix>/
NFS server
-> rootfs/<release>/
Raspberry Pi firmware は board 固有の prefix directory を読める。host directory には config.txt、cmdline.txt、symlink などを置き、cmdline.txt で NFS rootfs release を切り替える。
Read more... Posted: 2026-05-20
| Categories:
pxe
| Tags:
dracut ,
gentoo ,
nfs ,
overlayfs ,
pxe
PXE GentooでNFS rootにtmpfs overlayを重ねる設計 PXE boot の root filesystem を NFS に置くと、rootfs 更新や rollback は楽になる。一方で、各 node が rootfs に直接書き込むと、検証環境ほど状態が散らばりやすい。
そこで、NFS root を read-only lower として扱い、PXE client 側の tmpfs を upper/work にした overlayfs root にする。
この構成では、rootfs の差分は reboot で消える。永続化が必要なものだけを、用途別の volume や明示的な mount に逃がす。
本文中の 192.0.2.0/24 は説明用の documentation range である。OpenWrt 実機で NFS root / TFTP / DHCP を反映する場合は、外部 inventory の openwrt_lan_ipaddr、openwrt_dhcp_ntp_servers、openwrt_gentoo_server_host を実値として明示し、documentation range が endpoint に残っていれば止める。
基本構成 flowchart TD
A[PXE firmware<br/>DHCP + TFTP] --> B[Kernel + initramfs]
B --> C[dracut<br/>network + nfs]
C --> D[NFS root<br/>read-only lower]
C --> E[tmpfs<br/>upper + work]
D --> F[overlayfs merged root]
E --> F
F --> G[switch_root]
G --> H[systemd]
root overlay の目標状態は次のような形になる。
Read more... Posted: 2026-05-20
| Categories:
pxe
| Tags:
openwrt ,
pxe ,
RaspberryPi ,
tftp
Raspberry Pi netbootのTFTP host directory設計 Raspberry Pi の network boot は、一般的な PXE の pxelinux.cfg とは違う挙動をする。
特に Pi firmware は、TFTP root 直下だけでなく board 固有の directory を探す。bootfile でサブディレクトリを指定しても、cmdline.txt が期待した場所から読まれないことがある。
このため、Pi ごとの board hash directory を TFTP root 直下に実ディレクトリとして作り、host ごとに cmdline.txt を制御する設計が扱いやすい。
本文中の 192.0.2.0/24 は説明用の documentation range である。homecluster-infra で OpenWrt 実機へ反映する場合は、router hostvars の openwrt_lan_ipaddr、openwrt_dhcp_ntp_servers、openwrt_gentoo_server_host を外部 inventory で明示し、TFTP / NFS / dnsmasq の endpoint に documentation range を残さない。
目的 boot firmware / kernel / DTB / initramfs は release 単位で共有する host ごとの config.txt / cmdline.txt は board hash directory に置く NFS root の release 切替は cmdline.txt で行う TFTP release の更新と host boot 先の切替を分ける directory構成 例として、TFTP root を次のように分ける。
Read more... Posted: 2025-12-01
| Categories:
pxe
| Tags:
pxe
OpenWrt + dnsmasq + Raspberry Pi 4B PXE ブート調査 OpenWrt 上の dnsmasq を用いて
Raspberry Pi 4B を タグベースで PXE 起動させる。
このメモの 192.0.2.100 は説明用の documentation address である。homecluster-infra から OpenWrt 実機へ反映する場合は、外部 inventory の openwrt_lan_ipaddr、openwrt_dhcp_ntp_servers、openwrt_gentoo_server_host を実値として明示し、documentation range が dnsmasq / TFTP / NFS endpoint に残っていれば反映前に止める。
最終的に目指した状態:
dhcp-boot=tag:rpi4-02,start4.elf,192.0.2.100,192.0.2.100
もしくはシンプルに:
dhcp-boot=start4.elf,192.0.2.100
と同等の挙動をタグ条件付きで再現する。
最初の症状 config host で set:rpi4-02 が出力されている
dhcp-boot=tag:rpi4-02,… を設定
しかし PXE 起動しない
タグ無しの dhcp-boot=start4.elf,192.0.2.100 なら起動する
ここから調査開始。
次の内容で検証した openwrtでは/etc/config/dhcpで設定ができる
次のコマンドでトライアンドエラーを繰り返した
vi /etc/config/dhcp && /etc/init.d/dnsmasq restart && cat /var/etc/dnsmasq.conf.*
Raspberry Pi の PXE 挙動の理解 dnsmasq ログより:
Read more... Posted: 2025-12-01
| Categories:
pxe
| Tags:
pxe
概要 Raspberry Pi 4 Model B (RAM 8GB) 上で Gentoo Linux を ディスクレス運用 (ネットワークブート) し、ルートファイルシステムを NFS 経由の読み取り専用 とすることで基盤イメージを保護しつつ、OverlayFS を用いた一時的な書き込みを可能にする手法について解説します。
参考1 , 参考2
この構成では、ベースとなるルートFSをNFSサーバから読み出し専用でマウントし、書き込み変更はすべてクライアント側RAM上の tmpfs に保存されるため、システム稼働中のみ有効で再起動で破棄されます。
これにより、SDカード無しでの起動や基盤イメージの一元管理が可能になるだけでなく、アプリケーションから見ると通常通り書き込み可能な環境を提供しながら基盤イメージの破損や意図しない変更を防止できます。
また多数の読み込みが発生する場合でもクライアント側メモリキャッシュを活用しパフォーマンス向上が期待できます。
本記事ではネットブート用のNFSルート設定と、Gentoo環境でのカスタム initramfs(dracutモジュール overlay-root)による OverlayFS 構成の具体的手順を示します。
読者は LinuxのネットワークブートやGentooの基本管理に習熟していることを前提とし、技術的背景も交えながら詳細に説明します。
本文中の 192.0.2.0/24 は説明用の documentation range である。homecluster-infra から OpenWrt 実機へ反映する場合、router hostvars の openwrt_lan_ipaddr、openwrt_dhcp_ntp_servers、openwrt_gentoo_server_host を外部 inventory で明示し、NFS root / TFTP / dnsmasq の endpoint に documentation range が残っていれば反映前に止める。
システム構成と前提条件 ネットブート構成: Raspberry Pi 4B(ARM64, 8GB RAM)がクライアントとなり、ネットワーク経由でOSをブートします。
ブートに必要なファームウェア・カーネルはTFTPサーバから取得し、ルートファイルシステムはNFSサーバからマウントします。
Raspberry Pi 4はEEPROMのネットブート機能が利用可能で、あらかじめブートローダ設定でネットワークブートが有効になっている必要があります
(raspi-configで Boot Order を 0xf21 に設定し再起動すると、有効になったことを確認できます )
Read more...