diff options
Diffstat (limited to 'LINUX/GRUB и параметры ядра в Linux.md')
| -rw-r--r-- | LINUX/GRUB и параметры ядра в Linux.md | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/LINUX/GRUB и параметры ядра в Linux.md b/LINUX/GRUB и параметры ядра в Linux.md new file mode 100644 index 0000000..1b8ace7 --- /dev/null +++ b/LINUX/GRUB и параметры ядра в Linux.md @@ -0,0 +1,147 @@ +GRUB нужен, если: +- Нужно загрузить систему с особыми параметрами. +- Нужно добавить поддержку нескольких ОС в меню загрузки. +- Надо включить/выключить режим отладки ядра. +- Любите жить опасно и копаетесь в экспериментальных функциях Linux. +### Структура конфигурации GRUB: + +**Основной конфиг:** `/etc/default/grub` +Этот файл — первая остановка при настройке GRUB. Открываем: +```sh +sudo nano /etc/default/grub +``` +Пример стандартного конфига: +``` +GRUB_DEFAULT=0GRUB_TIMEOUT=5GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"GRUB_CMDLINE_LINUX="" +``` + +Обозначение параметров: +- `GRUB_DEFAULT=0` — загружается первая запись в меню GRUB. +- `GRUB_TIMEOUT=5` — пауза в секундах перед автозагрузкой. +- `GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"` — параметры, которые передаются ядру (по умолчанию он загружается без лишнего вывода). +- `GRUB_CMDLINE_LINUX` — дополнительные параметры, которые работают во всех режимах. + +Это далеко не все параметры. Ниже будет спойлер со всеми параметрами. +Изменения в файле **не вступят в силу сами по себе**. После редактирования надо обновить конфиг: +```sh +sudo update-grub +``` +Бывает, что система не загружается, но есть время на спасение. В такие моменты жмём `e` в меню GRUB, находим строку вида: +``` +linux /boot/vmlinuz-5.15.0-52-generic root=UUID=xxxx-xxxx-xxxx-xxxx ro quiet splash +``` +И меняем параметры ядра прямо в загрузчике. Например, если система зависает из‑за ACPI, можно добавить: +``` +acpi=off +``` +После чего грузимся с помощью `Ctrl + X` или `F10`. Эти изменения действуют **только для текущей загрузки**. + +Все параметры GRUB: +Если уже загрузились и хотите узнать, какие параметры применились: +``` +cat /proc/cmdline +``` +### Применение + +Несколько вариантов применения: +Если провайдер не поддерживает IPv6, а система продолжает упрямо пытаться его использовать: +``` +GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ipv6.disable=1" +``` +Обновляем GRUB, перезагружаем систему. + +Если вам нужно больше информации при загрузке системы: +``` +GRUB_CMDLINE_LINUX_DEFAULT="debug ignore_loglevel" +``` + +После этого получите максимально подробный лог загрузки. +Если у вас простая система, можно попробовать грузиться без `initrd`: +1. В `/etc/default/grub` добавляем: + ``` + GRUB_CMDLINE_LINUX_DEFAULT="noinitrd" + ``` +2. Пересобираем загрузочный образ: + ``` + sudo update-initramfs -u + ``` +3. Обновляем GRUB и перезагружаемся. +### Безопасность GRUB + +Если не хотите, чтобы кто‑то случайно (или специально) изменил параметры ядра: +1. Создаём хеш пароля: + ``` + sudo grub-mkpasswd-pbkdf2 + ``` +2. Открываем файл `/etc/grub.d/40_custom`: + ``` + sudo nano /etc/grub.d/40_custom + ``` +3. Добавляем: + ``` + set superusers="admin"password_pbkdf2 admin grub.pbkdf2.sha512.10000.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + ``` +4. Обновляем GRUB: + ``` + sudo update-grub + ``` +Теперь при попытке редактирования параметров загрузки GRUB попросит пароль. +### GRUB Modules + +GRUB умеет очень многое, но многие даже не подозревают, что можно подгружать **модули** прямо в загрузчике. + +Загрузка по сети через PXE: +``` +insmod pxeinsmod netinsmod tftpset net_pxe_ifname=eth0set net_pxe_ip=192.168.1.100set net_pxe_server=192.168.1.1set net_pxe_gateway=192.168.1.1set root=(tftp,192.168.1.1)/ +``` +Можно добавить другие полезные модули: +- `lvm` — для работы с логическими томами. +- `cryptodisk` — для расшифровки зашифрованных дисков перед загрузкой. +- `usb` — если грузимся с USB‑диска. +### Кастомизация экрана загрузки GRUB + +Стандартное меню GRUB скучное? +1. Кладём красивую картинку в `/boot/grub/` (лучше PNG 1024×768). +2. Открываем `/etc/default/grub` и добавляем: + ``` + GRUB_BACKGROUND="/boot/grub/background.png" + ``` +3. Обновляем конфиг: + ``` + sudo update-grub + ``` + +Теперь при загрузке будет фон вместо унылого чёрного экрана. +Можно поменять цвета текста в файле `/etc/grub.d/05_debian_theme`: +``` +set menu_color_normal=white/blackset menu_color_highlight=yellow/blue +``` +(меняем белый текст на чёрном фоне на жёлтый текст на синем фоне) +### Если что-то пошло не так + +Сломали GRUB? +1. Загружаемся с LiveCD или флешки с Linux. +2. Открываем терминал и монтируем системный раздел: + ``` + sudo mount /dev/sdXn /mntsudo mount --bind /dev /mnt/devsudo mount --bind /proc /mnt/procsudo mount --bind /sys /mnt/sys + ``` +3. Заходим в chroot‑окружение: + ``` + sudo chroot /mnt + ``` +4. Переустанавливаем GRUB: + ``` + grub-install /dev/sdXupdate-grub + ``` +5. Перезагружаемся. Система снова жива. + +Если GRUB сломался окончательно, можно загрузить ядро вручную из UEFI: +1. Загружаемся в UEFI Shell или LiveCD. +2. Выполняем: + ``` + linux /boot/vmlinuz-5.15.0-52-generic root=/dev/sda2 roinitrd /boot/initrd.img-5.15.0-52-genericboot + ``` +3. Если сработало — переустанавливаем GRUB: + ``` + sudo grub-install /dev/sdasudo update-grub + ``` |
