Initramfs - 从自定义 initrd 脚本设置主机名

Initramfs - 从自定义 initrd 脚本设置主机名

在我们公司,我正在创建一个 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托管用户数据文件的机器在哪里。

相关内容