summaryrefslogtreecommitdiff
path: root/LINUX/GRUB и параметры ядра в Linux.md
diff options
context:
space:
mode:
Diffstat (limited to 'LINUX/GRUB и параметры ядра в Linux.md')
-rw-r--r--LINUX/GRUB и параметры ядра в Linux.md147
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
+ ```