Загрузочный диск ISOLINUX Live — запуск сценариев из меню

Попробуйте это:

$ # tested on GNU-sed, not sure of syntax for other versions
$ sed '/{{Info DOC/,/}}/ { s/{{\(Info DOC\)/=== \1 ===/; /}}/d }' ip.txt
=== Info DOC ===
|author= ME
|company= MY COMPANY
|classification= RESTRICTED
  • /{{Info DOC/,/}}/из строки, содержащей {{Info DOC, в строку, содержащую}}(см. Диапазон адресов для подробностей )
    • s/{{\(Info DOC\)/=== \1 ===/преобразовать по мере необходимости
    • /}}/dудалить этот
    • остальные строки не будут изменены


Сperl

$ perl -0777 -pe 's/\{\{(Info DOC)(.*?)\}\}\n/=== $1 ===$2/sg' ip.txt
=== Info DOC ===
|author= ME
|company= MY COMPANY
|classification= RESTRICTED
  • -0777глотать весь файл, поэтому это решение не подходит для слишком большого входного файла
  • .*?не -жадное сопоставление
  • sмодификатор, позволяющий .также соответствовать символу новой строки

0
09.04.2020, 11:59
1 ответ

В isolinux.cfgпараметры загрузки указываются в строке APPEND, а не в строке KERNEL. Таким образом, ваш init=copy1.bsдолжен вместо этого перейти к строке APPEND.

И если вы используете опцию init=, это означает запуск вашего сценария оболочки как процесса #1 :вместо настройки обычной среды, например. несколько виртуальных консолей, он будет запускать только этот один сценарий... и как только этот сценарий завершится, ядро ​​​​запаникует (= аварийное завершение ), поскольку процесс #1 умер.

В зависимости от того, как именно устроен файл initrd Finnix, использование параметра init=может также запускать ваши сценарии в ситуации, когда им потребуется дублировать некоторые или все функции сценариев запуска Finnix -до они действительно могут сделать что-нибудь полезное.

Вместо этого вы можете придумать свой собственный параметр загрузки. Параметры загрузки появятся в /proc/cmdline, даже если они неизвестны ядру, и вы можете просто создать сценарий запуска -, который читает /proc/cmdline, выбирает оттуда значение пользовательского параметра, а затем использует его для выполнения. другой сценарий в выбранном вами месте. Этот подход может быть проще в отладке, чем использование стандартного параметра init=.

Корневая файловая система Finnix находится внутри файла finnix/arch/x86/root.img. У меня нет времени, чтобы полностью проанализировать это прямо сейчас, но я предполагаю, что initrd.xzустанавливает RAM-диск и загружает туда содержимое root.img, так что компакт-диск может быть извлечен при использовании Finnix..

Чтобы поместить ваши скрипты в файл root.img, вы должны смонтировать файл образа, (это образ файловой системы squashfs ), скопировать содержимое в другой каталог, добавить в него свои собственные файлы, а затем использовать mksquashfsкоманда (в пакете squashfs-tools)для создания нового файла образа.

0
28.04.2021, 23:18

Теги

Похожие вопросы