Clayton Craft 6aec4d564c archive: remove pgzip, use gzip from go std lib (MR 25)
This replaces the parallel gzip with the boring gzip from Go's standard
lib. The main motivations for doing this are:

1) Reduce runtime memory requirements

2) shed some external dependencies

There's obviously a trade-off with compression speed/time (as seen
below), but I feel like it's a worthwhile trade-off.

Note that there's likely very little impact to boot performance wrt
extracting these archives, the compression levels are similar.

Measured on a Shift 6mq, which is a very fast phone...

** compress/gzip:

User time (seconds): 1.81
System time (seconds): 0.38
Percent of CPU this job got: 104%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.09
Maximum resident set size (kbytes): 62024

-rw-r--r-- 1 clayton clayton 6.1M Sep 20 17:20 initramfs
-rw-r--r-- 1 clayton clayton 2.5M Sep 20 17:20 initramfs-extra

** pgzip:

User time (seconds): 1.19
System time (seconds): 0.48
Percent of CPU this job got: 159%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.05
Maximum resident set size (kbytes): 109952

-rw-r--r-- 1 clayton clayton 6.8M Sep 20 17:20 initramfs
-rw-r--r-- 1 clayton clayton 2.8M Sep 20 17:20 initramfs-extra

inspired by: https://gitlab.com/postmarketOS/pmaports/-/issues/1704
2023-02-24 09:21:22 -08:00
2023-02-21 00:47:03 -08:00
2023-02-21 00:47:03 -08:00
2021-08-09 15:23:39 -07:00
2023-02-21 00:47:03 -08:00

mkinitfs is a tool for generating an initramfs. It was originally designed for postmarketOS, but a long term design goal is to be as distro-agnostic as possible. It's capable of generating a split initramfs, in the style used by postmarketOS, and supports running boot-deploy to install/finalize boot files on a device.

Building

Building this project requires a Go compiler/toolchain and make:

$ make

To install locally:

$ make install

Installation prefix can be set in the generally accepted way with setting PREFIX:

$ make PREFIX=/some/location
# make PREFIX=/some/location install

Other paths can be modified from the command line as well, see the top section of the Makefile for more information.

Tests (functional and linting) can be executed by using the test make target:

$ make test

Usage

The tool can be run with no options:

# mkinitfs

Configuration is done through a series of flat text files that list directories and files, and by placing scripts in specific directories. See man 1 mkinitfs for more information.

Description
No description provided
Readme GPL-3.0 566 KiB
2025-09-26 07:20:09 +00:00
Languages
Go 97.6%
Makefile 2.4%