Raspberry Pi に固定IPアドレスを振りたい
.NetCoreをRaspberry Pi上のdockerでパッと動かすPiBakeryレシピでRun Command
を使って固定IPアドレスをRaspberry Piに振った。
- 固定IPはRaspberryPiをセットアップする時に簡単に指定できた方がいい
-
Run Command
はちょっと「生」すぎる
ということで、Contributing Blocks to PiBakeryに従って固定IPアドレスを振るためのブロック[staticip_setup]
を作成してみた。作ったものはこちら。
手順
1. シェルスクリプトを作成する
Raspberry Piに固定IPアドレスを振るためのスクリプトを作成する。ブロックから設定したい項目は引数にしておく。
# interface名(wi-fiならwlan0、LANケーブルならeth0)
echo "interface $1" >> /etc/dhcpcd.conf
# IPアドレスの設定
echo " static ip_address=$2" >> /etc/dhcpcd.conf
# デフォルトゲートウェイの設定
echo " static routers=$3" >> /etc/dhcpcd.conf
# DNSサーバーの設定
echo " static domain_name_servers=$4" >> /etc/dhcpcd.conf
2. ブロックを定義するjsonファイルを作成する
staticip_setup.json
ファイルを作る。プロパティについてはContributing Blocks to PiBakeryを参考に。
name
プロパティはjsonファイル名と同じにしておく。
"name": "staticip_setup",
text
プロパティにはブロックに表示したいテキストを設定。%d
で引数を埋め込む
"text": "Setup Static IP\\nType: %1\\nIP address with subnet mask: %2\\nDefault gate way: %3\\nDNS server: %4",
script
プロパティは先程作ったスクリプトを指定
"script": "staticip_setup.sh"
スクリプトで$1-$4
の引数を必要としているので、args
にはそれぞれに対応する4つのオブジェクトを用意する。
"args": [
{
"type": "menu",
"options": ["eth0", "wlan0"]
},
{
"type": "text",
"default": "192.168.1.1/24",
"maxLength":18
},
{
"type": "text",
"default": "192.168.1.1",
"maxLength":15
},
{
"type": "text",
"default": "192.168.1.1",
"maxLength":15
}
]
残りのプロパティはこんな感じに。この設定自体にはnetworkへの接続は不要なのでnetwork:false
で良い。
"network": false,
"continue": true,
"type": "network",
"category":"network",
"supportedOperatingSystems": [
"raspbian-pibakery.img",
"raspbian-lite-pibakery.img"
],
"shortDescription":"Set static IP address to ethernet(eth0) or wifi(wlan0).",
"longDescription":"Set static IP address to ethernet(eth0) or wifi(wlan0)."
3. PiBakery下に配置し、info.jsonを追記
- PiBakery本体下の
pibakery-blocks
ディレクトリ(C:\Program Files (x86)\PiBakery\resources\app\pibakery-blocks
など)にjsonファイル名と同じ名称のフォルダstaticip_setup
を作成 - 作成した2つのファイルを上記フォルダ下にコピー
-
pibakery-blocks/info.json
のloadOrder
プロパティの要素にstaticip_setup
を追記
以上で完成。PiBakeryを開いたらNetwork
カテゴリに今回作成したstaticip_setupが出てくるようになる。