
binwalk를 사용하여 ubuntu 18.04의 initrd의 압축을 풀었지만 패키지의 압축을 풀지 못했습니다.
command used # sudo binwalk initrd
===========
result:
==========
DECIMAL HEX DESCRIPTION
-------------------------------------------------------------------------------------------------------
0 0x0 ASCII cpio archive (SVR4 with no CRC), file name: "."
112 0x70 ASCII cpio archive (SVR4 with no CRC), file name: "kernel"
232 0xE8 ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86"
356 0x164 ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode"
488 0x1E8 ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/AuthenticAMD.bin"
28072 0x6DA8 ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!"
28672 0x7000 ASCII cpio archive (SVR4 with no CRC), file name: "kernel"
28792 0x7078 ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86"
28916 0x70F4 ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode"
29048 0x7178 ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/.enuineIntel.align.0123456789abc"
29212 0x721C ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/GenuineIntel.bin"
2440880 0x253EB0 ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!"
===========
대상 폴더에 아무것도주지 않았습니다
# file initrd
initrd: ASCII cpio archive (SVR4 with no CRC)
cpio 명령을 사용하여 추출을 시도했는데,
build@###
:/source/build/1.0.5.00206/nm-gii/software/CD/build/initrd$ sudo cpio -i -F /source/build/1.0.5.00206/nm-gii/software/CD/build/extract-cd/casper/initrd
56 blocks
build@###:/source/build/1.0.5.00206/nm-gii/software/CD/build/initrd$ ll
total 12
drwxr-xr-x 3 root root 4096 Jan 15 05:36 ./
drwxr-xr-x 5 root root 4096 Jan 15 05:01 ../
drwxr-xr-x 3 root root 4096 Jan 15 05:36 kernel/
build@###:/source/build/1.0.5.00206/nm-gii/software/CD/build/initrd$
그래서 모든 파일은 여전히 이것으로 추출되어 있습니다.
답변1
Ubuntu의 경우 최신 버전 이상에서는 명령을 사용하여 lsinitramfs <file>
검사하고 unmkinitramfs <file> <target directory>
추출할 수 있습니다.
답변2
initrd 형식은 여러 항목을 연결할 수 있습니다. 즉, cpio
아카이브이며 파일 시스템 이미지일 수도 있습니다. 보다선적 서류 비치.
옵션 1
생성된 initrd 의 경우 dracut
추출하려면 dracut과 함께 제공되는 것을 사용할 수 있습니다 lsinitrd --unpack
.
옵션 2
또 다른 옵션은 skipcpio
dracut과 함께 제공되는 도구를 사용하는 것입니다. 이것 좀 봐답변.
/usr/lib/dracut/skipcpio $your-initrd-img | zcat | cpio -id --no-absolute-file-names
옵션 3
또 다른 옵션은 binwalk
cpio 또는 initrd 부분을 다시 사용하는 것입니다. 이것 좀 봐답변.
옵션 4(아마도 당신이 요청한 것)
그러나 initrd를 탐색하고 추출하고 수정하는 가장 좋은 대답은 다음과 같습니다. https://unix.stackexchange.com/a/607996/14907
이를 사용하면 수정하려는 부분만 더 쉽게 추출한 다음 포장을 푼 것과 같은 방식으로 다시 포장할 수 있습니다. 포괄적인 가이드는 아니지만 동기가 부여된 경우 대부분의 정보를 제공할 것입니다.