我正在将raspbian配置为只读运行。只有/tmp是可写的,并且系统被配置为在/tmp中写入DHCP信息。
除了/etc/resolv.conf,一切都很好。只是在引导过程中没有得到更新。
我试过用一个符号链接。rm /etc/resolv.conf touch /tmp/resolv.conf ln -s /tmp/resolv.conf /etc/resolv.conf
但是,由于/tmp在重新启动时是空的,所以不能更新/tmp/resolve.conf,因为它不存在。
因此,我尝试在引导过程中创建文件。
touch /tmp/resolv.conf in /etc/rc.local
文件被创建,但只有在dhclient运行之后,因为其中没有DNS条目。如果在系统启动后运行dhclient,它将成功地将DNS服务器写入文件。
如何使resolv.conf在只读文件系统上工作?
发布于 2016-01-11 18:39:57
这就做到了
rm /etc/resolv.conf ln -s /tmp/resolv.conf /etc/resolv.conf sed -i 's/\/etc\/resolv.conf/\/tmp\/resolv.conf/g' /sbin/dhclient-script
发布于 2016-01-11 15:10:13
从dhclient-脚本手册页,
启动时,客户端脚本首先定义一个shell函数make_resolv_conf,该函数后来用于创建/etc/解析式. used文件。若要重写默认行为,请在enter钩子脚本中重新定义此函数。在定义make_resolv_conf函数之后,客户端脚本检查是否存在一个可执行文件/etc/dhcp/dhclient-enter-hooks脚本,如果存在,它将使用Bourne‘内联调用该脚本。命令。此脚本可以使用操作下记录的整个环境,如果需要,该脚本可以修改环境以更改脚本的行为。如果在脚本执行过程中发生错误,它可以将exit_status变量设置为非零值,并且/sbin/dhclient-script将在客户机脚本退出后立即退出该错误代码。
因此,您应该能够编辑/etc/dhcp/dhclient-enter-hooks并在其中添加条目,以便在不存在正确权限的情况下创建具有正确权限的/tmp/resolv.conf,并在必要时删除和重新创建符号链接。
在Debian上,似乎有一个包含脚本片段的dhclient-enter-hooks.d目录,因此您可能只需在其中添加一些内容,这取决于dhclient的发行版/版本(本例中是Raspbian)。
发布于 2016-01-12 09:56:19
看看https://wiki.debian.org/ReadonlyRoot#resolv.conf。它建议使用立约包。由于您已经修改了您的软件,它可能需要做一些努力才能使它正常工作,但它是一个深思熟虑的解决方案,这个问题和更多。
https://unix.stackexchange.com/questions/254643
复制相似问题