По результатам вчерашнего изучения ситуации с зависанием os-prober-а, о чем писал в теме Немейнстримные RPM-based дистрибутивы: зачем и почему (комментарий)
По итогу причиной оказалась запредельная крутизна O()-метрики алгоритма из-за некачественного кода.
Проблем оказалось две. Первая затрагивает логику работы утилиты grub-mount. А вторая общую логику работы файловой подсистемы GRUB. Вот они:
Вот ветка с фиксом для 1-й проблемы: https://github.com/wandrien/grub/commits/grub-mount-fixes
2-й еще не занимался.
Я пока не стал писать в апстрим. Загрузил код на гитхаб и там же разместил тексты багрепортов. Как сформирую цельный пачсет, тогда напишу в апстрим на Саванну.
Желающие помочь с кодом/пул-реквестами/тестированием/исправлением моего английского/умными идеями - are welcome.
Да, по второму багу. Знаете, что GRUB делает на каждом вызове функции grub_file_open()
? Каждый раз заново детектирует файловую систему на разделе.
Я пока не знаю, разумного объяснения, почему так сделано. Ну то есть… если это сделано специально?
Пока что считаю, что это просто было сделано по принципу «работает и ладно», и поэтому исправить проблему труда не составит. Дальше посмотрим…