Как проводить инвентаризацию приложений на рабочем столе Linux?

Хотя он может называться initrd, на самом деле это initramfs. Это означает, что это может быть объединение нескольких cpioархивов, каждый из которых может быть сжат или не сжат. Возможно, вам удалось извлечь только первую часть.

Правильная процедура извлечения файла initramfs

В частности, первая часть 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 действительно имеет размер всего 56 блоков

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

sudo update-initramfs -u

, чтобы система перегенерировала его на основе вашего текущего ядра и модулей. Это также хорошая команда для запуска после любых изменений конфигурации, которые могут повлиять на то, что должно произойти в начале запуска системы -, до того, как будет смонтирована реальная корневая файловая система.

0
16.06.2019, 01:48
1 ответ

Я рекомендую вам использовать Ansible . Вот руководство по его настройке на Debianhttps://tecadmin.net/install-ansible-on-debian-9-stretch/. и вы можете следовать этому или для управления программным пакетом других хостов.

0
28.04.2021, 23:32

Теги

Похожие вопросы