Подробный гайд: Как пересобрать initramfs и перезагрузить систему Astra Linux - Часть 2
Если используется не initramfs-tools, а dracut
Если в системе используется dracut, то пересборка выполняется иначе.
Проверка:
command -v dracut
Обычно образ пересоздаётся так:
sudo dracut --force --verbose /boot/initrd.img-"$(uname -r)" "$(uname -r)"
Если у вас файлы называются иначе, сначала посмотрите, какие образы есть в /boot:
ls -lh /boot | grep -E 'initrd|initramfs'
Например, если образ называется initramfs-6.1.0-13-amd64.img, команда будет аналогичной, но с этим именем:
sudo dracut --force --verbose /boot/initramfs-6.1.0-13-amd64.img 6.1.0-13-amd64
Для всех установленных ядер можно выполнить цикл:
for kver in /lib/modules/*; do
kver="${kver#/lib/modules/}"
sudo dracut --force --verbose "/boot/initrd.img-${kver}" "${kver}"
done
Но перед этим обязательно убедитесь, что именно такой формат имён используется в вашей системе.
Если система не загружается и попадает в (initramfs)
Если после загрузки вы видите приглашение вида:
(initramfs)
это не нормальная работа системы, а аварийная оболочка.
Там можно попробовать:
exit
Иногда это продолжает загрузку, если проблема была временной.
Если нужно перезагрузиться из этой среды:
reboot -f
или:
poweroff -f
Но полноценно пересобрать initramfs из аварийного initramfs обычно нельзя, потому что там минимальное окружение без полноценного apt и дисковой системы.
Дальше есть несколько путей:
- Загрузиться с предыдущим ядром через GRUB.
- Загрузиться в recovery mode.
- Исправить проблему вручную, если понимаете причину.
- Загрузиться с установочного/спасательного носителя и выполнить
chroot.
Вариант 1: загрузиться с другим ядром
При включении откройте меню GRUB. Обычно нужно удерживать Shift или Esc, в зависимости от конфигурации.
Выберите:
Advanced options for Astra Linux
и загрузите предыдущее ядро.
Если старое ядро загрузилось, пересоберите образ для проблемного ядра:
sudo update-initramfs -u -v -k all
sudo update-grub
Вариант 2: восстановление через chroot с Live-носителя
Если система не загружается совсем, загрузитесь с установочного или спасательного носителя, затем выполните chroot в установленную систему.
Шаг 1. Найти корневой раздел
lsblk -f
blkid
Например, корень может быть:
/dev/sda2
/dev/nvme0n1p2
/dev/mapper/vg-root
/dev/mapper/cryptroot
Шаг 2. Смонтировать корень
Для обычного раздела:
sudo mount /dev/sda2 /mnt
Для LVM:
sudo vgchange -ay
sudo mount /dev/mapper/vg-root /mnt
Для LUKS:
sudo cryptsetup luksOpen /dev/sda2 cryptroot
sudo mount /dev/mapper/cryptroot /mnt
Если внутри LUKS находится LVM:
sudo cryptsetup luksOpen /dev/sda2 cryptroot
sudo vgchange -ay
sudo mount /dev/mapper/vg-root /mnt
Шаг 3. Смонтировать /boot, если он отдельный
Если /boot отдельный:
sudo mount /dev/sda1 /mnt/boot
Шаг 4. Смонтировать EFI-раздел, если используется UEFI
Обычно EFI-раздел монтируется в /boot/efi:
sudo mount /dev/sda1 /mnt/boot/efi
Но номер раздела и путь зависят от вашей системы.
Шаг 5. Привязать системные каталоги
for i in dev dev/pts proc sys run; do
sudo mount --bind /$i /mnt/$i
done
Если используется UEFI и в дальнейшем потребуется работа с EFI-переменными, можно дополнительно привязать:
sudo mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars 2>/dev/null || true
Шаг 6. Войти в chroot
sudo chroot /mnt /bin/bash
Внутри chroot выполнить:
export TERM=xterm
dpkg --configure -a
update-initramfs -u -v -k all
update-grub
Если нужно переустановить пакеты:
apt update
apt install --reinstall initramfs-tools
Выход:
exit
Размонтирование:
sudo umount -R /mnt
Если монтировали отдельно /boot и /boot/efi, убедитесь, что всё размонтировано:
findmnt | grep /mnt
Частые ошибки и их решение
1. update-initramfs: command not found
Скорее всего, не установлен initramfs-tools, либо используется dracut.
Проверить:
command -v update-initramfs
command -v dracut
Если используется initramfs-tools, установить:
sudo apt install initramfs-tools
Если используется dracut, применяйте команды dracut.
2. E: /boot is full или No space left on device
Проверьте:
df -h /boot
Удалите старые резервные файлы из /boot, если вы их туда складывали. Если нужно удалить старые ядра, делайте это осторожно.
Сначала посмотрите установленные ядра:
dpkg -l | grep linux-image
Текущее ядро:
uname -r
Нельзя удалять пакет текущего загруженного ядра.
Для очистки старых пакетов можно использовать:
sudo apt autoremove --purge
Но в корпоративных системах с фиксированным набором ПО лучше сначала убедиться, что это допустимо политикой администрирования.
3. update-initramfs выдаёт предупреждения о недостающем firmware
Пример:
W: Possible missing firmware /lib/firmware/...
Часто это предупреждения, не мешающие загрузке. Если устройство действительно не определяется, может потребоваться установка соответствующих пакетов прошивок, если они доступны в вашей версии Astra.
4. Система не видит новый образ
Проверьте:
ls -lh /boot
readlink -f /boot/initrd.img
Обновите GRUB:
sudo update-grub
или:
sudo grub-mkconfig -o /boot/grub/grub.cfg
5. initramfs пересобирается, но система всё равно падает
Причины могут быть не в самом образе, а в:
- неправильном
/etc/fstab; - неправильном
/etc/crypttab; - неверном
root=в GRUB; - отсутствии модуля контроллера;
- ошибке файловой системы;
- проблеме с UUID;
- повреждении файловой системы;
- ошибке LVM/RAID/LUKS.
Проверьте:
cat /etc/fstab
cat /etc/crypttab
cat /etc/default/grub
blkid
lsblk -f
Важные замечания для защищённой среды Astra
В защищённых редакциях и конфигурациях могут действовать ограничения:
- мандатный контроль доступа;
- замкнутая программная среда;
- запрет на установку пакетов;
- контроль целостности;
- ограничения на изменение загрузчика;
- требования к подписанным компонентам.
Если это рабочая система в защищённом контуре:
- Не отключайте механизмы безопасности без решения администратора безопасности.
- Согласуйте изменения, если система аттестована.
- Перед изменениями делайте резервную копию.
- Используйте только доверенные репозитории и пакеты.
- Учитывайте, что изменения загрузочных компонентов могут требовать повторного контроля целостности.
Проверка результата после перезагрузки
После перезагрузки выполните:
uname -r
lsinitramfs /boot/initrd.img-$(uname -r) | less
Если нужно проверить конкретный модуль:
sudo lsinitramfs /boot/initrd.img-$(uname -r) | grep nvme
sudo lsinitramfs /boot/initrd.img-$(uname -r) | grep ext4
sudo lsinitramfs /boot/initrd.img-$(uname -r) | grep crypt
Посмотреть параметры загрузки ядра:
cat /proc/cmdline
Минимальная шпаргалка
Обновить текущее ядро:
sudo update-initramfs -u -v -k "$(uname -r)"
Обновить все ядра:
sudo update-initramfs -u -v -k all
Создать образ, если его нет:
sudo update-initramfs -c -k "$(uname -r)"
Обновить GRUB:
sudo update-grub
Перезагрузка:
sudo systemctl reboot
Проверка содержимого:
sudo lsinitramfs /boot/initrd.img-$(uname -r) | less
В Astra Linux под “перезапуском” initramfs обычно следует понимать:
sudo update-initramfs -u -v -k all
sudo systemctl reboot
Если используется dracut, тогда:
sudo dracut --force --verbose /boot/initrd.img-"$(uname -r)" "$(uname -r)"
sudo systemctl reboot
Если система не загружается, нужно загрузиться с предыдущим ядром или через спасательный носитель и пересобрать initramfs в chroot.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.