8. Записи меню, создаваемые пользователем

GRUB 2 позволяет пользователю создавать собственные записи в меню. Они автоматически добавляются в меню после выполнения команды sudo update-grub . Файл /etc/grub.d/40_custom служит образцом и тренировочным полигоном для внесения таких записей пользователем. Ниже представлены некоторые соглашения для пользовательских меню.

  • Имя файла определяет порядок внесения его в очередь записей. Файлы с номерным обозначением в начале имени помещаются ближе к началу меню, затем в порядке сортировки - файлы с буквенными именами. Если пользователь желает расположить свое пользовательское меню в начале меню, он может назвать файл записей как-нибудь вроде 06_xxx, тогда все записи из этого файла попадут в верхнюю часть меню.

  • Файл должен быть сделан выполнимым: sudo chmod +x /etc/grub.d/filename .

  • Содержимое файла будет помещено в grub.cfg неизменным при выполнении команды update-grub .

  • В отличие от файла меню grub.cfg пользовательские файлы не являются файлами только для чтения и могут быть изменены пользователем в любой момент.

  • Пользовательские файлы статичны. Содержимое не меняется при установке, например, нового ядра.

  • Пользователь должен следить за счетом записей: если он поместит свои записи в начало меню, может потребоваться изменить DEFAULT= setting в файле /etc/default/grub, так как теперь номер записи 0 указывает на другую запись.



  • Создание пользовательской записи в меню

    При создании записей пользователь может отредактировать файл /etc/grub.d/40_custom или создать свой собственный файл. Наилучший способ создать запись - скопировать работающую запись из /boot/grub/grub.cfg . Скопированную запись можно отредактировать под пользовательские нужды.

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

    
    
    #!/bin/sh
    
    exec tail -n +3 $0
    
    
    
  • Если пользователь хочет скопировать записи из меню GRUB (файл menu.lst):
    • возможно, копия menu.lst находится в каталоге /boot/grub (если пользователь обновлял установку с GRUB на GRUB 2);
    • необходимы следующие изменения в записи:
      - титул должен быть изменен на желаемое название пункта меню, а строка должна заканчиваться скобкой {;
      - директива root должна быть заменена на директиву set root=;
      - директива kernel должна быть заменена на директиву linux;
      - все номера разделов должны быть заменены, так как GRUB 2 считает дисковые разделы по-другому, не с нуля, а с единицы, в то же время номера дисков по-прежнему идут начиная с нуля.
    • Основные правила конструирования записей:
      - первая строка начинается названием записи и заканчивается открывающей фигурной скобкой;
      - последняя строка должна быть закрывающей фигурной скобкой;
      - в конце строк не должно быть пробелов;
      - директива set root= должна указывать на раздел, в котором лежит каталог /boot, в формате (sdXY);
      - если GRUB 2 не может найти нужное ядро, следует UUID заменить на системное имя раздела, например /dev/sda6 .
  • Далее приведены примеры пользовательских записей.

    Взятая из menu.lst и адаптированная запись:

    
    
    menuentry "My Default Karmic" {
    set root=(hd0,1)
    search --no-floppy --fs-uuid --set cb201140-52f8-4449-9a95-749b27b58ce8
    linux /boot/vmlinuz-2.6.31-11-generic root=UUID=cb201140-52f8-4449-9a95-749b27b58ce8 ro quiet splash
    initrd /boot/initrd.img-2.6.31-11-generic
    }
    
    

    Пример записи для дисковой версии SystemRescueCD, установленной по инструкции с официального сайта (на sda8):

    
    
    menuentry "System Rescue CD" {
    set root=(hd0,8)
    linux /sysrcd/rescuecd subdir=sysrcd setkmap=us
    initrd /sysrcd/initram.igz
    }
    
    

    Пример записи для передачи управления другому GRUB.

    
    menuentry "Grub 1 Bootloader" {
    set root=(hd0,8)
    chainloader +1
    }
    
    

    Далее - Командная строка и режим Rescue
    Назад - Поведение загрузочного дисплея
    Содержание