Бремя GRUB’а

Алексей Фдорчук

Будучи «из числа тех, что признали Советскую власть несколько поз­же Англии и чуть раньше Греции», я довольно долго в качестве загрузчика использовал GRUB 1-й версии (ныне называемый Legacy). Однако в конце концов, вслед за всем прогрессивным человечеством, перешёл на GRUB 2 (именуемый теперь GRUB’ом просто), привык к нему, освоился и даже научился немного настраивать. И всё бы ладно, и всё бы ничего, но недавно начались некоторые странности.

При двух-трёх установленных системах (а меньше у меня бывает только на Нотебучке) на обеих машинах отрезок времени от мелькания заставки BIOS’а до появления меню загрузчика был почти неуловим органолептически. И, естественно, не измеряем. Когда же у меня в результате экспериментов на большой машине скопилось пять систем, начало наблюдаться некоторое торможение, вполне фиксируемое визуально. Когда же их число достигло семи, время «загрузки загрузчика» возросло как-то скачком, и стало измеряться минутами — и далеко не первыми. То есть его хватало, чтобы покурить, заварить кофе — и с чашкой оного в руке ещё немного подождать появления меню GRUB’а. После же выбора нужного пункта загрузка соответствующей системы проходила столько, сколько ей положено: budgie-remix (будущая Ubuntu Budgie) — практически мгновенно, Cintu любой сборки — чуть подольше, Maui и Neon’а с ихним KDE — ещё дольше..

Причём не имело никакого значения, с какого из накопителей происходила загрузка — в MRB каждого из них был установлен инициирующий код GRUB’ от одного из инсталлированных на него дистрибутивов. Он имел место быть даже на HDD, который, ввиду своей ветхости, служил исключительно игровой площадкой для установки дополнительных дистрибутивов «на посмотреть». В число таковых в разное время попадали Void Linux, Antergos, Solus и более иные, которых уже не упомню.

В обыденной жизни я бы на это, скорее всего, просто забил: большая машина загружается у меня много если раз в сутки, обычно же работает днями и иногда неделями в режиме non stop. Однако при экспериментах с разными (в том числе и собственноручно собираемыми) системами раздражала неимоверно.

Сначала я было подумал, что фоновая картинка, которую я подобрал для загрузочного меню своей Cintu, оказалась сликом теяжеловесной:

azhabachie-splash

Но, во-первых, размер её (370 КБ) вполне вписывался в рамки приличий. А во-вторых, ликвидация фона ни на что не влияла. Как и смена на загрузчик от другого дисрибутива, со своим фоном или вообще без оного.

Затем я грешил на «железо» — сбой на какой-либо из накопителей: при первом появлении этого эффекта у меня их было четыре, три SSD и один HDD, не считая постоянно подключённого по USB внешнего. Однако временное отключение «лишних» носителей ничего не давало: эффект проявлялся даже на одном диске. Ничего не дало и обновление BIOS’а — теоретически торможение можно было списать и на сбои в процедуре POST.

Я уже подумывал о более серьёзных повреждениях материальной части, типа выхода из строя самой микросхемы BOIS, или, паче того, повреждения контроллера накопителей на «маме». И путей не то чтобы решения, но даже проверки этих гипотез я не видел: микросхема впаяна в материнку, а смена последней… ну, все понимают, что это такое, если случается вне планового апгрейда. Коего в моих планах не было и быть не могло в обозримом будущем.

Однако тут одно за другим случилось два события. Сначала число накопителей в моей машине естественным образом сократилось: один SSD был отдан товарищу, попавшему в критическую ситуацию со своими дисками, второй — переставлен в Нотебучку, родной винчестер которой приказал долго жить, а HDD, который, согласно данным диагностики, обещал умереть ещё два года назад, наконец-то выполнил своё обещание.

А некоторое время спустя столь же естественным путём резко сократилось число установленных систем:

  • budgie-remix был снесён, когда я устал бороться в нём за немодальное перекобчение раскладок клавиатуры (а от модального я успел отвыкнуть напрочь);
  • та же судьба и по той же причине постигла и мою mini-сборку этого дистрибутива;
  • Maui я удалил, когда понял, что практически использовать его не буду никогда (а для ознакомительных целей вполне хватало виртуалки);
  • наконец, полуфабрикатные и тестовые сборки Cintu, были стёрты, как отслужившие срок эпохи.

В результате в большой машине осталось два SSD, которые делили между собой три системы:

  • первая, основная рабочая — Cintu 16.04.1,
  • вторая — Cintu той же версии, «система-матка» для сборки всех остальных её редакций (которую я планировал впредь выполнять в виртуалке), и
  • третья — Neon, с которой я последнее время развлекаюсь для восполнения пробелов в образовании по части современнго KDE.

Первое событие было пролонгировано во времени — накопители я выкручивал из машины не одномоментно. И между завершением процесса и вторым событием прошёл довольно большой промежуток времени (не менее пары месяцев). В течении его «эффект торможения» проявлялся во всей красе. То есть связь его со сбоями на самих дисках можно было исключить практически однозначно.

Второе же событие было действительно мгновенным. Но и первое время после него в плане загрузки ничего нового не происходило. Пока в один действительно прекрасный момент, включив машину, я, для убиения расчётного времени на «взлёт загрузчика», не отправился курить и заваривать кофе. А вернувшись, обнаружил даже не меню GRUB’а (на такой случай у меня в нём была выставлена задержка в 100 с), а уже загруженную умолчальную систему.

Немало подивившись этому обстоятельству, я неоднократно повторил перезагрузку машины. И оказалось, что так оно и есть — ноги эффекта торможения больше нет. Счастливый, я дал себе слово описать свои приключения — и вот выполнил свою обещание.

Подытоживаю результаты наблюдений: нынешний GRUB может согнуться под бременем чрезмерного, по его мнению, систем, которые гео заставляют опознавать в момент своего запуска. Рубеж чрезмерности пролегает примерно на уровне полудюжины. Восстановление «нормального» их числа (то есть трёх–четырёх) позволяет ему «подняться с колен». Но не сразу: для полной «релаксации напряжения» потребуется несколько перезагрузок. Сколько точно потребуется вешать перезагружаться — увы, не посчитал, но не менее десятка раз точно.

Ну и в заключение, вслед за героем поэмы Алексей Константиныча Толстого, не могу не помянуть добрым и ласковым русским словом «какой-то прогресс». Ибо пик моего экспериментирования с разными дистрибутивами Linux’а и более иными операционками выпал на первую половину нулевых. И тогда число систем на одной машине у меня далеко переваливало за полудюжину. Однако при используемом тогда перво-GRUB’е ничего подобного не наблюдалось — он справлялся с этим операционным изобилием играючи…

Бремя GRUB’а: 16 комментариев

  1. На мой взгляд, при всех очевидных достоинствах, grub2 имеет в сравнении с предшественником выраженные недостатки:
    — необходимость иметь для модификации «живую» инсталляцию Linux. Наборы «чуждых» систем в отсутствие таковой достоинствами grub2 воспользоваться не могут. Ни CD, ни флэшка, ни stage2 на «чужой» ФС не достаточны для полноценной модификации меню загрузки;
    — практически утрачена возможность модификации меню исключительно посредством редактирования текстовых файлов. Фактически, каждый раз в случае необходимости я находил средства осуществить нужную мне модификацию, но до простоты grub всё это достаточно далеко.

    Был бы признателен, если бы мне предметно (со ссылками) возразили. Не исключаю, что это возможно: потребность в мультизагрузочных системах не была для меня в последние годы столь актуальной, чтобы изучить grub2 глубже.

  2. Алексей, такое поведение Grub 2 замечено на ноутбуке, в котором отключена загрузка UEFI и соответственно Secure Boot. Особенно заметно некоторое торможение после обновлений хотя бы одной из установленных систем (у меня три и все производные от Ubuntu).

  3. Да, действительно, у меня и UEFI, и Secure Boot отключены. Может быть, действительно в этом дело.

  4. Володя, мы с тобой это столько раз обсуждали, что могу только согласиться с каждым пунктом.
    Достоинство у grub2 вижу только одно: не всегда обязательно руками что-то писать.
    Достоинство спорное. Не говоря уже о том, что иногда всё-таки приходится. А всякие графические «морды» типа GRUB Customizer’а работают… скажем политкорректно, не всегда корректно :)

  5. С этим явлением я столкнулся полгода тому назад, когда систем на винте стало аж 6 штук. Тоже долго искал причины. Рассуждал примерно также как и автор, и причины, соответственно, искал такие же. В конечном итоге устранить данное явление оказалось очень просто. Надо удалить все файлы /boot/grub/grub.cfg во вторичных системах. Оставить только в основной и сделать, естественно, sudo update-grub в основной системе. Собственно, к этой мысли я пришел после изучения содержимого файла grub.cfg. Кстати размер файла оказался неприлично огромным, где то под мегабайт. После операции удаления файлов он стал вполне нормального размера.

  6. Сергей, на ноутбуке, где нет режима UEFI вообще и установлено несколько систем Linux и Win7, Grub 2 работает весьма шустро и ничего править/удалять во вторичных системах не приходится.

  7. Думается, править конфиги — меньшее зло, чем включать обратно UEFI, и Secure Boot, ага?

  8. На девайсах с отключенным/не установленным Grub UEFI замечено также искажение цветовой гаммы изображения, применяемого в качестве фона, и моргание надписей меню при переходе от одного пункта к другому. При этом применение Grub UEFI исключает эти неприятные моменты, но появляются другие, например, невозможность обновить некоторые компоненты системы Linux, в т.ч. ядро. Поэтому приходится выбирать меньшее зло — Grub 2 ;)

  9. Я признателен Axiator за предоставленный конфиг, хотя не увидел в нём ничего нового… Видимо придётся «опуститься» до конкретных вопросов…
    Я могу ввести в меню какую-нибудь ms-овскую систему, расположенную на ntfs, в отсутствие в базовой Linux-инсталляции поддержки оной (ntfs) ФС?
    Я могу использовать grub2 в отсутствие Linux-инсталляций?
    Предполагаю, что расширение меню позициями загрузки c CD, различных USB-устройств, любых разделов множества HDD в б-ве случаев возможно (хотя и не в случае с ntfs, похоже), но с сожалением должен констатировать, что соотв. menuentry объёмом и сложностью будет существенно превосходить соотв. menuitem grub legacy.
    Что за странное стремление автоматизировать задачу, о которой принципиально не можешь иметь представления? Ну откуда при инсталляции отдельной ОС берутся предположения о том, что я хочу видеть в мультизагрузочном меню? Прямо ms-way какой-то… В принципе: ладно. Дело — хозяйское. Но, быть может, не нужно тогда называть это Grand Unified, если дело свелось к загрузке Linux (пусть и весьма изощрённой и практически автоматически настраиваемой)?
    Ещё раз: был бы счастлив узнать об опыте использования grub2 исключительно в качестве переносимого мультизагрузчика. Достоинства его в качестве загрузчика Linux неоспоримы и в обсуждении не нуждаются.

  10. Таня, безусловно, GRUB 2 без UEFI — зло много меньшее
    Особенно с учётом того, что с UEFI есть вероятность физически угробить BIOS так, что потребуется программатор. На Опеннете была ссылка на «успешный» опыт в этом деле. Да и у меня к тому близко было. Правда, до программатора дело не дошло, удалось перепрошить штатными средствами :)

  11. Володя, а я вот не могу согласиться, что
    > Достоинства его в качестве загрузчика Linux неоспоримы и в обсуждении не нуждаются.
    GRUB Legacy на отдельном разделе был фактически самодостаточной мини-системой, которая была независима от дистрибутивов. И которая справно грузила всё, что угодно, даже если разваливался или истреблялся раздел с тем дтистрибутивом, с которым он ставился.
    Это ведь и в обычных десктопных условиях сказывается %
    > необходимость иметь для модификации «живую» инсталляцию Linux.
    И не просто живую — а ту самую, с которой вместе ставился GRUB.

  12. Не Лёш, там где нужно: я отдаю должное. В части работы с hardware на этапе загрузки grub2 безусловно силён. Всё, что касается видеоадаптеров («слабое место» grub legacy), acpi, локализации, USB и т.д. — силён, не спорю. Но я как раз и говорю, то же, что и ты: grub2 перестал быть «самодостаточной мини-системой, которая была независима от дистрибутивов». Я бы сказал, что grub2 стал более unified в отношении hardware, но практически перестал быть независимым от ОС мультизагрузчиком (т.е. в этом смысле: менее unified :-)). И это прискорбно, потому что жизнь не остановилась, а замены grub legacy и его многочисленным последователям как-то не наблюдается.
    Вообще-то, тому есть объективные основания… Всю эту UEFI-хрень, реконфигурацию оборудования на этапе загрузки, пляски с firmware, «запихнуть» в пару сотен КБ grub legacy уже невозможно. Быть может, и Эрик Болен нынче не «озадачился» бы унифицированным загрузчиком, независимым ни от hardware, ни от ОС, ни от ФС. Но: жаль…

  13. Припомнились моменты буквально отчаяния, когда загрузка вот так оттягивалась, 2 минуты, 5 минут, час-два, опыта и знаний нет, обсудить не с кем. Случайно пришёл к тому же выводу, что и Сергей Волошин — удалять файлы grub.cfg. Его размер в 300-500 кб даёт приличную задержку, у меня он достиг однажды 70 мб! Когда ж тут комп загрузится и у кого терпения хватит. Так что — «только резать». Заметил ещё несколько сопутствующих моментов: файл пухнет после обновлений ядер в системах( и может-обновлений версии grub?); даже если обнулять файлы grub.cfg в неглавных системах, они неожиданно могут увеличиться, следить надо постоянно; большой файл и задержка появления списка систем сильно затягивают установку новых систем — ведь там идёт update-grub! Удачно, если есть возможность не устанавливать grub. Ещё хороший выход — установка burg.

Оставить комментарий

Перейти к верхней панели