Skip to content

Instantly share code, notes, and snippets.

@mrled
Last active December 5, 2020 23:55
Show Gist options
  • Save mrled/c50d071e7bb94c702756cfd07bbb9f8a to your computer and use it in GitHub Desktop.
Save mrled/c50d071e7bb94c702756cfd07bbb9f8a to your computer and use it in GitHub Desktop.
Makefile which extracts an alpine initrd from the arm64 rpi tarball

Extract Alpine Linux ARM64 Raspberry Pi initrd

Want to see what's in the initrd without installing it?

This will extract it for you.

It also reminds me how to deal with cpio archives, which I can never remember.

# Makefile which extracts an alpine initrd from the arm64 rpi tarball
rpi_alpine_tarball_basename := alpine-rpi-3.12.1-aarch64
rpi_alpine_extractdir := $(rpi_alpine_tarball_basename)
rpi_alpine_tarball := $(rpi_alpine_tarball_basename).tar.gz
rpi_alpine_tarball_uri_prefix := http://dl-cdn.alpinelinux.org/alpine/v3.12/releases/aarch64
rpi_alpine_tarball_uri := $(rpi_alpine_tarball_uri_prefix)/$(rpi_alpine_tarball)
initramfs_compressed := $(rpi_alpine_extractdir)/boot/initramfs-rpi4
initramfscpio := initramfs-rpi4.cpio
initramfsdir := initramfs
initramfs_extracted_init := $(initramfsdir)/init
.PHONY: cleanextracted
$(initramfs_extracted_init): $(initramfscpio) | $(initramfsdir)
cd $(initramfsdir); cpio -vid < ../$(initramfscpio)
# Touch it because it'll extract it with an old timestamp
touch $(initramfs_extracted_init)
$(initramfsdir):
mkdir $(initramfsdir)
$(initramfscpio): $(initramfs_compressed) | $(rpi_alpine_extractdir)
zcat < $(initramfs_compressed) > initramfs-rpi4.cpio
$(initramfs_compressed): $(rpi_alpine_tarball) | $(rpi_alpine_extractdir)
cd $(rpi_alpine_extractdir); tar -zxf ../$(rpi_alpine_tarball)
# Touch it because it'll extract it with an old timestamp
touch $(initramfs_compressed)
$(rpi_alpine_extractdir):
mkdir $(rpi_alpine_extractdir)
$(rpi_alpine_tarball):
curl -o $(rpi_alpine_tarball) $(rpi_alpine_tarball_uri)
cleanextracted:
rm -rf $(rpi_alpine_extractdir) $(initramfscpio) $(initramfsdir)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment