Автор оригинала: PACKT.
Узнайте о Grub и Grub2 в этой статье Philip Infhanally, профессионал промышленности с более чем 17-летним опытом работы со своей собственной консалтинговой фирмой, которая предоставляет местную и удаленную поддержку по всему миру; Сосредоточиться к проектированию, планированию, реализации и документированию называть несколько.
Эта статья обсудит менеджеры загрузки, на чьи рабочие места должны представить меню загрузки, из которого пользователь имеет параметры для выбора какого операционной системы/ядра Linux для загрузки или редактирования. Во-первых, мы сосредоточимся на Grub, а затем перейти к Grub2.
Озвучивать
Grub означает Grand Unified Bootloader. Grub в основном используется для загрузки дистрибутивов Linux. Однако Grub может работать с другими загрузочными погрузками. Общий сценарий использования с использованием является для двойной загрузки с операционной системой Microsoft; Это делает это, выполняя передачу отключения для загрузчика Windows для операционных систем Microsoft.
Grub использует файл/boot/grub/grub.conf. Иногда вы увидите/boot/grub/menu.lst, но этот файл — это просто символическая ссылка на/boot/grub/grub.conf. Использование CentOS 6.5 DISTRO, запустите следующую команду:
[root@localhost ~]# ls -l /boot/grub total 274 -rw-r--r--. 1 root root 63 Jun 20 01:47 device.map -rw-r--r--. 1 root root 13380 Jun 20 01:47 e2fs_stage1_5 -rw-r--r--. 1 root root 12620 Jun 20 01:47 fat_stage1_5 -rw-r--r--. 1 root root 11748 Jun 20 01:47 ffs_stage1_5 -rw-------. 1 root root 769 Jun 20 01:48 grub.conf -rw-r--r--. 1 root root 11756 Jun 20 01:47 iso9660_stage1_5 -rw-r--r--. 1 root root 13268 Jun 20 01:47 jfs_stage1_5 lrwxrwxrwx. 1 root root 11 Jun 20 01:47 menu.lst -> ./grub.conf -rw-r--r--. 1 root root 11956 Jun 20 01:47 minix_stage1_5 -rw-r--r--. 1 root root 14412 Jun 20 01:47 reiserfs_stage1_5 -rw-r--r--. 1 root root 1341 Nov 14 2010 splash.xpm.gz -rw-r--r--. 1 root root 512 Jun 20 01:47 stage1 -rw-r--r--. 1 root root 126100 Jun 20 01:47 stage2 -rw-r--r--. 1 root root 12024 Jun 20 01:47 ufs2_stage1_5 -rw-r--r--. 1 root root 11364 Jun 20 01:47 vstafs_stage1_5 -rw-r--r--. 1 root root 13964 Jun 20 01:47 xfs_stage1_5 [root@localhost ~]#
Из предыдущего вывода мы можем видеть/boot/grub/grub.conf А также символическая ссылка/boot/grub/menu.lst. Мы можем просмотреть фактическую/boot/grub/grub.conf файл:
[root@localhost ~]# cat /boot/grub/grub.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu titleCentOS (2.6.32-431.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=05527d71-25b6-4931-a3bb-8fe505f3fa64 rd_NO_LUKSrd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DMrhgb quiet initrd /initramfs-2.6.32-431.el6.x86_64.img [root@localhost ~]#
С предыдущего выхода общие варианты будут следующими.
• означает, что это первая запись для загрузки из меню • дает сумму секунд (5 в этом случае), что меню будет отображаться для загрузки ядра Linux, или загрузочный загрузчик Windows получает отдачу от grub. • Splashimage = (HD0,0)/GRub/splash.xpm.gz — это фоновое изображение меню загрузки • root (HD0,0) относится к первому жесткому диску и первым разделам на первом жестком диске
Grub2.
GRUUB2 использует более программный подход в том, как представлено меню. На первый взгляд GRUUB2 может выглядеть пугающим, но отдыхать уверены, что это не так сложно, как кажется. Синтаксис аналогичен языку программирования, с большим количеством, если … затем заявления. Вот что/boot/grub/grub.cfg на системе CentOS 7 выглядит:
[root@localhost ~]# cat /boot/grub2/grub.cfg # # DO NOT EDIT THIS FILE # # It is automatically generated by grub2-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### set pager=1 if [ -s $prefix/grubenv ]; then load_env fi if [ "${next_entry}" ] ; then set default="${next_entry}" setnext_entry=
save_envnext_entry setboot_once=true else set default="${saved_entry}" fi
Некоторые из следующих выходов опущены для краткости. Ниже показана последняя часть/boot/grub/grub.cfg:
### BEGIN /etc/grub.d/10_linux ### menuentry 'CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-693.el7.x86_64-advanced-16e2de7b-b679-4a12-888e-55081af4dad8' { load_video setgfxpayload=keep insmodgzio insmodpart_msdos insmodxfs set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' 40c7c63f-1c93-438a-971a-5331e265419b else search --no-floppy --fs-uuid --set=root 40c7c63f-1c93-438a-971a-5331e265419b fi linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=UUID=16e2de7b-b679-4a12-888e-55081af4dad8 rocrashkernel=auto rhgb quiet LANG=en_US.UTF-8 initrd16 /initramfs-3.10.0-693.el7.x86_64.img } ### END /etc/grub.d/10_linux ###
Итак, чтобы интерпретировать файл/boot/grub/grub.cfg, мы ищем строки, начнущие с менюнтрию. Эти строки начнут допущению доступа к действию для операционной системы, например распределение Linux или OS Windows.
Работа с grub.
Теперь мы собираемся взаимодействовать с Grub. Мы добавим пользовательскую загрузку. Это будет представлено при перезагрузке. Мы будем использовать команду vi, которая откроет/boot/grub/grub.conf в визуальном редакторе. Прежде чем работать с Grub, всегда делайте резервную копию вашего/boot/grub/grub.conf.
[root@localhost ~]# cat /boot/grub/grub.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu titleCentOS (2.6.32-431.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=05527d71-25b6-4931-a3bb-8fe505f3fa64 rd_NO_LUKSrd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DMrhgb quiet initrd /initramfs-2.6.32-431.el6.x86_64.img [root@localhost ~]# vi /boot/grub/grub.conf
Теперь мы внутри VI. Мы нажимаем I на клавиатуре, чтобы войти в режим вставки; Прокрутите вниз, используя клавишу со стрелкой вниз, пока не достигнем последней строки, и нажмите, затем введите, чтобы перейти к новой строке:
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu titleCentOS (2.6.32-431.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=05527d71-25b6-4931-a3bb-8fe505f3fa64 rd_NO_LUKSrd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DMrhgb quiet initrd /initramfs-2.6.32-431.el6.x86_64.img ~ ~ ~ -- INSERT --
Далее мы начнем нашу запись, используя следующие ключевые слова: заголовок, корне, ядро и initrd. Мы вставим наши собственные пользовательские значения, как показано здесь:
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu titleCentOS (2.6.32-431.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=05527d71-25b6-4931-a3bb-8fe505f3fa64 rd_NO_LUKSrd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DMrhgb quiet initrd /initramfs-2.6.32-431.el6.x86_64.img titleCompTIA Linux+ (Our.Custom.Entry) root (hd0,0) kernel /vmlinuz-2.6.32-431.el6.x86 ro initrd /initramfs-2.6.32-431.el6.x86_64.img -- INSERT --
Теперь мы сохраним и выйду VI. Мы используем: WQ для сохранения наших изменений и выхода VI:
titleCompTIA Linux+ (Our.Custom.Entry) root (hd0,0) kernel /vmlinuz-2.6.32-431.el6.x86 ro initrd /initramfs-2.6.32-431.el6.x86_64.img :wq
Основываясь на предыдущем выходе, вот разбивка нашего пользовательского входа:
• Название определяет нашу запись загрузки клиента. • root (HD0,0) говорит ему поиск первого жесткого диска и первого раздела на первом жестком диске. • Kernel/vmlinuz-2.6.32-431.el6.x86 ro говорит Grub искать местоположение ядра Linux. В этом случае это VMlinuz-2.6.32-431.el6.x86 Ro (Ro означает, что он загружает ядро только для чтения). • INIDRD/INITRAMFS-2.6.32-431.EL6.x86_64.IMG Указывает исходный файл Disk RAM для использования (это помогает загружать систему).
Последний шаг — перезагрузить нашу систему CentOS и быть представлена в меню загрузки GRUB:
Из предыдущего выхода мы можем видеть, что наша новая настраиваемая загрузка отображается в Grub, что потрясающе. Мы можем взаимодействовать в режиме реального времени, прямо в меню GRUB. Допустим, мы хотели пометить или удалить опцию из одного из этих записей. Мы бы просто нажимали кнопку E, как показано здесь:
Теперь мы можем нажать кнопку E еще раз, чтобы редактировать запись. Скажем, мы хотим указать, что корневая файловая система находится в/dev/; Мы сделаем это, как показано на следующем скриншоте:
Теперь мы можем нажать клавишу Enter, что сэкономит наши изменения и ключ ESC, чтобы вернуться к предыдущему экрану; Мы увидим, что новый вариант добавлен:
Из предыдущего выхода мы можем видеть, насколько легко работать в режиме реального времени в меню загрузки GRUB, а также как добавить пользовательскую загрузку в Grub.note, что в Grub, первый жесткий диск и первый раздел Как (HD0, 0), тогда как в оболочке Linux первый жесткий диск и первый раздел идентифицируются как (SDA1).
Работа с grub2
Мы добавляем пользовательскую загрузку в GRUB2 немного по-другому из Grub. В GRUB2 вместо редактирования фактического/boot/grub/grub.cfg мы работаем с/etc/default/grub и/etc/grub.d. Давайте сделаем список/etc/grub.d, чтобы увидеть все доступные файлы:
philip@ubuntu:~$ ls -l /etc/grub.d/ total 76 -rwxr-xr-x 1 root root 9791 Apr 15 2016 00_header -rwxr-xr-x 1 root root 6258 Mar 15 2016 05_debian_theme -rwxr-xr-x 1 root root 12261 Apr 15 2016 10_linux -rwxr-xr-x 1 root root 11082 Apr 15 2016 20_linux_xen -rwxr-xr-x 1 root root 1992 Jan 28 2016 20_memtest86+ -rwxr-xr-x 1 root root 11692 Apr 15 2016 30_os-prober -rwxr-xr-x 1 root root 1418 Apr 15 2016 30_uefi-firmware -rwxr-xr-x 1 root root 214 Apr 15 2016 40_custom -rwxr-xr-x 1 root root 216 Apr 15 2016 41_custom -rw-r--r-- 1 root root 483 Apr 15 2016 README philip@ubuntu:~$
Прежде чем работать с GRUB2, всегда делайте резервную копию вашего/boot/grub/grub.cfg. Из предыдущего выхода мы можем увидеть ряд файлов. Их имена начинаются с номера, и числа читаются в последовательном порядке. Допустим, мы хотим добавить пользовательскую загрузку в GRUB2. Мы собираемся создать пользовательскую запись и назвать его/etc/grub/40_custom. Мы увидим следующий код в VI:
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. echo "Test Entry" cat<< EOF menuentry "CompTIA_LINUX+" { set root ='hd0,0' } EOF
Из предыдущего выхода мы можем видеть синтаксис немного похоже на программирование. В GRUB2 это целый язык программирования. Следующим шагом является сохранение наших изменений, затем запустите GRUB-MKCONFIG (имя подразумевает, что мы говорим о Legacy Grub, но мы на самом деле ссылаемся на Grub2). Это зависит от распределения Linux. В Centos 7 вы увидите команды, которые начинаются с GRUB2:
root@ubuntu:/home/philip# grub-mkconfig Generating grub configuration file ... # # DO NOT EDIT THIS FILE # # It is automatically generated by grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### if [ -s $prefix/grubenv ]; then sethave_grubenv=true load_env fi
Некоторые из следующих выходов опущены для краткости:
### BEGIN /etc/grub.d/40_custom ### # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. echo "Test Entry" cat<< EOF menuentry "CompTIA_LINUX+" { set root ='hd0,0' } EOF
Когда мы запускаем эту команду, команда GRUB-MKCONFIG находит пользовательскую запись. Это генерирует новое загрузку меню. После следующей перезагрузки системы мы увидим новое загрузку меню. Мы также можем изменить параметры в/etc/default/grub, включая такие параметры, как ОС по умолчанию, таймер, и так далее. Вот содержание/etc/default/grub:
root@ubuntu:/home/philip# cat /etc/default/grub # If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration' GRUB_DEFAULT=0 GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=10 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet" GRUB_CMDLINE_LINUX="find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US"
На основе предыдущего выхода значения таймера установлено значение 10. Кроме того, обратите внимание, что существует значение по умолчанию 0. Продолжая вниз по файлу конфигурации, мы видим следующий код:
# Uncomment to enable BadRAM filtering, modify to suit your needs # This works with Linux (no patch required) and with any kernel that obtains # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Uncomment to disable generation of recovery mode menu entries #GRUB_DISABLE_RECOVERY="true" # Uncomment to get a beep at grub start #GRUB_INIT_TUNE="480 440 1"
Теперь давайте перезагрузим нашу систему Ubuntu и проверим меню загрузки GRUB2:
С предыдущего скриншота теперь мы можем увидеть нашу опцию настраиваемого меню в Grub2. Мы можем даже прокрутить записи и редактировать их, нажав кнопку E. Обратите внимание, что в Grub2 первый жесткий диск начинается с 0, и первый раздел начинается с 1, в отличие от устаревших лиц.
Если вы нашли эту статью интересную, вы можете исследовать Comptia Linux + Руководство по сертификации Чтобы овладеть концепциями и методами, которые помогут вам получить сертификаты LX0-103 и LX0-104 по вашей первой попытке. Comptia Linux + Руководство по сертификации Помогите вам возобновить всеми модулями, используя вопросы практики и MOCK Exams, но вы также будете хорошо подготовлены для передачи сертификатных экзаменов LX0-103 и LX0-104. Вы можете воспользоваться всеми книгами Packt всего за 5 по 21 января 2019 года. Так чего же ты ждешь? Пользуйте предложение сегодня и станьте исключительным IT Professional!
Оригинал: «https://www.codementor.io/@packt/grub-and-grub2-qevq1yree»