Тестим UIRD

Это

`mv -Tf /memory/changes /run/initramfs/memory0

Иначе /memory/changes система обнулит.

Недавно обновил UIRD и обнаружил, что при запуске uird не работает утилита debug.
Запускал на Runtu (это клон от Ubuntu 24.04)
Не работает подпрога debug_shell.

debug_shell() {
if [ “$DEBUG_IS_ENABLED” ]; then
VT=“/dev/tty1”
getpar console && VT=“/dev/$(getpar console 1 1)”
plymouth quit
echo “===================== DEBUG SHELL MODE =======================”
echo “: Debugging started. Here is the root shell for you.”
echo “: Type your desired commands or hit Ctrl+D to continue booting.”
setsid sh -c ‘exec sh < $VT > $VT 2>&1’
echo
fi
}

Изменил debug_shell в uird/modules.d/00uird/livekit/livekitlib

debug_shell() {
if [ “$DEBUG_IS_ENABLED” ] ;then
getpar console && VT=“/dev/$(getpar console 1 1)”
[ -f /bin/plymouth ] && plymouth quit
echo
echo “^^^^^^^^^^^^^^^^ DEBUG SHELL MODE^^^^^^^^^^^^^^^^^^^”
echo “: Debugging started. Here is the root shell for you.”
echo “: Type your desired commands or hit Ctrl+D to continue booting.”
setsid sh -c ‘exec sh < /dev/tty1 >/dev/tty1 2>&1’
echo
fi
}

Теперь debug_shell работает.

У вас в cmdline ядра есть параметр console=? Что там если есть?

А, понял. Кавычки не те. Спасибо, исправлю.

А что это за параметр ?

В описании ( GitHub - neobht/uird: UIRD - Unified Init Ram Disk system ) он отсутствует

У меня в cmdline ядра его то же нет.

Но. вроде, все работает

Отсутствует потому, что это не параметр UIRD. Его и ядро читает и дракут и системд. Определяет куда выводить лог загрузки. Например console=ttyS0 это последовательный порт. UIRD это тоже учитывает.

Там сейчас так:

[ -d “${UNION}/run_” ] && mv “${UNION}”/run_/* “${UNION}”/run/
rmdir “${UNION}/run_” 2>/dev/null

Должна удаляться по идее.

Запускал на Runtu (это клон от Ubuntu 24.04)
Каталог /run_ появился в системе.
Немного подправил move_run из livekitlib

move_run() {
ismountpoint “${UNION}/run” && return
echo_green_star && echolog “$INITIALIZE /run/initramfs…”
# preserve current /run
mv “${UNION}”/run “${UNION}”/run_ 2>/dev/null
mkdir “${UNION}”/run 2>/dev/null
mount -o move /run “${UNION}”/run
mount -o remount,exec “${UNION}”/run
# [ -d “${UNION}/run_” ] && mv “${UNION}”/run_/* “${UNION}”/run/
[ -d “${UNION}/run_” ] && cp -r “${UNION}”/run_/ “${UNION}”/run*
# [ -d “${UNION}”/run_ ] && rmdir -p “${UNION}”/run_ 2>/dev/null
[ -d “${UNION}”/run_ ] && rm -rf “${UNION}”/run_
mkdir -p “${UNION}”/run/initramfs
rm -rf /lib/modules/*
rm -rf /lib/firmware/*
cp -a /{bin,dev,etc,li,root,sbin,usr,var,shut}* “${UNION}”/run/initramfs/
}

Извиние за предыдущее сообщение.
Что то пошло не так.
Не совсем понятно зачем каталог /run из загрузчика копировать в систему ?

Если честно - не помню ). Что-то видимо нужно было сохранить. Интересно почему перестало работать…

По идее надо задавать

[ -d “${UNION}/run_” ] && mv “${UNION}”/run_ “${UNION}”/run

Так как команда mv переименовывает ИСТОЧНИК в НАЗНАЧЕНИЕ, или перемещает ИСТОЧНИК(и) в КАТАЛОГ

Я сделал так

Команды rmdir видимо нет в моем загрузчике и закомментированная строка не работает.

Нет. Нужно содержимое run_, добавить в run. А не заменить run на run_.

rmdir есть наверняка, но он удаляет только пустые каталоги. Вероятно что-то не удалось перенести, какой-то lock файл например. И так как run_ не пустой он не удаляется. В новых сборка таких проблем не вижу. Надо понаблюдать.

Вернул исходный move_run
Оказалось что у меня путаницу создает /run из модуля сохранения изменений.
И /run в системе получается некорректный.
Добавил в uird-init после выполнения init aufs/overlay union :

[ -d ‘/memory/layer-base/2/changes’ ] && rm -rf /memory/layer-base/2/changes/changes/run

а так же

rm -rf /run/lock
rm -rf /run/log

Теперь утилита move_run работает без сбоев.

PS
/memory/layer-base/2/changes это changes из MagOS-Data