М-да, я его все-таки одолел. И хотел бы посмотреть на того Криворучко, кто такой патч вносил. Дело было разумеется в скрипте init из initrd/initramfs. Там есть код, который разбирает cmdline на параметры и проверяет, нет ли там single, emergency и прочих вариантов указания, что нужен однопользовательский режим:
else
debug_off # Turn off debugging for this section
set -- "$CLINE"
for x in "$@"; do
echo "In second x is [$x]"
case "$x" in
[0-9] | s | S | single | emergency | auto)
initargs="$initargs $x"
echo "initargs is [$initargs]"
;;
esac
done
echo "initargs is [$initargs]"
fi
(отладочная печать имени меня). Этот код делает понятно что - формирует командную строку для init. И вот неведомый Криворучко написал вот эту вот строку:
set -- "$CLINE"
(в CLINE - считанная командная строка запуска ядра из /proc/cmdline) и ничуть не усомнился в том, что правильно. И что происходит - set получает на вход разбора строку
как единое целое, естественно именно так и отдает ее в цикл проверки, понятное дело, что ничего ничему не совпадает.
Для исправления ошибки я просто вернул все, как было раньше:
set -- $CLINE
Теперь set получает на вход строку как строку и ессно парсит ее на элементы, single находит, список аргументов для init формирует нормально.
Осталось решить, какой морде козлячьей это зарепортить - в Gentoo или же в Calculate
UPD: Все уже зарепорчено без меня :) Этот файл входит в пакет dracut и соответствующий патч был принят еще в конце марта, но почему-то так до сих пор и не зарелизен (
патч )