我正在为我的 Linux 机器组装一些 DR 东西。真正方便的一项是 GRUB 选项,它可以运行脚本将我的 IP 地址从静态 IP 更改为动态 IP。
我知道我们可以采用单用户模式、运行脚本、重新启动等,但这对于其他管理员(大多数具有 Windows 背景)来说选择一项并自动完成该过程会非常简单。
我发誓我曾经看到过提供的配置设置让 Grub 在某一时刻执行此操作,但已经有一段时间了。不知道该用谷歌搜索什么。
编辑:
我知道 rc.local 方法,但是我不希望它在每次启动时运行。我希望列出一个选项(可能是 grub.conf 中的行项目),它允许仅在选择该引导选项时运行特定脚本。
答案1
Grub 本身无法做到这一点。它的文件系统驱动程序仅支持读取。
init=/path/to/script
您可以创建一个条目来加载 Linux 内核(以及适当的 initrd 或 initramfs)并通过传递内核命令行来运行特定命令。该脚本将执行所有必要的安装、用户提示、文件修改,最后重新启动。
您还可以创建单独的条目,在内核命令行上传递自定义参数。未知参数将被忽略,假设它可能被某些可能作为模块加载的驱动程序使用。因此,创建传递内核参数的 Grub 条目local.network_interfaces=…
,并在 中/etc/rc.local
查找该参数的值 ( </proc/cmdline tr ' ' '\n' | sed -n 's/^local.network_interfaces=//p'
)。
答案2
让内核设置网络
set netcfg='ip=none'
menuentry 'Switch DHCP on/off' {
if [ $netcfg = 'ip=dhcp' ]; then
set netcfg='ip=off'
else
set netcfg='ip=dhcp'
fi
echo Setting $netcfg
sleep 1
}
menuentry 'Linux' {
linux vmlinuz $netcfg
}