読み取り専用でインストールされたifup wlan0
システム(組み込みシステム)で操作を実行すると、次のエラーが発生します。/
Failed to connect to non-global ctrl_ifname: wlan0 error: Read-only file system
Internet Systems Consortium DHCP Client 4.3.1
Copyright 2004-2014 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
can't create /var/lib/dhcp/dhclient.wlan0.leases: Read-only file system
Listening on LPF/wlan0/80:1f:02:d3:42:b8
Sending on LPF/wlan0/80:1f:02:d3:42:b8
Sending on Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 13
...
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 5
No DHCPOFFERS received.
No working leases in persistent database - sleeping.
一方、読み取り/書き込みifup wlan0
でマウントされている場合、/
問題なくIP割り当てが正常に行われました。
読み取り専用ルートファイルシステムでDHCPを機能させるにはどうすればよいですか?
# /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid "<myssid>"
wpa-psk "<mypasswd>"
答え1
RAMにtmpfsパーティションを作成し、その中のディレクトリに/var/lib/dhcpをシンボリックリンクします。
編集:ルートファイルシステムを読み取り専用に変更する前に編集できるとします。だから:
- tmpfs マウントポイントの設定
mkdir /mnt/ramdisk && mkdir /mnt/ramdisk/var-lib-dhcp
- fstabにtmpfsを追加する
tmpfs /mnt/ramdisk/var-lib-dhcp tmpfs size=10M 0 0
/var/lib/dhcp
からまでのシンボリックリンクを追加する/mnt/ramdisk/var-lib-dhcp
- ファイルシステムの読み書き中のテスト
- ファイルシステムを読み取り専用に設定して再テストしてください。
答え2
〜のようにダニエル・ギリシャコムの回答しかし、単純にしてください。
追加できます
tmpfs /var/lib/dhcp/ tmpfs nodev,nosuid,size=1M,mode=1777 0 0
存在する/etc/fstab
これにより、RAMに一時ファイルシステムが作成され、そのディレクトリがtempfsのマウントポイントで上書きされます。 (そのため、以前にファイルがあった場合は使用できません)
これにより、シンボリックリンクなどを管理する必要がなく、一部の組み込みボードdhcp情報に1Mサイズで十分です。これは、DHCPサーバーでアクセスポイントを作成する場合にも必要です(リース情報はサーバーの同じディレクトリに保存されます)。
まず、書き込みアクセス権で再インストールmount -o remount,rw /
(root)し、書き込み専用で再インストール(root)するか、mount -o remount,ro /
変更後に再起動します。
私のtmpfs設定文字列の元のソースは次のとおりです。この短いガイド最終アプリケーション用のmicroSDの準備
答え3
/run、/var/run、/tmp などの tmpfs マウントポイントがすでにあるとし、非常に簡単な方法を実行します。
sudo rm -rf /var/lib/dhcp/
そして
sudo ln -s /run /var/lib/dhcp
1つ目は/var/lib/dhcp
データベースディレクトリを削除し、2つ目はに作成します。またはまたは/run
に接続できます。/tmp
/var/run
上記の変更を行うには、ファイルシステムの読み書きを再マウントする必要があります。
答え4
今この問題が発生しました。 /var/lib/dhcpの読み書き位置を作成するだけでは不十分です。
次の 2 つの作業を行う必要があります。
/etc/fstab にコメントエントリを追加して、/ が読み取り専用ファイルシステムにあることを通知するように /sbin/dhclient-script をトリックします。
# The following line is here only to tell dhclient that we are readonly
#/root / auto defaults 0 0
( "/"は行の2番目のトークンでなければなりません。)
また、リクエストリストから「ネームサーバー」を(少なくとも)削除するには、/etc/dhcp/dhclient.conf設定ファイルを編集する必要がありました(しかし、それ以上のものを削除して興味のある項目だけを残したのでわかりません。だけで十分ですか?)
DHCPサーバーからネームサーバー情報を受信することに興味がある場合は、/etc/resolv.confを読み取り/書き込みバージョン(/run、/var/run、またはその他のtmpfsの場所)に接続してみてください。 tmpfsの場所にこのファイルをスクリプトとネットワークを設定するスクリプトの間に生成するか、R / Wファイルシステム上のファイルへのリンクとして生成します。