「ものづくり:make」を楽しみながら学ぶ人へ向けた独習サポートサイト。

and more...

Lab.以外の情報を紹介しています。

ラズパイ5によるROS 2(JAZZY)の環境構築

【ROS 2】microSDカード上の設定ファイルを変更する(固定IPアドレスの設定)

2025-10-192025-10-21

microSDカード上の設定ファイル[network-config]を変更して、固定IPアドレスを設定する手順を解説します。

注意

本手順は、初回の起動より前に行い、固定IPアドレスを設定するものです。起動後にDHCPから固定IPアドレスに変更する場合は、本手順は必要ありません。

(1) 設定ファイル「network-config」とcloud-init

【ROS 2】Raspberry Pi Imagerを使ってmicroSDカードにOSを書き込む[Ubuntu Server 24.04.3 LTS(64-bit)]では、Raspberry Pi 5のブートデバイスであるmicroSDカードにOSを書き込む手順を解説しました。その過程で、Wi-Fiを有効にして、アクセスポイントのSSIDとパスワードを入力しました。この設定はどこに保存されているのでしょうか。

図1-1.Wi-Fiの有効化(SSIDのパスワードの入力)
図1-1.Wi-Fiの有効化(SSIDのパスワードの入力)

Raspberry Pi Imagerを使ってmicroSDカードにOSを書き込んだとき、microSDカード上には[system-boot]という起動用のブートパーティション(第1パーティション/FAT32/512MB)と、OS本体が格納されるルートパーティション(第2パーティション/Ext4/初回起動時に最大サイズに拡張)の二つが作成されます。

前述のWi-Fiに関する設定は、ブートパーティションの最上位ディレクトにあるネットワーク関連の設定ファイル[network-config]に保存されています。ブートパーティションは、ファイルシステムがFAT32なので、そのままWindowsにマウントしてファイルへアクセスできます。図1-2は、エクスプローラーで表示したようすです。

図1-2.設定ファイル「network-config」
図1-2.設定ファイル「network-config」

表1-1は、network-configの内容です。Wi-Fiを有効にしたので、無線LANのインターフェース[wlan0]に対して、入力したアクセスポイントのSSIDとパスワード(ハッシュ化されている)が保存されています。また[dhcp4: true]となっていることから、IPv4でDHCPが有効であることがわかります。ちなみに、この設定ファイルは、人に読みやすくコンピューターに解析しやすく設計されたデーター構造であるYAMLという形式で記述されています。

では、この設定ファイルに記述された内容は、どのように反映されるのでしょうか。その役割を担っているのがcloud-initです。cloud-initは、クラウドコンピューティング環境において仮想マシン(Linux VM)の初期化と設定の自動化を行うオープンソースアプリケーションです。初回起動時に、ホスト名の設定・ネットワークの設定・ユーザーの作成・SSHの設定など、さまざまなプロセスを自動化できます。

Raspberry Pi 5(+ubuntu 24.04.3)でもこのしくみが採用されており、microSDカードからの初回起動時に、ネットワーク関連の設定ファイル[network-config]が読み込まれ[/etc/netplan/50-cloud-init.yaml]というファイルが自動生成されます。表1-2は、生成されたファイルの内容です。YAML形式で記述されています。

ubuntuでは、バージョン17.10以降、ネットワークの管理にnetplanが採用されており、ネットワーク関連の設定ファイルを[/etc/netplan]ディレクトリーで管理しています。2回目以降の起動では、netplanによって「/etc/netplan/50-cloud-init.yaml」が使用されます。

(2) 固定IPアドレスの設定

前述の通り、初期状態ではDHCPが有効になっているため、IPアドレスはDHCPサーバーからリースされた時点で決定します。DHCPサーバーには、できる限り同じIPアドレスを付与する仕組みがあるものの、リース期間の満了後に異なるIPアドレスが付与されることがあります。

ディスプレイやキーボードを持たないヘッドレスで運用したり、ほかの機器と通信を行う場合、ほとんどのケースで固定IPアドレスを割り当てます。本記事では、設定ファイル[network-config]に固定IPアドレスを指定して、初回起動時に反映する手順を紹介します。

固定IPアドレスの割り当て

Raspberry Pi Imagerを使ってmicroSDカードにOSを書き込んだ直後、設定ファイル[network-config]を表2-1のように編集します。インデントに気をつけて入力してください。

[dhcp4: false]でDHCPを無効化します。11行目以下を次のように追加します。キー[addresses]が割り当てる固定IPアドレス(本記事では[192.168.1.36/24])です。[IPアドレス/サブネットマスクのビット数]で表します。キー[routes]でデフォルトゲートウェイ(本記事では[192.168.1.1])を指定します。キー[nameservers]で参照するDNSのIPアドレス(本記事では[192.168.1.1])を指定します。複数のDNSを指定する場合は、複数行([- 8.8.8.8]など)記述します。

編集し終えたら、microSDカードを使って、Raspberry Pi 5を起動します。文法ミスなどがなければ、cloud-initによって正しく読み込まれて、固定IPアドレスが割り当てられます。cloud-initのログは[/var/log/cloud-init-output.log]に出力されます。固定IPアドレスが割り当てられなかった場合は、このログを確認しましょう。

表2-2は、自動生成された[/etc/netplan/50-cloud-init.yaml]です。

cloud-initの再実行

初回起動時に実行されるcloud-initですが、再実行するにはどうすればいいでしょうか。再実行は、コマンド[cloud-init clean]でcloud-initの状態を初期化した後、コマンド[reboot(または shutdown -r now)]で再起動します。いずれも管理者権限が必要です。

おすすめ

【Raspberry Pi 5完全対応】Raspberry Pi はじめてガイド

出版社
技術評論社
著者
山内直・大久保竣介・森本梨聖
発売日
2024/6/26

【改訂第2版】ROS 2とPythonで作って学ぶAIロボット入門

出版社
‎講談社
著者
出村公成・萩原良信・升谷保博・タンジェフリートゥチュアン
発売日
2025/2/14

ロボットプログラミングROS 2入門

出版社
科学情報出版株式会社
著者
岡田浩之
発売日
2020/9/16

Raspberry Pi 5プログラミング教育ロボット

Raspberry Pi 5ベースのROS 2(Humble)に対応したロボットカーです。4つの独立した駆動輪(エンコーダー付き金属製モーター)による走行、LiDARによるマッピング(SLAM)・2軸のカメラによるAI画像認識(OpenCV)などが行えます。

この記事を読んだ人は、こんな記事にも興味があります。
スポンサーリンク
TOPへ移動
目次へ移動