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 ato get an IP address. - From another computer run:
ssh anon@ip_addresssudo 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-pisudo 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.plsudo xbps-install gprolog gcc git
git clone https://github.com/sdbtools/void-pi.git
cd void-pi
gplc --min-size void-pi.pl
./void-pisudo 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 zfsDownload 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
/mntfor chroot by default. - allows to use an alternative rootdir via
--rootdircommand line argument. - all settings can be saved in a file and loaded on startup. File name is controlled via
--configcommand 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
/booton 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
/bootpartition.
| 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
/booton 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
/bootpartition. LUKS2 is used.
- LVM
- Only GRUB can have
/booton 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/sdX1is the root filesystem (size: whole device)
- Grub
/dev/sdX1is the BIOS boot sector (size: 1M)/dev/sdX2is the root filesystem (size: remainder)
/dev/sdX1is the EFI system partition (size: 550M)/dev/sdX2is 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.