如何在 ubuntu 启动时启动交互式脚本?

Car*_*tes 5 boot script tty interactive ubuntu

基于 Ubuntu core 12.04,我准备了一张可启动的 DVD。启动后(仅限控制台),我可以以用户身份登录并启动用于安装嵌入式设备的脚本:

sudo install_script
Run Code Online (Sandbox Code Playgroud)

为了在启动时执行这个脚本,我/etc/rc.local在 DVD 上的根文件系统的映像中添加了以下内容:

/bin/bash -ic install_script
Run Code Online (Sandbox Code Playgroud)

由于这个脚本是无条件执行的,我想给用户一些机会绕过安装并进入登录提示。为此,我想read在 install_script 中使用。不幸的是,从/etc/rc.local. (登录后从 shell 启动的相同脚本没有问题)。

如何在启动时获得一些用户输入?

(一些想法:

  • 也许,我可以以某种方式检测并将 tty 连接到read或连接到脚本?我试过/bin/bash -ic install_script </dev/console无济于事。
  • 也许,有更合适的选项 to/bin/bash或 to read
  • 也许,我可以root通过.bashrc调用sudo install_script(避免检查 sudo 的密码?)启动到某个用户的单个 shell(也许,无需登录?)?
  • 也许,存在一个更好的地方来调用脚本?
  • 我不想将交互(更早发生)和 install_script(例如,通过 isolinux 提供不同的引导选项并/proc/cmdline在脚本中检查)分开,原因如下:在询问用户之前,我想检查系统并概述安装过程中究竟会发生什么。在引导过程的早期阶段,可能还不容易获得用于检查系统的必要信息。

)

Car*_*tes 4

在我当前的解决方案中,我首先openvt将以install_script下行添加到\etc\rc.local

openvt -s -w /path/to/install_script
Run Code Online (Sandbox Code Playgroud)
  • 它会打开一个新的虚拟终端(除了 Ubuntu Core 12.04 中通过 提供的其他七个虚拟终端Alt-F[1-7])。
  • 开关-s指示openvt切换到新的虚拟终端(无需按Alt-F8)。
  • 开关-w让我们等待给定的openvt命令完成。/path/to/install_scriptopenvt
  • 以这种方式开始,脚本可以像平常一样通过调用 来获取用户的输入read
  • 脚本完成后,虚拟终端将关闭(不再使用 Alt-F8 切换到它),并且控制权将返回到之前处于活动状态的虚拟终端。