![如何为 Ubuntu 的 initramfs 设置名称服务器 (dns)?](https://linux22.com/image/1164769/%E5%A6%82%E4%BD%95%E4%B8%BA%20Ubuntu%20%E7%9A%84%20initramfs%20%E8%AE%BE%E7%BD%AE%E5%90%8D%E7%A7%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%20(dns)%EF%BC%9F.png)
以下/etc/initramfs-tools/initramfs.conf
是 Ubuntu 的 initramfs 的一些配置选项。
除其他事项外,还可以在那里设置初始 RAM 文件系统的IP
和网络,例如或。DEVICE
DECCIVE=wlan1
IP=192.168.0.10::192.168.0.1:255.255.255.0
我已经安装了 dropbear通过 SSH 解锁加密驱动器并且存在一个问题,即我的服务器在解锁和完全启动后仍保留 initramfs 网络配置。由于该配置不包含 DNS,因此我必须事后手动添加它,但它不会保留。
那么如何在 initramfs 中配置名称服务器?
我尝试过的事情:
当我设置时IFDOWN=*
,/etc/dropbear-initramfs/config
整个网络在启动后就被搞砸了(不仅仅是名称服务器),我必须做类似的事情:
sudo ip link set <device> up
sudo ip a a 192.168.0.10/24 dev <device>
sudo ip r a default via 192.168.0.1
sudo resolvectl dns <device> 192.168.0.1 1.1.1.1
在 initramfs 内部,有一个文件/run/net-enp2s0
似乎负责精确的网络配置:
# cat /run/net-enp2s0.conf
DEVICE='enp2s0'
PROTO='none'
IPV4ADDR='192.168.0.10'
IPV4BROADCAST='192.168.0.255'
IPV4NETMASK='255.255.255.0'
IPV4GATEWAY='192.168.0.1'
IPV4DNS0='0.0.0.0'
IPV4DNS1='0.0.0.0'
HOSTNAME=''
DNSDOMAIN=''
NISDOMAIN=''
ROOTSERVER='0.0.0.0'
ROOTPATH=''
filename=''
UPTIME='9'
DHCPLEASETIME='0'
DOMAINSEARCH=''
但我不知道它是如何创建的以及如何更改其内容。我发现 initramfs 文档非常缺乏。
答案1
取自https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>: <dns0-ip>:<dns1-ip>:<ntp0-ip>
此参数告诉内核如何配置设备的 IP 地址以及如何设置 IP 路由表。它最初称为 nfsaddrs,但现在启动时 IP 配置独立于 NFS 工作,因此出于兼容性原因,它被重命名为 ip,而旧名称保留为别名。
如果内核命令行中缺少此参数,则所有字段都被视为空,并应用下面提到的默认值。一般来说,这意味着内核会尝试使用自动配置来配置所有内容。
...
在您的情况下使用 enp1s0 作为网络设备(您可能还需要使用 eth0):
IP="192.168.0.10::192.168.0.1:255.255.255.0::enp1s0:off:<DNS-Server>"