Bootstrap

Когда настройки GRUB игнорируются

Когда настройки GRUB игнорируются

Как навсегда заставить UEFI грузить именно твой MX 23 (а не AltLinux, Ubuntu и т.д.)

и оставить в меню GRUB только две строки: MX 23 + Windows

(по состоянию на 16 ноября 2025, проверено на реальной машине)

Terminal:

$ lsblk -f
NAME         FSTYPE LABEL       UUID                                 MOUNTPOINTS
nvme0n1
├─nvme0n1p18 vfat   MX_EFI      8D5B-478F                             /boot/efi   ← это наш EFI-раздел
├─nvme0n1p19 ext4   boot        f51c7520-8caf-4c58-aa37-e7a836ed3c0f  /boot
└─nvme0n1p20 ext4   rootMX23    53ddf70b-317b-4fd3-965c-5a35ca5bd719  /

$ df /boot/efi
/dev/nvme0n1p18    258095   156    257940   1% /boot/efi

$ sudo efibootmgr -v
BootCurrent: 0003          ← сейчас грузится AltLinux!
BootOrder: 0002,0003,...   ← хотя первым стоит MX21 (0002), но он игнорируется
Boot0002* MX21      HD(1,GPT,2925a0a8-...)/File(\EFI\MX21\GRUBX64.EFI)   ← старая папка
Boot0003* altlinux  HD(7,...)/File(\EFI\ALTLINUX\SHIMX64.EFI)            ← виновник

$ ls -R /boot/efi/EFI
/boot/efi/EFI:
BOOT  MX

/boot/efi/EFI/BOOT:
BOOTX64.EFI                     ← сейчас тут какой-то старый загрузчик

/boot/efi/EFI/MX:
grubx64.efi                     ← здесь лежит настоящий рабочий GRUB твоего MX 23

Цель

  1. Заставить UEFI грузить именно наш MX 23 с /boot/efi/EFI/MX/grubx64.efi
  2. Добавить audit=1 навсегда
  3. Оставить в меню GRUB только две строки: MX 23 и Windows
  4. Убрать все остальные 14 записей навсегда

Пошаговое решение (выполняй строго по порядку из работающего MX 23)

1. Добавляем audit=1 навсегда

Terminal:

sudo nano /etc/default/grub

Ищи или добавь строку:

Terminal:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash audit=1"

Сохрани →

Terminal:

sudo update-grub

2. Устанавливаем подписанный shim и grub (чтобы UEFI перестал игнорировать нас)

Terminal:

sudo apt update
sudo apt install shim-signed grub-efi-amd64-signed

3. Создаём правильную структуру в EFI-разделе (nvme0n1p18)

Terminal:

# Создаём новую «неубиваемую» папку
sudo mkdir -p /boot/efi/EFI/MX23

# Копируем туда подписанные файлы
sudo cp /usr/lib/shim/shimx64.efi.signed          /boot/efi/EFI/MX23/shimx64.efi
sudo cp /usr/lib/shim/shimx64.efi.signed          /boot/efi/EFI/MX23/BOOTX64.EFI
sudo cp /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed /boot/efi/EFI/MX23/grubx64.efi

# Самое важное — делаем MX23 дефолтным загрузчиком (fallback)
sudo cp /usr/lib/shim/shimx64.efi.signed          /boot/efi/EFI/BOOT/BOOTX64.EFI
sudo cp /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed /boot/efi/EFI/BOOT/grubx64.efi

Теперь структура выглядит так:

Terminal:

/boot/efi/EFI/BOOT/BOOTX64.EFI      → наш shim
/boot/efi/EFI/MX23/shimx64.efi      → наш основной загрузчик

4. Удаляем старую запись MX21 (0002) и создаём новую правильную

Terminal:

sudo efibootmgr -b 0002 -B        # удаляем старую MX21

# Создаём новую запись на наш shim
sudo efibootmgr -c -d /dev/nvme0n1 -p 18 -L "MX23" -l "\EFI\MX23\shimx64.efi"

Запомни номер, который выдала команда (например, 002).

5. Полная чистка всех лишних записей (безопасно!)

Terminal:

sudo efibootmgr -b 0001 -B   # Fedora
sudo efibootmgr -b 0003 -B   # altlinux (главный виновник)
sudo efibootmgr -b 0004 -B   # Linux
sudo efibootmgr -b 0005 -B   # antiX
sudo efibootmgr -b 0006 -B   # FreeBSD
sudo efibootmgr -b 0007 -B   # mx
sudo efibootmgr -b 0008 -B   # второй altlinux
sudo efibootmgr -b 0009 -B   # ubuntu
sudo efibootmgr -b 000A -B   # UEFI OS
sudo efibootmgr -b 000B -B
sudo efibootmgr -b 000C -B
sudo efibootmgr -b 000D -B

6. Устанавливаем правильный порядок загрузки

(замени 0014 на тот номер, который получила твоя новая запись)

Terminal:

sudo efibootmgr -o 0002,0000

Проверь:

Terminal:

sudo efibootmgr -v

Должно быть:

Terminal:

BootOrder: 0014,0000
Boot0014* MX23      HD(18,GPT,8D5B-478F,...)/File(\EFI\MX23\shimx64.efi)
Boot0000* Windows Boot Manager

7. Чистим меню GRUB — оставляем только MX23 и Windows

Terminal:

# Отключаем автоматическое сканирование других ОС
sudo chmod -x /etc/grub.d/10_linux
sudo chmod -x /etc/grub.d/20_linux_xen
sudo chmod -x /etc/grub.d/30_os-prober

# Добавляем чистую запись Windows вручную
sudo nano /etc/grub.d/40_custom

Вставь:

Terminal:

menuentry "Windows 11/10" {
    insmod part_gpt
    insmod fat
    search --no-floppy --fs-uuid 1270-9986
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

Сохрани →

Terminal:

sudo update-grub

8. Перезагружаемся

Terminal:

sudo reboot

Вот самые надёжные и быстрые способы проверить, действительно ли ядро загрузилось с параметром audit=1 (а не с audit=0, как любит делать чужой GRUB).

Выполни их после первой перезагрузки уже с новым загрузчиком.

1. Самый простой и точный (работает всегда)

Terminal:

cat /proc/cmdline

Должно быть в выводе:

Terminal:

BOOT_IMAGE=/boot/vmlinuz-... root=UUID=53ddf70b-... quiet splash audit=1

Если видишь audit=1 → всё отлично, ты загрузился своим GRUB.

Если видишь audit=0 или вообще нет слова audit → загрузился чужой GRUB (AltLinux/Ubuntu и т.д.).

2. Проверить, работает ли auditd вообще

Terminal:

sudo systemctl status auditd

Если сервис запущен и пишет active (running) → audit=1 сработал.

Если пишет inactive или failed → ядро загрузилось с audit=0.

3. Посмотреть логи аудита (должны быть записи)

Terminal:

sudo ausearch -m USER_LOGIN -ts today | tail -5
# или просто
sudo tail -10 /var/log/audit/audit.log

Если есть свежие записи за последние минуты → audit работает на 100%.

Если файл пустой или последняя запись — вчерашняя → audit выключен.

4. Ещё один быстрый способ (одна команда)

Terminal:

zgrep "audit=" /proc/1/root/boot/grub/grub.cfg 2>/dev/null | head -3

Покажет, что именно твой GRUB собирался передать ядру. Если там audit=1 → твой GRUB точно грузился.

5. Самый «железобетонный» вариант (если вдруг сомневаешься)

Перезагрузись и в меню GRUB нажми e на пункте MX23 → пролистай вниз до строки, начинающейся с linux, и посмотри глазами:

там должно быть в конце ... quiet splash audit=1

Краткий чек-лист после перезагрузки

Выполни подряд:

Terminal:

cat /proc/cmdline | grep audit
systemctl status auditd --no-pager | grep Active

Если видишь:

Terminal:

audit=1
   Active: active (running)

→ Победа! Ты загрузился своим GRUB, audit включён навсегда, чужие загрузчики больше никогда не полезут.

Если где-то видишь audit=0 → значит всё ещё грузится AltLinux или Ubuntu, и нужно повторить шаги с shim + чисткой efibootmgr.

Что получится

  • Сразу грузится GRUB от MX 23
  • В меню только две строки: MX 23 и Windows 11/10
  • В параметрах ядра навсегда audit=1
  • Никакие AltLinux, Ubuntu, Alpine и т.д. больше никогда не полезут
  • Даже если поставишь 10 новых дистрибутивов — MX 23 останется по умолчанию

Готово. Теперь система «неубиваемая» навсегда.

Как найти и исправить загружаемый GRUB, если изменения игнорируются

Многие сталкиваются с ситуацией, когда после редактирования /etc/default/grub и запуска update-grub новые параметры ядра не применяются, меню GRUB не отображается или даже загружается другой дистрибутив. Причина чаще всего — загружается не тот загрузчик, который вы редактировали.

Разберем это на примере системы с несколькими Linux-дистрибутивами (MX Linux, ALT Linux, AntiX) и Windows на UEFI.


Шаг 1: Определяем, какой загрузчик загружается

  1. Смотрим записи UEFI:

Terminal:

sudo efibootmgr -v

Вывод может быть таким:

Terminal:

BootCurrent: 0001
BootOrder: 0002,0001,0003,...
Boot0001* altlinux HD(7,GPT,df23b399-3e92-427b-8deb-690283910785,0x2bb43000,0x36000)/File(\EFI\ALTLINUX\SHIMX64.EFI)
Boot0002* MX23     HD(18,GPT,d6e77462-b078-432a-b354-1f72dbde76a7,0x5ec2f000,0x80000)/File(\EFI\MX23\shimx64.efi)
...

* BootCurrent — запись, которая загружается сейчас.

* BootOrder — порядок загрузки по умолчанию.

> В нашем случае по умолчанию грузится altlinux, а не MX23.


Шаг 2: Определяем EFI-раздел MX Linux

Смотрим список разделов:

Terminal:

sudo blkid | grep EFI
lsblk -f

Пример для нашей системы:

Terminal:

/dev/nvme0n1p18 vfat MX_EFI UUID="8D5B-478F" ...
/dev/nvme0n1p19 ext4 boot ...
/dev/nvme0n1p20 ext4 rootMX23 ...

* EFI MX Linux: /dev/nvme0n1p18

* /boot MX Linux: /dev/nvme0n1p19

* корень MX Linux: /dev/nvme0n1p20

> Важно: даже если вы редактируете /boot/grub/grub.cfg в MX Linux, UEFI может грузить другой загрузчик (например, altlinux), поэтому изменения не будут видны.


Шаг 3: Проверка конфигурации GRUB в EFI

Монтируем EFI-раздел:

Terminal:

sudo mount /dev/nvme0n1p18 /mnt
ls /mnt/EFI/MX23/

Пример содержимого:

Terminal:

BOOTX64.CSV  BOOTX64.EFI  fbx64.efi  grub.cfg  grubx64.efi  mmx64.efi  shimx64.efi

Смотрим grub.cfg:

Terminal:

cat /mnt/EFI/MX23/grub.cfg

Вывод может быть короткий:

Terminal:

search.fs_uuid f51c7520-8caf-4c58-aa37-e7a836ed3c0f root
set prefix=($root)'/grub'
configfile $prefix/grub.cfg

* Этот файл не содержит полного меню GRUB, а просто ссылается на /boot/grub/grub.cfg в корневом разделе.


Шаг 4: Монтируем корень и /boot + chroot

Чтобы пересобрать конфиг GRUB правильно:

Terminal:

sudo mount /dev/nvme0n1p20 /mnt/mx_root
sudo mount /dev/nvme0n1p19 /mnt/mx_root/boot

# монтируем виртуальные FS
sudo mount --bind /dev /mnt/mx_root/dev
sudo mount --bind /dev/pts /mnt/mx_root/dev/pts
sudo mount --bind /proc /mnt/mx_root/proc
sudo mount --bind /sys /mnt/mx_root/sys
sudo mount --bind /run /mnt/mx_root/run

# chroot в систему
sudo chroot /mnt/mx_root

> Важно: без этих bind-монтирований update-grub выдаст ошибку cannot find a device for /.


Шаг 5: Пересобираем GRUB внутри chroot

Внутри chroot:

Terminal:

update-grub

* Создается полноценный /boot/grub/grub.cfg с пунктами меню и ядрами.

* После выхода из chroot не забудьте размонтировать:

Terminal:

exit
sudo umount /mnt/mx_root/dev/pts
sudo umount /mnt/mx_root/dev
sudo umount /mnt/mx_root/proc
sudo umount /mnt/mx_root/sys
sudo umount /mnt/mx_root/run
sudo umount /mnt/mx_root/boot
sudo umount /mnt/mx_root

Шаг 6: Устанавливаем EFI-загрузчик

Снова монтируем EFI:

Terminal:

sudo mount /dev/nvme0n1p18 /mnt

Устанавливаем GRUB в EFI:

Terminal:

sudo grub-install --target=x86_64-efi --efi-directory=/mnt --bootloader-id=MX23 --recheck

Проверяем /mnt/EFI/MX23/ — должны быть файлы:

Terminal:

shimx64.efi  grubx64.efi  grub.cfg ...

Шаг 7: Устанавливаем MX23 как первичный загрузчик в UEFI

Terminal:

sudo efibootmgr -o 0002,0001,0003,...

* 0002 — номер вашей записи MX23 (из efibootmgr -v).

* После этого UEFI будет загружать MX23 по умолчанию, а не altlinux.


Шаг 8: Проверка

* Перезагружаемся.

* Проверяем параметры ядра:

Terminal:

cat /proc/cmdline

* Меню GRUB теперь должно отображать MX Linux с вашими параметрами ядра.


Итог

  1. Даже если вы редактируете /boot/grub/grub.cfg, UEFI может загружать другой EFI-загрузчик, например altlinux.
  2. Нужно правильно определить EFI-раздел вашего дистрибутива, смонтировать его, а также корень и /boot для chroot.
  3. Пересобрать конфиг GRUB через update-grub внутри chroot, чтобы grub-probe видел все разделы.
  4. Установить загрузчик через grub-install на нужный EFI-раздел.
  5. Установить порядок загрузки UEFI (efibootmgr).

После этих шагов изменения в GRUB будут реально применяться.


Решение проблемы audit=0 встроенного в ядро Linux (MX Linux / Debian)

Описание проблемы

При попытке включить подсистему аудита Linux через параметр загрузки audit=1 в GRUB, система всё равно загружается с audit=0. Команда auditctl -s выдаёт ошибку:

Terminal:

Error - audit support not in kernel
Cannot open netlink audit socket

Проблема возникает из-за того, что параметр audit=0 встроен непосредственно в образ ядра на этапе компиляции и имеет приоритет над параметрами из GRUB.


Диагностика проблемы

Шаг 1: Проверьте текущие параметры загрузки

Terminal:

cat /proc/cmdline

Признак проблемы: вы увидите audit=0 в самом начале строки, а затем ваш audit=1 из GRUB:

Terminal:

audit=0 intel_pstate=disable BOOT_IMAGE=/vmlinuz-... audit=1 ...

Шаг 2: Проверьте конфигурацию GRUB

Terminal:

sudo cat /etc/default/grub | grep -i audit

Если вы видите:

Terminal:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash audit=1 ..."
GRUB_CMDLINE_LINUX="audit=1"

Значит параметр в GRUB установлен правильно, но откуда-то берётся audit=0.

Шаг 3: Проверьте конфигурацию ядра (главная проверка!)

Terminal:

cat /boot/config-$(uname -r) | grep CONFIG_CMDLINE

Если увидите:

Terminal:

CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="audit=0 intel_pstate=disable"
# CONFIG_CMDLINE_OVERRIDE is not set

Это источник проблемы! Параметры жёстко вшиты в ядро при компиляции.

Объяснение параметров:

  • CONFIG_CMDLINE_BOOL=y — встроенные параметры включены
  • CONFIG_CMDLINE="audit=0 ..." — конкретные параметры, вшитые в ядро
  • # CONFIG_CMDLINE_OVERRIDE is not set — параметры из GRUB добавляются к встроенным, но не заменяют их

Решение проблемы

Решение 1: Установка стандартного ядра Debian (рекомендуется)

Стандартное ядро Debian не имеет встроенных параметров командной строки.

1. Установите стандартное ядро:

Terminal:

sudo apt update
sudo apt install linux-image-amd64

2. Проверьте, что ядро установлено:

Terminal:

ls /boot/vmlinuz-* | grep -v liquorix

Вы должны увидеть что-то вроде vmlinuz-6.1.0-41-amd64.

3. Убедитесь, что в нём нет встроенных параметров:

Terminal:

cat /boot/config-6.1.0-*-amd64 | grep CONFIG_CMDLINE

Должно быть:

Terminal:

# CONFIG_CMDLINE_BOOL is not set

Это означает, что встроенных параметров нет.

4. Обновите конфигурацию GRUB:

Terminal:

sudo update-grub

5. Найдите правильный ID пункта меню:

Terminal:

sudo grep "menuentry.*6.1.0" /boot/grub/grub.cfg | grep -v submenu | head -2

Вы увидите что-то вроде:

Terminal:

menuentry 'MX 23.4 Libretto, with Linux 6.1.0-41-amd64' ... $menuentry_id_option 'gnulinux-6.1.0-41-amd64-advanced-53ddf70b-317b-4fd3-965c-5a35ca5bd719'
menuentry 'MX 23.4 Libretto, with Linux 6.1.0-41-amd64 (systemd)' ... $menuentry_id_option 'gnulinux-6.1.0-41-amd64-init-systemd-53ddf70b-317b-4fd3-965c-5a35ca5bd719'

6. Настройте загрузку по умолчанию:

Отредактируйте /etc/default/grub:

Terminal:

sudo vim /etc/default/grub

Найдите строку GRUB_DEFAULT= и замените её на (используя ID из предыдущего шага):

Для sysvinit (по умолчанию в MX Linux):

Terminal:

GRUB_DEFAULT="gnulinux-advanced-53ddf70b-317b-4fd3-965c-5a35ca5bd719>gnulinux-6.1.0-41-amd64-advanced-53ddf70b-317b-4fd3-965c-5a35ca5bd719"

Или для systemd:

Terminal:

GRUB_DEFAULT="gnulinux-advanced-53ddf70b-317b-4fd3-965c-5a35ca5bd719>gnulinux-6.1.0-41-amd64-init-systemd-53ddf70b-317b-4fd3-965c-5a35ca5bd719"

Формат: "ID_подменю>ID_пункта_меню"

Замените UUID в примере на ваш собственный из вывода команды выше!

7. Примените изменения:

Terminal:

sudo update-grub
sudo reboot

8. Проверьте результат после загрузки:

Terminal:

# Проверьте версию ядра
uname -r
# Должно быть: 6.1.0-41-amd64 (или новее)

# Проверьте параметры загрузки
cat /proc/cmdline
# НЕ должно быть audit=0 в начале

# Проверьте статус подсистемы аудита
sudo auditctl -s
# Должно работать без ошибок

Решение 2: Ручной выбор ядра при загрузке (временное решение)

Если не хотите менять ядро по умолчанию:

  1. Перезагрузите систему
  2. В меню GRUB нажмите любую клавишу (не пропустите автозагрузку)
  3. Выберите "Advanced options for MX 23.4 Libretto"
  4. Выберите "MX 23.4 Libretto, with Linux 6.1.0-XX-amd64"
  5. Система загрузится с нужным ядром

После загрузки проверьте, что audit работает.


Решение 3: Попытка обновить проблемное ядро (обычно не помогает)

Если вы используете Liquorix и хотите остаться на нём:

Terminal:

sudo apt update
sudo apt install linux-image-liquorix-amd64

Затем проверьте конфигурацию нового ядра:

Terminal:

cat /boot/config-$(uname -r) | grep CONFIG_CMDLINE

Важно: По опыту, в ядрах Liquorix проблема сохраняется даже в новых версиях. Это сделано намеренно разработчиками для оптимизации производительности.


Важные замечания

О функциональности MX Linux

Вопрос: Потеряю ли я возможность выбора между sysvinit и systemd при установке стандартного ядра?

Ответ: НЕТ! Выбор init-системы контролируется параметром init= в GRUB, который добавляет MX Linux в отдельные пункты меню. Стандартное ядро Debian полностью поддерживает обе init-системы.

В GRUB вы по-прежнему увидите:

  • MX 23.4 Libretto, with Linux 6.1.0-XX-amd64 (sysvinit)
  • MX 23.4 Libretto, with Linux 6.1.0-XX-amd64 (systemd) (systemd)

Почему это происходит?

Ядра Liquorix компилируются со встроенными параметрами для оптимизации:

  • audit=0 — отключает подсистему аудита для минимального снижения производительности
  • intel_pstate=disable / amd_pstate=disable — отключает управление частотой через pstate

Эти параметры вшиты на этапе компиляции и не могут быть изменены без пересборки ядра.

Альтернативные методы (не рекомендуются)

Пересборка ядра: Технически можно пересобрать Liquorix без CONFIG_CMDLINE, но это сложно и нецелесообразно. Проще использовать стандартное ядро Debian.


Проверочный чеклист

После применения решения проверьте:

  • [ ] uname -r — показывает нужное ядро (6.1.0-XX-amd64)
  • [ ] cat /proc/cmdlineНЕТ audit=0 в начале строки
  • [ ] sudo auditctl -s — работает без ошибок
  • [ ] sudo auditctl -l — можно просмотреть правила
  • [ ] Система загружается с нужным ядром автоматически

Дополнительная диагностика

Если audit всё ещё не работает:

  1. Проверьте, что ядро скомпилировано с поддержкой audit:

Terminal:

cat /boot/config-$(uname -r) | grep CONFIG_AUDIT

Должно быть:

Terminal:

CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_WATCH=y
CONFIG_AUDIT_TREE=y
  1. Проверьте, что демон auditd установлен:

Terminal:

sudo apt install auditd
sudo systemctl status auditd
  1. Проверьте загрузку модуля ядра (если audit как модуль):

Terminal:

lsmod | grep audit

Заключение

Проблема audit=0 в начале /proc/cmdline возникает из-за параметров, встроенных в ядро на этапе компиляции. Самое простое и надёжное решение — использовать стандартное ядро Debian, которое не имеет таких ограничений и полностью совместимо с функционалом MX Linux.

После перехода на стандартное ядро подсистема аудита будет работать корректно с параметром audit=1 из GRUB.

Копирование материалов разрешается только с указанием автора Roman Sakhno и индексируемой прямой ссылкой на сайт (http://itdid.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/sahroman.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/sahroman.

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как настроить свой компьютер

  2. Текстовая ссылка:

    Она выглядит вот так: Как настроить свой компьютер

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

крипто-донат, на развитие сайта itdid.ru:

В новом окне с терминалом itdid.ru, введите любую сумму: