Подробный гайд: Как пересобрать initramfs и перезагрузить систему Astra Linux - Часть 1
Важный момент: в уже загруженной системе “перезапустить” initramfs как службу нельзя. initramfs отрабатывает на раннем этапе загрузки ядра.
Поэтому под “перезапуском” обычно понимают одно из двух:
- Пересобрать initramfs после изменений и перезагрузить систему.
- Если система уже упала в
(initramfs)— исправить проблему и выйти/перезагрузиться.
Ниже подробный гайд для Astra Linux.
Короткий вариант, если всё штатно
Если вам нужно просто пересобрать initramfs для текущего ядра:
sudo update-initramfs -u -v -k "$(uname -r)"
sudo systemctl reboot
Если нужно пересобрать для всех установленных ядер:
sudo update-initramfs -u -v -k all
sudo systemctl reboot
Подробный гайд
1. Понять, какой инструмент используется
Astra Linux основана на Debian, поэтому обычно используется initramfs-tools и команда update-initramfs. Но в некоторых конфигурациях может быть установлен dracut.
Проверьте:
command -v update-initramfs
command -v dracut
dpkg -l | grep -E 'initramfs-tools|dracut'
Если есть update-initramfs, скорее всего используется стандартный Debian-механизм.
Также полезно посмотреть текущее ядро и файлы в /boot:
uname -r
ls -lh /boot | grep -E 'vmlinuz|initrd|initramfs'
Примерно вы увидите:
vmlinuz-6.1.0-...
initrd.img-6.1.0-...
2. Сделать резервную копию
Перед любыми действиями с загрузкой лучше сохранить текущие файлы.
Если /boot небольшой, копируйте не в /boot, а, например, в /root/backup.
sudo mkdir -p /root/backup/boot-$(date +%F)
sudo cp -a /boot/vmlinuz-* /root/backup/boot-$(date +%F)/ 2>/dev/null || true
sudo cp -a /boot/initrd.img-* /root/backup/boot-$(date +%F)/ 2>/dev/null || true
Также можно сохранить конфигурацию:
sudo cp -a /etc/initramfs-tools /root/backup/initramfs-tools-$(date +%F)
Проверьте свободное место в /boot:
df -h /boot
Если /boot переполнен, пересборка может завершиться ошибкой.
3. Проверить состояние пакетов
Желательно убедиться, что пакетная система не находится в сломанном состоянии:
sudo dpkg --configure -a
sudo apt update
sudo apt --fix-broken install
Если initramfs-tools отсутствует или повреждён:
sudo apt install --reinstall initramfs-tools
4. Пересобрать initramfs для текущего ядра
Узнайте версию текущего ядра:
uname -r
Затем выполните:
sudo update-initramfs -u -v -k "$(uname -r)"
Где:
-u— обновить существующий образ;-v— подробный вывод;-k "$(uname -r)"— версия текущего ядра.
Пример:
sudo update-initramfs -u -v -k 6.1.0-13-amd64
Если всё прошло успешно, вы увидите сообщения о создании/обновлении образа, например:
update-initramfs: Generating /boot/initrd.img-6.1.0-13-amd64
5. Пересобрать initramfs для всех установленных ядер
Если вы меняли настройки глобально, например модули, шифрование, LVM, RAID, resume-раздел, лучше обновить все образы:
sudo update-initramfs -u -v -k all
Это особенно полезно, если в системе установлено несколько ядер и вы хотите, чтобы изменения применились ко всем.
6. Если образа нет: создать новый
Если файл initrd.img-... отсутствует, можно создать его заново:
sudo update-initramfs -c -k "$(uname -r)"
Где:
-c— создать новый образ.
Для всех ядер:
sudo update-initramfs -c -k all
Но обычно безопаснее и правильнее использовать -u, если образ уже существует.
7. Альтернативная ручная генерация через mkinitramfs
Обычно лучше использовать update-initramfs, потому что он корректно обрабатывает имена файлов и симлинки.
Но если нужно вручную создать образ для проверки:
sudo mkinitramfs -v -o /tmp/initrd.img-test "$(uname -r)"
Проверить содержимое:
sudo lsinitramfs /tmp/initrd.img-test | less
Например, проверить наличие модулей:
sudo lsinitramfs /tmp/initrd.img-test | grep -E 'nvme|ext4|xfs|dm_mod|crypt'
Если нужно распаковать для глубокой диагностики:
mkdir -p /tmp/initrd-check
sudo unmkinitramfs /tmp/initrd.img-test /tmp/initrd-check
Не заменяйте рабочий образ вручную без резервной копии.
Для штатной пересборки лучше использовать:
sudo update-initramfs -u -v -k "$(uname -r)"
Когда нужно пересобирать initramfs
Обычно пересборка требуется после изменений, влияющих на раннюю загрузку.
Например:
- Изменили
/etc/fstab. - Изменили
/etc/crypttab. - Перешли на другой контроллер диска.
- Добавили модули ядра, которые нужны до монтирования корня.
- Изменили настройки шифрования дисков.
- Настроили LVM, mdraid, ZFS, btrfs и т. п.
- Изменили параметры
resumeдля гибернации. - Правив конфиги
initramfs-tools. - Переносили систему на другой диск или другой контроллер.
- Меняли параметры модулей через
/etc/initramfs-tools/modules.
Настройка initramfs перед пересборкой
Файл модулей
Если нужно, чтобы определённые модули ядра гарантированно попадали в initramfs, их добавляют в:
/etc/initramfs-tools/modules
Открыть файл:
sudo nano /etc/initramfs-tools/modules
Добавить модули по одному на строку, например:
nvme
nvme-core
sd_mod
ext4
xfs
dm_crypt
dm_mod
После этого пересобрать:
sudo update-initramfs -u -v -k all
Основной конфиг
Основной файл конфигурации:
/etc/initramfs-tools/initramfs.conf
Открыть:
sudo nano /etc/initramfs-tools/initramfs.conf
Там могут быть параметры вроде:
MODULES=most
BUSYBOX=auto
COMPRESSION=zstd
RESUME=UUID=...
Например:
MODULES=most— включать распространённый набор модулей.MODULES=dep— включать зависимости для корневой файловой системы.RESUME=...— раздел/устройство для гибернации.
После изменений:
sudo update-initramfs -u -v -k all
Если используется LVM, RAID или LUKS
Если корневая файловая система находится на LVM, RAID или LUKS, убедитесь, что нужные пакеты установлены.
Для LVM:
sudo apt install lvm2
Для mdraid:
sudo apt install mdadm
Для поддержки LUKS в initramfs обычно нужен пакет вроде:
sudo apt install cryptsetup-initramfs
Названия пакетов могут немного отличаться в зависимости от версии и репозитория Astra, но логика такая: нужны пакеты, которые добавляют соответствующие хуки в initramfs.
После установки или изменения /etc/crypttab:
sudo update-initramfs -u -v -k all
sudo update-grub
Нужно ли обновлять GRUB?
После обычной пересборки initrd.img с тем же именем update-grub чаще всего не обязателен.
Но выполните его, если:
- меняли параметры ядра в
/etc/default/grub; - меняли UUID дисков;
- добавляли/удаляли ядра;
- меняли параметры загрузки;
- система не видит новый образ;
- меняли
crypttab, влияющий на загрузку; - вручную создавали/меняли загрузочные файлы.
Команда:
sudo update-grub
Если update-grub отсутствует:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Перезагрузка после пересборки
После обновления образа нужно перезагрузить систему:
sudo systemctl reboot
или:
sudo reboot
или:
sudo shutdown -r now
После загрузки проверьте:
uname -r
ls -lh /boot/initrd.img-$(uname -r)
И при необходимости содержимое:
sudo lsinitramfs /boot/initrd.img-$(uname -r) | less
Например:
sudo lsinitramfs /boot/initrd.img-$(uname -r) | grep -E 'nvme|ext4|xfs|crypt|lvm|md_mod'
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.