在我们公司,我正在创建一个 Ubuntu Autoinstaller(v. 20.04)。由于一些公司原因,需要修改 initramfs。(initrd 文件)。
init
我创建了一个脚本,并添加了指向 initrd 文件夹中文件的链接main
。它显示正确,但我没有找到解决方案,如何从此脚本为当前安装的系统设置主机名。自动安装后的主机名ubuntu
始终是。
问题是:如何从自定义 initrd 脚本设置主机名?
我尝试了很多次,但都没有成功。:
netcfg/get_hostname=$hostnam
或者
mdadm --assemble --scan --homehost='$hostnam' --auto=yes --auto-update-homehost
或者
echo "export HOST=\"$hostnam\"" | tee -a /etc/casper.conf >/dev/null
或者
echo $hostnam | tee /etc/hostname >/dev/null
或者
hostnamectl set-hostname $hostnam
谢谢。
答案1
回答标题中的问题(我来这里就是为了寻找这个问题):
可以通过以下方式设置当前运行的内核(或命名空间)的主机名:
echo "machine1" > /proc/sys/kernel/hostname
假设您希望主机名为machine1
。这也适用于 initrd(其中hostname
没有 等工具)。
不过,最初的问题似乎是询问如何修改安装程序。对于 debian 和较旧的 ubuntu 版本,preseed 是设置主机名的正确方法。您需要提供
netcfg/get_hostname=machine1
作为内核命令行参数(来自引导加载程序),并将其设置在 preseed.cfg 中。
较新的 Ubuntu 版本(20.04 及更高版本)具有完全不同的安装程序,它使用 cloud-init 来设置主机名等内容: https://ubuntu.com/server/docs/install/autoinstall-quickstart
在那里,您需要通过 http(s) 提供可以设置主机名的用户数据 YAML 文件:
#cloud-config
autoinstall:
version: 1
identity:
hostname: machine1
# (...)
并使用参数启动安装程序内核:
autoinstall ds=nocloud-net;s=http://webserver/
webserver
托管用户数据文件的机器在哪里。