我目前正在尝试找出一种在 kickstart 期间设置 IP、主机名、网关和 DNS 设置的智能方法(在 kickstart 期间使用用户输入)。在安装后使用首次启动执行此操作是不可接受的,因此必须在 %post 期间执行此操作。
我尝试system-config-network
在 tty6 中发布期间运行该工具:
#!/bin/sh
chvt 6
exec < /dev/tty6 > /dev/tty6
/mnt/sysimage/usr/bin/system-config-network-tui
这不起作用,因为由于某种原因我无法捕获用户输入。
我宁愿使用内置工具在发布期间更改这一点,而不是编写我自己的 bash 脚本来执行此操作,因为使用提供的工具不太可能破坏任何东西。
有人做过类似的事情或类似的事情并使其发挥作用吗?
谢谢
答案1
这太蠢了。我使用 cobbler,它已经支持设置主机名、ip、子网和 dns 信息。您必须将其添加为系统,如下所示:
cobbler 系统添加 --name=[...] --profile=[...]--ip=10.1.1.2 --gateway=10.1.1.1 --hostname=yourhostname.exmaple.org --name-servers="10.1.1.1" --static=true --mac=00:50:56:af:56:22
然后 Cobbler 会为您应用一个代码片段,名为“post_install_network_config”。如果您有任何问题,请告诉我。
答案2
我知道这是一个老问题,但我想为任何通过搜索找到这个问题的人贡献这个答案:
从 CentOS 5 开始,有一个未记录的选项,可以在安装过程中启用提示询问网络配置。在网络语句中,将查询关键字放在 --bootproto= 网络配置中,如下所示:
network --device=eth0 --bootproto=query
答案3
我正在使用 下载一个脚本,wget
并将该脚本添加到/etc/rc.d/rc.local
。在脚本中,我正在注释 rc.local 中的条目,以便它不会在进一步启动时运行。在这个脚本中,我正在执行 中的所有操作%post
。
编辑:
在%post
KickStart 脚本部分我有:
wget -O /etc/first-boot.sh http://192.168.1.10/ks/first-boot.sh
echo ". /etc/first-boot.sh" >>/etc/rc.d/rc.local
所以我不必连接到正在安装的机器。我只需在 KickStart 服务器上进行更改。在 KickStart 服务器上,我有一个 apache,它192.168.1.10
是 KickStart 服务器的 IP 地址。
编辑:
您尝试过使用吗open
?
chroot /mnt/sysimage
open /usr/bin/system-config-network
答案4
您似乎正在尝试使用静态值设置它们。如果可能,请使用 DHCP 来设置这些项目。
您提到尝试在 kickstart 期间进行用户交互。我认为这是不可能的,尽管我可能错了。我确实知道在 RPM 安装期间进行用户交互是不可能的;这将使编写脚本变得不可能。同样的(如果我是首席架构师,就会)不可能,原因也一样。相反,将这些值放在软盘上。