Извлечение объединенных архивов cpio

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

3
26.02.2016, 22:49
1 ответ

Это можно сделать вручную с помощьюdd skip=. На моем Ubuntu 20.04 я могу посмотреть первую часть (со смещением 0 блоков )с

# dd if=/boot/initrd.img-5.4.0-45-generic skip=0 | file -
/dev/stdin: ASCII cpio archive (SVR4 with no CRC)

, а затем просмотреть содержимое

# dd if=/boot/initrd.img-5.4.0-45-generic skip=0 | cpio -it
.
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/AuthenticAMD.bin
62 blocks

Вторая часть на 62 блока дальше

# dd if=/boot/initrd.img-5.4.0-45-generic skip=62 | file -
/dev/stdin: ASCII cpio archive (SVR4 with no CRC)

и снова простой архив cpio, но на этот раз большего размера

# dd if=/boot/initrd.img-5.4.0-45-generic skip=62 | cpio -it
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/.enuineIntel.align.0123456789abc
kernel/x86/microcode/GenuineIntel.bin
5868 blocks

Теперь пропустите 5868 + 62блоков в initramfs

# dd if=/boot/initrd.img-5.4.0-45-generic skip=5930 | file -
/dev/stdin: LZ4 compressed data (v0.1-v0.9)

На этот раз это сжатый поток, поэтому

# dd if=/boot/initrd.img-5.4.0-45-generic skip=5930 | lz4cat | file -
/dev/stdin: ASCII cpio archive (SVR4 with no CRC)

И снова мы нашли очередной (и последний )cpio-архив

# dd if=/boot/initrd.img-5.4.0-45-generic skip=5930 | lz4cat | cpio -it
... lots of output
usr/share/plymouth/themes/spinner/watermark.png
usr/share/plymouth/ubuntu-logo.png
var
var/cache
var/cache/fontconfig
var/cache/fontconfig/383ee5b3-5437-4bdc-87f6-cf314658a7c0-le64.cache-7
var/cache/fontconfig/575cffd4-ae01-4067-914f-7545fe566c1b-le64.cache-7
var/cache/fontconfig/CACHEDIR.TAG
var/cache/fontconfig/c467a813-186f-476e-880a-3770402989a9-le64.cache-7
var/cache/fontconfig/d912fc4e-f5b6-456d-a86d-e4c3ccbbefe9-le64.cache-7
var/lib
var/lib/dhcp
450460 blocks

Однако это работает только в том случае, если первые потоки несжаты. В противном случае cpio сообщит размер не в initramfs, а в несжатой части.

2
05.09.2020, 09:35

Теги

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