Рубрики
Uncategorized

Grub и grub2.

Узнайте о Grub и Grub2 в этой статье Philip Infhanally, отраслевой профессионал с более чем 17-летним опытом работы со своей собственной консалтинговой фирмой, которая предоставляет местную и удаленную поддержку …

Автор оригинала: 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:

1.png.

Из предыдущего выхода мы можем видеть, что наша новая настраиваемая загрузка отображается в Grub, что потрясающе. Мы можем взаимодействовать в режиме реального времени, прямо в меню GRUB. Допустим, мы хотели пометить или удалить опцию из одного из этих записей. Мы бы просто нажимали кнопку E, как показано здесь:

2.png.

Теперь мы можем нажать кнопку E еще раз, чтобы редактировать запись. Скажем, мы хотим указать, что корневая файловая система находится в/dev/; Мы сделаем это, как показано на следующем скриншоте:

3.png.

Теперь мы можем нажать клавишу Enter, что сэкономит наши изменения и ключ ESC, чтобы вернуться к предыдущему экрану; Мы увидим, что новый вариант добавлен:

4.png.

Из предыдущего выхода мы можем видеть, насколько легко работать в режиме реального времени в меню загрузки 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:

5.png.

С предыдущего скриншота теперь мы можем увидеть нашу опцию настраиваемого меню в 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»