Это
`mv -Tf /memory/changes /run/initramfs/memory0
Иначе /memory/changes система обнулит.
Это
`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