grub2 and menus

July 28, 2012

В предыдущий раз я немного спалился конфигом bootchartd для grub2. Теперь grub2 загружает большинство моих систем. В этот раз похвастаюсь несколькими своими хаками :]

Перейти на grub2 раньше мне мешало несколько вещей:

Но grub1 - мёртвый проект: обновлений к нему нет, а проблем вылазит всё больше с новыми версиями gcc.

Здесь в единственном баге собралась приличная их пачка:

и другие :]

В grub2 этих проблем нет. Ошибки исправляются быстро и фич для обычных пользователй навалом:

При установке grub2 выдается классная ссылка на HOWTO. В моём случае всё было просто:

grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

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

grub2-mkconfig - довольно смешной скрипт. Интересно знать, как он генерит grub.cfg:

  1. Детектит тип файловых систем для / и /boot/,
  2. запускает скрипты из /etc/grub.d/,
  3. которые генерят grub.cfg,
  4. который является shell-подобным скриптовым языком для grub2

такая вот вложенность :]

Мне сюда просто нужно было вклинить первую строку меню:

cat /etc/grub.d/01_my_live 
#! /bin/sh
set -e
cat /boot/grub2/grub.cfg.mine
cat /boot/grub2/grub.cfg.mine
menuentry 'Gentoo current' {
    load_video
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    linux /boot/vmlinuz root=/dev/sda2 ro video=SVIDEO-1:d i915.i915_enable_rc6=1 init=/sbin/bootchartd
}

Часть этого меню взята из оригинального автогенеренного grub.cfg.

Теперь grub2-mkconfig генерит мне меню с моим любимым ядром по умолчанию :]