====== GRand Unified Bootloader (GRUB) ====== ===== Сведения ===== Загрузчик операционных систем, вторая реализация, первой был - **Grub Legacy**.\\ GRUB умеет по цепочке передавать управление другому загрузчику, что позволяет ему загружать Windows, MS-DOS и др.\\ Позволяет при загрузке задавать произвольные параметры и передавать их в ядро, для дальнейшей обработки (для Multiboot систем).\\ ===== Конфигурация ===== Основным файлом конфигурации является **/boot/grub/grub.cfg**, но он **генерируется автоматически**, скриптами, расположенными в **/etc/grub.d/**\\ Так же, есть ещё файл один конфигурации - **/etc/default/grub**, он так же содержит в себе ряд полезных опций.\\ Такие как например: * Стандартный пункт загрузки (**grub_default**). Можно указать порядковый номер либо текстовый идентификатор (как в файле **/boot/grub/grub.cfg**) * Время отображения меню (**grub_timeout**). '-1' для ручного выбора. * Скрытое меню (**grub_hidden_timeout**) * Параметры загрузки ядра (**grub_cmdline_linux_default**) ==== Установка пароля ==== Имея доступ к загрузчику, можно легко **[[security:reset_passwd|сбросить пароль]]** любого пользователя в системе, поэтому рекомендуется установить пароль на загрузчик (но имея возможность загрузки с **LiveCD**, можно обойти и эту защиту).\\ Сначала создаем и шифруем пароль с помощью утилиты **grub-mkpasswd-pbkdf2**\\ Затем открываем файл **/etc/grub.d/40_custom** и дописываем в конце две строки:\\ set superusers="root" password_pbkdf2 root *сгенерированный хэш пароля (grub.pbkdf2.sha512.10000...)* После изменений, нужно **обновить конфигурацию grub** # grub-mkconfig -o /boot/grub/grub.cfg или\\ # update-grub **ПАРОЛЬ БУДЕТ УСТАНОВЛЕН НА ВСЕ ПУНКТЫ ЗАГРУЗКИ** в т.ч. и на обычную загрузку т.е. его нужно будет вводить при каждом запуске.\\ Для того что бы разрешить обычную загрузку без пароля, нужно отредактировать файл **/etc/grub.d/10_linux**, находим пункт и добавляем параметр **--unrestricted**, как на скриншоте: {{ :linux:kernel:bootloader:grub_passwd.png?direct&800 |}} PS: Имея возможность загрузится с LiveCD, **можно обойти защиту паролем**, отредактировав файл **/boot/grub/grub.cfg**.\\ ===== Консоль GRUB ===== Что бы попасть в консоль, нужно нажать клавишу **C** во время отображения меню загрузки. ==== ls ==== Кроме стандартного назначения, можно получить список жестких дисков и разделов ==== cat ==== Содержимое указанного файла. ==== linux ==== Загружает указанное ядро. linux файл_ядра опция1=значение опция2 опция3 ==== initrd ==== Загружает указанный initrt-образ (должен соответствовать версии ядра). initrd /boot/initrd.img-2.6.32-020632-generic ==== chainloader ==== Передает управление другому загрузчику (ищется в root разделе). Обычно требуется указание файла загрузки. chainloader /путь/имя_файла Для Windows можно использовать: chainloader +1 boot ==== load_env / save_env ==== Загружает / Сохраняет переменные окружения из своего файла (**/boot/grub/grubenv**)\\ **GRUB environment block** можно использовать для хранения небольшого количества информации (1024 байт).\\ Утилита **grub_editenv** позволяет редактировать из работающей системы.\\ ==== configfile ==== Позволяет загрузить другой файл конфигурации, вместо **/boot/grub/grub.cfg** ==== terminal_output ==== Перечисляет или выбирает выходной терминал. Без аргументов перечисляет активные и доступные терминалы.\\ **--append** добавляет терминал в список активных.\\ **--remove** удаляет из списка активных.\\ ==== testspeed ==== Дает возможность протестировать скорость чтения файла с диска.\\ **-s, --size=ЧИСЛО** - объём данных каждой операции чтения.\\ testspeed [-s РАЗМЕР] [путь до файла] ==== time ==== Время выполнения любой команды. time [команда] [аргументы] ==== sleep ==== Заморозка.\\ **-v, --verbose** - показывает отсчет.\\ **-i, --interruptible** - разрешает прерывание кнопкой ESC.\\ sleep [КЛЮЧИ] [СЕКУНДЫ] ==== root ==== Сообщает какой раздел используется в качестве корневого. ==== set ==== Используется для задания различных параметров. set root=(hd0,5) ==== search ==== Поиск раздела по UUID, метке или файлу, имеет ключи: * **u (–fs-uuid)** - поиск раздела по UUID * **l (–label)** - поиск по метке раздела * **f (–file)** - поиск по указанному файлу * **n (–no-floppy)** - не проверять флоппи-дисковод (чтоб не трещал) * **s (–set)** - установить найденный раздел в качестве значения заданной переменной. ==== vbeinfo ==== Список поддерживаемых видеорежимов. ==== halt / reboot ==== Выключение / перезагрузка