04324be18e
chose to do it *post* install, just before syncing and unmounting, because it's the easiest place to know exactly what services will be available and which will be enabled in the target system in the mess that is the el-cheapo installer. filters out some important services that users shouldn't be messing with at this point in the install, like some agettys, udevd, and sulogin. |
||
---|---|---|
.github/workflows | ||
data | ||
dracut | ||
grub | ||
isolinux | ||
keys | ||
packer | ||
pxelinux.cfg | ||
.gitattributes | ||
.gitignore | ||
COPYING | ||
Makefile | ||
README.md | ||
README.md.in | ||
build-x86-images.sh | ||
installer.sh | ||
lib.sh | ||
mkimage.sh | ||
mklive.sh | ||
mknet.sh | ||
mkplatformfs.sh | ||
mkrootfs.sh | ||
release.sh | ||
version |
README.md
The Void Linux live image/rootfs generator and installer
Overview
This repository contains several utilities:
- mklive.sh - The Void Linux live image generator for x86
- build-x86-images.sh - Wrapper script to generate bootable and installable live images for x86
- mkrootfs.sh - The Void Linux rootfs generator for all platforms
- mkplatformfs.sh - The Void Linux filesystem tool to produce a rootfs for a particular platform
- mkimage.sh - The Void Linux image generator for ARM platforms
- mknet.sh - Script to generate netboot tarballs for Void
- installer.sh - The Void Linux el-cheapo installer for x86
- release.sh - interacts with GitHub CI to generate and sign images for releases
Workflow
Generating x86 live ISOs
To generate a live ISO like the officially-published ones, use
build-x86-images.sh. To generate a more basic live ISO
(which does not include things like void-installer
), use mklive.sh.
Generating ROOTFS tarballs
ROOTFS tarballs contain a basic Void Linux root filesystem without a kernel. These can be useful for doing a chroot install or for chroots and containers.
Use mkrootfs.sh to generate a Void Linux ROOTFS.
Generating platform-specific tarballs
Platform-specific ROOTFS tarballs, or PLATFORMFS tarballs, contain a basic Void Linux root filesystem including a kernel. These are commonly used for bootstrapping ARM systems or other environments that require platform-specific kernels, like Raspberry Pis.
First create a ROOTFS for the desired architecture, then use mkplatformfs.sh to generate a Void Linux PLATFORMFS.
Generating ARM images
Platform-specific filesystem images contain a basic filesystem layout (/
and
/boot
partitions), ready to be copied to the target drive with dd
. These are
not "live" images like those available on x86 platforms, and do not need
installation like live ISOs.
To generate these images, first create a PLATFORMFS for the desired platform, then use mkimage.sh to generate the image.
Dependencies
Note that void-mklive is not guaranteed to work on distributions other than Void Linux, or in containers.
- Compression type for the initramfs image (by default: liblz4 for lz4, xz)
- xbps>=0.45
- qemu-user-static binaries (for mkrootfs)
- bash
Kernel Command-line Parameters
void-mklive
-based live images support several kernel command-line arguments
that can change the behavior of the live system:
live.autologin
will skip the initial login screen ontty1
.live.user
will change the username of the non-root user from the defaultanon
. The password remainsvoidlinux
.live.shell
sets the default shell for the non-root user in the live environment.live.accessibility
enables accessibility features like the console screenreaderespeakup
in the live environment.console
can be set tottyS0
,hvc0
, orhvsi0
to enableagetty
on that serial console.locale.LANG
will set theLANG
environment variable. Defaults toen_US.UTF-8
.vconsole.keymap
will set the console keymap. Defaults tous
.
Examples:
live.autologin live.user=foo live.shell=/bin/bash
would create the userfoo
with the default shell/bin/bash
on boot, and log them in automatically ontty1
live.shell=/bin/bash
would set the default shell for theanon
user to/bin/bash
console=ttyS0 vconsole.keymap=cf
would enablettyS0
and set the keymap in the console tocf
locale.LANG=fr_CA.UTF-8
would set the live system's language tofr_CA.UTF-8
Usage
build-x86-images.sh
Usage: build-x86-images.sh [options ...] [-- mklive options ...]
Wrapper script around mklive.sh for several standard flavors of live images.
Adds void-installer and other helpful utilities to the generated images.
OPTIONS
-a <arch> Set XBPS_ARCH in the image
-b <variant> One of base, enlightenment, xfce, mate, cinnamon, gnome, kde,
lxde, or lxqt (default: base). May be specified multiple times
to build multiple variants
-d <date> Override the datestamp on the generated image (YYYYMMDD format)
-t <arch-date-variant>
Equivalent to setting -a, -b, and -d
-r <repo> Use this XBPS repository. May be specified multiple times
-h Show this help and exit
-V Show version and exit
Other options can be passed directly to mklive.sh by specifying them after the --.
See mklive.sh -h for more details.
mklive.sh
Usage: mklive.sh [options]
Generates a basic live ISO image of Void Linux. This ISO image can be written
to a CD/DVD-ROM or any USB stick.
To generate a more complete live ISO image, use build-x86-images.sh.
OPTIONS
-a <arch> Set XBPS_ARCH in the ISO image
-b <system-pkg> Set an alternative base package (default: base-system)
-r <repo> Use this XBPS repository. May be specified multiple times
-c <cachedir> Use this XBPS cache directory (default: ./xbps-cachedir-<arch>)
-k <keymap> Default keymap to use (default: us)
-l <locale> Default locale to use (default: en_US.UTF-8)
-i <lz4|gzip|bzip2|xz>
Compression type for the initramfs image (default: xz)
-s <gzip|lzo|xz> Compression type for the squashfs image (default: xz)
-o <file> Output file name for the ISO image (default: automatic)
-p "<pkg> ..." Install additional packages in the ISO image
-g "<pkg> ..." Ignore packages when building the ISO image
-I <includedir> Include directory structure under given path in the ROOTFS
-S "<service> ..." Enable services in the ISO image
-C "<arg> ..." Add additional kernel command line arguments
-T <title> Modify the bootloader title (default: Void Linux)
-v linux<version> Install a custom Linux version on ISO image (default: linux metapackage)
-K Do not remove builddir
-h Show this help and exit
-V Show version and exit
mkrootfs.sh
Usage: mkrootfs.sh [options] <arch>
Generate a Void Linux ROOTFS tarball for the specified architecture.
Supported architectures:
i686, i686-musl, x86_64, x86_64-musl,
armv5tel, armv5tel-musl, armv6l, armv6l-musl, armv7l, armv7l-musl
aarch64, aarch64-musl,
mipsel, mipsel-musl,
ppc, ppc-musl, ppc64le, ppc64le-musl, ppc64, ppc64-musl
OPTIONS
-b <system-pkg> Set an alternative base-system package (default: base-container-full)
-c <cachedir> Set XBPS cache directory (default: ./xbps-cachedir-<arch>)
-C <file> Full path to the XBPS configuration file
-r <repo> Use this XBPS repository. May be specified multiple times
-o <file> Filename to write the ROOTFS to (default: automatic)
-x <num> Number of threads to use for image compression (default: dynamic)
-h Show this help and exit
-V Show version and exit
mkplatformfs.sh
Usage: mkplatformfs.sh [options] <platform> <rootfs-tarball>
Generates a platform-specific ROOTFS tarball from a generic Void Linux ROOTFS
generated by mkrootfs.sh.
Supported platforms: i686, x86_64, GCP,
rpi-armv6l, rpi-armv7l, rpi-aarch64,
pinebookpro, pinephone, rock64
OPTIONS
-b <system-pkg> Set an alternative base-system package (default: base-system)
-c <cachedir> Set the XBPS cache directory (default: ./xbps-cachedir-<arch>)
-C <file> Full path to the XBPS configuration file
-k <cmd> Call '<cmd> <ROOTFSPATH>' after building the ROOTFS
-n Do not compress the image, instead print out the ROOTFS directory
-o <file> Filename to write the PLATFORMFS archive to (default: automatic)
-p "<pkg> ..." Additional packages to install into the ROOTFS
-r <repo> Use this XBPS repository. May be specified multiple times
-x <num> Number of threads to use for image compression (default: dynamic)
-h Show this help and exit
-V Show version and exit
mkimage.sh
Usage: mkimage.sh [options] <platformfs-tarball>
Generates a filesystem image suitable for writing with dd from a PLATFORMFS
tarball generated by mkplatformfs.sh. The filesystem layout is configurable,
but customization of the installed system should be done when generating the
PLATFORMFS. The resulting image will have 2 partitions, /boot and /.
OPTIONS
-b <fstype> /boot filesystem type (default: vfat)
-B <bsize> /boot filesystem size (default: 256MiB)
-r <fstype> / filesystem type (default: ext4)
-s <totalsize> Total image size (default: 2GiB)
-o <output> Image filename (default: guessed automatically)
-x <num> Number of threads to use for image compression (default: dynamic)
-h Show this help and exit
-V Show version and exit
Accepted size suffixes: KiB, MiB, GiB, TiB, EiB.
The <platformfs-tarball> argument expects a tarball generated by mkplatformfs.sh.
The platform is guessed automatically by its name.
mknet.sh
Usage: mknet.sh [options] <rootfs-tarball>
Generates a network-bootable tarball from a Void Linux ROOTFS generated by mkrootfs.
OPTIONS
-r <repo> Use this XBPS repository. May be specified multiple times
-c <cachedir> Use this XBPS cache directory (default: )
-i <lz4|gzip|bzip2|xz>
Compression type for the initramfs image (default: xz)
-o <file> Output file name for the netboot tarball (default: automatic)
-K linux<version> Install a custom Linux version on ISO image (default: linux metapackage)
-k <keymap> Default keymap to use (default: us)
-l <locale> Default locale to use (default: en_US.UTF-8)
-C "<arg> ..." Add additional kernel command line arguments
-T <title> Modify the bootloader title (default: Void Linux)
-S <image> Set a custom splash image for the bootloader (default: data/splash.png)
-h Show this help and exit
-V Show version and exit