Интересное

Сообщение об ошибке

Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in drupal_environment_initialize() (line 684 of /home/www/nixtalk.com/includes/bootstrap.inc).

Grub2 установка на Gentoo

Опубликовано сб, 07/23/2011 - 20:02 пользователем Demontager

 Grub акроним GRand Unified Bootloader

 Решил после очередного обновления системы поменять свой загрузчик grub на grub2, не то чтобы мне первый не нравится, просто grub2 обладает уже намного большей практичностью и функционалом, тем более самим разразработчиком grub обьявлено о прекращение разработки grub legacy, http://www.gnu.org/software/grub/ (т.е версий 0.9x). В отличии от других дистрибутивов, grub2 на Gentoo автоматически не прописывает настройки, поэтому придётся немного подправить его.

Итак, что нового в Grub2:

  • Поддержка скриптов, переменных и функций
  • Графический интерфейс
  • Динамическое подгружение модулей
  • Кроссплатформеность. Поддержка Amiga Fast FileSystem (AFFS), AtheOS fs, BeFS, cpio, Linux ext2/ext3/ext4, DOS FAT12/FAT16/FAT32, HFS, HFS+, ISO9660, JFS, Minix fs, nilfs2, NTFS, ReiserFS, Amiga Smart FileSystem (SFS), tar, UDF, BSD UFS/UFS2, и XFS
  • Интернационализация, тоесть возможность использования не ASCII символов, шрифты, графическая консоль
  • Модульный, иерархичная структура, объектно-ориентированный framework для файловых систем, комманд, разделов и загрузчиков операционных систем
  • Режим "Rescue mode" сохраняет не удачные попытки загрузится. Этап загрузки1.5 удалён.
  • Некоторые переработки в структуре нумерования разделов.

Полный список поддерживаемых функций http://www.gnu.org/software/grub/manual/grub.html

 

 Старый загрузчик решил не удалять, и поставить grub2 в слот, для этого нужно активировать флаг "multislot". Для этого прописываем

  1. echo "sys-boot/grub multislot" >> /etc/portage/package.use

Заодно нужно размаскировать grub, иначе будут доступны только legacy версии

  1. echo "sys-boot/grub" >> /etc/portage/package.keywords

Не рекомендую собирать live версию (9999), так как она падает в процессе сборки. На момент написания статьи у меня была доступна для установки 1.99-r2 версия.

Ставим как обычно:

  1. emerge -av grub

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

  • /sbin/grub2-install  собственно устанавливает загрузчик
  • /sbin/grub-mkconfig  создаёт основной файл конфигурации grub.cfg
  • /bin/grub-mkimage устанавливает grub после вызова grub2-install
  • /bin/grub-editenv  команда load_env подгружает переменные с этого файла

Из них понадобятся grub2-install grub-mkconfig. Основной файл конфигурации grub2 находится в  /boot/grub/grub.cfg, но он не редактируется напрямую, так как при вызове grub-mkconfig создаётся заново, если что-то и внести сюда, то это будет работать до первого обновления конфига. А файл который нужно редактировать чтобы настроить grub2 под себя /etc/default/grub. У меня он имеет такой вид:

  1.  
  2. # If you change this file, run 'grub-mkconfig -o /boot/grub/grub.cfg' afterwards to update
  3. # /boot/grub/grub.cfg.
  4. # Make sure your /boot is mounted before executing this command.
  5.  
  6. GRUB_DEFAULT=0
  7. GRUB_HIDDEN_TIMEOUT=0
  8. GRUB_HIDDEN_TIMEOUT_QUIET=true
  9. GRUB_TIMEOUT=5
  10. GRUB_DISTRIBUTOR="Gentoo"
  11. GRUB_CMDLINE_LINUX_DEFAULT=""
  12. GRUB_CMDLINE_LINUX=""
  13.  
  14. # Uncomment to disable graphical terminal (grub-pc only)
  15. #GRUB_TERMINAL=console
  16.  
  17. # The resolution used on graphical terminal
  18. # note that you can use only modes which your graphic card supports via VBE
  19. # you can see them in real GRUB with the command `vbeinfo'
  20. GRUB_GFXMODE=1440x900x32
  21. GRUB_GFXPAYLOAD=1440x900x32
  22.  
  23. # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
  24. #GRUB_DISABLE_LINUX_UUID=true
  25.  
  26. # Uncomment to disable generation of recovery mode menu entries
  27. #GRUB_DISABLE_RECOVERY=true

Пожалуй самые важные здесь строчки, это разрешение меню grub2 и консоли, соответвенно тут 1440x900 для моего монитора. Но почемуто по умолчанию в дефолтном конфиге отсутвовала строчка GRUB_GFXPAYLOAD, именно она влияет на разрешение консоли, но это ещё не всё, если просто добавить эту строчку в конфиг, она не заработает. Тут прийдётся сделать кое-какие манипуляции, но для начала расмотрим файлы, которые также используются для создания окончательного boot/grub/grub.cfg

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

  • 00_header Скрипт который считывает настройки /etc/default/grub
  • 05_theme этого файла нет, но можно создать и прописать в нём файл с фоном для меню.
  • 10_linux проверяет какие есть kernel и добавляет их к меню
  • 20_linux_xen  специфический скрипт для систем работающих с XEN виртуализацией
  • 30_os-prober проверяет наличие других операционных систем, к примеру Windows. Но для того чтобы он заработал нужно обязательно установить sys-boot/os-prober
  • 40_custom дополнительные сценарии пользователя.

Итак, чтобы вывод в консоли отображался в необходимом разрешении, открываем /etc/grub.d/00_header и находим там строчку

  1. if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE=...

вместо точек ставим своё разрешение

К примеру у меня так:

  1. if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE=1440x900x32 ; fi
  2. if [ "x${GRUB_GFXPAYLOAD}" = "x" ] ; then GRUB_GFXPAYLOAD=1440x900x32 ; fi

В том же файле ищем set gfxmode=${GRUB_GFXMODE}  и вставляем туда строчку описывающую payload:

  1. set gfxmode=${GRUB_GFXMODE}
  2. set gfxpayload=${GRUB_GFXPAYLOAD}}

Всё, теперь можно приступать к генерации окончательного конфига для grub2, для этого выполняем:

  1. grub2-mkconfig -o /boot/grub/grub.cfg

или же

  1. grub2-mkconfig -o /boot/grub2/grub.cfg

Конфиг создан, теперь необходимо установить загрузочную запись на диск. Определяемся с какого диска нам нужно грузится, в моём случае это /dev/sda. Вводим:

  1. grub2-install /dev/sda

 Перезагружаемся и проверяем загрузку, после этого legacy grub по желанию можно удалить.

category_index: 
Поделится: 

2 комментария

Аватар пользователя anonymous

автор anonymous вкл вс, 10/28/2012 - 16:50

Вместо /boot/grub/grub.cfg необходимо указать /boot/grub2/grub.cfg, иначе не будет работать

Аватар пользователя Demontager

автор Demontager вкл сб, 11/03/2012 - 04:33

Все верно, если ставить Grub2 сразу на свежую систему, или там где полностью предварительно удален grub.
В данном случае я делал обновление, поэтому сработал именно /boot/grub/grub.cfg
На всякий случай добавил этот вариант в статью.

Добавить комментарий