Void Linux installer implemented in GNU Prolog.
void-pi is a Void Linux installer similar to void-installer.
It extends void-installer in several ways:
- provides predefined templates for LVM, and LUKS.
- provides predefined partitioning templates for block devices and BTRFS and ZFS.
- supports rEFInd, Limine, Syslinux, Gummiboot, and ZFSBootMenu boot managers
- supports EFISTUB boot loader
- supports multi-device configurations.
- supports either BIOS or UEFI, or both boot modes.
- installs and configures additional boot manager and file system related software.
void-pi works on Void with Intel or AMD x86 CPU. It wasn't tested with ARM CPUs.
- Boot from an installation ISO.
- Run
ip a
to get an IP address. - From another computer run:
ssh anon@ip_address
sudo bash
- Run void-pi.
sudo xbps-install -Suy xbps wget
wget https://github.com/sdbtools/void-pi/releases/latest/download/void-pi.x86_64.tgz
tar -xzf void-pi.x86_64.tgz
./void-pi
sudo xbps-install gprolog git
git clone https://github.com/sdbtools/void-pi.git
cd void-pi
./void-pi.pl
# or
gprolog --consult-file void-pi.pl
sudo xbps-install gprolog gcc git
git clone https://github.com/sdbtools/void-pi.git
cd void-pi
gplc --min-size void-pi.pl
./void-pi
sudo btrbk run
grub-mkconfig -o /boot/grub/grub.cfg
This option is to build a custom Void Linux image from the official void-mklive repository.
$ git clone --depth=1 https://github.com/void-linux/void-mklive.git
$ cd void-mklive
$ make
$ sudo ./build-x86-images.sh -- -p zfs
Download a pre-built hrmpf image.
This option is to build a custom Void Linux image from the official void-mklive repository.
$ git clone --depth=1 https://github.com/void-linux/void-mklive.git
$ cd void-mklive
$ make
$ sudo ./build-x86-images.sh -- -v linux6.7
- completely emulates
void-installer
. - install from Void ISO or network.
- predefined templates for LVM, LUKS, and combinations of them.
- predefined partitioning templates.
- selected devices will be automatically cleaned up.
- TUI for setting up of file system features and options.
- TUI for setting up of mount options.
- TUI dynamically changes depending on selected template.
- uses
/mnt
for chroot by default. - allows to use an alternative rootdir via
--rootdir
command line argument. - all settings can be saved in a file and loaded on startup. File name is controlled via
--config
command line argument. - passwords are never saved in files even temporarily.
- max password length is limited to 1024 charaters.
- Boot modes
- UEFI
- BIOS
- both
- Boot managers
- Uses GRUB, rEFInd, Limine, Syslnux, or Gummiboot as a boot manager.
- Uses EFISTUB as a boot loader.
- rEFInd is configured to use kernel auto detection.
- Only GRUB can have
/boot
on LVM or LUKS. - ZFSBootMenu is enabled only with the "GPT. Basic" template at this time.
- If a boot manager doesn't support a file system (or LVM, or LUKS), then installer will create an ext4
/boot
partition.
Boot manager | Supported /boot filesystems |
---|---|
GRUB | fat, btrfs, ext2, ext3, ext4, xfs, nilfs2, and zfs (zfs has limited support) |
Gummiboot | fat, ext2, ext3, ext4, xfs, nilfs2, and f2fs (btrfs is not supported at this time) |
rEFInd | fat, btrfs, ext2, ext3, and ext4 |
Limine | fat, (Support of ext2, ext3, and ext4 was disabled in Limine version 6.20231210.0) |
Syslinux | fat, ext2, ext3, and ext4, and xfs (btrfs is not supported at this time) |
EFISTUB | fat, ext2, ext3, ext4, f2fs, and xfs (btrfs is not supported at this time) |
ZFSBootMenu | zfs |
- ZFS
- Requires a ZFS install media.
- Supported by GRUB and ZFSBootMenu bootmanagers.
- In case of GRUB only "GPT. Basic" template is supported at this time.
- Encryption can be enabled via "FS Settings".
- In case of GRUB encryption shouldn't be used because GRUB doesn't support it.
- Bcachefs
- Requires a Bcachefs install media.
- Syslinux
- In case of UEFI the kernel and initramfs files are located in the EFI system partition (aka ESP), as Syslinux does not (currently) have the ability to access files outside its own partition.
- IA32 (32-bit) is currently unsupported.
- EFISTUB
- The kernel and initramfs files are located in the EFI system partition (aka ESP).
- btrfs is not supported.
- Gummiboot
- The kernel and initramfs files are located in the EFI system partition (aka ESP).
- btrfs is not supported.
- ZFSBootMenu
- Only direct EFI booting is supported at this time.
- Enabled only with "Manual" and "GPT. Basic" templates at this time.
- LUKS
- LUKS can be used with GRUB, rEFInd, Limine, and Syslinux.
- Only GRUB can have
/boot
on LUKS. - In case of GRUB whole system is located on LUKS, including encrypted
/boot
. LUKS1 is used because GRUB2 doesn't support LUKS2. - In case of rEFInd and Limine installer will create an unencrypted ext4
/boot
partition. LUKS2 is used.
- LVM
- Only GRUB can have
/boot
on LVM.
- Only GRUB can have
- Multi-device support
- Multi-device configurations are available with BTRFS and LVM.
- Additional software
- snooze - run a command at a particular time.
- btrbk - Tool for creating snapshots and remote backups of btrfs subvolumes.
- grub-btrfs - improves the grub bootloader by adding a btrfs snapshots sub-menu, allowing the user to boot into snapshots.
Last tested | ISO | Result |
---|---|---|
2024-06-08 | void-live-x86_64-20240229-base.iso | PASS |
2023-06-29 | void-live-x86_64-musl-20221001-base.iso | PASS |
2023-10-21 | void-live-i686-20230628-base.iso | PASS |
2023-06-29 | void-live-i686-20221001-base.iso | N/A |
2023-06-29 | void-live-i686-20210930.iso | PASS |
2023-10-14 | hrmpf-x86_64-6.1.3_1-20230105.iso | PASS |
2023-11-19 | hrmpf-x86_64-6.5.9_1-20231102.iso | PASS |
2023-08-22 | void-live-lxqt-unofficial-x86_64-6.3.13_1-20230821.iso | PASS |
2023-12-17 | void-live-kde-unofficial-x86_64-6.5.13_1-20231217.iso | PASS |
- Manual configuration of everything
- GPT. Basic
- GPT. LVM
- GPT. LVM. LUKS
- GPT. LUKS. One device
- GPT. LUKS. LVM. One device
void-pi creates the following Btrfs subvolumes with a flat layout:
- root
Subvolume name | Mounting point | Mount options |
---|---|---|
@ |
/ |
|
@snapshots |
/.snapshots |
nodev,noexec,nosuid + nodatacow |
- root_home
Subvolume name | Mounting point | Mount options |
---|---|---|
@ |
/ |
|
@home |
/home |
nodev,nosuid |
@snapshots |
/.snapshots |
nodev,noexec,nosuid + nodatacow |
- max
Subvolume name | Mounting point | Mount options |
---|---|---|
@ |
/ |
|
@home |
/home |
nodev,nosuid |
@opt |
/opt |
nodev |
@srv |
/srv |
nodev,noexec,nosuid + nodatacow |
@var |
/var |
nodev,noexec,nosuid |
@var-cache-xbps |
/var/cache/xbps |
nodev,noexec,nosuid |
@var-lib-ex |
/var/lib/ex |
nodev,noexec,nosuid + nodatacow |
@var-log |
/var/log |
nodev,noexec,nosuid + nodatacow |
@var-opt |
/var/opt |
nodev,noexec,nosuid |
@var-spool |
/var/spool |
nodev,noexec,nosuid + nodatacow |
@var-tmp |
/var/tmp |
nodev,noexec,nosuid + nodatacow |
@snapshots |
/.snapshots |
nodev,noexec,nosuid + nodatacow |
- root
Dataset name | Mounting point | Options |
---|---|---|
/ROOT/void |
/ |
canmount=noauto, atime=off |
- root_home
Dataset name | Mounting point | Options |
---|---|---|
/ROOT/void |
/ |
canmount=noauto, atime=off |
/home |
/home |
atime=off |
- max
Dataset name | Mounting point | Options |
---|---|---|
/ROOT/void |
/ |
canmount=noauto, atime=off |
/home |
/home |
atime=off |
/opt |
/opt |
atime=off |
/srv |
/srv |
atime=off |
/tmp |
/tmp |
com.sun:auto-snapshot=false, atime=off |
/var |
/var |
canmount=off, atime=off |
/var-lib |
/var/lib |
canmount=off, atime=off |
/var-cache-xbps |
/var/cache/xbps |
com.sun:auto-snapshot=false, atime=off |
/var-lib-ex |
/var/lib/ex |
atime=off |
/var-log |
/var/log |
atime=off |
/var-opt |
/var/opt |
atime=off |
/var-spool |
/var/spool |
atime=off |
/var-tmp |
/var/tmp |
com.sun:auto-snapshot=false, atime=off |
- root
/
(size: whole device)
- root_home
/
(size: 20GB)/home
(size: remainder)
All default settings can be changed via Common Attrs
sub-menu.
- host-only: no
- installation source: local
- host name: voidpp
- user name: void
- keymap: us
- locale: en_US.UTF-8
- timezone: America/New_York
- LUKS mapping name: crypt
- MBR size: 1M
- ESP size: 550M
- Boot partition size: 1G
- btrbk:
/mnt/btr_pool
- snapshots are created for @, @opt, @var, @srv, and @home subvolumes.
- btrbk is scheduled to run every day
- Limine and Syslinux
/dev/sdX1
is the root filesystem (size: whole device)
- Grub
/dev/sdX1
is the BIOS boot sector (size: 1M)/dev/sdX2
is the root filesystem (size: remainder)
/dev/sdX1
is the EFI system partition (size: 550M)/dev/sdX2
is the root filesystem (size: remainder)
extra_attr,inode_checksum,sb_checksum,compression,encrypt
Name | Provides | Included in Void ISO? |
---|---|---|
dialog | ncurses user input menu | Y |
gptfdisk | GPT disk partitioning with sgdisk | N |
lz4 | Extremely Fast Compression algorithm | N |
snooze | cron replacement | N |
btrbk | Tool for creating snapshots | N |
grub-btrfs | Add a btrfs snapshots sub-menu to GRUB | N |
zfs | ZFS filesystem | N |
This software is released under the GNU GPLv2 license.