Ada beberapa informasi tentang ini di wiki gentoo: https://wiki.gentoo.org/wiki/Custom_Initramfs#Salvaging
Ini merekomendasikan penggunaan binwalk
yang bekerja sangat baik.
Saya akan memberikan walk-through cepat dengan contoh:
ekstrak terlebih dahulu file bzImage dengan binwalk:
> binwalk --extract bzImage
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 Microsoft executable, portable (PE)
18356 0x47B4 xz compressed data
9772088 0x951C38 xz compressed data
Aku berakhir dengan tiga file: 47B4
, 47B4.xz
dan951C38.xz
> file 47B4
47B4: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=aa47c6853b19e9242401db60d6ce12fe84814020, stripped
Sekarang mari kita jalankan binwalk lagi di 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>
Ini kembali dengan daftar panjang jalur yang ditemukan dan beberapa file yang berpotensi menarik. Mari kita lihat.
> file _47B4.extracted/*
<snip>
_47B4.extracted/E9B348: ASCII cpio archive (SVR4 with no CRC)
file E9B348
adalah arsip cpio (yang sudah didekompresi), hanya apa yang kita cari! Bingo!
Untuk membongkar arsip cpio terkompresi (initramfs Anda!) Di direktori Anda saat ini jalankan saja
> cpio -i < E9B348
Itu hampir terlalu mudah. binwalk
benar-benar alat yang Anda cari. Untuk referensi, saya menggunakan v2.1.1 di sini.
Sejauh yang saya tahu, arsip cpio initramfs baru saja ditautkan ke kernel.
Karenanya, ini harus bekerja:
dd
untuk mengekstrak rentang antarac17fd8cc
danc19d7b90
sumber