Тема: Февраль 2010

Конечно покажется странным что сегодня уже конец июня а я пишу о статье, которая в февральском номере была, но реально с Grub 2 я столкнулся именно сегодня.

А началось все с того что я решил установить себе на нетбук новую систему, и я решил что пусть это будет UNR 10.04. Я скачал загрузочный образ, проверил что действительно (то есть как и указано на сайте) все оборудование в моем нетбуке нормально работает, сделал бэкап всего диска и сегодня с утра принялся за установку. Поскольку на нетбуке ранее уже стояло два линукса, то я после некоторых раздумий решил один оставить, а новую систему ставить на раздел самого старого из установленных дистрибутивов.

Установка, настройка итд прошли хорошо. После перезугрузки текстовые меню grub2 мне показались ну очень грустными, особенно после анимированного загрузчика с бегающими пингвинами. Ну да ладно, весь в статье из LXF128 как раз рассказывалось как картинки ставить. Грустнее стало когда выяснилось, что старая система (Mandriva 2009) не грузится, сообщая что не может найти корневую файловую систему. Кстати ошибка (ну и честно говоря моя невнимательность) сбила меня с толку и пока я разобрался в чем дело прошло какое то время. Ну а дело было в том что настройщик grub2 в качестве корневой файловой системы предписывал использовать hd0,3, а initrd.img искать на hd0,2. Ясно что на этом резделе такой файл был но от UNR и вылезала ошибка. После локализации ошибки вроде бы все нормально - делов то - поправить конфигурацию.

Параллельно я решил исправить другую проблему - переименовать пункты меню и избавиться от лишних. По умолчанию пункты меню называются лаконично-многословно, кроме того я сразу же сделал обновление системы и была установлена новая версия ядра, старая осталась в меню. Ну в grub все не просто, а очень просто - залез в /boot/grub/menu.lst и все что нужно подрадакторовал, а тут везде да еще заглавными буквами (втч и в журнале) пишут НИКОГДА НЕ РЕДАКТИРУЙТЕ /boot/grub/grub.conf РУКАМИ. Итак я начал разбираться как же не руками сделать то, что я хочу, а именно: поправить ошибочную конфигурацию загрузчика (критичная ошибка), переименовать пункты меню, удалить лишние пункты (причем они дейсмтвительно лишние тк у меня нет serial console на которую memtest может выводить информацию) и поставить графическую заставку. Так вот оказалось, что я могу справиться только с одной проблемой, с последней. Ни одна другая задача, втч и критическая ошибка решена автоматом быть не может. Хотя нет, я конечно не прав, можно еще ведь использовать /etc/grub.d/40_custom куда и прописать все как надо. Правда в результате другая проблема (лишние пункты меню) только усугубится.

В результате я плюнул на все страшные предупреждения, сгенерировал меню с интересующей меня заставкой и (О УЖАС!!!) отредактировал все в нем так как мне было нужно исправив названия пунктов, ошибочную адресацию и удалив лишнее. И как ни странно команда grub-install /dev/sda отработала без ошибок, а после перезагрузки я увидел то, что хотел.

Не знаю какая отсюда мораль и видимо после следующей автоматической генерации меню (в результате обновления очевидно) все полетит, но уж лучше я потрачу еще раз несколько минут на восстановление порядка чем тербеть всякое безобразие.

А я другое, но тоже дерево!

2

Re: Февраль 2010

Crazy Rebel пишет:

НИКОГДА НЕ РЕДАКТИРУЙТЕ /boot/grub/grub.conf РУКАМИ

На самом деле, редактировать руками в Linux можно практически любой файл (по крайней мере, текстовый), просто надо хорошо представлять себе, как и зачем это делается. В случае с Grub это означает, что до тех пор, пока скрипты в /etc/grub.d работают нормально, трогать меню руками смысла нет. Если же это не так, то (по-быстрому) можно отредактировать меню напрямую в /boot/grub, а по-правильному - поправить ошибки в скриптах и/или отписаться о них производителю через Bugzilla. Фактически, важно придерживаться одного способа сопровождения (вручную или автоматически), и этот выбор обычно сделан за вас разработчиком дистрибутива (как правило это автоматическая генерация, отсюда и предупреждение). В ситуации же, подобной вашей "о ужас" произойдет, когда система невинно предложит обновить ядро "в связи с проблемами безопасности" (или еще почему-то) - меню будет перегенерировано, и проблема вернется.

"Если думаешь, говоришь, пишешь и подписываешь - не удивляйся." (с)

3

Re: Февраль 2010

Val пишет:
Crazy Rebel пишет:

НИКОГДА НЕ РЕДАКТИРУЙТЕ /boot/grub/grub.conf РУКАМИ

На самом деле, редактировать руками в Linux можно практически любой файл (по крайней мере, текстовый),

Я вообще то журнал процитировал. Врезкка на стр. 67.

Val пишет:

В случае с Grub это означает, что до тех пор, пока скрипты в /etc/grub.d работают нормально,

Вообще то как мне всегда казалось понятие нормальности у каждого свое. Мне категорически не нравятся названия типа "Ubuntu, kernel 2.6.35-33 on /dev/sdaX (safe-mode)", при этом скрипт отработал правильно и этот пункт меню работоспособен, особенно недоумение становится понятным когда есть Ubuntu обычный и UNR. Или вот как у меня скрипт пишет что обнаружил Mandriva 2009, а в меню создает пункт с названием linux on /dev/sdaX, а у Флетчера нашел OpenSuSE и в меню пишет OpenSuSE.

Val пишет:

трогать меню руками смысла нет. Если же это не так, то (по-быстрому) можно отредактировать меню напрямую в /boot/grub, а по-правильному - поправить ошибки в скриптах и/или отписаться о них производителю через Bugzilla.

Насколько я успел поразбираться способа поставить желаемое название пункта меню нет иного чем руками вписать его в grub.conf, а в скриптах ошибок нет тк они внутри себя только и делают что вызывают для каждого обнаруженного раздела программы из пакета grub. Хотя имеет возможно смысл написать разработчикам что автоматическое именование не всегда "лучший выбор" и надо бы предусмотреть возможность именования пользователем.

Val пишет:

В ситуации же, подобной вашей "о ужас" произойдет, когда система невинно предложит обновить ядро "в связи с проблемами безопасности" (или еще почему-то) - меню будет перегенерировано, и проблема вернется.

"О ужас!!!" не произойдет и проблема не вернется поскольку я теперь знаю что делать, и хочу сказать всем - не бойтесь вручную редактировать файл grub.conf от grub2, ничего страшного не произойдет, тк даже если вы его испортите то grub-install просто не отработает и при помощу update-grub можно будет просто вернуть старое меню и снова в нем копаться.

Отредактировано Crazy Rebel (2010-06-23 16:22:43)

А я другое, но тоже дерево!

4

Re: Февраль 2010

Crazy Rebel пишет:

Я вообще то журнал процитировал. Врезкка на стр. 67.

Я понимаю. А я просто развернуто объяснил, что стоит за этими словами. Ведь когда написано: "Не суй пальцы в розетку", это не значит, что если их туда сунуть - мир кончится. Человек, сведущий в электричестве и электротехнике, вполне может совать их так, чтобы было безопасно (как именно, пояснять по понятным причинам не буду). Также и здесь: настоятельно рекомендуется не делать того, что (весьма вероятно) может повлечь за собой пусть и не летальные (слава богу), но очень неприятные последствия.

Вообще то как мне всегда казалось понятие нормальности у каждого свое.

Да. В данном случае под "нормально" имелось в виду "без ошибок". Если скрипт работает правильно, но не так, как нравится лично Вам - тогда правильным путем будет исправить скрипт.

"О ужас!!!" не произойдет и проблема не вернется поскольку я теперь знаю что делать

Когда вы забудете поправить grub.conf вручную после обновления ядра (или просто не заметите, что оно произошло) и будете мучительно вспоминать: "А как же я чинил эту прблему месяца три назад", вместо того, чтобы использовать ноутбук по прямому назначению - не забудьте черкнуть пару слов о своих впечатлениях нам на форум smile Хотя я лично периодически действую по тому же принципу, что и Вы - правда, не в отношении Grub.

и хочу сказать всем - не бойтесь вручную редактировать файл grub.conf от grub2, ничего страшного не произойдет

Я даже больше могу сказать - не бойтесь редактировать вообще какие бы то ни было файлы, если это не ваши личные документы. Все системное можно восстановить, но если на ближайшие летние дни у вас есть какие-то планы помимо восстановительных работ над ноутбуком, есть смысл придерживаться штатных процедур. Как я уже писал выше, весь вопрос в том, готовы ли вы "копаться в меню" после каждого чиха системы. Если да - можно поддерживать меню вручную. Если нет - то не надо мешать автоматике. Собственно, в этом и состоит смысл предостережения.

"Если думаешь, говоришь, пишешь и подписываешь - не удивляйся." (с)

5

Re: Февраль 2010

Val пишет:

Да. В данном случае под "нормально" имелось в виду "без ошибок". Если скрипт работает правильно, но не так, как нравится лично Вам - тогда правильным путем будет исправить скрипт.

Однако и на этом пути нас подстерегает точно та же проблема - обновился пакет с grub2  и прощай скрипт (ежели его еще написать вообще можно, хотя ничего невозможного в этом мире уже не существует).

Когда вы забудете поправить grub.conf вручную после обновления ядра (или просто не заметите, что оно произошло) и будете мучительно вспоминать: "А как же я чинил эту прблему месяца три назад",

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

Я даже больше могу сказать - не бойтесь редактировать вообще какие бы то ни было файлы, если это не ваши личные документы. Все системное можно восстановить, но если на ближайшие летние дни у вас есть какие-то планы помимо восстановительных работ над ноутбуком, есть смысл придерживаться штатных процедур. Как я уже писал выше, весь вопрос в том, готовы ли вы "копаться в меню" после каждого чиха системы. Если да - можно поддерживать меню вручную. Если нет - то не надо мешать автоматике. Собственно, в этом и состоит смысл предостережения.

Если автоматика не способна справиться с задачей то ей надо мешать. В моем случае все именно так. А вторая причина это то что внимательно присмотревшись к grub.conf от grub2 можно легко заметить что он сильно сильно похож на grub.conf от grub1, так что если Вы уже с grub1 разобрались то надо помнить только что grub2 сильно похож на lilo. Ну и еще раз повторюсь - автомат генерит меню пусть и корявое но вполне работоспособное и, после того как я понял в чем проблема, еще и способное запустить все установленные ОС хоть для некоторых после ручной правки конфига при загрузке.

А я другое, но тоже дерево!

6

Re: Февраль 2010

Crazy Rebel пишет:

Однако и на этом пути нас подстерегает точно та же проблема - обновился пакет с grub2  и прощай скрипт (ежели его еще написать вообще можно, хотя ничего невозможного в этом мире уже не существует).

Разумеется. Но, во-первых, Grub2 обновляется гораздо реже, чем ядро (и, как правило, в этих обновлениях нет ничего критичного и интересного, то есть пакет можно просто замаскировать), во-вторых, правильным путем будет все же Bugzilla - см. выше. Написать скрипт, генерирующий какое угодно меню с какими угодно перламутровыми пуговицами, нет совсем никаких проблем - это просто скрипт. Хотя примут ли такой патч наверху - да, вопрос.

Вы не правы.

Ой, мне нравится эта фраза! smile Я непременно буду цитировать ее (сохраняя Ваше авторство, разумеется) в ответ на все вопросы о слетевшем после обновления ядра Grub, которые приходят к нам на редакционную почту.

А вторая причина это то что внимательно присмотревшись к grub.conf от grub2 можно легко заметить что он сильно сильно похож на grub.conf от grub1, так что если Вы уже с grub1 разобрались то надо помнить только что grub2 сильно похож на lilo.

То есть вы полагали, что grub.conf не надо редактировать вручную, потому что у него ужас какой страшный синтаксис? big_smile Нет, все гораздо проще (и в смысле синтаксиса, и в смысле причин) - я их описал выше. Если Вас подобные вещи не напрягают - то никаких проблем в ручном редактировании меню Grub нет. Иные и sendmail.cf Напрямую правят (причем их совсем немало), хотя у него в самом начале обычно стоит на сей счет грозный комментарий, и синтаксис там как раз оставляет желать лучшего, причем желать очень сильно.

"Если думаешь, говоришь, пишешь и подписываешь - не удивляйся." (с)

7

Re: Февраль 2010

Val пишет:
Crazy Rebel пишет:

Вы не правы.

Ой, мне нравится эта фраза! smile Я непременно буду цитировать ее (сохраняя Ваше авторство, разумеется) в ответ на все вопросы о слетевшем после обновления ядра Grub, которые приходят к нам на редакционную почту.

Ну я то не против, но Вы уж цитируйте тогда полностью - в моем то случае (как я и написал) при перегенерации меню конфигурация Убунту осстанется рабочей, что даст мне возможность снова все поправить, а если же груб снесет не убунту, то еще проще.

Val пишет:

То есть вы полагали, что grub.conf не надо редактировать вручную, потому что у него ужас какой страшный синтаксис? big_smile

Откровенно говоря - да. То есть дело даже не в синтаксисе, я почему то сразу подумал что генерация конфига и запись загрузчика производятся в одно действие, что оказалось не верным. Так что я думаю что уже в ближайшее время появятся инструменты, позволяющие делать все что мне хочется как в консоли, так и в графическом режиме.

А я другое, но тоже дерево!

8

Re: Февраль 2010

Crazy Rebel пишет:

в моем то случае (как я и написал) при перегенерации меню конфигурация Убунту осстанется рабочей, что даст мне возможность снова все поправить, а если же груб снесет не убунту, то еще проще.

То есть вы хотите сказать, что если:
а) вы вносите изменения напрямую в /boot/grub/grub.conf
б) вы перегенерируете меню из /etc/grub.d (вручную или как часть установки какого-то пакета, не суть важно)
то
в) ваша правка остается на месте?
Это по меньшей мере странно. Но если так, я рад за Ubuntu - раньше это не работало.

Откровенно говоря - да. То есть дело даже не в синтаксисе, я почему то сразу подумал что генерация конфига и запись загрузчика производятся в одно действие, что оказалось не верным.

Нет, там все дело в том, чтобы не действовать по принципу хорошей пионерской организации, героически преодолевая проблемы, которые сам же и создал. smile

"Если думаешь, говоришь, пишешь и подписываешь - не удивляйся." (с)

9

Re: Февраль 2010

Val пишет:
Crazy Rebel пишет:

в моем то случае (как я и написал) при перегенерации меню конфигурация Убунту осстанется рабочей, что даст мне возможность снова все поправить, а если же груб снесет не убунту, то еще проще.

То есть вы хотите сказать, что если:
а) вы вносите изменения напрямую в /boot/grub/grub.conf
б) вы перегенерируете меню из /etc/grub.d (вручную или как часть установки какого-то пакета, не суть важно)
то
в) ваша правка остается на месте?

Нет. моя правка на месте не останется но сгенерируется меню и загрузчик которые смогут загрузить убунту. А если система загрузилась то снова поправить меню и восстановить "как было" это дело нескольких минут.  Причем обратите внимание что "как было" я не просто так в кавычки взял, скорее всего если были внесены изменения потребовавшие перегенерации загрузчика то это было сделано не просто так, так что мне так или иначе придется копаться в загрузчике и смотреть что там и как изменилось.

А я другое, но тоже дерево!

10

Re: Февраль 2010

Crazy Rebel пишет:

Нет.

Ну слава Богу, а то я уж испугался.

моя правка на месте не останется но сгенерируется меню и загрузчик которые смогут загрузить убунту. А если система загрузилась то снова поправить меню и восстановить "как было" это дело нескольких минут.

Ну да, если Вы помните, что именно и зачем Вы меняли. В общем - см. выше.

Причем обратите внимание что "как было" я не просто так в кавычки взял, скорее всего если были внесены изменения потребовавшие перегенерации загрузчика то это было сделано не просто так, так что мне так или иначе придется копаться в загрузчике и смотреть что там и как изменилось.

Одна из самых частых причин перегенерации меню - установка новой версии ядра.

"Если думаешь, говоришь, пишешь и подписываешь - не удивляйся." (с)