|  |  | @ -2,22 +2,18 @@ TODO: | 
			
		
	
		
		
			
				
					
					|  |  |  | compare sizes of glibc and musl installations |  |  |  | compare sizes of glibc and musl installations | 
			
		
	
		
		
			
				
					
					|  |  |  | try running multiple MC versions on musl (incl ThatModPack) |  |  |  | try running multiple MC versions on musl (incl ThatModPack) | 
			
		
	
		
		
			
				
					
					|  |  |  | need xdg menu maker? |  |  |  | need xdg menu maker? | 
			
		
	
		
		
			
				
					
					|  |  |  | check if there are problems with GRUB’s --disk-module=native on real USB drives on real hardware |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | test that the (RAM) boot option allows you to install to the stick the system booted off |  |  |  | test that the (RAM) boot option allows you to install to the stick the system booted off | 
			
		
	
		
		
			
				
					
					|  |  |  | adjust required USB stick and RAM size in README |  |  |  | adjust required USB stick and RAM size in README | 
			
		
	
		
		
			
				
					
					|  |  |  | test kernel hooks and grub-config with all sorts of weird kernel/initramfs setups |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   - all names |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   - various compressions |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | do not rely on the RTC |  |  |  | do not rely on the RTC | 
			
		
	
		
		
			
				
					
					|  |  |  |   - change the message when configuring UTC/localtime to reflect that this is only for offline usage |  |  |  |   - change the message when configuring UTC/localtime to reflect that this is only for offline usage | 
			
		
	
		
		
			
				
					
					|  |  |  |   - use ntp to get time |  |  |  |   - use ntp to get time | 
			
		
	
		
		
			
				
					
					|  |  |  |     - only fall back to using rtc if offline |  |  |  |     - only fall back to using rtc if offline | 
			
		
	
		
		
			
				
					
					|  |  |  |   - do not set the RTC |  |  |  |   - do not set the RTC | 
			
		
	
		
		
			
				
					
					|  |  |  | move /boot to /run/void-usb/container instead of its own partition |  |  |  | move /boot to /run/void-usb/container instead of its own partition | 
			
		
	
		
		
			
				
					
					|  |  |  | look into UEFI specs and general availability of FAT16 support |  |  |  | show user-friendly status instead of scrolling output from all sorts of tools | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |   - if possible, shrink ESP and move GRUB to /run/void-usb/container |  |  |  | shutdown squashfs updater can’t get user input!? | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | add manufacturer where users select the target device |  |  |  | make our own or extract (if feasible) kb selection and time zone selection to hijack them for our purposes | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | show user-firently status instead of scrolling output from all sorts of tools |  |  |  | fix EFI boot | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | musl downsides: |  |  |  | musl downsides: | 
			
		
	
		
		
			
				
					
					|  |  |  |   - no nvidia drivers |  |  |  |   - no nvidia drivers | 
			
		
	
	
		
		
			
				
					|  |  | @ -26,91 +22,58 @@ musl upsides: | 
			
		
	
		
		
			
				
					
					|  |  |  |   - ?? |  |  |  |   - ?? | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | ideas: |  |  |  | Stage 1: | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | use shell script for init, call real init via exec |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | system lives on squashfs |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   -> overlayfs with tmpfs set up at boot |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   -> new system image generated and written back on shutdown |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     -> user-selectable ("Do you want to save changes to the system? This will take some time.") |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     -> fstrim (if applicable) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | swap on zram |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | f2fs for home |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | boot setup + dracut configuration |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   - root=/dev/loop0 ro |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   - custom dracut module |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     - pre-mount script |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       - mount /run/void-usb/container by UUID (passed from a kernel command line parameter) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       - losetup the squashfs img |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     - pre-pivot script? |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       - do we need one to move over the /run/void-usb/container mount to real root? |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   - overlayfs gets mounted from fstab |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | when backing up |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | - do not cross file system boundaries |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | - exclude /tmp, package cache, logs |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | - possibly only save the changes in separate squashfs images |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   - either until it takes up too much space or until a certain number of images exist |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   - consolidate when the user requests it or when exceeding the limit |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | Steps to install: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   - make our own or extract (if feasible) kb selection and time zone selection to hijack them for our purposes |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   - select kb layout |  |  |  |   - select kb layout | 
			
		
	
		
		
			
				
					
					|  |  |  |   - install base system |  |  |  |   - install base system | 
			
		
	
		
		
			
				
					
					|  |  |  |     -> select installation type (x86_32/x86_64/aarch64, glibc/musl) |  |  |  |     -> select installation type (x86_32/x86_64/aarch64, glibc/musl) | 
			
		
	
		
		
			
				
					
					|  |  |  |       -> if musl, add that bit to repo url |  |  |  |       -> if musl, add that bit to repo url | 
			
		
	
		
		
			
				
					
					|  |  |  |     -> configure overlayfs setup |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       -> startup script |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       -> shutdown squashfs updater |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         -> rc.shutdown? |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     -> configure time zone |  |  |  |     -> configure time zone | 
			
		
	
		
		
			
				
					
					|  |  |  |       -> selection dialog? |  |  |  |       -> selection dialog? | 
			
		
	
		
		
			
				
					
					|  |  |  |       -> symlink /etc/localtime |  |  |  |       -> symlink /etc/localtime | 
			
		
	
		
		
			
				
					
					|  |  |  |     -> set up an initramfs to mount the squashfs/overlayfs at boot time |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     -> prepare 2nd stage installation |  |  |  |     -> prepare 2nd stage installation | 
			
		
	
		
		
			
				
					
					|  |  |  |       -> auto login root and put script in .bashrc |  |  |  |       -> auto login root and put stage 2 script in .bashrc | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         -> better method? |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     -> build squashfs |  |  |  |     -> build squashfs | 
			
		
	
		
		
			
				
					
					|  |  |  |   - prompt user to reboot to finish installation |  |  |  |   - prompt user to reboot to finish installation | 
			
		
	
		
		
			
				
					
					|  |  |  |   - second stage installation |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     -> configure services |  |  |  | Stage 2: | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> dbus |  |  |  |   -> configure services | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> NetworkManager |  |  |  |     -> dbus | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> acpid |  |  |  |     -> NetworkManager | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     -> ask user to connect to network using nmtui |  |  |  |     -> acpid | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     -> install packages |  |  |  |   -> ask user to connect to network using nmtui | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> 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 |  |  |  |   -> install packages | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> terminal? |  |  |  |     -> 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? |  |  |  |     -> terminal? | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> prism launcher |  |  |  |     -> browser? | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> java (multiple versions?) |  |  |  |     -> prism launcher | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> pipewire (pulsemixer?) |  |  |  |     -> java (multiple versions?) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> ask about nvidia driver |  |  |  |     -> pipewire (pulsemixer?) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         -> install if needed |  |  |  |     -> ask about nvidia driver | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         -> find out when and where to set `nvidia-drm.modeset=1` |  |  |  |       -> install if needed | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> ask whether to use CTWM or IceWM |  |  |  |       -> find out when and where to set `nvidia-drm.modeset=1` | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         -> short description of up and downsides |  |  |  |     -> ask whether to use CTWM or IceWM | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         -> if CTWM, also install |  |  |  |       -> short description of up and downsides | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |           -> xclock |  |  |  |       -> if CTWM, also install | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         -> if IceWM, also install |  |  |  |         -> xclock | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |           -> network-manager-applet |  |  |  |       -> if IceWM, also install | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |           -> sound applet |  |  |  |         -> network-manager-applet | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         -> configure zram swap |  |  |  |         -> sound applet | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     -> passwd -l root |  |  |  |       -> configure zram swap | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     -> populate /etc/skel |  |  |  |   -> passwd -l root | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> ultimate bashrc bc why not |  |  |  |   -> populate /etc/skel | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> first run message in xinitrc |  |  |  |     -> ultimate bashrc bc why not | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         -> auto-deletes itself |  |  |  |     -> first run message in xinitrc | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         -> displays README.txt on root dir of the F2FS partition |  |  |  |       -> auto-deletes itself | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> if using CTWM |  |  |  |       -> displays README.txt on root dir of the F2FS partition | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         -> put xclock in xinitrc |  |  |  |     -> if using CTWM | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         -> configure more sane defaults |  |  |  |       -> put xclock in xinitrc | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> prepend bashrc with a thing that checks of xorg is running |  |  |  |       -> configure more sane defaults | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         -> if not, run startx and ask user whether to shut down, reboot, or do nothing afterwards |  |  |  |     -> prepend bashrc with a thing that checks of xorg is running | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     -> set up user |  |  |  |       -> if not, run startx and ask user whether to shut down, reboot, or do nothing afterwards | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> ask for username |  |  |  |   -> set up user | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> run useradd (non-interactively) |  |  |  |     -> ask for username | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> run passwd (interactively) |  |  |  |     -> run useradd (non-interactively) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       -> add to groups |  |  |  |     -> run passwd (interactively) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         -> including sudo group |  |  |  |     -> add to groups | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     -> build new squashfs image and reboot |  |  |  |       -> including sudo group | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   -> build new squashfs image and reboot | 
			
		
	
	
		
		
			
				
					| 
						
						
						
						 |  | 
 |