Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: GRUB2 - альтернативный настроечный скрипт (проект)  (Прочитано 3494 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dimas000

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
привет всем!
моя безудержная страсть к ковырянию grub2 привела в итоге к мысли о создании некоего альтернативного конфигуратора для этого зверя, более простого и более понятного. почитав grub'овские скрипты, я понял, что черт голову сломит там, и за основу их брать стоит только в случае крайней нужды. но для начала о том, зачем вообще мне все это надо.
(Нажмите, чтобы показать/скрыть)
ну вот, все вышеизложенное можно было не читать, это типа предисловие.
в чем суть идеи? вкратце - суть в том, чтобы создать человеческим языком написанный скрипт конфигурации и при этом свести все настройки и операции в один файл, который одновременно является и скриптом и своего рода конфигом.
в чем преимещуства такого метода? подобная система легко портируема: достаточно будет установить grub2 на нуный диск и скопировать туда один-единственный скрипт, с помощью которого и будет вестить вся дальнейшая настройка. такой подход более понятен: согласитесь, куда проще настроить все в одном файле, чем бегать по разным местам. куда лучше (как для пользователя, так и для системы), когда для изменения какой-либо опции пользователю не нужно куда-то в середину скрипта (рискуя стереть там какую-нибудь запятую), а поменять отдельно вынесенный параметр.
вот такая прекрасная идея получается... а что в реале? а в реале прогресс есть!
на текущий момент уже работает настройка основных параметров (настройки меню, оформление) и, что более интересно, система создания меню для текущей linux-системы (т.е. уже готовая замена 10_linux). естественно, смысл не в том, чтобы просто переделать, а в том, чтобы усовершенствовать. итак, работающие на текущий момент фичи:
- настраиваемая сортировка списка ядер. можно выбрать сортировку по номеру версиии или по дате изменения. смысл: если раньше самосборное ядро с версией "2.6.33-rc5-src01" шло бы ниже ядра "2.6.33-020633-rc5" (т.к. применялась сортировка только по имени), то теперь можно выбрать сортировку по дате, и более новые ядра будут всегда вверху в списке
- проверка на наличие initrd-образа к ядру. по умолчанию если найден файл ядра (vmlinuz...), но не найден образ initrd к нему - такое ядро не будет добавлено в список загрузки. однако же, есть специальный режим, позволяющий использование монолитных ядер без iniitd
- режим "только последнее ядро": в список загрузки будет включаться только самое новое ядро. можно выбрать использование новейшего ядра (при обновлении ядра меню будет обновляться под него) или же использование текущего ядра (например, если вы используете самосборное ядро, а стандартные вас не интересуют)
- возможность задания выходного файла правкой одного-единственного параметра. хотите - сохраняйте полученный конфиг как grub.cfg, хотите - еще куда угодно. можно создать несколько по-разному настроенных скриптов и делать разные конфиги.
- проверка фонового изображения на соответствие установленному разрешению экрана (опционально)
- оригинальная реализация "recovery mode". для каждого ядра можно создать только один пункт меню. при обычном выборе этого пункта система будет грузиться с нормальнымии параметрами. если же при этом удерживать заданную клавишу (ctrl, alt или shift) - система загрузится в reovery mode (опционально)
- разумный минимализм в создании конфига (по крайней мере, стремление к таковому). необходимые компоненты подгружаются по необходимости, но получаемый конфиг вполне читабелен, нет нагромождения
- более-менее информативный вывод на консоль сообщений о происходящих действиях.

вывод: на ubuntu все работает. так что для тех, у кого одна ос - уже в целом готово к использованию.
да, интересный факт: провел текст на скорость с участием стандартного update-grub и получившегося скрипта. вот что вышло (по показаниям утилиты time):
- update-grub (включены скрипты 00, 05 и 10):
Цитировать
real   0m1.476s
- скрипт:
Цитировать
real   0m0.188s
как видим, разница заметна. при одинаковом результате на выходе.

короче, вот что я скажу: ежели кто заинтересовался данным прожектом - пишите, спрашивайте, присоединяйтесь. тем более, нужна будет поддержка по части windows. кроме того, возможно, планируется поддержка FreeBSD (если удастся разобраться как там что). в скором времени будет поддержка загрузки "bzImage + initramfs".
да, sudo внутри пока что оставлены на пробной стадии. впоследствии будут убраны, скрипт будет полноценно работать от рута (+ планирую добавить еще что-то типа "you must run this as root" в случае попытки запуска без нужных прав). но это позже. сейчас главное - тестирование, допилинг и... работа над загрузкой виндовоза!
кстати, в планах есть идея с ограничением списка разделов, на которых будем искать другие ос. чтоб не шарил почем зря где попало.
знатоки и энтузиасты баша (и sed'а!) горячо приветствуются!!

сабж ниже

(Нажмите, чтобы показать/скрыть)

ЗЫ. если доберусь сегодня до дебиана - погоняю на нем...
« Последнее редактирование: 01 Февраля 2010, 16:57:13 от dimas000 »
лучше на "ты"

Оффлайн dimas000

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
хорошие новости:
- добавлена поддержка винды!
- добавлена поддержка кастомных функций
улучшайзеры:
- возможность задания дисков, на которых следует искать иные ОС. если не задано - ищем по всем дискам, иначе только по указанным в списке.
(дает неплохой прирост в скорости. пример: скрипт находит текущую linux-систему и windows на одном заданном диске (диск не примонтирован): результат - в среднем 0.5 секунды. то же самое, но с прогонкой всех четырех возможных дисков - 0.9 сек)
- изменяемый порядок запуска функций. хотите, чтобы Windows была выше в меню, а линукс потом - вынесите функцию для винды вперед, и наоборот. также функции можно отключать, поставив перед именем "!".
- кое-какие мелкие фиксы.
- и все это с проверкой всего и вся на валидность. даже если юзер пишет в конфиге откровенный бред, скрипт будет вести себя адекватно (если не всегда, то в большинстве случаев). неправильные параметры определяются автоматом или скидываются на дефолт.
в общем, прогресс идет.
(Нажмите, чтобы показать/скрыть)
есть, конечно, и вопросы, куда без них. так что прошу знающих людей поразмыслить...
как сейчас реализована поддержка винды: раздел монтируется в readonly (если еще не смонтирован), на нем ищется файл с именем "ntldr" или "NTLDR", если найден - читается boot.ini, из него выковыривается заданное в кавычках название загружаемой системы. в связи с этим вопросы:
1. наличие в корне /ntldr не всегда означает загрузоспособность найденной системы
2. если в "boot.ini" задано более одной системы - как определить, на какую именно мы наткнулись. и вообще, откуда будет лучше взять название найденной оси?
3. если стоит более одной винды, то загрузка должна (по идее) производиться через загрузчик старшей из установленных. стоит подумать, как реализовать сие.
а пока что могу сказать, что на Ubuntu 9.10 + winXP все находит и грузит))

UPD: да, еще вот вопрос по части поиска других linux-ОС. как правильно будет узнать название и версию найденной оси? везде ли есть /etc/lsb-release? (в Дебиане, например, по дефолту не было утилиты lsb_release, вполне допускаю, что и файла такого могло не быть)
UPD2: множество крупных и мелких фиксов. из значимого - чуть более корректно реализована работа с виндой при нахождении оной на другой жестком диске.
дальнейшая жизнь проекта - https://sourceforge.net/projects/grub2rc
« Последнее редактирование: 04 Февраля 2010, 02:46:24 от dimas000 »
лучше на "ты"

Оффлайн kherson

  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
А как этот скрипт запустить в действие после переустановки винды?
Лучший мониторинг обменников, пользуюсь сам и другим рекомендую.

Оффлайн dimas000

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
как и любой другой - дать файлу чмоды на запуск и запустить))
если подразумевалось восстановление мбр - то это не сюда, тут стандартный grub-install все разрулит.
лучше на "ты"

Оффлайн kherson

  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
восстановление мбр - то это не сюда, тут стандартный grub-install все разрулит.
Дайте ссылку на пост где написано какие действия чтоб восстановить груб2 с виндой ???
Лучший мониторинг обменников, пользуюсь сам и другим рекомендую.

Оффлайн dimas000

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
да пожалуйста - https://forum.ubuntu.ru/index.php?topic=74165.msg556531#msg556531
после чего грузишь систему и "sudo update-grub", чтоб подцепил новую винду
лучше на "ты"

 

Страница сгенерирована за 0.069 секунд. Запросов: 25.