我正在尝试创建一个 Linux 启动盘(由于尺寸小且只有终端接口,我选择了 Fennix),现在启动盘可以正常工作,它将我加载到 Linux 中,我可以安装内部 HDD 等。所以一切都很好在那里,但是我的菜单通过 ISOLINUX.CFG 工作,但我想将一个脚本附加到每个菜单选项,该脚本会将 2 个文件从 Live 磁盘复制到 HDD,我正在努力让菜单启动脚本init= 因为它似乎从未在磁盘上找到脚本文件(我不确定将它们放在哪里才能访问它们,尝试了多个目录)。
下面的菜单选项示例
芬尼克斯标签
菜单标签安装更新
文字帮助
将 2 个 ini 文件复制到您的硬盘
结束文本
内核启动/x86/linux init=copy1.bs
附加 initrd=boot/x86/initrd.xz vga=791 nomodeset 安静
谁能指出正确的方向,告诉我如何在启动后从 LiveCD 访问文件,以及如何在做出选择后更新菜单以访问这些脚本文件。
希望以上说得有道理,
谢谢!
答案1
在 中isolinux.cfg
,引导选项位于 APPEND 行,而不是 KERNEL 行。所以你init=copy1.bs
应该去 APPEND 行。
如果您使用该init=
选项,则意味着将您的 shell 脚本作为进程#1 运行:而不是使用多个虚拟控制台等设置常规环境,它只会运行该脚本...一旦该脚本退出,内核将由于进程 #1 死亡,出现恐慌(=崩溃)。
根据 Finnix initrd 文件的具体构造方式,使用该init=
选项也可能会在需要复制 Finnix 启动脚本的部分或全部功能才能实际执行任何有用操作的情况下启动脚本。
您可能想发明自己的自定义启动参数。即使内核不知道启动参数,它们也会出现/proc/cmdline
,您只需创建一个启动脚本来读取/proc/cmdline
,从那里选择您的自定义参数值,然后使用它在您选择的位置执行另一个脚本。这种方法可能比使用标准参数更容易调试init=
。
Finnix 根文件系统似乎位于该finnix/arch/x86/root.img
文件内。我现在没有时间完全分析它,但我猜想initrd.xz
设置一个 RAM 磁盘并加载其中的内容root.img
,以便在使用 Finnix 时可以弹出 CD。
要将脚本放入root.img
文件中,您需要挂载映像文件(它是一个 squashfs 文件系统映像),将内容复制到其他目录,将您自己的文件添加到其中,然后使用命令mksquashfs
(在squashfs-tools
包中)创建新映像文件。