В принципе есть куда унифицировать.
Хотел переделать так, чтобы скрипт был отдельно, а дистроконфиги отдельно. Удобнее добавлять новые дистры.
Начал делать, но было понятно, что нечно похожее уже наверняка сделано. В итоге нашел на гитхабе очень хороший вариант.
Скрипт находит исошки в указанных папках, монтирует их и проверяет наличие конфигов loopback.cfg и isolinux.cfg и по результату добавляет в меню. Если находит loopback.cfg, то isolinux.cfg игнорируется. При использовании isolinux в строку ядра должны быть добавлены дополнительные параметры загрузки, автор реализовал это пропатчив syslinuxcfg.mod. Можно использовать и не патченный, тогда нужно руками через редактор меню граба добавлять в строку ядра переменную $linux_extra, впрочем для EFI это и так придется делать, для него патченного syslinuxcfg.mod пока нет.
В общем форкнул я этот реп (
исходный,
мой). Добавил свою задумку для пользовательских конфигов через функцию, в основном используется для проблемных дистров. Пофиксил загрузку Манжаро, добавил МагОС, antiX,
последний грузится только с усб носителей, их инитрд ищет себя только на usb и cd устройствах. isolinux конфиг Antergos парсится грабом неправильно, для него пришлось добавить пользовательский конфиг. С пользовательскими конфигами работает медленнее и как правило они нужны редко, большинство дистров грузится автоматом, поэтому по умолчанию их выключил. Можно включить в меню или в autoiso.cfg на постоянку (в конце файла). Язык загружаемой системы по возможности будет таким же как у grub. В меню добавил имена разделов, на которых найдены исо образы и пункт добавления новой папки для сканирования. Вроде все.
Магея не грузится. Пока не разобрался почему.
Все необходимое прилагаю в архиве.
Пример для добавления в граб конфиг:
menuentry "Scan ISOs" "${prefix}/scripts/autoiso.cfg" {
set iso_dirs="/ /iso /ISOs /_ISO"
export iso_dirs
configfile "$2"
}
Путь к конфигу autoiso рекомендуется задавать через позиционный параметр, как в примере. Если путь не меняется, то значения не имеет.
Я себе в пути поиска добавил еще папку юзера и папку загрузок, чтобы после скачивания ничего никуда не двигать.
Репозиторий автора
Мой форкUpdate: исправление для загрузки antiX и MX с любого носителя. Архив перезалил.
Update2: в архив по ошибке попал не патченный syslinuxcfg.mod. Перезалил с патченным.