作为 Grub 引导选项运行脚本

作为 Grub 引导选项运行脚本

我正在为我的 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
}

相关内容