install stage 1: download resources for stage 2, undo additional GRUB configuration

undoes 4ba6486847
master
BodgeMaster 2023-07-02 20:54:58 +02:00
parent c4441aab07
commit 6b620664df
63 changed files with 679 additions and 25 deletions

View File

@ -389,14 +389,29 @@ run_in_target xbps-reconfigure -fa >> $LOGFILE 2>&1
echo "done" echo "done"
echo -n "Adding stage 2 installer... " echo -n "Adding stage 2 installer... "
wget --output-document=/mnt/target/install-stage2.sh https://lostcave.ddnss.de/git/BodgeMaster/void-minecraft-usb/raw/branch/master/install-stage2.sh >> $LOGFILE 2>&1
chmod 744 /mnt/target/install-stage2.sh >> $LOGFILE 2>&1 STAGE2_DIR="/mnt/target/opt/void-usb/installer"
echo "menuentry 'Continue Void-USB Installation' { function get_stage2_file {
echo 'Loading Linux...' [ -d "$STAGE2_DIR/$(dirname $1)" ] || mkdir -p "$STAGE2_DIR/$(dirname $1)"
linux $(run_in_target find /boot -type l -name "vmlinu*") quiet root=/dev/loop0 ro void-usb-container=UUID=$(lsblk --raw --noheadings --output UUID "$TARGET_PART_BIG") init=/install-stage2.sh wget --output-document="$STAGE2_DIR/$1" "$GIT_REPO_BASE/$1" >> $LOGFILE 2>&1
echo 'Loading initial ramdisk...' }
initrd $(run_in_target find /boot -type l -name "init*")
}" >> /mnt/target/boot/efi/LOADER/grub/custom_before.cfg get_stage2_file install-stage2.sh >> $LOGFILE 2>&1
chmod 744 "$STAGE2_DIR/install-stage2.sh" >> $LOGFILE 2>&1
get_stage2_file package_selections/sections.lst
readarray -t SECTIONS < "$STAGE2_DIR/package_selections/sections.lst"
for I in ${!SECTIONS[@]}; do
get_stage2_file "package_selections/${SECTIONS[$I]}/description.txt"
get_stage2_file "package_selections/${SECTIONS[$I]}/options.lst"
readarray -t OPTIONS < "$STAGE2_DIR/package_selections/${SECTIONS[$I]}/options.lst"
for J in ${!OPTIONS[@]}; do
get_stage2_file "package_selections/${SECTIONS[$I]}/${OPTIONS[$J]}"
done
done
#TODO: auto-login root and run install stage 2
echo "done" echo "done"
echo "Creating system image..." echo "Creating system image..."

View File

@ -42,23 +42,9 @@ Stage 2:
-> acpid -> acpid
-> ask user to connect to network using nmtui -> ask user to connect to network using nmtui
-> install packages -> install packages
-> setxkbmap xauth xorg-video-drivers mesa mesa-dri xorg-server elogind xorg-input-drivers xrandr acpilight xhost xinit xrdb xinput xgamma xset iceauth sessreg transset xcmsdb xkbutils xmodmap dejavu-fonts-ttf -> go through the list of choices for what the user can install
-> terminal? -> Minimum viable Xorg setup: setxkbmap xauth xorg-video-drivers mesa mesa-dri xorg-server elogind xorg-input-drivers xrandr acpilight xhost xinit xrdb xinput xgamma xset iceauth sessreg transset xcmsdb xkbutils xmodmap dejavu-fonts-ttf
-> browser? -> dont ask the user if there is only one option
-> prism launcher
-> java (multiple versions?)
-> pipewire (pulsemixer?)
-> ask about nvidia driver
-> install if needed
-> find out when and where to set `nvidia-drm.modeset=1`
-> ask whether to use CTWM or IceWM
-> short description of up and downsides
-> if CTWM, also install
-> xclock
-> if IceWM, also install
-> network-manager-applet
-> sound applet
-> configure zram swap
-> passwd -l root -> passwd -l root
-> populate /etc/skel -> populate /etc/skel
-> ultimate bashrc bc why not -> ultimate bashrc bc why not
@ -77,3 +63,4 @@ Stage 2:
-> add to groups -> add to groups
-> including sudo group -> including sudo group
-> build new squashfs image and reboot -> build new squashfs image and reboot
-> rm -r /opt/void-usb/installer

View File

@ -0,0 +1,19 @@
# Package Selections
These are intended to give the user a bunch of choices when installing the
system. For example whether to use XFE or a more fully featured set of applications.
## Sections
Sections contain choices of a specific category. The sections are stored in
folders containing the sections description and its options.
For each section, only one of the options can be chosen.
The file `sections.lst` holds a list of all available sections in the order
in which the user will be asked about them.
## Options
Options are shell scripts that are sourced by the stage 2 installer.
They hold variables for description, package list, pre-install checks,
and additional post-install actions.
Options are shown in the order in which they appear in `options.lst`.

View File

@ -0,0 +1 @@
Choose which audio packages to install

View File

@ -0,0 +1,11 @@
function check {
return 0
}
DESCRIPTION="No audio"
PACKAGES=""
function post-install {
echo "audio/none" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,3 @@
pipewire
pipewire-slim
none

View File

@ -0,0 +1,15 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
DESCRIPTION="Pipewire with GUI settings (Pavucontrol)"
PACKAGES="pipewire pavucontrol"
function post-install {
echo "audio/pipewire" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,15 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
DESCRIPTION="Pipewire with text-based settings (pulsemixer)"
PACKAGES="pipewire pulsemixer"
function post-install {
echo "audio/pipewire-slim" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1 @@
Choose a desktop setup to install

View File

@ -0,0 +1,12 @@
function check {
return 0
}
DESCRIPTION="BodgeMasters IceWM setup (recommended)"
# TODO
PACKAGES=""
function post-install {
echo "desktop/icewm-fancy" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,12 @@
function check {
return 0
}
DESCRIPTION="Lighter IceWM setup"
# TODO
PACKAGES=""
function post-install {
echo "desktop/icewm-light" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,11 @@
function check {
return 0
}
DESCRIPTION="No desktop - for advanced users that want to set things up themselves"
PACKAGES=""
function post-install {
echo "desktop/none" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,13 @@
function check {
return 0
}
# TODO: more information for the user
DESCRIPTION="OpenBox window manager (even more lightweight???)"
# TODO also add xclock
PACKAGES=""
function post-install {
echo "desktop/openbox" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,4 @@
icewm-fancy
icewm-light
openbox
none

View File

@ -0,0 +1,17 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
DESCRIPTION="All of the above"
#TODO
PACKAGES=""
function post-install {
# TODO: configure desktop backgounds if using IceWM
echo "extras/all" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,17 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
DESCRIPTION="All of the above except Minecraft"
#TODO
PACKAGES=""
function post-install {
# TODO: configure desktop backgounds if using IceWM
echo "extras/all-no-minecraft" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1 @@
Choose some extras to install

View File

@ -0,0 +1,16 @@
function check {
if grep "desktop/icewm" /tmp/stage-2-choices >/dev/null 2>&1; then
return 0
else
return 1
fi
}
DESCRIPTION="Add some desktop backgrounds and randomly choose one on login"
PACKAGES=""
function post-install {
# TODO: configure
echo "extras/desktop-backgrounds" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,16 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
DESCRIPTION="Prism Launcher for Minecraft"
#TODO: Java stuff
PACKAGES="PrismLauncher"
function post-install {
echo "extras/minecraft" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,17 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
#TODO
DESCRIPTION="??? (Minesweeper)"
#TODO
PACKAGES=""
function post-install {
echo "extras/minesweeper" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,11 @@
function check {
return 0
}
DESCRIPTION="None"
PACKAGES=""
function post-install {
echo "extras/none" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,7 @@
desktop-backgrounds
minesweeper
snake
minecraft
all-no-minecraft
all
none

View File

@ -0,0 +1,17 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
#TODO
DESCRIPTION="nSnake"
#TODO
PACKAGES="nSnake"
function post-install {
echo "extras/snake" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1 @@
Install a media player?

View File

@ -0,0 +1,11 @@
function check {
return 0
}
DESCRIPTION="No"
PACKAGES=""
function post-install {
echo "multimedia/none" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,2 @@
vlc
none

View File

@ -0,0 +1,16 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
DESCRIPTION="Install VLC"
#TODO: fluidsynth MIDI stuff
PACKAGES="vlc"
function post-install {
echo "multimedia/vlc" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,9 @@
Do you want to install the proprietary Nvidia driver?
By default, Void Linux ships with the open-source nouveau driver.
This is nice because it gets the system up and running when using an
Nvidia GPU but, due to Nvidias secrecy, it isnt particularly good.
Installing the proprietary driver is recommended if you want to use Nvidia GPUs.
Different versions are available. You can only choose one.

View File

@ -0,0 +1,11 @@
function check {
return 0
}
DESCRIPTION="Dont install."
PACKAGES=""
function post-install {
echo "nvidia/none" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,17 @@
function check {
if xbps-query glibc >/dev/null 2>&1; then
return 0
else
return 1
fi
}
DESCRIPTION="Latest Nvidia driver, supports GTX ??? series and up"
#TODO: optimus support?
PACKAGES="nvidia"
function post-install {
#TODO: nvidia modeset kernel parameter?
echo "nvidia/nvidia" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,17 @@
function check {
if xbps-query glibc >/dev/null 2>&1; then
return 0
else
return 1
fi
}
DESCRIPTION="Legacy Nvidia driver, version 390, supports GTX ??? series"
#TODO: Optimus support?
PACKAGES="nvidia390"
function post-install {
#TODO: nvidia modeset kernel parameter?
echo "nvidia/nvidia390" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,17 @@
function check {
if xbps-query glibc >/dev/null 2>&1; then
return 0
else
return 1
fi
}
DESCRIPTION="Legacy Nvidia driver, version 470, supports GTX ??? series"
#TODO: optimus support?
PACKAGES="nvidia470"
function post-install {
#TODO: nvidia modeset kernel parameter?
echo "nvidia/nvidia470" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,4 @@
none
nvidia
nvidia470
nvidia390

View File

@ -0,0 +1,13 @@
function check {
return 0
}
DESCRIPTION="Only add custom bashrc (advanced users)"
PACKAGES=""
function post-install {
#TODO: configure things
echo "pre-configure/bashrc" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1 @@
Do you want some quality-of-life configuration done?

View File

@ -0,0 +1,17 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
DESCRIPTION="Auto-start GUI session on login and add custom bashrc (recommended)"
PACKAGES=""
function post-install {
#TODO: configure things
echo "pre-configure/gui-and-bashrc" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,11 @@
function check {
return 0
}
DESCRIPTION="No (advanced users)"
PACKAGES=""
function post-install {
echo "pre-configure/none" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,3 @@
gui-and-bashrc
bashrc
none

View File

@ -0,0 +1,10 @@
nvidia
desktop
audio
systray
terminal
utilities
pre-configure
web
multimedia
extras

View File

@ -0,0 +1 @@
Do you want to install system tray applets?

View File

@ -0,0 +1,20 @@
function check {
if grep "desktop/icewm" /tmp/stage-2-choices >/dev/null 2>&1; then
if grep "audio/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 0
else
return 1
fi
else
return 1
fi
}
DESCRIPTION="Add tray icon for network"
#TODO
PACKAGES=""
function post-install {
echo "systray/network" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,20 @@
function check {
if grep "desktop/icewm" /tmp/stage-2-choices >/dev/null 2>&1; then
if grep "audio/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
else
return 1
fi
}
DESCRIPTION="Add tray icon for network and audio"
#TODO
PACKAGES=""
function post-install {
echo "systray/network-and-audio" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,11 @@
function check {
return 0
}
DESCRIPTION="Dont install additional tray icons"
PACKAGES=""
function post-install {
echo "systray/none" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,3 @@
network-and-audio
network
none

View File

@ -0,0 +1 @@
Which GUI terminal emulator do you want to install?

View File

@ -0,0 +1,15 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
DESCRIPTION="LXDE Terminal (recommended)"
PACKAGES="lxterminal"
function post-install {
echo "terminal/lxterminal" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,11 @@
function check {
return 0
}
DESCRIPTION="None (advanced users only)"
PACKAGES="none"
function post-install {
echo "terminal/none" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,3 @@
lxterminal
xterm
none

View File

@ -0,0 +1,15 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
DESCRIPTION="Xterm"
PACKAGES="xterm"
function post-install {
echo "terminal/xterm" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1 @@
Which set of desktop utilities do you want to install?

View File

@ -0,0 +1,17 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
#TODO
DESCRIPTION="Fully featured (list of things) (recommended)"
#TODO
PACKAGES=""
function post-install {
echo "utilities/desktop-integrated-guisysmon" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,17 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
#TODO
DESCRIPTION="Fully featured (list of things with htop)"
#TODO
PACKAGES=""
function post-install {
echo "utilities/desktop-integrated-htop" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,11 @@
function check {
return 0
}
DESCRIPTION="None"
PACKAGES=""
function post-install {
echo "utilities/none" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,5 @@
desktop-integrated-guisysmon
xfe-guisysmon
desktop-integrated-htop
xfe-htop
none

View File

@ -0,0 +1,17 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
#TODO
DESCRIPTION="Smaller set of desktop utilities (XFE + ???)"
#TODO
PACKAGES="xfe"
function post-install {
echo "utilities/xfe-guisysmon" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,15 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
DESCRIPTION="Smaller set of desktop utilities (XFE + Htop)"
PACKAGES="xfe htop"
function post-install {
echo "utilities/xfe-htop" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1 @@
Install a web browser?

View File

@ -0,0 +1,11 @@
function check {
return 0
}
DESCRIPTION="Install ELinks (terminal-based browser)"
PACKAGES="elinks"
function post-install {
echo "web/elinks" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,15 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
DESCRIPTION="Join the dark side with Chromium (Consider Firefox... You can still install Chromium later.)"
PACKAGES="chromium"
function post-install {
echo "web/evil" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,15 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
DESCRIPTION="Install Firefox (recommended)"
PACKAGES="firefox"
function post-install {
echo "web/firefox" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,15 @@
function check {
if grep "desktop/none" /tmp/stage-2-choices >/dev/null 2>&1; then
return 1
else
return 0
fi
}
DESCRIPTION="Install Firefox - Extended Support Release (ESR)"
PACKAGES="firefox-esr"
function post-install {
echo "web/firefox-esr" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,11 @@
function check {
return 0
}
DESCRIPTION="No web browser"
PACKAGES=""
function post-install {
echo "web/none" >> /tmp/stage-2-choices
}

View File

@ -0,0 +1,5 @@
firefox
firefox-esr
evil
elinks
none