Когда настройки 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
Цель
- Заставить UEFI грузить именно наш MX 23 с
/boot/efi/EFI/MX/grubx64.efi - Добавить
audit=1навсегда - Оставить в меню GRUB только две строки: MX 23 и Windows
- Убрать все остальные 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: Определяем, какой загрузчик загружается
- Смотрим записи 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 с вашими параметрами ядра.
Итог
- Даже если вы редактируете
/boot/grub/grub.cfg, UEFI может загружать другой EFI-загрузчик, например altlinux. - Нужно правильно определить EFI-раздел вашего дистрибутива, смонтировать его, а также корень и /boot для chroot.
- Пересобрать конфиг GRUB через
update-grubвнутри chroot, чтобыgrub-probeвидел все разделы. - Установить загрузчик через
grub-installна нужный EFI-раздел. - Установить порядок загрузки 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: Ручной выбор ядра при загрузке (временное решение)
Если не хотите менять ядро по умолчанию:
- Перезагрузите систему
- В меню GRUB нажмите любую клавишу (не пропустите автозагрузку)
- Выберите "Advanced options for MX 23.4 Libretto"
- Выберите "MX 23.4 Libretto, with Linux 6.1.0-XX-amd64"
- Система загрузится с нужным ядром
После загрузки проверьте, что 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 всё ещё не работает:
- Проверьте, что ядро скомпилировано с поддержкой 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
- Проверьте, что демон auditd установлен:
☯
Terminal:
⌕
≡
✕
sudo apt install auditd sudo systemctl status auditd
- Проверьте загрузку модуля ядра (если audit как модуль):
☯
Terminal:
⌕
≡
✕
lsmod | grep audit
Заключение
Проблема audit=0 в начале /proc/cmdline возникает из-за параметров, встроенных в ядро на этапе компиляции. Самое простое и надёжное решение — использовать стандартное ядро Debian, которое не имеет таких ограничений и полностью совместимо с функционалом MX Linux.
После перехода на стандартное ядро подсистема аудита будет работать корректно с параметром audit=1 из GRUB.
-
Создано 15.11.2025 09:58:40
-
Roman Sakhno

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