Хотя он может называться initrd
, на самом деле это initramfs
. Это означает, что это может быть объединение нескольких cpio
архивов, каждый из которых может быть сжат или не сжат. Возможно, вам удалось извлечь только первую часть.
В частности, первая часть cpio обычно представляет собой «раннее обновление микрокода», которое для процессоров Intel имеет имя пути kernel/x86/microcode/GenuineIntel.bin
. Если вы просто запустите cpio -iv /boot/initrd.img-<kernel version>
, это все, что вы получите. (Микрокод обычно не сжимается, потому что он зашифрован и поэтому не будет сильно сжиматься.)
Чтобы полностью извлечь современные файлы initramfs в системе Debian/Ubuntu, следует использовать команду unmkinitramfs
.
Если эта команда по какой-либо причине недоступна, вы можете сделать это вручную следующим образом:
mkdir /some/temporary/directory
cd /some/temporary/directory
cat /boot/initrd.img-$(uname -r) | (cpio -iv; zcat | cpio -iv; file -)
предполагая, что initramfs состоит только из двух частей.
Идея состоит в том, что команда cat
будет выводить содержимое от начала до конца для команд в круглых скобках. Внутри них,первый cpio
возьмет начало файла и извлечет раннее обновление микрокода. Как только он завершится, следующая команда продолжится с того места, где остановилась первая команда. Когда заканчивается второй сжатый архив cpio, команда file -
проверяет, есть ли еще что-то еще.
Если последняя строка вывода извлечения , а не
/dev/stdin: empty
...тогда вы узнаете, что в файле initramfs есть еще одна часть, а вывод команды file
сообщает вам, сжат он или нет. Затем добавьте еще один элемент cpio -iv;
или zcat | cpio -iv;
в круглых скобках непосредственно перед командой file
.
Например, для извлечения трех -частей initramfs с двумя сжатыми частями после раннего обновления микрокода:
cat /boot/initrd.img-$(uname -r) | (cpio -iv; zcat | cpio -iv; zcat | cpio -iv; file -)
В этом случае процесс создания initrd мог завершиться ошибкой. Вы можете использовать
sudo update-initramfs -u
, чтобы система перегенерировала его на основе вашего текущего ядра и модулей. Это также хорошая команда для запуска после любых изменений конфигурации, которые могут повлиять на то, что должно произойти в начале запуска системы -, до того, как будет смонтирована реальная корневая файловая система.
Я рекомендую вам использовать Ansible . Вот руководство по его настройке на Debianhttps://tecadmin.net/install-ansible-on-debian-9-stretch/. и вы можете следовать этому или для управления программным пакетом других хостов.