Я пытаюсь создать загрузочный диск Linux (я выбрал Fennix из-за его небольшого размера и интерфейса только для терминала). Теперь загрузочный диск работает, он загружает меня в Linux, и я могу монтировать внутренний жесткий диск и т. д., так что все хорошо. Однако у меня работает меню через ISOLINUX.CFG, но я хочу прикрепить скрипт к каждому выбору меню. Скрипт скопирует 2 файла на жесткий диск с Live-диска. Мне сложно заставить меню запускать скрипты с помощью init=, так как оно, похоже, никогда не находит файлы скриптов на диске (я не уверен, куда их поместить, чтобы получить к ним доступ, пробовал несколько каталогов).
Пример меню ниже
ЭТИКЕТКА финникс
МЕНЮ LABEL Установить обновление
ТЕКСТОВАЯ ПОМОЩЬ
Копирует 2 ini-файла на жесткий диск.
КОНЕЦТЕКСТА
ЯДРО boot/x86/linux init=copy1.bs
ДОБАВИТЬ initrd=boot/x86/initrd.xz vga=791 nomodeset quiet
Может ли кто-нибудь указать мне правильное направление, как получить доступ к файлам с LiveCD после загрузки и как можно обновить меню, чтобы получить доступ к этим файлам скриптов после того, как сделан выбор?
Надеюсь, вышеизложенное имеет смысл.
Спасибо!
решение1
В isolinux.cfg
, параметры загрузки идут в строку APPEND, а не в строку KERNEL. Поэтому init=copy1.bs
вместо этого вам следует идти в строку APPEND.
А если вы используете эту init=
опцию, это означает запуск вашего скрипта оболочки как процесса №1: вместо настройки обычной среды, например, с несколькими виртуальными консолями, он запустит только этот один скрипт... и как только этот скрипт завершится, ядро впадет в панику (= аварийно завершится), поскольку процесс №1 завершится.
В зависимости от того, как именно построен файл Finnix initrd, использование этой init=
опции может также привести к запуску ваших скриптов в ситуации, когда им придется дублировать некоторые или все функции стартовых скриптов Finnix, прежде чем они смогут сделать что-то полезное.
Вместо этого вы можете придумать свой собственный параметр загрузки. Параметры загрузки появятся, /proc/cmdline
даже если они неизвестны ядру, и вы можете просто создать сценарий запуска, который считывает /proc/cmdline
, выбирает оттуда значение вашего пользовательского параметра, а затем использует его для выполнения другого сценария в выбранном вами месте. Такой подход может быть проще для отладки, чем использование стандартного init=
параметра.
Корневая файловая система Finnix, похоже, находится внутри finnix/arch/x86/root.img
файла. У меня нет времени полностью проанализировать ее прямо сейчас, но я предполагаю, что она initrd.xz
настраивает RAM-диск и загружает содержимое root.img
туда, так что CD можно извлечь при использовании Finnix.
Чтобы поместить скрипты внутрь root.img
файла, вам нужно смонтировать файл образа (это образ файловой системы squashfs), скопировать его содержимое в другой каталог, добавить в него свои файлы, а затем использовать команду mksquashfs
(in squashfs-tools
package) для создания нового файла образа.