基于 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 启动的相同脚本没有问题)。
如何在启动时获得一些用户输入?
(一些想法:
read或连接到脚本?我试过/bin/bash -ic install_script </dev/console无济于事。/bin/bash或 to read?root通过.bashrc调用sudo install_script(避免检查 sudo 的密码?)启动到某个用户的单个 shell(也许,无需登录?)?/proc/cmdline在脚本中检查)分开,原因如下:在询问用户之前,我想检查系统并概述安装过程中究竟会发生什么。在引导过程的早期阶段,可能还不容易获得用于检查系统的必要信息。)
我创建了从USB记忆棒可引导CD(根据这个从Ubuntu的核心12.04建成例如)通过
CD_root/,rootfs.partU 盘根分区的映像复制到文件夹中,然后如何从 DVD 引导到根分区的映像?
问题的更多细节和更精确的版本:
我可以开始引导到 init 脚本(在 Ubuntu 12.04 主机上使用 virtualbox):使用内核参数,break=mountroot我可以rootfs.part在安装映像之前放入shell并插入:
mkdir /run/cdrom
mount -t iso9660 /dev/sr0 /run/cdrom
losetup /dev/loop0 /run/cdrom/rootfs.part
mount -o ro /dev/loop0 /root
Run Code Online (Sandbox Code Playgroud)
我怎样才能自动实现这部分(或其挂载 /root 的要点)?我是否必须修补initrd.img(如何)或是否有其他选项,例如内核参数?
此时,里面的文件rootfs.part在root/. (它们包括/root/sbin/init, /root/sbin/modprobe, root/lib/modules/*, ...)我尝试继续并模拟 init 脚本的正常处理(当然有点脱离上下文):
udevadm control --timeout=121 --exit
mount -n -o move /dev /root/dev
mount -n -o …Run Code Online (Sandbox Code Playgroud)