Packing and unpacking initrd: Difference between revisions

From Leo's Notes
This page was last edited on 22 November 2021, at 19:16.
m Text replacement - "Category:Linux " to "Category:Linux{{Navbox Linux}} "
No edit summary
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
modify {{code|initird.img}} or other similar images
== Determine initrd format ==
To modify {{code|initird.img}} or other similar images, first determine the compression method used by the initrd file. Below, we see that it's using gzip which is typical.


To extract {{code|initird.img}}:
{{Highlight
<syntaxhighlight lang="bash" line start="1" enclose="div">
| code = ## Using gzip
# Go to an empty directory before extracting the image.
# file initrd.img
mkdir -p /mnt/initrd_extract && cd /mnt/initrd_extract
initramfs.gz: gzip compressed data, last modified: Thu Jul 22 04:16:52 2021, max compression, from Unix, original size 46489600
gzip -dc < /path/to/initrd.img | cpio -i
</syntaxhighlight>


To pack files back into {{code|initrd.img}}
## ASCII SVR4 archive
<syntaxhighlight lang="bash" line start="1" enclose="div">
# file initramfs.img                             
# Go to the directory containing the contents of the image.
initramfs.img: ASCII cpio archive (SVR4 with no CRC)
cd /mnt/initrd_extract
| lang = terminal
find . | cpio -o -c | gzip -9 > /path/to/initrd.img
}}
</syntaxhighlight>


You may want to run {{code|file /path/to/initrd.img}} in order to determine the exact method of compression. The above commands above assumes {{code|cpio + gzip}}.
=== Extracting initrd ===


==== Gzip ====
To unpack and extract {{code|initird.img}} using gzip:


[[Category:Linux]]{{Navbox Linux}}
{{Highlight
| code = ## Go to an empty directory before extracting the image.
# mkdir -p /mnt/initrd_extract && cd /mnt/initrd_extract
# gzip -dc < /path/to/initrd.img {{!}} cpio -i
| lang = terminal
}}
 
==== ASCII cpio archive ====
To unpack initramfs using ASCII cpio archive that's generated by dracut, use skipcpio.
{{Highlight
| code = # /usr/lib/dracut/skipcpio initramfs.img {{!}} xz -d {{!}}cpio -id
| lang = terminal
}}
 
=== Repacking initrd ===
To re-pack files back into {{code|initrd.img}} after making your changes:
 
{{Highlight
| code = # Go to the directory containing the contents of the image.
# cd /mnt/initrd_extract
# find . {{!}} cpio -o -c {{!}} gzip -9 > /path/to/initrd.img
| lang = terminal
}}<br />
{{Navbox Linux}}
{{Navbox Linux}}
[[Category:Linux]]

Latest revision as of 19:16, 22 November 2021

Determine initrd format

To modify initird.img or other similar images, first determine the compression method used by the initrd file. Below, we see that it's using gzip which is typical.

## Using gzip
# file initrd.img
initramfs.gz: gzip compressed data, last modified: Thu Jul 22 04:16:52 2021, max compression, from Unix, original size 46489600

## ASCII SVR4 archive
# file initramfs.img                              
initramfs.img: ASCII cpio archive (SVR4 with no CRC)

Extracting initrd

Gzip

To unpack and extract initird.img using gzip:

## Go to an empty directory before extracting the image.
# mkdir -p /mnt/initrd_extract && cd /mnt/initrd_extract
# gzip -dc < /path/to/initrd.img | cpio -i

ASCII cpio archive

To unpack initramfs using ASCII cpio archive that's generated by dracut, use skipcpio.

# /usr/lib/dracut/skipcpio initramfs.img | xz -d |cpio -id

Repacking initrd

To re-pack files back into initrd.img after making your changes:

# Go to the directory containing the contents of the image.
# cd /mnt/initrd_extract
# find . | cpio -o -c | gzip -9 > /path/to/initrd.img