извлечение Встроенный initramfs

Возможно, можно настроить timeo и retrans опции NFS монтируются для достижения желаемого поведения. См. страницу справочника nfs для получения дополнительной информации.

9
25.09.2014, 01:46
3 ответа

Есть некоторая информация об этом в gentoo wiki: https://wiki.gentoo.org/wiki/Custom_Initramfs#Salvaging

Там рекомендуется использовать binwalk, который работает очень хорошо.

Приведу пример:

сначала извлеките файл bzImage с помощью binwalk:

> binwalk --extract bzImage
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Microsoft executable, portable (PE)
18356         0x47B4          xz compressed data
9772088       0x951C38        xz compressed data

В итоге у меня получилось три файла: 47B4, 47B4.xz и 951C38.xz

> file 47B4
47B4: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=aa47c6853b19e9242401db60d6ce12fe84814020, stripped

Теперь давайте снова запустим binwalk на 47B4:

> binwalk --extract 47B4
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             ELF, 64-bit LSB executable, AMD x86-64, version 1 (SYSV)
9818304       0x95D0C0        Linux kernel version "4.4.6-gentoo (root@host) (gcc version 4.9.3 (Gentoo Hardened 4.9.3 p1.5, pie-0.6.4) ) #1 SMP Tue Apr 12 14:55:10 CEST 2016"
9977288       0x983DC8        gzip compressed data, maximum compression, from Unix, NULL date (1970-01-01 00:00:00)
<snip>

В результате мы получили длинный список найденных путей и несколько потенциально интересных файлов. Давайте посмотрим.

> file _47B4.extracted/*
<snip>
_47B4.extracted/E9B348:     ASCII cpio archive (SVR4 with no CRC)

файл E9B348 - это (уже распакованный) архив cpio, как раз то, что мы ищем! Есть!

Чтобы распаковать несжатый архив cpio (ваш initramfs!) в текущий каталог, просто выполните

> cpio -i < E9B348

Это было почти слишком просто. binwalk - это именно тот инструмент, который вы ищете. Для справки, здесь я использовал версию 2.1.1.

17
20.08.2021, 12:45

Насколько я знаю, архив CPIO initramfs просто связан на ядре.

Следовательно, это должно работать:

  1. Использование DD для извлечения диапазона между C17FD8CC и C19D7B90
  2. распаковывают полученные данные NY, используя распакование CPIO.
2
27.01.2020, 20:05

Использование «dd для извлечения диапазона между c17fd8cc и c19d7b90» не сработает, потому что это виртуальные адреса ядра, а ваш образ находится в физическом пространстве. Вам нужно будет перевести их в смещения изображения, чтобы это работало. Как правило, в этом случае вычтите виртуальное смещение (, оно выглядит как 0xC0000000 )и, возможно, добавьте PHYS _OFFSET (, обычно 0x8000 ), но это зависит от вашего ядра.

0
20.08.2021, 12:45

Теги

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