Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion build-x86-images.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ shift $((OPTIND - 1))

build_variant() {
variant="$1"
shift
IMG=void-live-${ARCH}-${DATE}-${variant}.iso
GRUB_PKGS="grub-i386-efi grub-x86_64-efi"
PKGS="dialog cryptsetup lvm2 mdadm void-docs-browse xtools-minimal $GRUB_PKGS"
Expand Down Expand Up @@ -81,5 +82,5 @@ if [ ! -x mklive.sh ]; then
fi

for image in $IMAGES; do
build_variant "$image"
build_variant "$image" "$@"
done
Binary file added data/splash.bmp
Binary file not shown.
15 changes: 0 additions & 15 deletions grub/grub.cfg

This file was deleted.

46 changes: 0 additions & 46 deletions grub/grub_void.cfg.in

This file was deleted.

11 changes: 8 additions & 3 deletions installer.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -575,7 +575,8 @@ menu_locale() {

set_locale() {
if [ -f $TARGETDIR/etc/default/libc-locales ]; then
local LOCALE=$(get_option LOCALE)
local LOCALE="$(get_option LOCALE)"
: "${LOCALE:=C.UTF-8}"
sed -i -e "s|LANG=.*|LANG=$LOCALE|g" $TARGETDIR/etc/locale.conf
# Uncomment locale from /etc/default/libc-locales and regenerate it.
sed -e "/${LOCALE}/s/^\#//" -i $TARGETDIR/etc/default/libc-locales
Expand Down Expand Up @@ -742,6 +743,10 @@ menu_useraccount() {
else
_status=on
fi
# ignore the groups of existing users and package groups
if [[ "${_gid}" -ge 1000 || "${_group}" = "_"* ]]; then
continue
fi
if [ -z "${_checklist}" ]; then
_checklist="${_group} ${_group}:${_gid} ${_status}"
else
Expand All @@ -764,8 +769,8 @@ set_useraccount() {
[ -z "$USERPASSWORD_DONE" ] && return
[ -z "$USERNAME_DONE" ] && return
[ -z "$USERGROUPS_DONE" ] && return
useradd -R $TARGETDIR -m -G $(get_option USERGROUPS) \
-c "$(get_option USERNAME)" $(get_option USERLOGIN)
useradd -R "$TARGETDIR" -m -G "$(get_option USERGROUPS)" \
-c "$(get_option USERNAME)" "$(get_option USERLOGIN)"
echo "$(get_option USERLOGIN):$(get_option USERPASSWORD)" | \
chpasswd -R $TARGETDIR -c SHA512
}
Expand Down
34 changes: 0 additions & 34 deletions isolinux/isolinux.cfg.in

This file was deleted.

24 changes: 24 additions & 0 deletions limine/limine.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
INTERFACE_BRANDING=Void Linux
TIMEOUT=8
TERM_WALLPAPER=boot:///boot/limine/@@SPLASHIMAGE@@
TERM_WALLPAPER_STYLE=centered
TERM_BACKDROP=#000000

:@@BOOT_TITLE@@ @@KERNVER@@ @@ARCH@@
PROTOCOL=linux
KERNEL_PATH=boot:///boot/vmlinuz
CMDLINE=root=live:CDLABEL=VOID_LIVE init=/sbin/init ro rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 vconsole.unicode=1 vconsole.keymap=@@KEYMAP@@ locale.LANG=@@LOCALE@@ @@BOOT_CMDLINE@@
MODULE_PATH=boot:///boot/initrd
COMMENT=Boot a @@BOOT_TITLE@@ live system


:@@BOOT_TITLE@@ @@KERNVER@@ @@ARCH@@ (RAM)
PROTOCOL=linux
KERNEL_PATH=boot:///boot/vmlinuz
CMDLINE=root=live:CDLABEL=VOID_LIVE init=/sbin/init ro rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 vconsole.unicode=1 vconsole.keymap=@@KEYMAP@@ locale.LANG=@@LOCALE@@ @@BOOT_CMDLINE@@ rd.live.ram
MODULE_PATH=boot:///boot/initrd
COMMENT=Boot a @@BOOT_TITLE@@ loaded in RAM

:Boot next storage device found
PROTOCOL=chainload_next
COMMENT=Try to boot from the next bootable storage device found in the system
147 changes: 46 additions & 101 deletions mklive.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
trap 'error_out $? $LINENO' INT TERM 0
umask 022

readonly REQUIRED_PKGS="base-files libgcc dash coreutils sed tar gawk syslinux grub-i386-efi grub-x86_64-efi squashfs-tools xorriso"
readonly REQUIRED_PKGS="base-files libgcc dash coreutils sed tar gawk limine squashfs-tools xorriso"
readonly INITRAMFS_PKGS="binutils xz device-mapper dhclient dracut-network openresolv"
readonly PROGNAME=$(basename "$0")

Expand Down Expand Up @@ -181,77 +181,21 @@ cleanup_rootfs() {
rm -r "$ROOTFS"/usr/lib/dracut/modules.d/01autoinstaller
}

generate_isolinux_boot() {
cp -f "$SYSLINUX_DATADIR"/isolinux.bin "$ISOLINUX_DIR"
cp -f "$SYSLINUX_DATADIR"/ldlinux.c32 "$ISOLINUX_DIR"
cp -f "$SYSLINUX_DATADIR"/libcom32.c32 "$ISOLINUX_DIR"
cp -f "$SYSLINUX_DATADIR"/vesamenu.c32 "$ISOLINUX_DIR"
cp -f "$SYSLINUX_DATADIR"/libutil.c32 "$ISOLINUX_DIR"
cp -f "$SYSLINUX_DATADIR"/chain.c32 "$ISOLINUX_DIR"
cp -f isolinux/isolinux.cfg.in "$ISOLINUX_DIR"/isolinux.cfg
cp -f ${SPLASH_IMAGE} "$ISOLINUX_DIR"

sed -i -e "s|@@SPLASHIMAGE@@|$(basename "${SPLASH_IMAGE}")|" \
-e "s|@@KERNVER@@|${KERNELVERSION}|" \
-e "s|@@KEYMAP@@|${KEYMAP}|" \
-e "s|@@ARCH@@|$BASE_ARCH|" \
-e "s|@@LOCALE@@|${LOCALE}|" \
-e "s|@@BOOT_TITLE@@|${BOOT_TITLE}|" \
-e "s|@@BOOT_CMDLINE@@|${BOOT_CMDLINE}|" \
"$ISOLINUX_DIR"/isolinux.cfg
}

generate_grub_efi_boot() {
cp -f grub/grub.cfg "$GRUB_DIR"
cp -f grub/grub_void.cfg.in "$GRUB_DIR"/grub_void.cfg
sed -i -e "s|@@SPLASHIMAGE@@|$(basename "${SPLASH_IMAGE}")|" \
-e "s|@@KERNVER@@|${KERNELVERSION}|" \
-e "s|@@KEYMAP@@|${KEYMAP}|" \
-e "s|@@ARCH@@|$BASE_ARCH|" \
-e "s|@@BOOT_TITLE@@|${BOOT_TITLE}|" \
-e "s|@@BOOT_CMDLINE@@|${BOOT_CMDLINE}|" \
-e "s|@@LOCALE@@|${LOCALE}|" "$GRUB_DIR"/grub_void.cfg
mkdir -p "$GRUB_DIR"/fonts
cp -f "$GRUB_DATADIR"/unicode.pf2 "$GRUB_DIR"/fonts

modprobe -q loop || :

# Create EFI vfat image.
truncate -s 32M "$GRUB_DIR"/efiboot.img >/dev/null 2>&1
mkfs.vfat -F12 -S 512 -n "grub_uefi" "$GRUB_DIR/efiboot.img" >/dev/null 2>&1

GRUB_EFI_TMPDIR="$(mktemp --tmpdir="$HOME" -d)"
LOOP_DEVICE="$(losetup --show --find "${GRUB_DIR}"/efiboot.img)"
mount -o rw,flush -t vfat "${LOOP_DEVICE}" "${GRUB_EFI_TMPDIR}" >/dev/null 2>&1

cp -a "$IMAGEDIR"/boot "$VOIDHOSTDIR"
xbps-uchroot "$VOIDHOSTDIR" grub-mkstandalone -- \
--directory="/usr/lib/grub/i386-efi" \
--format="i386-efi" \
--output="/tmp/bootia32.efi" \
"boot/grub/grub.cfg"
if [ $? -ne 0 ]; then
umount "$GRUB_EFI_TMPDIR"
losetup --detach "${LOOP_DEVICE}"
die "Failed to generate EFI loader"
fi
mkdir -p "${GRUB_EFI_TMPDIR}"/EFI/BOOT
cp -f "$VOIDHOSTDIR"/tmp/bootia32.efi "${GRUB_EFI_TMPDIR}"/EFI/BOOT/BOOTIA32.EFI
xbps-uchroot "$VOIDHOSTDIR" grub-mkstandalone -- \
--directory="/usr/lib/grub/x86_64-efi" \
--format="x86_64-efi" \
--output="/tmp/bootx64.efi" \
"boot/grub/grub.cfg"
if [ $? -ne 0 ]; then
umount "$GRUB_EFI_TMPDIR"
losetup --detach "${LOOP_DEVICE}"
die "Failed to generate EFI loader"
fi
cp -f "$VOIDHOSTDIR"/tmp/bootx64.efi "${GRUB_EFI_TMPDIR}"/EFI/BOOT/BOOTX64.EFI
umount "$GRUB_EFI_TMPDIR"
losetup --detach "${LOOP_DEVICE}"
rm -rf "$GRUB_EFI_TMPDIR"
}
generate_limine_boot() {
cp -f "$LIMINE_DATADIR"/limine-cd-efi.bin "$LIMINE_DIR"
cp -f "$LIMINE_DATADIR"/limine-cd.bin "$LIMINE_DIR"
cp -f "$LIMINE_DATADIR"/limine.sys "$LIMINE_DIR"
cp -f ${SPLASH_IMAGE} "$LIMINE_DIR"

sed -i -e "s|@@BOOT_CMDLINE@@|${BOOT_CMDLINE}|" \
-e "s|@@SPLASHIMAGE@@|$(basename ${SPLASH_IMAGE})|" \
-e "s|@@KERNVER@@|${KERNELVERSION}|" \
-e "s|@@KEYMAP@@|${KEYMAP}|" \
-e "s|@@ARCH@@|$BASE_ARCH|" \
-e "s|@@LOCALE@@|${LOCALE}|" \
-e "s|@@BOOT_TITLE@@|${BOOT_TITLE}|" \
"$LIMINE_DIR"/limine.cfg
}

generate_squashfs() {
umount_pseudofs
Expand All @@ -277,18 +221,17 @@ generate_squashfs() {
}

generate_iso_image() {
"$VOIDHOSTDIR"/usr/bin/xorriso -as mkisofs \
-iso-level 3 -rock -joliet \
-max-iso9660-filenames -omit-period \
-omit-version-number -relaxed-filenames -allow-lowercase \
-volid "VOID_LIVE" \
-eltorito-boot boot/isolinux/isolinux.bin \
-eltorito-catalog boot/isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-eltorito-alt-boot -e boot/grub/efiboot.img -isohybrid-gpt-basdat -no-emul-boot \
-isohybrid-mbr "$SYSLINUX_DATADIR"/isohdpfx.bin \
-output "$OUTPUT_FILE" "$IMAGEDIR" || die "Failed to generate ISO image"
}
"$VOIDHOSTDIR"/usr/bin/xorriso -as mkisofs \
-b boot/limine/limine-cd.bin \
-no-emul-boot -boot-load-size 4 -boot-info-table \
--efi-boot boot/limine/limine-cd-efi.bin \
-efi-boot-part --efi-boot-image --protective-msdos-label \
-volid "VOID_LIVE" \
-output "$OUTPUT_FILE" "$IMAGEDIR" || die "Failed to generate ISO image"

# Install the bootloader
"$VOIDHOSTDIR"/usr/bin/limine-deploy "$OUTPUT_FILE" || die "Failed to install bootloader"
}

#
# main()
Expand All @@ -304,10 +247,10 @@ while getopts "a:b:r:c:C:T:Kk:l:i:I:S:s:o:p:v:h" opt; do
l) LOCALE="$OPTARG";;
i) INITRAMFS_COMPRESSION="$OPTARG";;
I) INCLUDE_DIRECTORY="$OPTARG";;
S) SERVICE_LIST="$OPTARG";;
S) SERVICE_LIST="$SERVICE_LIST $OPTARG";;
s) SQUASHFS_COMPRESSION="$OPTARG";;
o) OUTPUT_FILE="$OPTARG";;
p) PACKAGE_LIST="$OPTARG";;
p) PACKAGE_LIST="$PACKAGE_LIST $OPTARG";;
C) BOOT_CMDLINE="$OPTARG";;
T) BOOT_TITLE="$OPTARG";;
v) LINUX_VERSION="$OPTARG";;
Expand All @@ -317,6 +260,12 @@ while getopts "a:b:r:c:C:T:Kk:l:i:I:S:s:o:p:v:h" opt; do
done
shift $((OPTIND - 1))
XBPS_REPOSITORY="$XBPS_REPOSITORY --repository=https://repo-default.voidlinux.org/current --repository=https://repo-default.voidlinux.org/current/musl"

case $BASE_ARCH in
x86_64*|i686*) ;;
*) >&2 echo architecture $BASE_ARCH not supported by mklive.sh; exit 1;;
esac

# Configure dracut to use overlayfs for the writable overlay.
BOOT_CMDLINE="$BOOT_CMDLINE rd.live.overlay.overlayfs=1 "

Expand Down Expand Up @@ -351,24 +300,21 @@ IMAGEDIR="$BUILDDIR/image"
ROOTFS="$IMAGEDIR/rootfs"
VOIDHOSTDIR="$BUILDDIR/void-host"
BOOT_DIR="$IMAGEDIR/boot"
ISOLINUX_DIR="$BOOT_DIR/isolinux"
GRUB_DIR="$BOOT_DIR/grub"
ISOLINUX_CFG="$ISOLINUX_DIR/isolinux.cfg"
LIMINE_DIR="$BOOT_DIR/limine"
CURRENT_STEP=0
STEP_COUNT=9
STEP_COUNT=8
[ -n "${INCLUDE_DIRECTORY}" ] && STEP_COUNT=$((STEP_COUNT+1))

: ${SYSLINUX_DATADIR:="$VOIDHOSTDIR"/usr/lib/syslinux}
: ${GRUB_DATADIR:="$VOIDHOSTDIR"/usr/share/grub}
: ${SPLASH_IMAGE:=data/splash.png}
: ${LIMINE_DATADIR:="$VOIDHOSTDIR"/usr/share/limine}
: ${SPLASH_IMAGE:=data/splash.bmp}
: ${XBPS_INSTALL_CMD:=xbps-install}
: ${XBPS_REMOVE_CMD:=xbps-remove}
: ${XBPS_QUERY_CMD:=xbps-query}
: ${XBPS_RINDEX_CMD:=xbps-rindex}
: ${XBPS_UHELPER_CMD:=xbps-uhelper}
: ${XBPS_RECONFIGURE_CMD:=xbps-reconfigure}

mkdir -p "$ROOTFS" "$VOIDHOSTDIR" "$ISOLINUX_DIR" "$GRUB_DIR"
mkdir -p "$ROOTFS" "$VOIDHOSTDIR" "$LIMINE_DIR"

print_step "Synchronizing XBPS repository data..."
copy_void_keys "$ROOTFS"
Expand Down Expand Up @@ -405,6 +351,10 @@ mkdir -p "$ROOTFS"/etc
[ -s data/motd ] && cp data/motd "$ROOTFS"/etc
[ -s data/issue ] && cp data/issue "$ROOTFS"/etc

# Copy the provided limine.cfg template
mkdir -p "$LIMINE_DIR"
[ -s limine/limine.cfg ] && cp limine/limine.cfg "$LIMINE_DIR"/

print_step "Installing void pkgs into the rootfs: ${PACKAGE_LIST} ..."
install_packages

Expand All @@ -420,11 +370,8 @@ fi
print_step "Generating initramfs image ($INITRAMFS_COMPRESSION)..."
generate_initramfs

print_step "Generating isolinux support for PC-BIOS systems..."
generate_isolinux_boot

print_step "Generating GRUB support for EFI systems..."
generate_grub_efi_boot
print_step "Generating limine bootloader support ..."
generate_limine_boot

print_step "Cleaning up rootfs..."
cleanup_rootfs
Expand All @@ -437,5 +384,3 @@ generate_iso_image

hsize=$(du -sh "$OUTPUT_FILE"|awk '{print $1}')
info_msg "Created $(readlink -f "$OUTPUT_FILE") ($hsize) successfully."