From b160717a3acccb4d046b2cf6843c4e111428ad2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Wed, 10 May 2023 11:35:43 +0300 Subject: [PATCH 01/53] initial commit --- .gitignore | 3 +++ chroot-script.sh | 51 ++++++++++++++++++++++++++++++++++++++++++ create-image.sh | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ start-vm.sh | 2 ++ 4 files changed, 114 insertions(+) create mode 100644 .gitignore create mode 100755 chroot-script.sh create mode 100755 create-image.sh create mode 100755 start-vm.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7db02ff --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.raw +cache/ +mnt/ diff --git a/chroot-script.sh b/chroot-script.sh new file mode 100755 index 0000000..b396870 --- /dev/null +++ b/chroot-script.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +set -e + +HOSTNAME="lioxbox" +TIMEZONE="Europe/Vilnius" + +printf "UUID=$UUID\t/\text4\terrors=remount-ro\t0 1" > /etc/fstab + +apt -y install lsb-release +CODENAME=$(lsb_release --codename --short) +cat > /etc/apt/sources.list << EOF +deb https://deb.debian.org/debian/ $CODENAME main contrib non-free +deb-src https://deb.debian.org/debian/ $CODENAME main contrib non-free + +deb https://security.debian.org/debian-security $CODENAME-security main contrib non-free +deb-src https://security.debian.org/debian-security $CODENAME-security main contrib non-free + +deb https://deb.debian.org/debian/ $CODENAME-updates main contrib non-free +deb-src https://deb.debian.org/debian/ $CODENAME-updates main contrib non-free +EOF + +apt -y update + +rm /etc/localtime +echo $TIMEZONE > /etc/timezone +dpkg-reconfigure -f noninteractive tzdata + +apt -y install locales +sed -i "s/# en_US.UTF-8/en_US.UTF-8/" /etc/locale.gen +sed -i "s/# lt_LT.UTF-8/lt_LT.UTF-8/" /etc/locale.gen +locale-gen + +echo $HOSTNAME > /etc/hostname +cat > /etc/hosts << EOF +127.0.0.1 localhost +127.0.1.1 $HOSTNAME + +# The following lines are desirable for IPv6 capable hosts +::1 localhost ip6-localhost ip6-loopback +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters +EOF + +apt -y install linux-image-amd64 firmware-linux network-manager grub2 + +echo "root:$ROOT_PASSWD" | chpasswd + +echo "GRUB_DISABLE_OS_PROBER=true" >> /etc/default/grub +update-grub +grub-install --root-directory / $IMAGE_LODEVICE diff --git a/create-image.sh b/create-image.sh new file mode 100755 index 0000000..d4b0a8f --- /dev/null +++ b/create-image.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +set -e + +BUILD_DIR="./mnt" +BUILD_IMAGE="./image.raw" +IMAGE_SIZE_MB=4096 +ARCH="amd64" + +if [ -d $BUILD_DIR ] +then + echo "Directory \`$BUILD_DIR\` exists" + exit 1 +fi + +if [ -f $BUILD_IMAGE ] +then + read -p "Image \`$BUILD_IMAGE\` already exists. Rebuild? [y/N] " prompt + if [[ $prompt != "y" && $prompt != "Y" ]] + then + echo "Aborting..." + exit 2 + fi +fi + +echo -n "Enter root password: " +read -s ROOT_PASSWD +echo "" + +dd if=/dev/zero of=$BUILD_IMAGE bs=1M count=$IMAGE_SIZE_MB status=progress +mkdir $BUILD_DIR +parted image.raw mklabel msdos +echo -e '1M,+,L' | sudo sfdisk $BUILD_IMAGE + +echo -e '1M,+,L' | sfdisk ./image.raw +IMAGE_LODEVICE=$(losetup -f $BUILD_IMAGE --partscan --show) +IMAGE_ROOTPART=${IMAGE_LODEVICE}p1 +echo "Image device $IMAGE_LODEVICE" +mkfs.ext4 $IMAGE_ROOTPART + +mount $IMAGE_ROOTPART $BUILD_DIR +debootstrap --cache-dir=$(realpath "./cache") --arch $ARCH stable $BUILD_DIR https://deb.debian.org/debian + +mount --make-rslave --rbind /proc $BUILD_DIR/proc +mount --make-rslave --rbind /sys $BUILD_DIR/sys +mount --make-rslave --rbind /dev $BUILD_DIR/dev +mount --make-rslave --rbind /run $BUILD_DIR/run +cp ./chroot-script.sh $BUILD_DIR +UUID=$(lsblk -f $IMAGE_ROOTPART | tail -n 1 | tr -s " " | cut -d " " -f 4) +chroot $BUILD_DIR /bin/bash -c \ + "UUID="$UUID" \ + ROOT_PASSWD="$ROOT_PASSWD" \ + IMAGE_LODEVICE="$IMAGE_LODEVICE" \ + /bin/bash /chroot-script.sh" + +umount -R $BUILD_DIR +losetup -D +rmdir $BUILD_DIR diff --git a/start-vm.sh b/start-vm.sh new file mode 100755 index 0000000..9a8b59c --- /dev/null +++ b/start-vm.sh @@ -0,0 +1,2 @@ +#!/bin/bash +qemu-system-x86_64 -smp 2 -m 4G -accel kvm -cpu host -machine q35 -drive file=./image.raw,format=raw -nic user,model=e1000 From e1a9b6a84f9e428e3a62fd7d25dbd1b6013eb6bc Mon Sep 17 00:00:00 2001 From: Joris Pevcevicius Date: Wed, 10 May 2023 18:18:10 +0300 Subject: [PATCH 02/53] add more packages --- chroot-script.sh | 24 ++++++++++++++++++++++++ clean.sh | 10 ++++++++++ create-image.sh | 20 ++++++++++++++++---- 3 files changed, 50 insertions(+), 4 deletions(-) create mode 100755 clean.sh diff --git a/chroot-script.sh b/chroot-script.sh index b396870..0234486 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -5,6 +5,8 @@ set -e HOSTNAME="lioxbox" TIMEZONE="Europe/Vilnius" +PATH=$PATH:/usr/sbin + printf "UUID=$UUID\t/\text4\terrors=remount-ro\t0 1" > /etc/fstab apt -y install lsb-release @@ -44,6 +46,28 @@ EOF apt -y install linux-image-amd64 firmware-linux network-manager grub2 +# TODO: add sublime text and vscode +apt -y install \ +task-laptop \ +plasma-desktop kwin-x11 sddm sddm-theme-breeze xserver-xorg \ +dolphin konsole kwrite ark gwenview okular \ +firefox-esr wget \ +libreoffice-writer libreoffice-calc libreoffice-impress \ +libreoffice-kf5 libreoffice-plasma \ +xserver-xorg-video-all \ +vim-gtk joe gedit scite geany geany-plugins codeblocks codeblocks-contrib \ +kate \ +zsh mc emacs nano git \ +make gcc g++ gdb ddd valgrind \ +python3 \ +strace lsof tree curl dnsutils screen \ +iotop tmux htop kpartx tsocks units mlocate \ +bridge-utils bash-completion rfkill apt-file ntp locales \ +iptables-persistent \ +localepurge \ +gdb-doc manpages \ +python3-requests + echo "root:$ROOT_PASSWD" | chpasswd echo "GRUB_DISABLE_OS_PROBER=true" >> /etc/default/grub diff --git a/clean.sh b/clean.sh new file mode 100755 index 0000000..9521901 --- /dev/null +++ b/clean.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +set -e + +if [ -d ./mnt ] +then + umount -R ./mnt +fi +losetup -D +rm -rf image.raw ./mnt diff --git a/create-image.sh b/create-image.sh index d4b0a8f..a2cc031 100755 --- a/create-image.sh +++ b/create-image.sh @@ -2,10 +2,19 @@ set -e +if [ $(id -u) -ne 0 ] +then + echo "Script must be run as root" + exit 1 +fi + BUILD_DIR="./mnt" BUILD_IMAGE="./image.raw" -IMAGE_SIZE_MB=4096 +IMAGE_SIZE_MB=8192 ARCH="amd64" +CACHE_DIR="./cache" + +CACHE_DIR=$(realpath $CACHE_DIR) if [ -d $BUILD_DIR ] then @@ -13,6 +22,11 @@ then exit 1 fi +if [ ! -d $CACHE_DIR ] +then + mkdir $CACHE_DIR +fi + if [ -f $BUILD_IMAGE ] then read -p "Image \`$BUILD_IMAGE\` already exists. Rebuild? [y/N] " prompt @@ -30,9 +44,7 @@ echo "" dd if=/dev/zero of=$BUILD_IMAGE bs=1M count=$IMAGE_SIZE_MB status=progress mkdir $BUILD_DIR parted image.raw mklabel msdos -echo -e '1M,+,L' | sudo sfdisk $BUILD_IMAGE - -echo -e '1M,+,L' | sfdisk ./image.raw +echo -e '1M,+,L' | sfdisk $BUILD_IMAGE IMAGE_LODEVICE=$(losetup -f $BUILD_IMAGE --partscan --show) IMAGE_ROOTPART=${IMAGE_LODEVICE}p1 echo "Image device $IMAGE_LODEVICE" From 01a974719e6d61f61e3beaeffd27786d36360313 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Thu, 11 May 2023 23:36:55 +0300 Subject: [PATCH 03/53] added configs from liox --- chroot-script.sh | 32 ++-- config.sh | 13 ++ create-image.sh | 30 ++-- includes.chroot/etc/locale.nopurge | 19 +++ includes.chroot/etc/sddm.conf.d/01-theme.conf | 6 + .../etc/skel/.config/Code/User/settings.json | 3 + .../etc/skel/.config/codeblocks/default.conf | 41 +++++ .../etc/skel/.config/kactivitymanagerdrc | 5 + includes.chroot/etc/skel/.config/kdeglobals | 3 + .../etc/skel/.config/kscreenlockerrc | 6 + includes.chroot/etc/skel/.config/kwinrc | 12 ++ includes.chroot/etc/skel/.config/kxkbrc | 13 ++ .../etc/skel/.config/plasma-localerc | 5 + .../plasma-org.kde.plasma.desktop-appletsrc | 154 ++++++++++++++++++ includes.chroot/etc/skel/.config/plasmarc | 2 + .../etc/skel/Desktop/Docs/GDB.html | 1 + .../etc/skel/Desktop/SciTE.desktop | 1 + .../etc/skel/Desktop/codeblocks.desktop | 1 + .../etc/skel/Desktop/emacs.desktop | 1 + .../etc/skel/Desktop/firefox-esr.desktop | 1 + .../etc/skel/Desktop/geany.desktop | 1 + .../etc/skel/Desktop/gedit.desktop | 1 + includes.chroot/etc/skel/Desktop/gvim.desktop | 1 + .../etc/skel/Desktop/org.kde.kate.desktop | 1 + .../etc/skel/Desktop/org.kde.kcalc.desktop | 1 + .../etc/skel/Desktop/org.kde.konsole.desktop | 1 + .../etc/skel/Desktop/sublime_text.desktop | 1 + .../etc/systemd/network/99-default.link | 0 .../usr/lib/firefox-esr/mozilla.cfg | 13 ++ .../browser/defaults/preferences/00-liox.js | 7 + .../share/liox-config/lmio-logo-center.png | Bin 0 -> 26690 bytes .../usr/share/liox-config/lmio-logo-left.png | Bin 0 -> 26693 bytes .../share/sddm/themes/breeze/theme.conf.user | 3 + open-image.sh | 35 ++++ 34 files changed, 392 insertions(+), 22 deletions(-) create mode 100755 config.sh create mode 100644 includes.chroot/etc/locale.nopurge create mode 100644 includes.chroot/etc/sddm.conf.d/01-theme.conf create mode 100644 includes.chroot/etc/skel/.config/Code/User/settings.json create mode 100644 includes.chroot/etc/skel/.config/codeblocks/default.conf create mode 100644 includes.chroot/etc/skel/.config/kactivitymanagerdrc create mode 100644 includes.chroot/etc/skel/.config/kdeglobals create mode 100644 includes.chroot/etc/skel/.config/kscreenlockerrc create mode 100644 includes.chroot/etc/skel/.config/kwinrc create mode 100644 includes.chroot/etc/skel/.config/kxkbrc create mode 100644 includes.chroot/etc/skel/.config/plasma-localerc create mode 100644 includes.chroot/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc create mode 100644 includes.chroot/etc/skel/.config/plasmarc create mode 120000 includes.chroot/etc/skel/Desktop/Docs/GDB.html create mode 120000 includes.chroot/etc/skel/Desktop/SciTE.desktop create mode 120000 includes.chroot/etc/skel/Desktop/codeblocks.desktop create mode 120000 includes.chroot/etc/skel/Desktop/emacs.desktop create mode 120000 includes.chroot/etc/skel/Desktop/firefox-esr.desktop create mode 120000 includes.chroot/etc/skel/Desktop/geany.desktop create mode 120000 includes.chroot/etc/skel/Desktop/gedit.desktop create mode 120000 includes.chroot/etc/skel/Desktop/gvim.desktop create mode 120000 includes.chroot/etc/skel/Desktop/org.kde.kate.desktop create mode 120000 includes.chroot/etc/skel/Desktop/org.kde.kcalc.desktop create mode 120000 includes.chroot/etc/skel/Desktop/org.kde.konsole.desktop create mode 120000 includes.chroot/etc/skel/Desktop/sublime_text.desktop create mode 100644 includes.chroot/etc/systemd/network/99-default.link create mode 100644 includes.chroot/usr/lib/firefox-esr/mozilla.cfg create mode 100644 includes.chroot/usr/share/firefox-esr/browser/defaults/preferences/00-liox.js create mode 100644 includes.chroot/usr/share/liox-config/lmio-logo-center.png create mode 100644 includes.chroot/usr/share/liox-config/lmio-logo-left.png create mode 100644 includes.chroot/usr/share/sddm/themes/breeze/theme.conf.user create mode 100755 open-image.sh diff --git a/chroot-script.sh b/chroot-script.sh index 0234486..33ee499 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -2,8 +2,7 @@ set -e -HOSTNAME="lioxbox" -TIMEZONE="Europe/Vilnius" +source config.sh PATH=$PATH:/usr/sbin @@ -29,8 +28,11 @@ echo $TIMEZONE > /etc/timezone dpkg-reconfigure -f noninteractive tzdata apt -y install locales -sed -i "s/# en_US.UTF-8/en_US.UTF-8/" /etc/locale.gen -sed -i "s/# lt_LT.UTF-8/lt_LT.UTF-8/" /etc/locale.gen +echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen +echo "lt_LT.UTF-8 UTF-8" >> /etc/locale.gen +echo "pl_PL.UTF-8 UTF-8" >> /etc/locale.gen +echo "ru_RU.UTF-8 UTF-8" >> /etc/locale.gen +echo "LANG=\"en_US.UTF-8\"" > /etc/default/locale locale-gen echo $HOSTNAME > /etc/hostname @@ -44,10 +46,7 @@ ff02::1 ip6-allnodes ff02::2 ip6-allrouters EOF -apt -y install linux-image-amd64 firmware-linux network-manager grub2 - -# TODO: add sublime text and vscode -apt -y install \ +apt -y install linux-image-amd64 firmware-linux network-manager grub2 \ task-laptop \ plasma-desktop kwin-x11 sddm sddm-theme-breeze xserver-xorg \ dolphin konsole kwrite ark gwenview okular \ @@ -66,9 +65,22 @@ bridge-utils bash-completion rfkill apt-file ntp locales \ iptables-persistent \ localepurge \ gdb-doc manpages \ -python3-requests +python3-requests \ +kcalc apt-transport-https + +mkdir -p /etc/apt/trusted.gpg.d/ +echo "deb https://download.sublimetext.com/ apt/stable/" | tee /etc/apt/sources.list.d/sublime-text.list +echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" | tee /etc/apt/sources.list.d/vscode.list +wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/sublimehq-archive.gpg +wget -qO - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/ms-vscode-keyring.gpg +apt -y update +apt -y install sublime-text code -echo "root:$ROOT_PASSWD" | chpasswd +useradd -m -s /bin/bash -p ${D0_PWD_HASH} d0 +useradd -m -s /bin/bash -p ${D1_PWD_HASH} d1 +useradd -m -s /bin/bash -p ${D2_PWD_HASH} d2 +useradd -m -s /bin/bash -p ${LIOADMIN_PWD_HASH} lioadmin +usermod -a -G sudo lioadmin echo "GRUB_DISABLE_OS_PROBER=true" >> /etc/default/grub update-grub diff --git a/config.sh b/config.sh new file mode 100755 index 0000000..a5067e3 --- /dev/null +++ b/config.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -e + +HOSTNAME="lioxbox" +TIMEZONE="Europe/Vilnius" +BUILD_DIR="./mnt" +BUILD_IMAGE="./image.raw" +IMAGE_SIZE_MB=8192 +ARCH="amd64" +CACHE_DIR="./cache" + +CACHE_DIR=$(realpath $CACHE_DIR) diff --git a/create-image.sh b/create-image.sh index a2cc031..e7ba54b 100755 --- a/create-image.sh +++ b/create-image.sh @@ -8,13 +8,7 @@ then exit 1 fi -BUILD_DIR="./mnt" -BUILD_IMAGE="./image.raw" -IMAGE_SIZE_MB=8192 -ARCH="amd64" -CACHE_DIR="./cache" - -CACHE_DIR=$(realpath $CACHE_DIR) +source config.sh if [ -d $BUILD_DIR ] then @@ -37,9 +31,17 @@ then fi fi -echo -n "Enter root password: " -read -s ROOT_PASSWD -echo "" +echo -n "Enter lioadmin user " +LIOADMIN_PWD_HASH=$(mkpasswd -m sha-512) + +echo -n "Enter d0 user " +D0_PWD_HASH=$(mkpasswd -m sha-512) + +echo -n "Enter d1 user " +D1_PWD_HASH=$(mkpasswd -m sha-512) + +echo -n "Enter d2 user " +D2_PWD_HASH=$(mkpasswd -m sha-512) dd if=/dev/zero of=$BUILD_IMAGE bs=1M count=$IMAGE_SIZE_MB status=progress mkdir $BUILD_DIR @@ -57,11 +59,15 @@ mount --make-rslave --rbind /proc $BUILD_DIR/proc mount --make-rslave --rbind /sys $BUILD_DIR/sys mount --make-rslave --rbind /dev $BUILD_DIR/dev mount --make-rslave --rbind /run $BUILD_DIR/run -cp ./chroot-script.sh $BUILD_DIR +cp ./chroot-script.sh ./config.sh $BUILD_DIR +cp -r ./includes.chroot/* $BUILD_DIR UUID=$(lsblk -f $IMAGE_ROOTPART | tail -n 1 | tr -s " " | cut -d " " -f 4) chroot $BUILD_DIR /bin/bash -c \ "UUID="$UUID" \ - ROOT_PASSWD="$ROOT_PASSWD" \ + D0_PWD_HASH="${D0_PWD_HASH}" \ + D1_PWD_HASH="${D1_PWD_HASH}" \ + D2_PWD_HASH="${D2_PWD_HASH}" \ + LIOADMIN_PWD_HASH="${LIOADMIN_PWD_HASH}" \ IMAGE_LODEVICE="$IMAGE_LODEVICE" \ /bin/bash /chroot-script.sh" diff --git a/includes.chroot/etc/locale.nopurge b/includes.chroot/etc/locale.nopurge new file mode 100644 index 0000000..40976f1 --- /dev/null +++ b/includes.chroot/etc/locale.nopurge @@ -0,0 +1,19 @@ +# clean up man pages +MANDELETE + +# delete new locales without bothering +DONTBOTHERNEWLOCALE + +# list of locales to keep +en +en_US +en_US.UTF-8 +lt +lt_LT +lt_LT.UTF-8 +pl +pl_PL +pl_PL.UTF-8 +ru +ru_RU +ru_RU.UTF-8 diff --git a/includes.chroot/etc/sddm.conf.d/01-theme.conf b/includes.chroot/etc/sddm.conf.d/01-theme.conf new file mode 100644 index 0000000..b2163fa --- /dev/null +++ b/includes.chroot/etc/sddm.conf.d/01-theme.conf @@ -0,0 +1,6 @@ +[Users] +MinimumUid=99999 +MaximumUid=99999 +RememberLastUser=false +[Theme] +Current=breeze diff --git a/includes.chroot/etc/skel/.config/Code/User/settings.json b/includes.chroot/etc/skel/.config/Code/User/settings.json new file mode 100644 index 0000000..e3d7583 --- /dev/null +++ b/includes.chroot/etc/skel/.config/Code/User/settings.json @@ -0,0 +1,3 @@ +{ + "C_Cpp.intelliSenseCacheSize": 0 +} diff --git a/includes.chroot/etc/skel/.config/codeblocks/default.conf b/includes.chroot/etc/skel/.config/codeblocks/default.conf new file mode 100644 index 0000000..f6a213b --- /dev/null +++ b/includes.chroot/etc/skel/.config/codeblocks/default.conf @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/includes.chroot/etc/skel/.config/kactivitymanagerdrc b/includes.chroot/etc/skel/.config/kactivitymanagerdrc new file mode 100644 index 0000000..ecb4c21 --- /dev/null +++ b/includes.chroot/etc/skel/.config/kactivitymanagerdrc @@ -0,0 +1,5 @@ +[activities] +ee166291-48e1-4288-a28b-863f3fe2f80c=Default + +[main] +currentActivity=ee166291-48e1-4288-a28b-863f3fe2f80c diff --git a/includes.chroot/etc/skel/.config/kdeglobals b/includes.chroot/etc/skel/.config/kdeglobals new file mode 100644 index 0000000..0fd540f --- /dev/null +++ b/includes.chroot/etc/skel/.config/kdeglobals @@ -0,0 +1,3 @@ +[KDE] +AnimationDurationFactor=0.25 +SingleClick=false diff --git a/includes.chroot/etc/skel/.config/kscreenlockerrc b/includes.chroot/etc/skel/.config/kscreenlockerrc new file mode 100644 index 0000000..c578cbc --- /dev/null +++ b/includes.chroot/etc/skel/.config/kscreenlockerrc @@ -0,0 +1,6 @@ +[$Version] +update_info=kscreenlocker.upd:0.1-autolock + +[Daemon] +Autolock=false +LockOnResume=false diff --git a/includes.chroot/etc/skel/.config/kwinrc b/includes.chroot/etc/skel/.config/kwinrc new file mode 100644 index 0000000..80b9629 --- /dev/null +++ b/includes.chroot/etc/skel/.config/kwinrc @@ -0,0 +1,12 @@ +[Effect-PresentWindows] +BorderActivateAll=9 + +[ElectricBorders] +TopLeft=None + +[TabBox] +BorderActivate=9 + +[org.kde.kdecoration2] +ButtonsOnLeft=M +ButtonsOnRight=IAX diff --git a/includes.chroot/etc/skel/.config/kxkbrc b/includes.chroot/etc/skel/.config/kxkbrc new file mode 100644 index 0000000..f08623d --- /dev/null +++ b/includes.chroot/etc/skel/.config/kxkbrc @@ -0,0 +1,13 @@ +[Layout] +DisplayNames=, +LayoutList=us,lt +LayoutLoopCount=-1 +Model=pc101 +Options=grp:alt_shift_toggle +ResetOldOptions=true +ShowFlag=true +ShowLabel=true +ShowLayoutIndicator=true +ShowSingle=false +SwitchMode=Global +Use=true diff --git a/includes.chroot/etc/skel/.config/plasma-localerc b/includes.chroot/etc/skel/.config/plasma-localerc new file mode 100644 index 0000000..4fc2614 --- /dev/null +++ b/includes.chroot/etc/skel/.config/plasma-localerc @@ -0,0 +1,5 @@ +[Formats] +LANG=lt_LT.UTF-8 + +[Translations] +LANGUAGE=en_US diff --git a/includes.chroot/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc b/includes.chroot/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc new file mode 100644 index 0000000..26fa9f9 --- /dev/null +++ b/includes.chroot/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc @@ -0,0 +1,154 @@ +[ActionPlugins][0] +MidButton;NoModifier=org.kde.paste +RightButton;NoModifier=org.kde.contextmenu +wheel:Vertical;NoModifier=org.kde.switchdesktop + +[ActionPlugins][1] +RightButton;NoModifier=org.kde.contextmenu + +[Containments][1] +ItemGeometriesHorizontal= +activityId=ee166291-48e1-4288-a28b-863f3fe2f80c +formfactor=0 +immutability=1 +lastScreen=0 +location=0 +plugin=org.kde.plasma.folder +wallpaperplugin=org.kde.image + +[Containments][1][ConfigDialog] +DialogHeight=540 +DialogWidth=720 + +[Containments][1][Configuration] +PreloadWeight=34 + +[Containments][1][Wallpaper][org.kde.image][General] +Image=file:///usr/share/liox-config/lmio-logo-center.png +SlidePaths=/usr/share/wallpapers + +[Containments][2] +activityId= +formfactor=2 +immutability=1 +lastScreen=0 +location=4 +plugin=org.kde.panel +wallpaperplugin=org.kde.image + +[Containments][2][Applets][12] +immutability=1 +plugin=org.kde.plasma.digitalclock + +[Containments][2][Applets][12][Configuration] +PreloadWeight=34 + +[Containments][2][Applets][13] +immutability=1 +plugin=org.kde.plasma.showdesktop + +[Containments][2][Applets][13][Configuration] +PreloadWeight=34 + +[Containments][2][Applets][3] +immutability=1 +plugin=org.kde.plasma.kickoff + +[Containments][2][Applets][3][Configuration] +PreloadWeight=92 + +[Containments][2][Applets][3][Configuration][General] +favoritesPortedToKAstats=true +systemApplications=systemsettings.desktop,org.kde.kinfocenter.desktop + +[Containments][2][Applets][3][Configuration][Shortcuts] +global=Alt+F1 + +[Containments][2][Applets][3][Shortcuts] +global=Alt+F1 + +[Containments][2][Applets][4] +immutability=1 +plugin=org.kde.plasma.pager + +[Containments][2][Applets][4][Configuration] +PreloadWeight=34 + +[Containments][2][Applets][5] +immutability=1 +plugin=org.kde.plasma.icontasks + +[Containments][2][Applets][5][Configuration] +PreloadWeight=34 + +[Containments][2][Applets][5][Configuration][General] +launchers=preferred://filemanager,preferred://browser + +[Containments][2][Applets][6] +immutability=1 +plugin=org.kde.plasma.systemtray + +[Containments][2][Applets][6][Configuration] +PreloadWeight=39 +SystrayContainmentId=7 + +[Containments][2][Configuration] +PreloadWeight=34 + +[Containments][2][General] +AppletOrder=3;4;5;6;12;13 + +[Containments][7] +activityId= +formfactor=2 +immutability=1 +lastScreen=0 +location=4 +plugin=org.kde.plasma.private.systemtray +wallpaperplugin=org.kde.image + +[Containments][7][Applets][10] +immutability=1 +plugin=org.kde.plasma.devicenotifier + +[Containments][7][Applets][10][Configuration] +PreloadWeight=34 + +[Containments][7][Applets][11] +immutability=1 +plugin=org.kde.plasma.notifications + +[Containments][7][Applets][11][Configuration] +PreloadWeight=34 + +[Containments][7][Applets][14] +immutability=1 +plugin=org.kde.plasma.battery + +[Containments][7][Applets][14][Configuration] +PreloadWeight=34 + +[Containments][7][Applets][8] +immutability=1 +plugin=org.kde.plasma.volume + +[Containments][7][Applets][8][Configuration] +PreloadWeight=34 + +[Containments][7][Applets][9] +immutability=1 +plugin=org.kde.plasma.clipboard + +[Containments][7][Applets][9][Configuration] +PreloadWeight=34 + +[Containments][7][Configuration] +PreloadWeight=34 + +[Containments][7][General] +extraItems=org.kde.plasma.mediacontroller,org.kde.kupapplet,org.kde.plasma.battery,org.kde.plasma.devicenotifier,org.kde.plasma.notifications,org.kde.plasma.volume,org.kde.plasma.clipboard +knownItems=org.kde.plasma.mediacontroller,org.kde.kupapplet,org.kde.plasma.battery,org.kde.plasma.devicenotifier,org.kde.plasma.notifications,org.kde.plasma.volume,org.kde.plasma.clipboard + +[ScreenMapping] +itemsOnDisabledScreens=0,13,desktop:/gedit.desktop,desktop:/SciTE.desktop,desktop:/Docs,desktop:/sublime_text.desktop,desktop:/emacs.desktop,desktop:/geany.desktop,desktop:/org.kde.kate.desktop,desktop:/org.kde.konsole.desktop,desktop:/code.desktop,desktop:/codeblocks.desktop,desktop:/firefox-esr.desktop,desktop:/gvim.desktop,desktop:/org.kde.kcalc.desktop +screenMapping=desktop:/gedit.desktop,0,desktop:/SciTE.desktop,0,desktop:/Docs,0,desktop:/sublime_text.desktop,0,desktop:/emacs.desktop,0,desktop:/geany.desktop,0,desktop:/org.kde.kate.desktop,0,desktop:/org.kde.konsole.desktop,0,desktop:/code.desktop,0,desktop:/codeblocks.desktop,0,desktop:/firefox-esr.desktop,0,desktop:/gvim.desktop,0,desktop:/org.kde.kcalc.desktop,0 diff --git a/includes.chroot/etc/skel/.config/plasmarc b/includes.chroot/etc/skel/.config/plasmarc new file mode 100644 index 0000000..442d3df --- /dev/null +++ b/includes.chroot/etc/skel/.config/plasmarc @@ -0,0 +1,2 @@ +[Wallpapers] +usersWallpapers=/usr/share/liox-config/lmio-logo-center.png diff --git a/includes.chroot/etc/skel/Desktop/Docs/GDB.html b/includes.chroot/etc/skel/Desktop/Docs/GDB.html new file mode 120000 index 0000000..87ed2d4 --- /dev/null +++ b/includes.chroot/etc/skel/Desktop/Docs/GDB.html @@ -0,0 +1 @@ +/usr/share/doc/gdb-doc/html/gdb/index.html \ No newline at end of file diff --git a/includes.chroot/etc/skel/Desktop/SciTE.desktop b/includes.chroot/etc/skel/Desktop/SciTE.desktop new file mode 120000 index 0000000..432130f --- /dev/null +++ b/includes.chroot/etc/skel/Desktop/SciTE.desktop @@ -0,0 +1 @@ +/usr/share/applications/SciTE.desktop \ No newline at end of file diff --git a/includes.chroot/etc/skel/Desktop/codeblocks.desktop b/includes.chroot/etc/skel/Desktop/codeblocks.desktop new file mode 120000 index 0000000..3dde687 --- /dev/null +++ b/includes.chroot/etc/skel/Desktop/codeblocks.desktop @@ -0,0 +1 @@ +/usr/share/applications/codeblocks.desktop \ No newline at end of file diff --git a/includes.chroot/etc/skel/Desktop/emacs.desktop b/includes.chroot/etc/skel/Desktop/emacs.desktop new file mode 120000 index 0000000..60d899c --- /dev/null +++ b/includes.chroot/etc/skel/Desktop/emacs.desktop @@ -0,0 +1 @@ +/usr/share/applications/emacs.desktop \ No newline at end of file diff --git a/includes.chroot/etc/skel/Desktop/firefox-esr.desktop b/includes.chroot/etc/skel/Desktop/firefox-esr.desktop new file mode 120000 index 0000000..64950d1 --- /dev/null +++ b/includes.chroot/etc/skel/Desktop/firefox-esr.desktop @@ -0,0 +1 @@ +/usr/share/applications/firefox-esr.desktop \ No newline at end of file diff --git a/includes.chroot/etc/skel/Desktop/geany.desktop b/includes.chroot/etc/skel/Desktop/geany.desktop new file mode 120000 index 0000000..b298dfa --- /dev/null +++ b/includes.chroot/etc/skel/Desktop/geany.desktop @@ -0,0 +1 @@ +/usr/share/applications/geany.desktop \ No newline at end of file diff --git a/includes.chroot/etc/skel/Desktop/gedit.desktop b/includes.chroot/etc/skel/Desktop/gedit.desktop new file mode 120000 index 0000000..ea7f971 --- /dev/null +++ b/includes.chroot/etc/skel/Desktop/gedit.desktop @@ -0,0 +1 @@ +/usr/share/applications/org.gnome.gedit.desktop \ No newline at end of file diff --git a/includes.chroot/etc/skel/Desktop/gvim.desktop b/includes.chroot/etc/skel/Desktop/gvim.desktop new file mode 120000 index 0000000..2fcfb6b --- /dev/null +++ b/includes.chroot/etc/skel/Desktop/gvim.desktop @@ -0,0 +1 @@ +/usr/share/applications/gvim.desktop \ No newline at end of file diff --git a/includes.chroot/etc/skel/Desktop/org.kde.kate.desktop b/includes.chroot/etc/skel/Desktop/org.kde.kate.desktop new file mode 120000 index 0000000..f1639b9 --- /dev/null +++ b/includes.chroot/etc/skel/Desktop/org.kde.kate.desktop @@ -0,0 +1 @@ +/usr/share/applications/org.kde.kate.desktop \ No newline at end of file diff --git a/includes.chroot/etc/skel/Desktop/org.kde.kcalc.desktop b/includes.chroot/etc/skel/Desktop/org.kde.kcalc.desktop new file mode 120000 index 0000000..759c834 --- /dev/null +++ b/includes.chroot/etc/skel/Desktop/org.kde.kcalc.desktop @@ -0,0 +1 @@ +/usr/share/applications/org.kde.kcalc.desktop \ No newline at end of file diff --git a/includes.chroot/etc/skel/Desktop/org.kde.konsole.desktop b/includes.chroot/etc/skel/Desktop/org.kde.konsole.desktop new file mode 120000 index 0000000..1cd29d4 --- /dev/null +++ b/includes.chroot/etc/skel/Desktop/org.kde.konsole.desktop @@ -0,0 +1 @@ +/usr/share/applications/org.kde.konsole.desktop \ No newline at end of file diff --git a/includes.chroot/etc/skel/Desktop/sublime_text.desktop b/includes.chroot/etc/skel/Desktop/sublime_text.desktop new file mode 120000 index 0000000..fbbc006 --- /dev/null +++ b/includes.chroot/etc/skel/Desktop/sublime_text.desktop @@ -0,0 +1 @@ +/usr/share/applications/sublime_text.desktop \ No newline at end of file diff --git a/includes.chroot/etc/systemd/network/99-default.link b/includes.chroot/etc/systemd/network/99-default.link new file mode 100644 index 0000000..e69de29 diff --git a/includes.chroot/usr/lib/firefox-esr/mozilla.cfg b/includes.chroot/usr/lib/firefox-esr/mozilla.cfg new file mode 100644 index 0000000..b8d35b4 --- /dev/null +++ b/includes.chroot/usr/lib/firefox-esr/mozilla.cfg @@ -0,0 +1,13 @@ +// First line is always ignored. + +// Set default homepage but don't force it. +defaultPref("browser.startup.homepage", "data:text/plain,browser.startup.homepage=https://olimp.cms.lmio.lt"); + +// Don't show 'know your rights' on first run +pref("browser.rights.3.shown", true); + +// Don't show WhatsNew on first run after every update +pref("browser.startup.homepage_override.mstone", "ignore"); + +// Don't open 'privacy notice' tab on first run +pref("datareporting.policy.dataSubmissionEnabled", false); diff --git a/includes.chroot/usr/share/firefox-esr/browser/defaults/preferences/00-liox.js b/includes.chroot/usr/share/firefox-esr/browser/defaults/preferences/00-liox.js new file mode 100644 index 0000000..83e4a1c --- /dev/null +++ b/includes.chroot/usr/share/firefox-esr/browser/defaults/preferences/00-liox.js @@ -0,0 +1,7 @@ +// First line is always ignored. + +// No ROT13 obfuscation is being used. +pref("general.config.obscure_value", 0); + +// Use mozilla.cfg from installation directory to configure further parameters. +pref("general.config.filename", "mozilla.cfg"); diff --git a/includes.chroot/usr/share/liox-config/lmio-logo-center.png b/includes.chroot/usr/share/liox-config/lmio-logo-center.png new file mode 100644 index 0000000000000000000000000000000000000000..cf01c427699752bdc319d04c5f533227634ef58d GIT binary patch literal 26690 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 Ny__md={^32@?Yb0V%-1$ literal 0 HcmV?d00001 diff --git a/includes.chroot/usr/share/liox-config/lmio-logo-left.png b/includes.chroot/usr/share/liox-config/lmio-logo-left.png new file mode 100644 index 0000000000000000000000000000000000000000..aae6576c53b879fc6e94e63000485c74ddc338b0 GIT binary patch literal 26693 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 MxCvaVT|N;13(!<6UH||9 literal 0 HcmV?d00001 diff --git a/includes.chroot/usr/share/sddm/themes/breeze/theme.conf.user b/includes.chroot/usr/share/sddm/themes/breeze/theme.conf.user new file mode 100644 index 0000000..07f8bc2 --- /dev/null +++ b/includes.chroot/usr/share/sddm/themes/breeze/theme.conf.user @@ -0,0 +1,3 @@ +[General] +type=image +background=/usr/share/liox-config/lmio-logo-left.png diff --git a/open-image.sh b/open-image.sh new file mode 100755 index 0000000..bd0b307 --- /dev/null +++ b/open-image.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +set -e + +if [ $(id -u) -ne 0 ] +then + echo "Script must be run as root" + exit 1 +fi + +source config.sh + +if [ -d $BUILD_DIR ] +then + echo "Directory \`$BUILD_DIR\` exists" + exit 1 +fi + +mkdir $BUILD_DIR + +IMAGE_LODEVICE=$(losetup -f $BUILD_IMAGE --partscan --show) +IMAGE_ROOTPART=${IMAGE_LODEVICE}p1 +mount $IMAGE_ROOTPART $BUILD_DIR +mount --make-rslave --rbind /proc $BUILD_DIR/proc +mount --make-rslave --rbind /sys $BUILD_DIR/sys +mount --make-rslave --rbind /dev $BUILD_DIR/dev +mount --make-rslave --rbind /run $BUILD_DIR/run + +set +e +chroot $BUILD_DIR /bin/bash -c "HOSTNAME=$HOSTNAME /bin/bash" +set -e + +umount -R $BUILD_DIR +losetup -D +rmdir $BUILD_DIR From 728278f80344c330b1e03f12a869b33c462f411a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Fri, 12 May 2023 00:11:37 +0300 Subject: [PATCH 04/53] fix quotes --- create-image.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/create-image.sh b/create-image.sh index e7ba54b..0de61b2 100755 --- a/create-image.sh +++ b/create-image.sh @@ -63,12 +63,12 @@ cp ./chroot-script.sh ./config.sh $BUILD_DIR cp -r ./includes.chroot/* $BUILD_DIR UUID=$(lsblk -f $IMAGE_ROOTPART | tail -n 1 | tr -s " " | cut -d " " -f 4) chroot $BUILD_DIR /bin/bash -c \ - "UUID="$UUID" \ - D0_PWD_HASH="${D0_PWD_HASH}" \ - D1_PWD_HASH="${D1_PWD_HASH}" \ - D2_PWD_HASH="${D2_PWD_HASH}" \ - LIOADMIN_PWD_HASH="${LIOADMIN_PWD_HASH}" \ - IMAGE_LODEVICE="$IMAGE_LODEVICE" \ + "UUID='$UUID' \ + D0_PWD_HASH='${D0_PWD_HASH}' \ + D1_PWD_HASH='${D1_PWD_HASH}' \ + D2_PWD_HASH='${D2_PWD_HASH}' \ + LIOADMIN_PWD_HASH='${LIOADMIN_PWD_HASH}' \ + IMAGE_LODEVICE='$IMAGE_LODEVICE' \ /bin/bash /chroot-script.sh" umount -R $BUILD_DIR From de2d926fa2a56c0980b1f3448798d9802059bab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Fri, 12 May 2023 17:21:04 +0300 Subject: [PATCH 05/53] fully automate all selections during installation --- chroot-script.sh | 11 ++++++++++- includes.chroot/etc/locale.nopurge | 19 ------------------- 2 files changed, 10 insertions(+), 20 deletions(-) delete mode 100644 includes.chroot/etc/locale.nopurge diff --git a/chroot-script.sh b/chroot-script.sh index 33ee499..c6cdddb 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -46,7 +46,16 @@ ff02::1 ip6-allnodes ff02::2 ip6-allrouters EOF -apt -y install linux-image-amd64 firmware-linux network-manager grub2 \ +apt -y install linux-image-amd64 firmware-linux \ +network-manager grub2 debconf-utils + +echo "iptables-persistent iptables-persistent/autosave_v4 boolean true" | debconf-set-selections +echo "iptables-persistent iptables-persistent/autosave_v6 boolean true" | debconf-set-selections +echo "keyboard-configuration keyboard-configuration/variant select English (US)" | debconf-set-selections +echo "localepurge localepurge/nopurge multiselect en, en_US, en_US.UTF-8, lt, lt_LT, lt_LT.UTF-8, pl, pl_PL, pl_PL.UTF-8, ru, ru_RU, ru_RU.UTF-8" | debconf-set-selections +echo "localepurge localepurge/use-dpkg-feature boolean false" | debconf-set-selections + +apt -y install \ task-laptop \ plasma-desktop kwin-x11 sddm sddm-theme-breeze xserver-xorg \ dolphin konsole kwrite ark gwenview okular \ diff --git a/includes.chroot/etc/locale.nopurge b/includes.chroot/etc/locale.nopurge deleted file mode 100644 index 40976f1..0000000 --- a/includes.chroot/etc/locale.nopurge +++ /dev/null @@ -1,19 +0,0 @@ -# clean up man pages -MANDELETE - -# delete new locales without bothering -DONTBOTHERNEWLOCALE - -# list of locales to keep -en -en_US -en_US.UTF-8 -lt -lt_LT -lt_LT.UTF-8 -pl -pl_PL -pl_PL.UTF-8 -ru -ru_RU -ru_RU.UTF-8 From 4d321c9a26a2c7dc91ab7edea189e355fa1d852c Mon Sep 17 00:00:00 2001 From: Joris Pevcevicius Date: Tue, 13 Aug 2024 21:25:27 +0300 Subject: [PATCH 06/53] ??? idk? --- create-image.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/create-image.sh b/create-image.sh index 0de61b2..03abe24 100755 --- a/create-image.sh +++ b/create-image.sh @@ -51,6 +51,9 @@ IMAGE_LODEVICE=$(losetup -f $BUILD_IMAGE --partscan --show) IMAGE_ROOTPART=${IMAGE_LODEVICE}p1 echo "Image device $IMAGE_LODEVICE" mkfs.ext4 $IMAGE_ROOTPART +tune2fs -O "^metadata_csum_seed" $IMAGE_ROOTPART +tune2fs -O "^metadata_csum" $IMAGE_ROOTPART +tune2fs -O "^orphan_file" $IMAGE_ROOTPART mount $IMAGE_ROOTPART $BUILD_DIR debootstrap --cache-dir=$(realpath "./cache") --arch $ARCH stable $BUILD_DIR https://deb.debian.org/debian From a221e0f5f08379ffcabf540d1e993f5deb7e6764 Mon Sep 17 00:00:00 2001 From: Joris Pevcevicius Date: Tue, 13 Aug 2024 23:03:08 +0300 Subject: [PATCH 07/53] dev --- chroot-script.sh | 15 ++++++++------- config.sh | 8 +++++--- create-image.sh | 14 ++++++++------ start-vm.sh | 2 +- clean.sh => unmount.sh | 6 ++---- 5 files changed, 24 insertions(+), 21 deletions(-) rename clean.sh => unmount.sh (56%) diff --git a/chroot-script.sh b/chroot-script.sh index c6cdddb..a34ba1b 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -1,6 +1,7 @@ #!/bin/bash set -e +set -x source config.sh @@ -11,14 +12,14 @@ printf "UUID=$UUID\t/\text4\terrors=remount-ro\t0 1" > /etc/fstab apt -y install lsb-release CODENAME=$(lsb_release --codename --short) cat > /etc/apt/sources.list << EOF -deb https://deb.debian.org/debian/ $CODENAME main contrib non-free -deb-src https://deb.debian.org/debian/ $CODENAME main contrib non-free +deb https://deb.debian.org/debian/ $CODENAME main contrib non-free non-free-firmware +deb-src https://deb.debian.org/debian/ $CODENAME main contrib non-free non-free-firmware -deb https://security.debian.org/debian-security $CODENAME-security main contrib non-free -deb-src https://security.debian.org/debian-security $CODENAME-security main contrib non-free +deb https://security.debian.org/debian-security $CODENAME-security main contrib non-free non-free-firmware +deb-src https://security.debian.org/debian-security $CODENAME-security main contrib non-free non-free-firmware -deb https://deb.debian.org/debian/ $CODENAME-updates main contrib non-free -deb-src https://deb.debian.org/debian/ $CODENAME-updates main contrib non-free +deb https://deb.debian.org/debian/ $CODENAME-updates main contrib non-free non-free-firmware +deb-src https://deb.debian.org/debian/ $CODENAME-updates main contrib non-free non-free-firmware EOF apt -y update @@ -63,7 +64,7 @@ firefox-esr wget \ libreoffice-writer libreoffice-calc libreoffice-impress \ libreoffice-kf5 libreoffice-plasma \ xserver-xorg-video-all \ -vim-gtk joe gedit scite geany geany-plugins codeblocks codeblocks-contrib \ +vim-gtk3 joe gedit scite geany geany-plugins codeblocks codeblocks-contrib \ kate \ zsh mc emacs nano git \ make gcc g++ gdb ddd valgrind \ diff --git a/config.sh b/config.sh index a5067e3..395e082 100755 --- a/config.sh +++ b/config.sh @@ -5,9 +5,11 @@ set -e HOSTNAME="lioxbox" TIMEZONE="Europe/Vilnius" BUILD_DIR="./mnt" -BUILD_IMAGE="./image.raw" +BUILD_IMAGE="./liox_tmp/image.raw" IMAGE_SIZE_MB=8192 ARCH="amd64" -CACHE_DIR="./cache" +CACHE_DIR="./liox_tmp/cache" +CHROOT_CACHE_DIR="./liox_tmp/chroot_cache" -CACHE_DIR=$(realpath $CACHE_DIR) +# CACHE_DIR=$(realpath $CACHE_DIR) +# CHROOT_CACHE_DIR=$(realpath $CHROOT_CACHE_DIR) diff --git a/create-image.sh b/create-image.sh index 03abe24..0485b16 100755 --- a/create-image.sh +++ b/create-image.sh @@ -1,6 +1,7 @@ #!/bin/bash set -e +set -x if [ $(id -u) -ne 0 ] then @@ -16,10 +17,8 @@ then exit 1 fi -if [ ! -d $CACHE_DIR ] -then - mkdir $CACHE_DIR -fi +mkdir -p $CACHE_DIR +mkdir -p $CHROOT_CACHE_DIR if [ -f $BUILD_IMAGE ] then @@ -45,7 +44,7 @@ D2_PWD_HASH=$(mkpasswd -m sha-512) dd if=/dev/zero of=$BUILD_IMAGE bs=1M count=$IMAGE_SIZE_MB status=progress mkdir $BUILD_DIR -parted image.raw mklabel msdos +parted $BUILD_IMAGE mklabel msdos echo -e '1M,+,L' | sfdisk $BUILD_IMAGE IMAGE_LODEVICE=$(losetup -f $BUILD_IMAGE --partscan --show) IMAGE_ROOTPART=${IMAGE_LODEVICE}p1 @@ -56,12 +55,15 @@ tune2fs -O "^metadata_csum" $IMAGE_ROOTPART tune2fs -O "^orphan_file" $IMAGE_ROOTPART mount $IMAGE_ROOTPART $BUILD_DIR -debootstrap --cache-dir=$(realpath "./cache") --arch $ARCH stable $BUILD_DIR https://deb.debian.org/debian +debootstrap --cache-dir=$(realpath $CACHE_DIR) --arch $ARCH stable $BUILD_DIR https://deb.debian.org/debian +mkdir -p $BUILD_DIR/var/cache/apt/archives mount --make-rslave --rbind /proc $BUILD_DIR/proc mount --make-rslave --rbind /sys $BUILD_DIR/sys mount --make-rslave --rbind /dev $BUILD_DIR/dev mount --make-rslave --rbind /run $BUILD_DIR/run +mount --bind $CHROOT_CACHE_DIR $BUILD_DIR/var/cache/apt/archives +mount -t tmpfs chroot_tmp $BUILD_DIR/tmp cp ./chroot-script.sh ./config.sh $BUILD_DIR cp -r ./includes.chroot/* $BUILD_DIR UUID=$(lsblk -f $IMAGE_ROOTPART | tail -n 1 | tr -s " " | cut -d " " -f 4) diff --git a/start-vm.sh b/start-vm.sh index 9a8b59c..337a147 100755 --- a/start-vm.sh +++ b/start-vm.sh @@ -1,2 +1,2 @@ #!/bin/bash -qemu-system-x86_64 -smp 2 -m 4G -accel kvm -cpu host -machine q35 -drive file=./image.raw,format=raw -nic user,model=e1000 +qemu-system-x86_64 -smp 2 -m 4G -accel kvm -cpu host -machine q35 -drive file=./liox_tmp/image.raw,format=raw -nic user,model=e1000 --drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.4m.fd -drive if=pflash,format=raw,file=./OVMF_VARS.4m.fd diff --git a/clean.sh b/unmount.sh similarity index 56% rename from clean.sh rename to unmount.sh index 9521901..ad7cef7 100755 --- a/clean.sh +++ b/unmount.sh @@ -1,10 +1,8 @@ #!/bin/bash - set -e - if [ -d ./mnt ] then - umount -R ./mnt + umount -R ./mnt || true + rmdir ./mnt fi losetup -D -rm -rf image.raw ./mnt From 6776474cce0459f12cef18bc4651689804a97a57 Mon Sep 17 00:00:00 2001 From: Joris Pevcevicius Date: Fri, 16 Aug 2024 21:44:59 +0300 Subject: [PATCH 08/53] uefi dev in vm --- chroot-script.sh | 3 ++- create-image.sh | 14 +++++++++++--- start-vm.sh | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/chroot-script.sh b/chroot-script.sh index a34ba1b..9f7ec17 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -8,6 +8,7 @@ source config.sh PATH=$PATH:/usr/sbin printf "UUID=$UUID\t/\text4\terrors=remount-ro\t0 1" > /etc/fstab +printf "UUID=$EFI_UUID\t/boot/efi\tvfat\tdefaults\t0 1" >> /etc/fstab apt -y install lsb-release CODENAME=$(lsb_release --codename --short) @@ -94,4 +95,4 @@ usermod -a -G sudo lioadmin echo "GRUB_DISABLE_OS_PROBER=true" >> /etc/default/grub update-grub -grub-install --root-directory / $IMAGE_LODEVICE +grub-install --target=x86_64-efi --efi-directory=/boot/efi $IMAGE_LODEVICE diff --git a/create-image.sh b/create-image.sh index 0485b16..16de382 100755 --- a/create-image.sh +++ b/create-image.sh @@ -44,12 +44,16 @@ D2_PWD_HASH=$(mkpasswd -m sha-512) dd if=/dev/zero of=$BUILD_IMAGE bs=1M count=$IMAGE_SIZE_MB status=progress mkdir $BUILD_DIR -parted $BUILD_IMAGE mklabel msdos -echo -e '1M,+,L' | sfdisk $BUILD_IMAGE +parted $BUILD_IMAGE mklabel gpt +echo -e "label: gpt\n\ +,512M,U\n\ +,,L\n" | sfdisk $BUILD_IMAGE IMAGE_LODEVICE=$(losetup -f $BUILD_IMAGE --partscan --show) -IMAGE_ROOTPART=${IMAGE_LODEVICE}p1 +IMAGE_EFIPART=${IMAGE_LODEVICE}p1 +IMAGE_ROOTPART=${IMAGE_LODEVICE}p2 echo "Image device $IMAGE_LODEVICE" mkfs.ext4 $IMAGE_ROOTPART +mkfs.vfat -F32 $IMAGE_EFIPART tune2fs -O "^metadata_csum_seed" $IMAGE_ROOTPART tune2fs -O "^metadata_csum" $IMAGE_ROOTPART tune2fs -O "^orphan_file" $IMAGE_ROOTPART @@ -57,6 +61,8 @@ tune2fs -O "^orphan_file" $IMAGE_ROOTPART mount $IMAGE_ROOTPART $BUILD_DIR debootstrap --cache-dir=$(realpath $CACHE_DIR) --arch $ARCH stable $BUILD_DIR https://deb.debian.org/debian +mkdir -p $BUILD_DIR/boot/efi +mount $IMAGE_EFIPART $BUILD_DIR/boot/efi mkdir -p $BUILD_DIR/var/cache/apt/archives mount --make-rslave --rbind /proc $BUILD_DIR/proc mount --make-rslave --rbind /sys $BUILD_DIR/sys @@ -67,8 +73,10 @@ mount -t tmpfs chroot_tmp $BUILD_DIR/tmp cp ./chroot-script.sh ./config.sh $BUILD_DIR cp -r ./includes.chroot/* $BUILD_DIR UUID=$(lsblk -f $IMAGE_ROOTPART | tail -n 1 | tr -s " " | cut -d " " -f 4) +EFI_UUID=$(lsblk -f $IMAGE_EFIPART | tail -n 1 | tr -s " " | cut -d " " -f 4) chroot $BUILD_DIR /bin/bash -c \ "UUID='$UUID' \ + EFI_UUID='$EFI_UUID' \ D0_PWD_HASH='${D0_PWD_HASH}' \ D1_PWD_HASH='${D1_PWD_HASH}' \ D2_PWD_HASH='${D2_PWD_HASH}' \ diff --git a/start-vm.sh b/start-vm.sh index 337a147..660b7be 100755 --- a/start-vm.sh +++ b/start-vm.sh @@ -1,2 +1,2 @@ #!/bin/bash -qemu-system-x86_64 -smp 2 -m 4G -accel kvm -cpu host -machine q35 -drive file=./liox_tmp/image.raw,format=raw -nic user,model=e1000 --drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.4m.fd -drive if=pflash,format=raw,file=./OVMF_VARS.4m.fd +qemu-system-x86_64 -smp 2 -m 4G -accel kvm -cpu host -machine q35 -drive file=./liox_tmp/image.raw,format=raw --drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.4m.fd -drive if=pflash,format=raw,file=./OVMF_VARS.4m.fd -nic none #-nic user,model=e1000 From 887e39cb7c6d2031f116fa56f3de3d4d589579fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Mon, 29 Sep 2025 12:14:00 +0200 Subject: [PATCH 09/53] rework --- .gitignore | 6 ++ autoinstall.sh | 9 ++ chroot-script.sh | 94 ++++++++++--------- create-image.sh | 58 ++---------- createall.sh | 7 ++ includes.chroot/etc/locale.nopurge | 19 ++++ .../etc/modprobe.d/pcspeaker-blacklist.conf | 1 + .../plasma-org.kde.plasma.desktop-appletsrc | 4 +- .../skel/.config/powermanagementprofilesrc | 10 ++ .../etc/skel/Desktop/org.gnome.gedit.desktop | 1 + .../etc/skel/Desktop/org.kde.kdevelop.desktop | 1 + .../etc/systemd/network/10-wired.network | 5 + includes.chroot/etc/xdg/mimeapps.list | 5 + .../usr/share/liox-config/boot-entry.csv | 1 + .../usr/share/liox-config/d-i_hooks | 52 ++++++++++ .../share/liox-config/downgrade_codeblocks.sh | 18 ++++ .../usr/share/liox-config/init_resize.sh | 31 ++++++ .../share/liox-config/install_vscode_ext.sh | 28 ++++++ .../liox-config/patches/grub-config.patch | 9 ++ .../unrestrict-default-grub-entry.patch | 11 +++ .../post-inst-overlay/etc/network/interfaces | 0 .../usr/share/liox-config/start-contest.sh | 28 ++++++ .../usr/share/liox-config/stop-contest.sh | 15 +++ open-image.sh | 35 ------- qemushared/load.sh | 18 ++++ qemushared/loadnew.sh | 31 ++++++ start-vm.sh | 2 - startalpine.sh | 10 ++ startliox.sh | 4 + unmount.sh | 19 ++-- 30 files changed, 392 insertions(+), 140 deletions(-) create mode 100755 autoinstall.sh create mode 100755 createall.sh create mode 100644 includes.chroot/etc/locale.nopurge create mode 100644 includes.chroot/etc/modprobe.d/pcspeaker-blacklist.conf create mode 100644 includes.chroot/etc/skel/.config/powermanagementprofilesrc create mode 120000 includes.chroot/etc/skel/Desktop/org.gnome.gedit.desktop create mode 120000 includes.chroot/etc/skel/Desktop/org.kde.kdevelop.desktop create mode 100644 includes.chroot/etc/systemd/network/10-wired.network create mode 100644 includes.chroot/etc/xdg/mimeapps.list create mode 100644 includes.chroot/usr/share/liox-config/boot-entry.csv create mode 100755 includes.chroot/usr/share/liox-config/d-i_hooks create mode 100755 includes.chroot/usr/share/liox-config/downgrade_codeblocks.sh create mode 100755 includes.chroot/usr/share/liox-config/init_resize.sh create mode 100755 includes.chroot/usr/share/liox-config/install_vscode_ext.sh create mode 100644 includes.chroot/usr/share/liox-config/patches/grub-config.patch create mode 100644 includes.chroot/usr/share/liox-config/patches/unrestrict-default-grub-entry.patch create mode 100644 includes.chroot/usr/share/liox-config/post-inst-overlay/etc/network/interfaces create mode 100755 includes.chroot/usr/share/liox-config/start-contest.sh create mode 100755 includes.chroot/usr/share/liox-config/stop-contest.sh delete mode 100755 open-image.sh create mode 100755 qemushared/load.sh create mode 100755 qemushared/loadnew.sh delete mode 100755 start-vm.sh create mode 100755 startalpine.sh create mode 100755 startliox.sh diff --git a/.gitignore b/.gitignore index 7db02ff..9103200 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ *.raw +*.qcow2 +*.iso cache/ mnt/ +liox_tmp/ +result +result-fd +qemushared/rootfs.tar.zstd diff --git a/autoinstall.sh b/autoinstall.sh new file mode 100755 index 0000000..ec06eaf --- /dev/null +++ b/autoinstall.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env -S expect -f +spawn ./startalpine.sh +expect "localhost login:" +send "root\r" +expect "localhost:~#" +send "mkdir /mnt/rootfs && mkdir /mnt/disk && mount -t 9p -o trans=virtio,version=9p2000.L rootfs /mnt/rootfs\r" +expect "localhost:~#" +send "/mnt/rootfs/loadnew.sh\r" +interact diff --git a/chroot-script.sh b/chroot-script.sh index 9f7ec17..af493ec 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -1,14 +1,14 @@ -#!/bin/bash - -set -e -set -x +#!/usr/bin/env bash +set -xeu source config.sh -PATH=$PATH:/usr/sbin - -printf "UUID=$UUID\t/\text4\terrors=remount-ro\t0 1" > /etc/fstab -printf "UUID=$EFI_UUID\t/boot/efi\tvfat\tdefaults\t0 1" >> /etc/fstab +LANG=C.UTF-8 +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +HOME=/root +SHELL=/bin/bash +TERM=xterm +DEBIAN_FRONTEND=noninteractive apt -y install lsb-release CODENAME=$(lsb_release --codename --short) @@ -48,8 +48,14 @@ ff02::1 ip6-allnodes ff02::2 ip6-allrouters EOF -apt -y install linux-image-amd64 firmware-linux \ -network-manager grub2 debconf-utils +apt -y install linux-image-amd64 firmware-linux grub-efi debconf-utils wget gpg + +mkdir -p /etc/apt/trusted.gpg.d/ +echo "deb https://download.sublimetext.com/ apt/stable/" | tee /etc/apt/sources.list.d/sublime-text.list +echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" | tee /etc/apt/sources.list.d/vscode.list +wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/sublimehq-archive.gpg +wget -qO - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/ms-vscode-keyring.gpg +apt -y update echo "iptables-persistent iptables-persistent/autosave_v4 boolean true" | debconf-set-selections echo "iptables-persistent iptables-persistent/autosave_v6 boolean true" | debconf-set-selections @@ -58,41 +64,41 @@ echo "localepurge localepurge/nopurge multiselect en, en_US, en_US.UTF-8, lt, lt echo "localepurge localepurge/use-dpkg-feature boolean false" | debconf-set-selections apt -y install \ -task-laptop \ -plasma-desktop kwin-x11 sddm sddm-theme-breeze xserver-xorg \ -dolphin konsole kwrite ark gwenview okular \ -firefox-esr wget \ -libreoffice-writer libreoffice-calc libreoffice-impress \ -libreoffice-kf5 libreoffice-plasma \ -xserver-xorg-video-all \ -vim-gtk3 joe gedit scite geany geany-plugins codeblocks codeblocks-contrib \ -kate \ -zsh mc emacs nano git \ -make gcc g++ gdb ddd valgrind \ -python3 \ -strace lsof tree curl dnsutils screen \ -iotop tmux htop kpartx tsocks units mlocate \ -bridge-utils bash-completion rfkill apt-file ntp locales \ -iptables-persistent \ -localepurge \ -gdb-doc manpages \ -python3-requests \ -kcalc apt-transport-https - -mkdir -p /etc/apt/trusted.gpg.d/ -echo "deb https://download.sublimetext.com/ apt/stable/" | tee /etc/apt/sources.list.d/sublime-text.list -echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" | tee /etc/apt/sources.list.d/vscode.list -wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/sublimehq-archive.gpg -wget -qO - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/ms-vscode-keyring.gpg -apt -y update -apt -y install sublime-text code + task-laptop \ + plasma-desktop kwin-x11 sddm sddm-theme-breeze xserver-xorg \ + dolphin konsole kwrite ark gwenview okular \ + firefox-esr wget \ + xserver-xorg-video-all \ + vim-gtk3 joe gedit scite geany geany-plugins codeblocks codeblocks-contrib \ + kate \ + zsh mc emacs nano git \ + make gcc g++ gdb ddd valgrind \ + python3 \ + strace lsof tree curl dnsutils screen \ + iotop tmux htop kpartx tsocks units locate \ + bridge-utils bash-completion rfkill apt-file ntpsec locales \ + iptables-persistent \ + localepurge \ + gdb-doc manpages \ + python3-requests \ + kcalc apt-transport-https \ + clang firmware-iwlwifi kdevelop \ + libreoffice-calc libreoffice-impress libreoffice-kf6 libreoffice-plasma libreoffice-writer \ + neovim ruby vim whois \ + sublime-text code + +cp -rf /includes.chroot/* / + +for P in $(ls /usr/share/liox-config/patches/*.patch); do + patch -d/ -p0 < ${P} +done +echo "GRUB_DISABLE_OS_PROBER=true" >> /etc/default/grub -useradd -m -s /bin/bash -p ${D0_PWD_HASH} d0 -useradd -m -s /bin/bash -p ${D1_PWD_HASH} d1 -useradd -m -s /bin/bash -p ${D2_PWD_HASH} d2 +# useradd -m -s /bin/bash -p ${D0_PWD_HASH} d0 +# useradd -m -s /bin/bash -p ${D1_PWD_HASH} d1 +# useradd -m -s /bin/bash -p ${D2_PWD_HASH} d2 +LIOADMIN_PWD_HASH=$(echo "test" | mkpasswd -s -m sha-512) useradd -m -s /bin/bash -p ${LIOADMIN_PWD_HASH} lioadmin usermod -a -G sudo lioadmin -echo "GRUB_DISABLE_OS_PROBER=true" >> /etc/default/grub -update-grub -grub-install --target=x86_64-efi --efi-directory=/boot/efi $IMAGE_LODEVICE +rm -rf /includes.chroot /etc/apt/apt.conf.d/99cache /chroot-script.sh /config.sh diff --git a/create-image.sh b/create-image.sh index 16de382..800ed07 100755 --- a/create-image.sh +++ b/create-image.sh @@ -1,7 +1,5 @@ -#!/bin/bash - -set -e -set -x +#!/usr/bin/env bash +set -xeu if [ $(id -u) -ne 0 ] then @@ -30,60 +28,22 @@ then fi fi -echo -n "Enter lioadmin user " -LIOADMIN_PWD_HASH=$(mkpasswd -m sha-512) - -echo -n "Enter d0 user " -D0_PWD_HASH=$(mkpasswd -m sha-512) - -echo -n "Enter d1 user " -D1_PWD_HASH=$(mkpasswd -m sha-512) - -echo -n "Enter d2 user " -D2_PWD_HASH=$(mkpasswd -m sha-512) - -dd if=/dev/zero of=$BUILD_IMAGE bs=1M count=$IMAGE_SIZE_MB status=progress mkdir $BUILD_DIR -parted $BUILD_IMAGE mklabel gpt -echo -e "label: gpt\n\ -,512M,U\n\ -,,L\n" | sfdisk $BUILD_IMAGE -IMAGE_LODEVICE=$(losetup -f $BUILD_IMAGE --partscan --show) -IMAGE_EFIPART=${IMAGE_LODEVICE}p1 -IMAGE_ROOTPART=${IMAGE_LODEVICE}p2 -echo "Image device $IMAGE_LODEVICE" -mkfs.ext4 $IMAGE_ROOTPART -mkfs.vfat -F32 $IMAGE_EFIPART -tune2fs -O "^metadata_csum_seed" $IMAGE_ROOTPART -tune2fs -O "^metadata_csum" $IMAGE_ROOTPART -tune2fs -O "^orphan_file" $IMAGE_ROOTPART - -mount $IMAGE_ROOTPART $BUILD_DIR debootstrap --cache-dir=$(realpath $CACHE_DIR) --arch $ARCH stable $BUILD_DIR https://deb.debian.org/debian mkdir -p $BUILD_DIR/boot/efi -mount $IMAGE_EFIPART $BUILD_DIR/boot/efi mkdir -p $BUILD_DIR/var/cache/apt/archives mount --make-rslave --rbind /proc $BUILD_DIR/proc mount --make-rslave --rbind /sys $BUILD_DIR/sys mount --make-rslave --rbind /dev $BUILD_DIR/dev -mount --make-rslave --rbind /run $BUILD_DIR/run +# mount --make-rslave --rbind /run $BUILD_DIR/run mount --bind $CHROOT_CACHE_DIR $BUILD_DIR/var/cache/apt/archives mount -t tmpfs chroot_tmp $BUILD_DIR/tmp cp ./chroot-script.sh ./config.sh $BUILD_DIR -cp -r ./includes.chroot/* $BUILD_DIR -UUID=$(lsblk -f $IMAGE_ROOTPART | tail -n 1 | tr -s " " | cut -d " " -f 4) -EFI_UUID=$(lsblk -f $IMAGE_EFIPART | tail -n 1 | tr -s " " | cut -d " " -f 4) +cp -r ./includes.chroot $BUILD_DIR +cat << EOF > $BUILD_DIR/etc/apt/apt.conf.d/99cache +Binary::apt::APT::Keep-Downloaded-Packages "true"; +APT::Keep-Downloaded-Packages "true"; +EOF chroot $BUILD_DIR /bin/bash -c \ - "UUID='$UUID' \ - EFI_UUID='$EFI_UUID' \ - D0_PWD_HASH='${D0_PWD_HASH}' \ - D1_PWD_HASH='${D1_PWD_HASH}' \ - D2_PWD_HASH='${D2_PWD_HASH}' \ - LIOADMIN_PWD_HASH='${LIOADMIN_PWD_HASH}' \ - IMAGE_LODEVICE='$IMAGE_LODEVICE' \ - /bin/bash /chroot-script.sh" - -umount -R $BUILD_DIR -losetup -D -rmdir $BUILD_DIR + "/bin/env -i /bin/bash /chroot-script.sh" diff --git a/createall.sh b/createall.sh new file mode 100755 index 0000000..b0f5111 --- /dev/null +++ b/createall.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -xe +qemu-img create -f qcow2 liox.qcow2 16G +./create-image.sh +./unmount.sh +sudo tar --zstd --numeric-owner -cpf ./qemushared/rootfs.tar.zstd -C mnt . +./autoinstall.sh diff --git a/includes.chroot/etc/locale.nopurge b/includes.chroot/etc/locale.nopurge new file mode 100644 index 0000000..40976f1 --- /dev/null +++ b/includes.chroot/etc/locale.nopurge @@ -0,0 +1,19 @@ +# clean up man pages +MANDELETE + +# delete new locales without bothering +DONTBOTHERNEWLOCALE + +# list of locales to keep +en +en_US +en_US.UTF-8 +lt +lt_LT +lt_LT.UTF-8 +pl +pl_PL +pl_PL.UTF-8 +ru +ru_RU +ru_RU.UTF-8 diff --git a/includes.chroot/etc/modprobe.d/pcspeaker-blacklist.conf b/includes.chroot/etc/modprobe.d/pcspeaker-blacklist.conf new file mode 100644 index 0000000..b46792e --- /dev/null +++ b/includes.chroot/etc/modprobe.d/pcspeaker-blacklist.conf @@ -0,0 +1 @@ +blacklist pcspkr diff --git a/includes.chroot/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc b/includes.chroot/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc index 26fa9f9..d26b2d1 100644 --- a/includes.chroot/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc +++ b/includes.chroot/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc @@ -150,5 +150,5 @@ extraItems=org.kde.plasma.mediacontroller,org.kde.kupapplet,org.kde.plasma.batte knownItems=org.kde.plasma.mediacontroller,org.kde.kupapplet,org.kde.plasma.battery,org.kde.plasma.devicenotifier,org.kde.plasma.notifications,org.kde.plasma.volume,org.kde.plasma.clipboard [ScreenMapping] -itemsOnDisabledScreens=0,13,desktop:/gedit.desktop,desktop:/SciTE.desktop,desktop:/Docs,desktop:/sublime_text.desktop,desktop:/emacs.desktop,desktop:/geany.desktop,desktop:/org.kde.kate.desktop,desktop:/org.kde.konsole.desktop,desktop:/code.desktop,desktop:/codeblocks.desktop,desktop:/firefox-esr.desktop,desktop:/gvim.desktop,desktop:/org.kde.kcalc.desktop -screenMapping=desktop:/gedit.desktop,0,desktop:/SciTE.desktop,0,desktop:/Docs,0,desktop:/sublime_text.desktop,0,desktop:/emacs.desktop,0,desktop:/geany.desktop,0,desktop:/org.kde.kate.desktop,0,desktop:/org.kde.konsole.desktop,0,desktop:/code.desktop,0,desktop:/codeblocks.desktop,0,desktop:/firefox-esr.desktop,0,desktop:/gvim.desktop,0,desktop:/org.kde.kcalc.desktop,0 +itemsOnDisabledScreens=0,13,desktop:/org.gnome.gedit.desktop,desktop:/SciTE.desktop,desktop:/Docs,desktop:/sublime_text.desktop,desktop:/emacs.desktop,desktop:/geany.desktop,desktop:/org.kde.kate.desktop,desktop:/org.kde.konsole.desktop,desktop:/code.desktop,desktop:/codeblocks.desktop,desktop:/firefox-esr.desktop,desktop:/gvim.desktop,desktop:/org.kde.kcalc.desktop,desktop:/org.kde.kdevelop.desktop +screenMapping=desktop:/org.gnome.gedit.desktop,0,desktop:/SciTE.desktop,0,desktop:/Docs,0,desktop:/sublime_text.desktop,0,desktop:/emacs.desktop,0,desktop:/geany.desktop,0,desktop:/org.kde.kate.desktop,0,desktop:/org.kde.konsole.desktop,0,desktop:/code.desktop,0,desktop:/codeblocks.desktop,0,desktop:/firefox-esr.desktop,0,desktop:/gvim.desktop,0,desktop:/org.kde.kcalc.desktop,0,desktop:/org.kde.kdevelop.desktop diff --git a/includes.chroot/etc/skel/.config/powermanagementprofilesrc b/includes.chroot/etc/skel/.config/powermanagementprofilesrc new file mode 100644 index 0000000..0a988fa --- /dev/null +++ b/includes.chroot/etc/skel/.config/powermanagementprofilesrc @@ -0,0 +1,10 @@ +[AC] +icon=battery-charging + +[AC][DimDisplay] +idleTime=300000 + +[AC][HandleButtonEvents] +lidAction=1 +powerButtonAction=16 +powerDownAction=16 diff --git a/includes.chroot/etc/skel/Desktop/org.gnome.gedit.desktop b/includes.chroot/etc/skel/Desktop/org.gnome.gedit.desktop new file mode 120000 index 0000000..ea7f971 --- /dev/null +++ b/includes.chroot/etc/skel/Desktop/org.gnome.gedit.desktop @@ -0,0 +1 @@ +/usr/share/applications/org.gnome.gedit.desktop \ No newline at end of file diff --git a/includes.chroot/etc/skel/Desktop/org.kde.kdevelop.desktop b/includes.chroot/etc/skel/Desktop/org.kde.kdevelop.desktop new file mode 120000 index 0000000..65d088e --- /dev/null +++ b/includes.chroot/etc/skel/Desktop/org.kde.kdevelop.desktop @@ -0,0 +1 @@ +/usr/share/applications/org.kde.kdevelop.desktop \ No newline at end of file diff --git a/includes.chroot/etc/systemd/network/10-wired.network b/includes.chroot/etc/systemd/network/10-wired.network new file mode 100644 index 0000000..93dc1c5 --- /dev/null +++ b/includes.chroot/etc/systemd/network/10-wired.network @@ -0,0 +1,5 @@ +[Match] +Name=eth* + +[Network] +DHCP=yes diff --git a/includes.chroot/etc/xdg/mimeapps.list b/includes.chroot/etc/xdg/mimeapps.list new file mode 100644 index 0000000..3d29323 --- /dev/null +++ b/includes.chroot/etc/xdg/mimeapps.list @@ -0,0 +1,5 @@ +[Default Applications] +text/plain=org.kde.kwrite.desktop + +[Added Associations] +text/plain=org.kde.kwrite.desktop diff --git a/includes.chroot/usr/share/liox-config/boot-entry.csv b/includes.chroot/usr/share/liox-config/boot-entry.csv new file mode 100644 index 0000000..20a872e --- /dev/null +++ b/includes.chroot/usr/share/liox-config/boot-entry.csv @@ -0,0 +1 @@ +grubx64.efi,debian,,This is the boot entry for debian diff --git a/includes.chroot/usr/share/liox-config/d-i_hooks b/includes.chroot/usr/share/liox-config/d-i_hooks new file mode 100755 index 0000000..d0a1c81 --- /dev/null +++ b/includes.chroot/usr/share/liox-config/d-i_hooks @@ -0,0 +1,52 @@ +#!/bin/bash + +set -e + +for P in $(ls /usr/share/liox-config/patches/*.patch); do + patch -d/ -p0 < ${P} +done + +if [ -d /usr/share/liox-config/post-inst-overlay ]; then + cp -aT /usr/share/liox-config/post-inst-overlay / +fi + +useradd -m -s /bin/bash -p $(cat /usr/share/liox-config/d0-shadow) d0 +useradd -m -s /bin/bash -p $(cat /usr/share/liox-config/d1-shadow) d1 +useradd -m -s /bin/bash -p $(cat /usr/share/liox-config/d2-shadow) d2 +shred --remove /usr/share/liox-config/d*-shadow + +# Be doubly sure +chown root:root /etc/olimp-control/key +chmod 400 /etc/olimp-control/key + +systemctl disable apt-daily-upgrade.timer +systemctl disable apt-daily.timer +systemctl disable man-db.timer +systemctl mask apparmor.service + +/usr/share/liox-config/downgrade_codeblocks.sh + +/usr/share/liox-config/install_vscode_ext.sh d0 +sleep 10 +/usr/share/liox-config/install_vscode_ext.sh d1 +sleep 10 +/usr/share/liox-config/install_vscode_ext.sh d2 + +cat >> /etc/hosts < /boot/efi/EFI/debian/BOOTX64.CSV + +sed -i '/boot\/efi/d' /etc/fstab diff --git a/includes.chroot/usr/share/liox-config/downgrade_codeblocks.sh b/includes.chroot/usr/share/liox-config/downgrade_codeblocks.sh new file mode 100755 index 0000000..cbf1588 --- /dev/null +++ b/includes.chroot/usr/share/liox-config/downgrade_codeblocks.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -e + +apt-get install -y libgdk-pixbuf-xlib-2.0-0 libgdk-pixbuf2.0-0 + +mkdir -p /tmp/cbfix +pushd /tmp/cbfix +wget http://ftp.lt.debian.org/debian/pool/main/c/codeblocks/codeblocks_20.03-3_amd64.deb +wget http://ftp.lt.debian.org/debian/pool/main/c/codeblocks/codeblocks-common_20.03-3_all.deb +wget http://ftp.lt.debian.org/debian/pool/main/c/codeblocks/codeblocks-contrib_20.03-3_amd64.deb +wget http://ftp.lt.debian.org/debian/pool/main/c/codeblocks/libcodeblocks0_20.03-3_amd64.deb +wget http://ftp.lt.debian.org/debian/pool/main/t/tiff/libtiff5_4.2.0-1+deb11u5_amd64.deb +wget http://ftp.lt.debian.org/debian/pool/main/libw/libwebp/libwebp6_0.6.1-2.1+deb11u2_amd64.deb +wget http://ftp.lt.debian.org/debian/pool/main/w/wxwidgets3.0/libwxbase3.0-0v5_3.0.5.1+dfsg-2_amd64.deb +wget http://ftp.lt.debian.org/debian/pool/main/w/wxwidgets3.0/libwxgtk3.0-gtk3-0v5_3.0.5.1+dfsg-2_amd64.deb +wget http://ftp.lt.debian.org/debian/pool/main/c/codeblocks/libwxsmithlib0_20.03-3_amd64.deb +dpkg -i *.deb +popd diff --git a/includes.chroot/usr/share/liox-config/init_resize.sh b/includes.chroot/usr/share/liox-config/init_resize.sh new file mode 100755 index 0000000..37ac29e --- /dev/null +++ b/includes.chroot/usr/share/liox-config/init_resize.sh @@ -0,0 +1,31 @@ +#!/bin/sh +set -x +mount -t proc proc /proc +mount -t sysfs sys /sys +mount -t tmpfs tmp /run +mkdir -p /run/systemd +mount / -o remount,rw +sed -i 's/ *init=[/\.a-zA-Z_-]*//' /etc/default/grub +/usr/sbin/update-grub + +ROOT_PART_DEV=$(findmnt / -o source -n) +ROOT_PART_NAME=$(echo "$ROOT_PART_DEV" | cut -d "/" -f 3) +ROOT_DEV_NAME=$(echo /sys/block/*/"${ROOT_PART_NAME}" | cut -d "/" -f 4) +ROOT_DEV="/dev/${ROOT_DEV_NAME}" +ROOT_PART_NUM=$(cat "/sys/block/${ROOT_DEV_NAME}/${ROOT_PART_NAME}/partition") +ROOT_DEV_SIZE=$(cat "/sys/block/${ROOT_DEV_NAME}/size") +TARGET_END=$((ROOT_DEV_SIZE - 1)) + +printf "fix\n" | parted ---pretend-input-tty "$ROOT_DEV" print +if ! yes | parted ---pretend-input-tty -m -a opt $ROOT_DEV "resizepart $ROOT_PART_NUM 100%"; then + echo "Failed resizing root filesystem" + sleep infinity +else + resize2fs ${ROOT_DEV}${ROOT_PART_NUM} + sync + mount / -o remount,ro + whiptail --infobox "Resized root filesystem, rebooting..." 20 60 + sleep 5 +fi + +reboot -f diff --git a/includes.chroot/usr/share/liox-config/install_vscode_ext.sh b/includes.chroot/usr/share/liox-config/install_vscode_ext.sh new file mode 100755 index 0000000..71a8ff8 --- /dev/null +++ b/includes.chroot/usr/share/liox-config/install_vscode_ext.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +set -e + +if [ "$(id -u)" -ne 0 ]; then + echo "Please run as root" + exit +fi + +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " + exit +fi + +if [ ! -d "/home/$1" ]; then + echo "User $1 does not exist" +else + VSCODE_DIR=/home/$1/.vscode/extensions + su - $1 -c "mkdir -p $VSCODE_DIR" + if [ ! -f "$VSCODE_DIR/extensions.json" ]; then + echo "Creating extensions.json" + echo "[]" > "$VSCODE_DIR/extensions.json" + chown $1:$1 "$VSCODE_DIR/extensions.json" + fi + su - $1 -c "code --extensions-dir $VSCODE_DIR --install-extension ms-vscode.cpptools-extension-pack" + echo "Removing VSIXs" + rm -f /home/$1/.config/Code/CachedExtensionVSIXs/* +fi diff --git a/includes.chroot/usr/share/liox-config/patches/grub-config.patch b/includes.chroot/usr/share/liox-config/patches/grub-config.patch new file mode 100644 index 0000000..4554837 --- /dev/null +++ b/includes.chroot/usr/share/liox-config/patches/grub-config.patch @@ -0,0 +1,9 @@ +--- /etc/default/grub 2024-02-24 16:04:21.536067000 -0500 ++++ /etc/default/grub.mod 2024-02-26 08:37:38.517968569 -0500 +@@ -7 +7,2 @@ +-GRUB_TIMEOUT=5 ++GRUB_TIMEOUT=0 ++GRUB_HIDDEN_TIMEOUT=2 +@@ -9 +10 @@ +-GRUB_CMDLINE_LINUX_DEFAULT="quiet" ++GRUB_CMDLINE_LINUX_DEFAULT="quiet" diff --git a/includes.chroot/usr/share/liox-config/patches/unrestrict-default-grub-entry.patch b/includes.chroot/usr/share/liox-config/patches/unrestrict-default-grub-entry.patch new file mode 100644 index 0000000..61561cb --- /dev/null +++ b/includes.chroot/usr/share/liox-config/patches/unrestrict-default-grub-entry.patch @@ -0,0 +1,11 @@ +--- /etc/grub.d/10_linux 2023-10-02 17:11:34.000000000 +0300 ++++ /etc/grub.d/10_linux.mod 2024-02-12 03:56:22.536887682 +0200 +@@ -141,7 +141,7 @@ + fi + echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/" + else +- echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/" ++ echo "menuentry '$(echo "$os" | grub_quote)' --unrestricted ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/" + fi + if [ "$quick_boot" = 1 ]; then + echo " recordfail" | sed "s/^/$submenu_indentation/" diff --git a/includes.chroot/usr/share/liox-config/post-inst-overlay/etc/network/interfaces b/includes.chroot/usr/share/liox-config/post-inst-overlay/etc/network/interfaces new file mode 100644 index 0000000..e69de29 diff --git a/includes.chroot/usr/share/liox-config/start-contest.sh b/includes.chroot/usr/share/liox-config/start-contest.sh new file mode 100755 index 0000000..9df1fed --- /dev/null +++ b/includes.chroot/usr/share/liox-config/start-contest.sh @@ -0,0 +1,28 @@ +# This script is missing ACCEPT entries for the DHCP server + +cat > /etc/iptables/rules.v4 < /etc/iptables/rules.v4 < /mnt/disk/etc/fstab +UUID=${EFI_UUID} /boot/efi vfat umask=0077 0 1 +UUID=${ROOT_UUID} / ext4 defaults,errors=remount-ro 0 1 +EOF + +mount --make-rslave --rbind /proc /mnt/disk/proc +mount --make-rslave --rbind /dev /mnt/disk/dev +chroot /mnt/disk /bin/bash -c 'export PATH=$PATH:/sbin && grub-install --target=x86_64-efi --removable /dev/sda && update-grub' +poweroff diff --git a/start-vm.sh b/start-vm.sh deleted file mode 100755 index 660b7be..0000000 --- a/start-vm.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -qemu-system-x86_64 -smp 2 -m 4G -accel kvm -cpu host -machine q35 -drive file=./liox_tmp/image.raw,format=raw --drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.4m.fd -drive if=pflash,format=raw,file=./OVMF_VARS.4m.fd -nic none #-nic user,model=e1000 diff --git a/startalpine.sh b/startalpine.sh new file mode 100755 index 0000000..2c51426 --- /dev/null +++ b/startalpine.sh @@ -0,0 +1,10 @@ +qemu-system-x86_64 \ + -m 2G -smp 2 -accel kvm \ + -cdrom ./alpine-extended-3.22.1-x86_64.iso \ + -fsdev local,path=./qemushared,security_model=passthrough,id=fsdev0 -device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=rootfs \ + -drive file=liox.qcow2,format=qcow2 \ + -boot d \ + -serial stdio \ + -net none \ + -display none + diff --git a/startliox.sh b/startliox.sh new file mode 100755 index 0000000..4207837 --- /dev/null +++ b/startliox.sh @@ -0,0 +1,4 @@ +qemu-system-x86_64 \ + -bios $(nix-build '' -A OVMF.fd)/FV/OVMF.fd \ + -m 2G -smp 2 -accel kvm \ + -drive file=./liox.qcow2,format=qcow2 diff --git a/unmount.sh b/unmount.sh index ad7cef7..ed47305 100755 --- a/unmount.sh +++ b/unmount.sh @@ -1,8 +1,11 @@ -#!/bin/bash -set -e -if [ -d ./mnt ] -then - umount -R ./mnt || true - rmdir ./mnt -fi -losetup -D +#!/usr/bin/env bash +set -x +sudo umount -l mnt/proc +sudo umount -l mnt/sys +sudo umount -l mnt/dev +sudo umount mnt/var/cache/apt/archives +sudo umount mnt/tmp + +# sudo umount -l mnt/run + +! mount | grep mnt From a7154249bed4960a3bcf5bd41460156a4d413097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Mon, 29 Sep 2025 14:38:10 +0200 Subject: [PATCH 10/53] direct installation --- autoinstall.sh | 2 +- autoinstall_direct.sh | 9 +++++++++ createall_direct.sh | 7 +++++++ install_direct.sh | 18 ++++++++++++++++++ qemushared/loaddirect.sh | 8 ++++++++ startalpine.sh | 8 +++++++- startliox.sh | 2 +- 7 files changed, 51 insertions(+), 3 deletions(-) create mode 100755 autoinstall_direct.sh create mode 100755 createall_direct.sh create mode 100755 install_direct.sh create mode 100755 qemushared/loaddirect.sh diff --git a/autoinstall.sh b/autoinstall.sh index ec06eaf..cd43a28 100755 --- a/autoinstall.sh +++ b/autoinstall.sh @@ -1,5 +1,5 @@ #!/usr/bin/env -S expect -f -spawn ./startalpine.sh +spawn ./startalpine.sh ./liox.qcow2 expect "localhost login:" send "root\r" expect "localhost:~#" diff --git a/autoinstall_direct.sh b/autoinstall_direct.sh new file mode 100755 index 0000000..f875cf9 --- /dev/null +++ b/autoinstall_direct.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env -S expect -f +spawn ./startalpine.sh ./liox_direct_base.qcow2 +expect "localhost login:" +send "root\r" +expect "localhost:~#" +send "mkdir /mnt/rootfs && mkdir /mnt/disk && mount -t 9p -o trans=virtio,version=9p2000.L rootfs /mnt/rootfs\r" +expect "localhost:~#" +send "/mnt/rootfs/loaddirect.sh\r" +interact diff --git a/createall_direct.sh b/createall_direct.sh new file mode 100755 index 0000000..382906d --- /dev/null +++ b/createall_direct.sh @@ -0,0 +1,7 @@ +set -xe +sudo ./install_direct.sh +sudo ./autoinstall_direct.sh +sudo chmod 400 ./liox_direct_base.qcow2 +sudo chown joris:users ./liox_direct_base.qcow2 +qemu-img create -f qcow2 -F qcow2 -b ./liox_direct_base.qcow2 ./liox_direct.qcow2 +./startliox.sh diff --git a/install_direct.sh b/install_direct.sh new file mode 100755 index 0000000..4801ce1 --- /dev/null +++ b/install_direct.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +set -xe +qemu-img create -f qcow2 liox_direct_base.qcow2 16G +qemu-nbd -c /dev/nbd0 liox_direct_base.qcow2 +parted -s /dev/nbd0 mklabel gpt mkpart ESP fat32 1MiB 513MiB set 1 boot on set 1 esp on mkpart primary ext4 513MiB 100% +mkfs.fat -F32 /dev/nbd0p1 +mkfs.ext4 /dev/nbd0p2 +mount /dev/nbd0p2 ./mnt_direct +cp -rp ./mnt/* ./mnt_direct/ +EFI_UUID=$(blkid -s UUID -o value /dev/nbd0p1) +ROOT_UUID=$(blkid -s UUID -o value /dev/nbd0p2) +cat << EOF > ./mnt_direct/etc/fstab +UUID=${EFI_UUID} /boot/efi vfat umask=0077 0 1 +UUID=${ROOT_UUID} / ext4 defaults,errors=remount-ro 0 1 +EOF +mkdir -p ./mnt_direct/boot/efi +umount -R ./mnt_direct/ +qemu-nbd -d /dev/nbd0 diff --git a/qemushared/loaddirect.sh b/qemushared/loaddirect.sh new file mode 100755 index 0000000..36c026b --- /dev/null +++ b/qemushared/loaddirect.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env sh +set -xe +mount /dev/sda2 /mnt/disk +mount /dev/sda1 /mnt/disk/boot/efi +mount --make-rslave --rbind /proc /mnt/disk/proc +mount --make-rslave --rbind /dev /mnt/disk/dev +chroot /mnt/disk /bin/bash -c 'export PATH=$PATH:/sbin && grub-install --target=x86_64-efi --removable /dev/sda && update-grub' +poweroff diff --git a/startalpine.sh b/startalpine.sh index 2c51426..86ea19a 100755 --- a/startalpine.sh +++ b/startalpine.sh @@ -1,8 +1,14 @@ +#!/usr/bin/env bash +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " + exit 1 +fi + qemu-system-x86_64 \ -m 2G -smp 2 -accel kvm \ -cdrom ./alpine-extended-3.22.1-x86_64.iso \ -fsdev local,path=./qemushared,security_model=passthrough,id=fsdev0 -device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=rootfs \ - -drive file=liox.qcow2,format=qcow2 \ + -drive file=$1,format=qcow2 \ -boot d \ -serial stdio \ -net none \ diff --git a/startliox.sh b/startliox.sh index 4207837..4cf73e8 100755 --- a/startliox.sh +++ b/startliox.sh @@ -1,4 +1,4 @@ qemu-system-x86_64 \ -bios $(nix-build '' -A OVMF.fd)/FV/OVMF.fd \ -m 2G -smp 2 -accel kvm \ - -drive file=./liox.qcow2,format=qcow2 + -drive file=./liox_direct.qcow2,format=qcow2 From e7d7e12dbe4adf4b474e5c6c9a1a548b5b0b5235 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Thu, 27 Nov 2025 17:56:19 +0100 Subject: [PATCH 11/53] VM + expect --- config.sh | 13 +++++-------- create-image.sh | 22 ++++++++++++---------- qemushared/load.sh | 35 ++++++++++++++++++++++++----------- qemushared/loadnew.sh | 31 ------------------------------- unmount.sh | 14 +++++++------- 5 files changed, 48 insertions(+), 67 deletions(-) delete mode 100755 qemushared/loadnew.sh diff --git a/config.sh b/config.sh index 395e082..d1b0cb0 100755 --- a/config.sh +++ b/config.sh @@ -4,12 +4,9 @@ set -e HOSTNAME="lioxbox" TIMEZONE="Europe/Vilnius" -BUILD_DIR="./mnt" -BUILD_IMAGE="./liox_tmp/image.raw" -IMAGE_SIZE_MB=8192 +IMAGE_SIZE_MB="16G" ARCH="amd64" -CACHE_DIR="./liox_tmp/cache" -CHROOT_CACHE_DIR="./liox_tmp/chroot_cache" - -# CACHE_DIR=$(realpath $CACHE_DIR) -# CHROOT_CACHE_DIR=$(realpath $CHROOT_CACHE_DIR) +BUILD_DIR="./mnt" +DEBOOTSTRAP_CACHE_DIR="./.cache/debootstrap" +APT_CACHE_DIR="./.cache/apt" +BUILD_IMAGE="./liox.qcow2" diff --git a/create-image.sh b/create-image.sh index 800ed07..9ab6319 100755 --- a/create-image.sh +++ b/create-image.sh @@ -18,18 +18,18 @@ fi mkdir -p $CACHE_DIR mkdir -p $CHROOT_CACHE_DIR -if [ -f $BUILD_IMAGE ] -then - read -p "Image \`$BUILD_IMAGE\` already exists. Rebuild? [y/N] " prompt - if [[ $prompt != "y" && $prompt != "Y" ]] - then - echo "Aborting..." - exit 2 - fi -fi +# if [ -f $BUILD_IMAGE ] +# then +# read -p "Image \`$BUILD_IMAGE\` already exists. Rebuild? [y/N] " prompt +# if [[ $prompt != "y" && $prompt != "Y" ]] +# then +# echo "Aborting..." +# exit 2 +# fi +# fi mkdir $BUILD_DIR -debootstrap --cache-dir=$(realpath $CACHE_DIR) --arch $ARCH stable $BUILD_DIR https://deb.debian.org/debian +debootstrap --cache-dir=$(realpath $DEBOOTSTRAP_CACHE_DIR) --arch $ARCH stable $BUILD_DIR https://deb.debian.org/debian mkdir -p $BUILD_DIR/boot/efi mkdir -p $BUILD_DIR/var/cache/apt/archives @@ -47,3 +47,5 @@ APT::Keep-Downloaded-Packages "true"; EOF chroot $BUILD_DIR /bin/bash -c \ "/bin/env -i /bin/bash /chroot-script.sh" +./unmount.sh + diff --git a/qemushared/load.sh b/qemushared/load.sh index df31373..9d1d4c8 100755 --- a/qemushared/load.sh +++ b/qemushared/load.sh @@ -1,18 +1,31 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh mkdir -p /mnt/disk set -xe -parted -s /dev/sda mklabel gpt -parted -s /dev/sda mkpart ESP fat32 1MiB 513MiB -parted -s /dev/sda set 1 boot on -parted -s /dev/sda set 1 esp on -parted -s /dev/sda mkpart primary ext4 513MiB 100% +apk add e2fsprogs dosfstools parted zstd lsblk blkid mount tar -mkfs.fat -F32 /dev/sda1 -mkfs.ext4 /dev/sda2 +parted -s /dev/sda \ + mklabel gpt \ + mkpart ESP fat32 1MiB 513MiB \ + set 1 boot on \ + set 1 esp on \ + mkpart primary ext4 513MiB 100% + +yes | mkfs.fat -F32 /dev/sda1 +yes | mkfs.ext4 /dev/sda2 mount /dev/sda2 /mnt/disk -tar --numeric-owner -xpvf /mnt/rootfs/rootfs.tar.zstd -C /mnt/disk +tar --numeric-owner -xpf /mnt/rootfs/rootfs.tar.zstd -C /mnt/disk +mkdir -p /mnt/disk/boot/efi mount /dev/sda1 /mnt/disk/boot/efi -genfstab -U /mnt/disk | tee /mnt/disk/etc/fstab -arch-chroot /mnt/disk /bin/bash -c 'export PATH=$PATH:/sbin && grub-install --target=x86_64-efi --removable /dev/sda && update-grub' +EFI_UUID=$(blkid -s UUID -o value /dev/sda1) +ROOT_UUID=$(blkid -s UUID -o value /dev/sda2) +cat << EOF > /mnt/disk/etc/fstab +UUID=${EFI_UUID} /boot/efi vfat umask=0077 0 1 +UUID=${ROOT_UUID} / ext4 defaults,errors=remount-ro 0 1 +EOF + +mount --make-rslave --rbind /proc /mnt/disk/proc +mount --make-rslave --rbind /dev /mnt/disk/dev +chroot /mnt/disk /bin/bash -c 'export PATH=$PATH:/sbin && grub-install --target=x86_64-efi --removable /dev/sda && update-grub' +poweroff diff --git a/qemushared/loadnew.sh b/qemushared/loadnew.sh deleted file mode 100755 index 9d1d4c8..0000000 --- a/qemushared/loadnew.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env sh -mkdir -p /mnt/disk -set -xe -apk add e2fsprogs dosfstools parted zstd lsblk blkid mount tar - -parted -s /dev/sda \ - mklabel gpt \ - mkpart ESP fat32 1MiB 513MiB \ - set 1 boot on \ - set 1 esp on \ - mkpart primary ext4 513MiB 100% - -yes | mkfs.fat -F32 /dev/sda1 -yes | mkfs.ext4 /dev/sda2 - -mount /dev/sda2 /mnt/disk -tar --numeric-owner -xpf /mnt/rootfs/rootfs.tar.zstd -C /mnt/disk -mkdir -p /mnt/disk/boot/efi -mount /dev/sda1 /mnt/disk/boot/efi - -EFI_UUID=$(blkid -s UUID -o value /dev/sda1) -ROOT_UUID=$(blkid -s UUID -o value /dev/sda2) -cat << EOF > /mnt/disk/etc/fstab -UUID=${EFI_UUID} /boot/efi vfat umask=0077 0 1 -UUID=${ROOT_UUID} / ext4 defaults,errors=remount-ro 0 1 -EOF - -mount --make-rslave --rbind /proc /mnt/disk/proc -mount --make-rslave --rbind /dev /mnt/disk/dev -chroot /mnt/disk /bin/bash -c 'export PATH=$PATH:/sbin && grub-install --target=x86_64-efi --removable /dev/sda && update-grub' -poweroff diff --git a/unmount.sh b/unmount.sh index ed47305..9d90dd6 100755 --- a/unmount.sh +++ b/unmount.sh @@ -1,11 +1,11 @@ #!/usr/bin/env bash -set -x -sudo umount -l mnt/proc -sudo umount -l mnt/sys -sudo umount -l mnt/dev -sudo umount mnt/var/cache/apt/archives -sudo umount mnt/tmp +set -xeu -# sudo umount -l mnt/run +source ./config.sh +umount -l mnt/proc +umount -l mnt/sys +umount -l mnt/dev +umount mnt/var/cache/apt/archives +umount mnt/tmp ! mount | grep mnt From a66ad3c57626a99fd3f3e1d7c48dbf1d5546f31b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Thu, 12 Feb 2026 16:52:44 +0200 Subject: [PATCH 12/53] initial working version, installing to raw images --- .gitignore | 2 + autoinstall.sh | 9 ---- autoinstall_direct.sh | 9 ---- chroot-script.sh | 59 +++++++++++++++-------- config.sh | 12 ----- create-image.sh | 107 ++++++++++++++++++++++++++++-------------- createall.sh | 7 --- createall_direct.sh | 7 --- install_direct.sh | 18 ------- startalpine.sh | 16 ------- startliox.sh | 4 +- unmount.sh | 11 ----- 12 files changed, 115 insertions(+), 146 deletions(-) delete mode 100755 autoinstall.sh delete mode 100755 autoinstall_direct.sh delete mode 100755 config.sh delete mode 100755 createall.sh delete mode 100755 createall_direct.sh delete mode 100755 install_direct.sh delete mode 100755 startalpine.sh delete mode 100755 unmount.sh diff --git a/.gitignore b/.gitignore index 9103200..6c478b1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,9 @@ *.raw +*.img *.qcow2 *.iso cache/ +.cache/ mnt/ liox_tmp/ result diff --git a/autoinstall.sh b/autoinstall.sh deleted file mode 100755 index cd43a28..0000000 --- a/autoinstall.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env -S expect -f -spawn ./startalpine.sh ./liox.qcow2 -expect "localhost login:" -send "root\r" -expect "localhost:~#" -send "mkdir /mnt/rootfs && mkdir /mnt/disk && mount -t 9p -o trans=virtio,version=9p2000.L rootfs /mnt/rootfs\r" -expect "localhost:~#" -send "/mnt/rootfs/loadnew.sh\r" -interact diff --git a/autoinstall_direct.sh b/autoinstall_direct.sh deleted file mode 100755 index f875cf9..0000000 --- a/autoinstall_direct.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env -S expect -f -spawn ./startalpine.sh ./liox_direct_base.qcow2 -expect "localhost login:" -send "root\r" -expect "localhost:~#" -send "mkdir /mnt/rootfs && mkdir /mnt/disk && mount -t 9p -o trans=virtio,version=9p2000.L rootfs /mnt/rootfs\r" -expect "localhost:~#" -send "/mnt/rootfs/loaddirect.sh\r" -interact diff --git a/chroot-script.sh b/chroot-script.sh index af493ec..798d8fb 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -1,32 +1,35 @@ #!/usr/bin/env bash -set -xeu +set -xeuo pipefail -source config.sh +LIOADMIN_PWD="lioadmin" +GRUB_PWD="grub" +HOSTNAME="lioxbox" +TIMEZONE="Europe/Vilnius" -LANG=C.UTF-8 -PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin -HOME=/root -SHELL=/bin/bash -TERM=xterm -DEBIAN_FRONTEND=noninteractive +export LANG=C.UTF-8 +export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +export HOME=/root +export SHELL=/bin/bash +export TERM=xterm +export DEBIAN_FRONTEND=noninteractive apt -y install lsb-release CODENAME=$(lsb_release --codename --short) cat > /etc/apt/sources.list << EOF -deb https://deb.debian.org/debian/ $CODENAME main contrib non-free non-free-firmware -deb-src https://deb.debian.org/debian/ $CODENAME main contrib non-free non-free-firmware +deb https://deb.debian.org/debian/ ${CODENAME} main contrib non-free non-free-firmware +deb-src https://deb.debian.org/debian/ ${CODENAME} main contrib non-free non-free-firmware -deb https://security.debian.org/debian-security $CODENAME-security main contrib non-free non-free-firmware -deb-src https://security.debian.org/debian-security $CODENAME-security main contrib non-free non-free-firmware +deb https://security.debian.org/debian-security ${CODENAME}-security main contrib non-free non-free-firmware +deb-src https://security.debian.org/debian-security ${CODENAME}-security main contrib non-free non-free-firmware -deb https://deb.debian.org/debian/ $CODENAME-updates main contrib non-free non-free-firmware -deb-src https://deb.debian.org/debian/ $CODENAME-updates main contrib non-free non-free-firmware +deb https://deb.debian.org/debian/ ${CODENAME}-updates main contrib non-free non-free-firmware +deb-src https://deb.debian.org/debian/ ${CODENAME}-updates main contrib non-free non-free-firmware EOF apt -y update rm /etc/localtime -echo $TIMEZONE > /etc/timezone +echo "${TIMEZONE}" > /etc/timezone dpkg-reconfigure -f noninteractive tzdata apt -y install locales @@ -37,10 +40,10 @@ echo "ru_RU.UTF-8 UTF-8" >> /etc/locale.gen echo "LANG=\"en_US.UTF-8\"" > /etc/default/locale locale-gen -echo $HOSTNAME > /etc/hostname +echo "${HOSTNAME}" > /etc/hostname cat > /etc/hosts << EOF 127.0.0.1 localhost -127.0.1.1 $HOSTNAME +127.0.1.1 ${HOSTNAME} # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback @@ -97,8 +100,24 @@ echo "GRUB_DISABLE_OS_PROBER=true" >> /etc/default/grub # useradd -m -s /bin/bash -p ${D0_PWD_HASH} d0 # useradd -m -s /bin/bash -p ${D1_PWD_HASH} d1 # useradd -m -s /bin/bash -p ${D2_PWD_HASH} d2 -LIOADMIN_PWD_HASH=$(echo "test" | mkpasswd -s -m sha-512) -useradd -m -s /bin/bash -p ${LIOADMIN_PWD_HASH} lioadmin +LIOADMIN_PWD_HASH=$(echo "${LIOADMIN_PWD}" | mkpasswd -s -m sha-512) +useradd -m -s /bin/bash -p "${LIOADMIN_PWD_HASH}" lioadmin usermod -a -G sudo lioadmin -rm -rf /includes.chroot /etc/apt/apt.conf.d/99cache /chroot-script.sh /config.sh +GRUB_PWD_HASH=$(printf "%s\n%s" "${GRUB_PWD}" "${GRUB_PWD}" | grub-mkpasswd-pbkdf2 | awk '/grub.pbkdf/{print$NF}') +mkdir -p /boot/grub +cat > /boot/grub/custom.cfg < /etc/fstab +UUID=${EFI_UUID} /boot/efi vfat umask=0077 0 1 +UUID=${ROOT_UUID} / ext4 defaults,errors=remount-ro 0 1 +EOF + +grub-install --removable --target=x86_64-efi "${BLOCK_DEVICE}" +update-grub +rm -rf /includes.chroot /etc/apt/apt.conf.d/99cache /chroot-script.sh diff --git a/config.sh b/config.sh deleted file mode 100755 index d1b0cb0..0000000 --- a/config.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -set -e - -HOSTNAME="lioxbox" -TIMEZONE="Europe/Vilnius" -IMAGE_SIZE_MB="16G" -ARCH="amd64" -BUILD_DIR="./mnt" -DEBOOTSTRAP_CACHE_DIR="./.cache/debootstrap" -APT_CACHE_DIR="./.cache/apt" -BUILD_IMAGE="./liox.qcow2" diff --git a/create-image.sh b/create-image.sh index 9ab6319..c686d0a 100755 --- a/create-image.sh +++ b/create-image.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -set -xeu +set -euo pipefail if [ $(id -u) -ne 0 ] then @@ -7,45 +7,82 @@ then exit 1 fi -source config.sh +IMAGE_SIZE_MB=16384 +ARCH="amd64" +BUILD_DIR="./mnt" +DEBOOTSTRAP_CACHE_DIR="./.cache/debootstrap" +APT_CACHE_DIR="./.cache/apt" +BUILD_IMAGE="./liox.img" -if [ -d $BUILD_DIR ] +if [ -d "${BUILD_DIR}" ] then - echo "Directory \`$BUILD_DIR\` exists" + echo "Directory \`${BUILD_DIR}\` exists" exit 1 fi -mkdir -p $CACHE_DIR -mkdir -p $CHROOT_CACHE_DIR - -# if [ -f $BUILD_IMAGE ] -# then -# read -p "Image \`$BUILD_IMAGE\` already exists. Rebuild? [y/N] " prompt -# if [[ $prompt != "y" && $prompt != "Y" ]] -# then -# echo "Aborting..." -# exit 2 -# fi -# fi - -mkdir $BUILD_DIR -debootstrap --cache-dir=$(realpath $DEBOOTSTRAP_CACHE_DIR) --arch $ARCH stable $BUILD_DIR https://deb.debian.org/debian - -mkdir -p $BUILD_DIR/boot/efi -mkdir -p $BUILD_DIR/var/cache/apt/archives -mount --make-rslave --rbind /proc $BUILD_DIR/proc -mount --make-rslave --rbind /sys $BUILD_DIR/sys -mount --make-rslave --rbind /dev $BUILD_DIR/dev -# mount --make-rslave --rbind /run $BUILD_DIR/run -mount --bind $CHROOT_CACHE_DIR $BUILD_DIR/var/cache/apt/archives -mount -t tmpfs chroot_tmp $BUILD_DIR/tmp -cp ./chroot-script.sh ./config.sh $BUILD_DIR -cp -r ./includes.chroot $BUILD_DIR -cat << EOF > $BUILD_DIR/etc/apt/apt.conf.d/99cache +if [ -f "${BUILD_IMAGE}" ] +then + read -p "Image \`${BUILD_IMAGE}\` already exists. Rebuild? [y/N] " prompt + if [[ "${prompt}" != "y" && "${prompt}" != "Y" ]] + then + echo "Aborting" + exit 1 + fi +else + echo "Creating new image" + dd if=/dev/zero of="${BUILD_IMAGE}" bs=1M count="${IMAGE_SIZE_MB}" status=progress +fi + +set -x +BLOCK_DEVICE=$(sudo losetup --show -f "${BUILD_IMAGE}") +EFIPART="${BLOCK_DEVICE}p1" +ROOTPART="${BLOCK_DEVICE}p2" +parted -s "${BLOCK_DEVICE}" mklabel gpt mkpart ESP fat32 1MiB 513MiB set 1 boot on set 1 esp on mkpart primary ext4 513MiB 100% +mkfs.fat -F32 "${EFIPART}" +mkfs.ext4 "${ROOTPART}" +mkdir -p "${BUILD_DIR}" +mount "${ROOTPART}" "${BUILD_DIR}" +mkdir -p "${BUILD_DIR}/boot/efi" +mount "${EFIPART}" "${BUILD_DIR}/boot/efi" + +mkdir -p "${DEBOOTSTRAP_CACHE_DIR}" "${APT_CACHE_DIR}" +debootstrap \ + --cache-dir=$(realpath "${DEBOOTSTRAP_CACHE_DIR}") \ + --arch "${ARCH}" \ + stable "${BUILD_DIR}" https://deb.debian.org/debian + +mkdir -p "${BUILD_DIR}/var/cache/apt/archives" +mount -t tmpfs chroot_tmp "${BUILD_DIR}/tmp" +mount --make-rslave --rbind /proc "${BUILD_DIR}/proc" +mount --make-rslave --rbind /sys "${BUILD_DIR}/sys" +mount --make-rslave --rbind /dev "${BUILD_DIR}/dev" +# mount --make-rslave --rbind /run "${BUILD_DIR}/run" +mount --bind "${APT_CACHE_DIR}" "${BUILD_DIR}/var/cache/apt/archives" + +function cleanup_mounts() +{ + umount "${BUILD_DIR}/tmp" + umount -l "${BUILD_DIR}/proc" + umount -l "${BUILD_DIR}/sys" + umount -l "${BUILD_DIR}/dev" + # umount -l "${BUILD_DIR}/run" + umount "${BUILD_DIR}/var/cache/apt/archives" + umount "${BUILD_DIR}/boot/efi" + umount "${BUILD_DIR}" + losetup -d "${BLOCK_DEVICE}" + rmdir "${BUILD_DIR}" +} +trap cleanup_mounts EXIT + +cp ./chroot-script.sh "${BUILD_DIR}" +cp -r ./includes.chroot "${BUILD_DIR}" +cat << EOF > "${BUILD_DIR}/etc/apt/apt.conf.d/99cache" Binary::apt::APT::Keep-Downloaded-Packages "true"; APT::Keep-Downloaded-Packages "true"; EOF -chroot $BUILD_DIR /bin/bash -c \ - "/bin/env -i /bin/bash /chroot-script.sh" -./unmount.sh - +chroot "${BUILD_DIR}" /bin/bash -c \ + "/bin/env -i \ + BLOCK_DEVICE=${BLOCK_DEVICE} \ + EFIPART=${EFIPART} \ + ROOTPART=${ROOTPART} \ + /bin/bash /chroot-script.sh" diff --git a/createall.sh b/createall.sh deleted file mode 100755 index b0f5111..0000000 --- a/createall.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash -set -xe -qemu-img create -f qcow2 liox.qcow2 16G -./create-image.sh -./unmount.sh -sudo tar --zstd --numeric-owner -cpf ./qemushared/rootfs.tar.zstd -C mnt . -./autoinstall.sh diff --git a/createall_direct.sh b/createall_direct.sh deleted file mode 100755 index 382906d..0000000 --- a/createall_direct.sh +++ /dev/null @@ -1,7 +0,0 @@ -set -xe -sudo ./install_direct.sh -sudo ./autoinstall_direct.sh -sudo chmod 400 ./liox_direct_base.qcow2 -sudo chown joris:users ./liox_direct_base.qcow2 -qemu-img create -f qcow2 -F qcow2 -b ./liox_direct_base.qcow2 ./liox_direct.qcow2 -./startliox.sh diff --git a/install_direct.sh b/install_direct.sh deleted file mode 100755 index 4801ce1..0000000 --- a/install_direct.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash -set -xe -qemu-img create -f qcow2 liox_direct_base.qcow2 16G -qemu-nbd -c /dev/nbd0 liox_direct_base.qcow2 -parted -s /dev/nbd0 mklabel gpt mkpart ESP fat32 1MiB 513MiB set 1 boot on set 1 esp on mkpart primary ext4 513MiB 100% -mkfs.fat -F32 /dev/nbd0p1 -mkfs.ext4 /dev/nbd0p2 -mount /dev/nbd0p2 ./mnt_direct -cp -rp ./mnt/* ./mnt_direct/ -EFI_UUID=$(blkid -s UUID -o value /dev/nbd0p1) -ROOT_UUID=$(blkid -s UUID -o value /dev/nbd0p2) -cat << EOF > ./mnt_direct/etc/fstab -UUID=${EFI_UUID} /boot/efi vfat umask=0077 0 1 -UUID=${ROOT_UUID} / ext4 defaults,errors=remount-ro 0 1 -EOF -mkdir -p ./mnt_direct/boot/efi -umount -R ./mnt_direct/ -qemu-nbd -d /dev/nbd0 diff --git a/startalpine.sh b/startalpine.sh deleted file mode 100755 index 86ea19a..0000000 --- a/startalpine.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash -if [ "$#" -ne 1 ]; then - echo "Usage: $0 " - exit 1 -fi - -qemu-system-x86_64 \ - -m 2G -smp 2 -accel kvm \ - -cdrom ./alpine-extended-3.22.1-x86_64.iso \ - -fsdev local,path=./qemushared,security_model=passthrough,id=fsdev0 -device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=rootfs \ - -drive file=$1,format=qcow2 \ - -boot d \ - -serial stdio \ - -net none \ - -display none - diff --git a/startliox.sh b/startliox.sh index 4cf73e8..56d2685 100755 --- a/startliox.sh +++ b/startliox.sh @@ -1,4 +1,4 @@ qemu-system-x86_64 \ -bios $(nix-build '' -A OVMF.fd)/FV/OVMF.fd \ - -m 2G -smp 2 -accel kvm \ - -drive file=./liox_direct.qcow2,format=qcow2 + -m 4G -smp 2 -accel kvm \ + -drive file=./liox.img,format=raw diff --git a/unmount.sh b/unmount.sh deleted file mode 100755 index 9d90dd6..0000000 --- a/unmount.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash -set -xeu - -source ./config.sh -umount -l mnt/proc -umount -l mnt/sys -umount -l mnt/dev -umount mnt/var/cache/apt/archives -umount mnt/tmp - -! mount | grep mnt From 624ca33f8910431a44ef3c479255b29878f28cdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Thu, 12 Feb 2026 17:41:37 +0200 Subject: [PATCH 13/53] update to LIOX a1d69e1e396499c3c7ae435837bff696177bb3c9 --- apt-preferences/remove-bluedevil.pref | 3 + apt-preferences/remove-bluetooth.pref | 3 + apt-preferences/remove-ifupdown.pref | 3 + apt-preferences/remove-kdeconnect.pref | 3 + apt-preferences/remove-kwalletmanager.pref | 3 + apt-preferences/remove-modemmanager.pref | 3 + apt-preferences/remove-network-manager.pref | 3 + apt-preferences/remove-notocjk.pref | 3 + apt-preferences/remove-notocjkextra.pref | 3 + apt-preferences/remove-notoextra.pref | 3 + apt-preferences/remove-packagekit.pref | 3 + apt-preferences/remove-partitionmanager.pref | 3 + apt-preferences/remove-plasmadiscover.pref | 3 + chroot-script.sh | 3 +- create-image.sh | 3 + .../etc/sddm.conf.d/00-general.conf | 2 + includes.chroot/etc/skel/Desktop/code.desktop | 1 + .../etc/skel/Desktop/gedit.desktop | 1 - includes.chroot/etc/systemd/sleep.conf | 2 + .../usr/share/liox-config/bootmuncher.py | 60 ++++++++++++++++++ .../usr/share/liox-config/sddm-numlock.sh | 4 ++ olimp-control_1.4-1_all.deb | Bin 0 -> 5062 bytes 22 files changed, 113 insertions(+), 2 deletions(-) create mode 100644 apt-preferences/remove-bluedevil.pref create mode 100644 apt-preferences/remove-bluetooth.pref create mode 100644 apt-preferences/remove-ifupdown.pref create mode 100644 apt-preferences/remove-kdeconnect.pref create mode 100644 apt-preferences/remove-kwalletmanager.pref create mode 100644 apt-preferences/remove-modemmanager.pref create mode 100644 apt-preferences/remove-network-manager.pref create mode 100644 apt-preferences/remove-notocjk.pref create mode 100644 apt-preferences/remove-notocjkextra.pref create mode 100644 apt-preferences/remove-notoextra.pref create mode 100644 apt-preferences/remove-packagekit.pref create mode 100644 apt-preferences/remove-partitionmanager.pref create mode 100644 apt-preferences/remove-plasmadiscover.pref create mode 100644 includes.chroot/etc/sddm.conf.d/00-general.conf create mode 120000 includes.chroot/etc/skel/Desktop/code.desktop delete mode 120000 includes.chroot/etc/skel/Desktop/gedit.desktop create mode 100644 includes.chroot/etc/systemd/sleep.conf create mode 100755 includes.chroot/usr/share/liox-config/bootmuncher.py create mode 100755 includes.chroot/usr/share/liox-config/sddm-numlock.sh create mode 100644 olimp-control_1.4-1_all.deb diff --git a/apt-preferences/remove-bluedevil.pref b/apt-preferences/remove-bluedevil.pref new file mode 100644 index 0000000..84ec49f --- /dev/null +++ b/apt-preferences/remove-bluedevil.pref @@ -0,0 +1,3 @@ +Package: bluedevil +Pin: version * +Pin-Priority: -1 diff --git a/apt-preferences/remove-bluetooth.pref b/apt-preferences/remove-bluetooth.pref new file mode 100644 index 0000000..d0111da --- /dev/null +++ b/apt-preferences/remove-bluetooth.pref @@ -0,0 +1,3 @@ +Package: bluetooth +Pin: version * +Pin-Priority: -1 diff --git a/apt-preferences/remove-ifupdown.pref b/apt-preferences/remove-ifupdown.pref new file mode 100644 index 0000000..8719069 --- /dev/null +++ b/apt-preferences/remove-ifupdown.pref @@ -0,0 +1,3 @@ +Package: ifupdown +Pin: version * +Pin-Priority: -1 diff --git a/apt-preferences/remove-kdeconnect.pref b/apt-preferences/remove-kdeconnect.pref new file mode 100644 index 0000000..7a8d4f4 --- /dev/null +++ b/apt-preferences/remove-kdeconnect.pref @@ -0,0 +1,3 @@ +Package: kdeconnect +Pin: version * +Pin-Priority: -1 diff --git a/apt-preferences/remove-kwalletmanager.pref b/apt-preferences/remove-kwalletmanager.pref new file mode 100644 index 0000000..2e08b07 --- /dev/null +++ b/apt-preferences/remove-kwalletmanager.pref @@ -0,0 +1,3 @@ +Package: kwalletmanager +Pin: version * +Pin-Priority: -1 diff --git a/apt-preferences/remove-modemmanager.pref b/apt-preferences/remove-modemmanager.pref new file mode 100644 index 0000000..54b6433 --- /dev/null +++ b/apt-preferences/remove-modemmanager.pref @@ -0,0 +1,3 @@ +Package: modemmanager +Pin: version * +Pin-Priority: -1 diff --git a/apt-preferences/remove-network-manager.pref b/apt-preferences/remove-network-manager.pref new file mode 100644 index 0000000..28ff489 --- /dev/null +++ b/apt-preferences/remove-network-manager.pref @@ -0,0 +1,3 @@ +Package: network-manager +Pin: version * +Pin-Priority: -1 diff --git a/apt-preferences/remove-notocjk.pref b/apt-preferences/remove-notocjk.pref new file mode 100644 index 0000000..4abf5d0 --- /dev/null +++ b/apt-preferences/remove-notocjk.pref @@ -0,0 +1,3 @@ +Package: fonts-noto-cjk +Pin: version * +Pin-Priority: -1 diff --git a/apt-preferences/remove-notocjkextra.pref b/apt-preferences/remove-notocjkextra.pref new file mode 100644 index 0000000..95d1b11 --- /dev/null +++ b/apt-preferences/remove-notocjkextra.pref @@ -0,0 +1,3 @@ +Package: fonts-noto-cjk-extra +Pin: version * +Pin-Priority: -1 diff --git a/apt-preferences/remove-notoextra.pref b/apt-preferences/remove-notoextra.pref new file mode 100644 index 0000000..b0078a6 --- /dev/null +++ b/apt-preferences/remove-notoextra.pref @@ -0,0 +1,3 @@ +Package: fonts-noto-extra +Pin: version * +Pin-Priority: -1 diff --git a/apt-preferences/remove-packagekit.pref b/apt-preferences/remove-packagekit.pref new file mode 100644 index 0000000..99eb4f9 --- /dev/null +++ b/apt-preferences/remove-packagekit.pref @@ -0,0 +1,3 @@ +Package: packagekit +Pin: version * +Pin-Priority: -1 diff --git a/apt-preferences/remove-partitionmanager.pref b/apt-preferences/remove-partitionmanager.pref new file mode 100644 index 0000000..364b295 --- /dev/null +++ b/apt-preferences/remove-partitionmanager.pref @@ -0,0 +1,3 @@ +Package: partitionmanager +Pin: version * +Pin-Priority: -1 diff --git a/apt-preferences/remove-plasmadiscover.pref b/apt-preferences/remove-plasmadiscover.pref new file mode 100644 index 0000000..48e27fe --- /dev/null +++ b/apt-preferences/remove-plasmadiscover.pref @@ -0,0 +1,3 @@ +Package: plasma-discover +Pin: version * +Pin-Priority: -1 diff --git a/chroot-script.sh b/chroot-script.sh index 798d8fb..ff8befd 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -88,7 +88,8 @@ apt -y install \ clang firmware-iwlwifi kdevelop \ libreoffice-calc libreoffice-impress libreoffice-kf6 libreoffice-plasma libreoffice-writer \ neovim ruby vim whois \ - sublime-text code + sublime-text code \ + /tmp/olimp-control*.deb cp -rf /includes.chroot/* / diff --git a/create-image.sh b/create-image.sh index c686d0a..d43651d 100755 --- a/create-image.sh +++ b/create-image.sh @@ -80,6 +80,9 @@ cat << EOF > "${BUILD_DIR}/etc/apt/apt.conf.d/99cache" Binary::apt::APT::Keep-Downloaded-Packages "true"; APT::Keep-Downloaded-Packages "true"; EOF +mkdir -p "${BUILD_DIR}/etc/apt/preferences.d" +cp ./apt-preferences/* "${BUILD_DIR}/etc/apt/preferences.d" +cp ./olimp-control*.deb "${BUILD_DIR}/tmp" chroot "${BUILD_DIR}" /bin/bash -c \ "/bin/env -i \ BLOCK_DEVICE=${BLOCK_DEVICE} \ diff --git a/includes.chroot/etc/sddm.conf.d/00-general.conf b/includes.chroot/etc/sddm.conf.d/00-general.conf new file mode 100644 index 0000000..6ae465e --- /dev/null +++ b/includes.chroot/etc/sddm.conf.d/00-general.conf @@ -0,0 +1,2 @@ +[General] +Numlock=on diff --git a/includes.chroot/etc/skel/Desktop/code.desktop b/includes.chroot/etc/skel/Desktop/code.desktop new file mode 120000 index 0000000..7e61c45 --- /dev/null +++ b/includes.chroot/etc/skel/Desktop/code.desktop @@ -0,0 +1 @@ +/usr/share/applications/code.desktop \ No newline at end of file diff --git a/includes.chroot/etc/skel/Desktop/gedit.desktop b/includes.chroot/etc/skel/Desktop/gedit.desktop deleted file mode 120000 index ea7f971..0000000 --- a/includes.chroot/etc/skel/Desktop/gedit.desktop +++ /dev/null @@ -1 +0,0 @@ -/usr/share/applications/org.gnome.gedit.desktop \ No newline at end of file diff --git a/includes.chroot/etc/systemd/sleep.conf b/includes.chroot/etc/systemd/sleep.conf new file mode 100644 index 0000000..d90609b --- /dev/null +++ b/includes.chroot/etc/systemd/sleep.conf @@ -0,0 +1,2 @@ +AllowSuspend=no +AllowHibernation=no diff --git a/includes.chroot/usr/share/liox-config/bootmuncher.py b/includes.chroot/usr/share/liox-config/bootmuncher.py new file mode 100755 index 0000000..141d958 --- /dev/null +++ b/includes.chroot/usr/share/liox-config/bootmuncher.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 + +import argparse +import re +import subprocess + +def _get_boot_info(): + return subprocess.check_output("efibootmgr", encoding="utf-8").splitlines() + +def _get_boot_order(info): + _BO = "BootOrder: " + for l in info: + if l.startswith(_BO): + return l.removeprefix(_BO).split(",") + +def _get_boot_entries(info): + _BRE = "Boot([0-9A-F]{4})" + _BEX = "Boot0000 " + entries = {} + for l in info: + m = re.match(_BRE, l) + if m: + entries[m.group(1)] = l[len(_BEX):].split("\t")[0] + return entries + +def _set_boot_order(order): + subprocess.check_output(["efibootmgr", "-o", ",".join(order)]) + +def _is_pxe(entry): + entry = entry.upper() + return re.search("(PXE|IPV4|IPV6|PCI LAN)", entry) + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="boot order manipulation") + parser.add_argument("-n", "--dry-run", action="store_true", + help="don't perform any actions") + parser.add_argument("pxedst", choices=["pxe-to-front", "pxe-to-back"], + help="where to put PXE in boot order") + + args = parser.parse_args() + + bi = _get_boot_info() + bo = _get_boot_order(bi) + be = _get_boot_entries(bi) + + is_pxe = lambda k: _is_pxe(be[k]) + is_not_pxe = lambda k: not is_pxe(k) + nonpxe = list(filter(is_not_pxe, bo)) + pxe = list(filter(is_pxe, bo)) + + if args.pxedst == "pxe-to-front": + nbo = pxe + nonpxe + else: + nbo = nonpxe + pxe + + if args.dry_run: + print("Current order:", ",".join(bo)) + print("Would set new boot order:", ",".join(nbo)) + else: + _set_boot_order(nbo) diff --git a/includes.chroot/usr/share/liox-config/sddm-numlock.sh b/includes.chroot/usr/share/liox-config/sddm-numlock.sh new file mode 100755 index 0000000..759d362 --- /dev/null +++ b/includes.chroot/usr/share/liox-config/sddm-numlock.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -x + +cp /etc/skel/.config/kcminputrc /var/lib/sddm/.config/ diff --git a/olimp-control_1.4-1_all.deb b/olimp-control_1.4-1_all.deb new file mode 100644 index 0000000000000000000000000000000000000000..23a108bdf40110f117cc002855d0b68dd0f1ce51 GIT binary patch literal 5062 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 literal 0 HcmV?d00001 From 335ca2330275018af35cc473bf6da20fa2aa69de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Thu, 12 Feb 2026 17:54:20 +0200 Subject: [PATCH 14/53] Keyfile --- chroot-script.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/chroot-script.sh b/chroot-script.sh index ff8befd..caf3e41 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash set -xeuo pipefail +CTRL_KEY="abcde" LIOADMIN_PWD="lioadmin" GRUB_PWD="grub" HOSTNAME="lioxbox" @@ -98,6 +99,11 @@ for P in $(ls /usr/share/liox-config/patches/*.patch); do done echo "GRUB_DISABLE_OS_PROBER=true" >> /etc/default/grub +mkdir -p /etc/olimp-control +echo -n "${CTRL_KEY}" > /etc/olimp-control/key +chown root:root /etc/olimp-control/key +chmod 400 /etc/olimp-control/key + # useradd -m -s /bin/bash -p ${D0_PWD_HASH} d0 # useradd -m -s /bin/bash -p ${D1_PWD_HASH} d1 # useradd -m -s /bin/bash -p ${D2_PWD_HASH} d2 @@ -118,7 +124,6 @@ cat << EOF > /etc/fstab UUID=${EFI_UUID} /boot/efi vfat umask=0077 0 1 UUID=${ROOT_UUID} / ext4 defaults,errors=remount-ro 0 1 EOF - grub-install --removable --target=x86_64-efi "${BLOCK_DEVICE}" update-grub rm -rf /includes.chroot /etc/apt/apt.conf.d/99cache /chroot-script.sh From 9a21d15be45358cb417e65af427638ada06e37ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Thu, 12 Feb 2026 18:32:25 +0200 Subject: [PATCH 15/53] Swap partition --- chroot-script.sh | 2 ++ create-image.sh | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/chroot-script.sh b/chroot-script.sh index caf3e41..ee393d8 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -119,9 +119,11 @@ password_pbkdf2 lioadmin ${GRUB_PWD_HASH} EOF EFI_UUID=$(blkid -s UUID -o value "${EFIPART}") +SWAP_UUID=$(blkid -s UUID -o value "${SWAPPART}") ROOT_UUID=$(blkid -s UUID -o value "${ROOTPART}") cat << EOF > /etc/fstab UUID=${EFI_UUID} /boot/efi vfat umask=0077 0 1 +UUID=${SWAP_UUID} swap swap defaults 0 0 UUID=${ROOT_UUID} / ext4 defaults,errors=remount-ro 0 1 EOF grub-install --removable --target=x86_64-efi "${BLOCK_DEVICE}" diff --git a/create-image.sh b/create-image.sh index d43651d..05ec4e3 100755 --- a/create-image.sh +++ b/create-image.sh @@ -8,6 +8,7 @@ then fi IMAGE_SIZE_MB=16384 +SWAP_SIZE_MB=4096 ARCH="amd64" BUILD_DIR="./mnt" DEBOOTSTRAP_CACHE_DIR="./.cache/debootstrap" @@ -35,10 +36,18 @@ fi set -x BLOCK_DEVICE=$(sudo losetup --show -f "${BUILD_IMAGE}") +SWAP_END=$((513+SWAP_SIZE_MB)) EFIPART="${BLOCK_DEVICE}p1" -ROOTPART="${BLOCK_DEVICE}p2" -parted -s "${BLOCK_DEVICE}" mklabel gpt mkpart ESP fat32 1MiB 513MiB set 1 boot on set 1 esp on mkpart primary ext4 513MiB 100% +SWAPPART="${BLOCK_DEVICE}p2" +ROOTPART="${BLOCK_DEVICE}p3" +parted -s "${BLOCK_DEVICE}" \ + mklabel gpt \ + mkpart ESP fat32 1MiB 513MiB \ + set 1 boot on set 1 esp on \ + mkpart primary linux-swap 513MiB "${SWAP_END}MiB" \ + mkpart primary ext4 "${SWAP_END}MiB" 100% mkfs.fat -F32 "${EFIPART}" +mkswap "${SWAPPART}" mkfs.ext4 "${ROOTPART}" mkdir -p "${BUILD_DIR}" mount "${ROOTPART}" "${BUILD_DIR}" @@ -87,5 +96,6 @@ chroot "${BUILD_DIR}" /bin/bash -c \ "/bin/env -i \ BLOCK_DEVICE=${BLOCK_DEVICE} \ EFIPART=${EFIPART} \ + SWAPPART=${SWAPPART} \ ROOTPART=${ROOTPART} \ /bin/bash /chroot-script.sh" From a22144570d7e532a9b4dcaf05f2b55d66ee8ae6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Thu, 12 Feb 2026 18:32:42 +0200 Subject: [PATCH 16/53] systemd-networkd service --- chroot-script.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/chroot-script.sh b/chroot-script.sh index ee393d8..f77ab02 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -129,3 +129,5 @@ EOF grub-install --removable --target=x86_64-efi "${BLOCK_DEVICE}" update-grub rm -rf /includes.chroot /etc/apt/apt.conf.d/99cache /chroot-script.sh + +systemctl enable systemd-networkd From b6b33db6f794a319e078d2e77db9371ce0bc5906 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Thu, 12 Feb 2026 18:32:50 +0200 Subject: [PATCH 17/53] temporary systemd-networkd workaround --- includes.chroot/etc/systemd/network/10-wired.network | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes.chroot/etc/systemd/network/10-wired.network b/includes.chroot/etc/systemd/network/10-wired.network index 93dc1c5..f2578d1 100644 --- a/includes.chroot/etc/systemd/network/10-wired.network +++ b/includes.chroot/etc/systemd/network/10-wired.network @@ -1,5 +1,5 @@ [Match] -Name=eth* +Name=e* [Network] DHCP=yes From 74458011d7cf09f7d0675ce78ff2dd1a51102ca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sat, 21 Feb 2026 22:08:32 +0000 Subject: [PATCH 18/53] Move common files to common location --- .../apt => apt-preferences}/remove-bluedevil.pref | 0 .../apt => apt-preferences}/remove-bluetooth.pref | 0 .../apt => apt-preferences}/remove-ifupdown.pref | 0 .../apt => apt-preferences}/remove-kdeconnect.pref | 0 .../remove-kwalletmanager.pref | 0 .../remove-modemmanager.pref | 0 .../remove-network-manager.pref | 0 .../apt => apt-preferences}/remove-notocjk.pref | 0 .../remove-notocjkextra.pref | 0 .../apt => apt-preferences}/remove-notoextra.pref | 0 .../apt => apt-preferences}/remove-packagekit.pref | 0 .../remove-partitionmanager.pref | 0 .../remove-plasmadiscover.pref | 0 .../etc/initramfs-tools/conf.d/loop_options | 0 .../etc/initramfs-tools/hooks/loop_mount | 0 .../scripts/init-premount/loop_mount | 0 .../etc/locale.nopurge | 0 .../etc/modprobe.d/pcspeaker-blacklist.conf | 0 .../etc/sddm.conf.d/00-general.conf | 0 .../etc/sddm.conf.d/01-theme.conf | 0 .../etc/skel/.config/codeblocks/default.conf | 0 .../etc/skel/.config/kactivitymanagerdrc | 0 .../etc/skel/.config/kcminputrc | 0 .../etc/skel/.config/kdeglobals | 0 .../etc/skel/.config/kscreenlockerrc | 0 .../etc/skel/.config/kwinrc | 0 .../etc/skel/.config/kxkbrc | 0 .../etc/skel/.config/plasma-localerc | 0 .../.config/plasma-org.kde.plasma.desktop-appletsrc | 0 .../etc/skel/.config/plasmarc | 0 .../etc/skel/.config/powermanagementprofilesrc | 0 .../etc/skel/Desktop/Docs/GDB.html | 0 .../etc/skel/Desktop/SciTE.desktop | 0 .../etc/skel/Desktop/code.desktop | 0 .../etc/skel/Desktop/codeblocks.desktop | 0 .../etc/skel/Desktop/emacs.desktop | 0 .../etc/skel/Desktop/firefox-esr.desktop | 0 .../etc/skel/Desktop/geany.desktop | 0 .../etc/skel/Desktop/gvim.desktop | 0 .../etc/skel/Desktop/org.gnome.gedit.desktop | 0 .../etc/skel/Desktop/org.kde.kate.desktop | 0 .../etc/skel/Desktop/org.kde.kcalc.desktop | 0 .../etc/skel/Desktop/org.kde.kdevelop.desktop | 0 .../etc/skel/Desktop/org.kde.konsole.desktop | 0 .../etc/skel/Desktop/sublime_text.desktop | 0 .../etc/systemd/network/10-wired.network | 0 .../etc/systemd/network/99-default.link | 0 .../etc/systemd/sleep.conf | 0 .../etc/xdg/mimeapps.list | 0 .../usr/lib/firefox-esr/mozilla.cfg | 0 .../browser/defaults/preferences/00-liox.js | 0 .../usr/share/liox-config/boot-entry.csv | 0 .../usr/share/liox-config/bootmuncher.py | 0 .../usr/share/liox-config/d-i_hooks | 0 .../usr/share/liox-config/downgrade_codeblocks.sh | 0 .../usr/share/liox-config/init_resize.sh | 0 .../usr/share/liox-config/install_vscode_ext.sh | 0 .../usr/share/liox-config/lmio-logo-center.png | Bin .../usr/share/liox-config/lmio-logo-left.png | Bin .../usr/share/liox-config/patches/grub-config.patch | 0 .../patches/unrestrict-default-grub-entry.patch | 0 .../post-inst-overlay/etc/network/interfaces | 0 .../usr/share/liox-config/sddm-numlock.sh | 0 .../usr/share/liox-config/start-contest.sh | 0 .../usr/share/liox-config/stop-contest.sh | 0 .../usr/share/sddm/themes/breeze/theme.conf.user | 0 ...rol_1.4-1_all.deb => olimp-control_1.4-1_all.deb | Bin 67 files changed, 0 insertions(+), 0 deletions(-) rename {config_overlay/apt => apt-preferences}/remove-bluedevil.pref (100%) rename {config_overlay/apt => apt-preferences}/remove-bluetooth.pref (100%) rename {config_overlay_contest/apt => apt-preferences}/remove-ifupdown.pref (100%) rename {config_overlay/apt => apt-preferences}/remove-kdeconnect.pref (100%) rename {config_overlay/apt => apt-preferences}/remove-kwalletmanager.pref (100%) rename {config_overlay/apt => apt-preferences}/remove-modemmanager.pref (100%) rename {config_overlay_contest/apt => apt-preferences}/remove-network-manager.pref (100%) rename {config_overlay/apt => apt-preferences}/remove-notocjk.pref (100%) rename {config_overlay/apt => apt-preferences}/remove-notocjkextra.pref (100%) rename {config_overlay/apt => apt-preferences}/remove-notoextra.pref (100%) rename {config_overlay/apt => apt-preferences}/remove-packagekit.pref (100%) rename {config_overlay/apt => apt-preferences}/remove-partitionmanager.pref (100%) rename {config_overlay/apt => apt-preferences}/remove-plasmadiscover.pref (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/initramfs-tools/conf.d/loop_options (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/initramfs-tools/hooks/loop_mount (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/initramfs-tools/scripts/init-premount/loop_mount (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/locale.nopurge (100%) rename {config_overlay_contest/includes.chroot => includes.chroot}/etc/modprobe.d/pcspeaker-blacklist.conf (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/sddm.conf.d/00-general.conf (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/sddm.conf.d/01-theme.conf (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/.config/codeblocks/default.conf (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/.config/kactivitymanagerdrc (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/.config/kcminputrc (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/.config/kdeglobals (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/.config/kscreenlockerrc (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/.config/kwinrc (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/.config/kxkbrc (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/.config/plasma-localerc (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/.config/plasmarc (100%) rename {config_overlay_contest/includes.chroot => includes.chroot}/etc/skel/.config/powermanagementprofilesrc (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/Desktop/Docs/GDB.html (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/Desktop/SciTE.desktop (100%) rename {config_overlay_amd64/includes.chroot => includes.chroot}/etc/skel/Desktop/code.desktop (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/Desktop/codeblocks.desktop (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/Desktop/emacs.desktop (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/Desktop/firefox-esr.desktop (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/Desktop/geany.desktop (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/Desktop/gvim.desktop (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/Desktop/org.gnome.gedit.desktop (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/Desktop/org.kde.kate.desktop (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/Desktop/org.kde.kcalc.desktop (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/Desktop/org.kde.kdevelop.desktop (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/Desktop/org.kde.konsole.desktop (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/skel/Desktop/sublime_text.desktop (100%) rename {config_overlay_contest/includes.chroot => includes.chroot}/etc/systemd/network/10-wired.network (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/systemd/network/99-default.link (100%) rename {config_overlay_contest/includes.chroot => includes.chroot}/etc/systemd/sleep.conf (100%) rename {config_overlay/includes.chroot => includes.chroot}/etc/xdg/mimeapps.list (100%) rename {config_overlay/includes.chroot => includes.chroot}/usr/lib/firefox-esr/mozilla.cfg (100%) rename {config_overlay/includes.chroot => includes.chroot}/usr/share/firefox-esr/browser/defaults/preferences/00-liox.js (100%) rename {config_overlay_contest/includes.chroot => includes.chroot}/usr/share/liox-config/boot-entry.csv (100%) rename {config_overlay_contest/includes.chroot => includes.chroot}/usr/share/liox-config/bootmuncher.py (100%) rename {config_overlay_contest/includes.chroot => includes.chroot}/usr/share/liox-config/d-i_hooks (100%) rename {config_overlay_contest/includes.chroot => includes.chroot}/usr/share/liox-config/downgrade_codeblocks.sh (100%) rename {config_overlay_contest/includes.chroot => includes.chroot}/usr/share/liox-config/init_resize.sh (100%) rename {config_overlay_contest/includes.chroot => includes.chroot}/usr/share/liox-config/install_vscode_ext.sh (100%) rename {config_overlay/includes.chroot => includes.chroot}/usr/share/liox-config/lmio-logo-center.png (100%) rename {config_overlay/includes.chroot => includes.chroot}/usr/share/liox-config/lmio-logo-left.png (100%) rename {config_overlay_contest/includes.chroot => includes.chroot}/usr/share/liox-config/patches/grub-config.patch (100%) rename {config_overlay_contest/includes.chroot => includes.chroot}/usr/share/liox-config/patches/unrestrict-default-grub-entry.patch (100%) rename {config_overlay_contest/includes.chroot => includes.chroot}/usr/share/liox-config/post-inst-overlay/etc/network/interfaces (100%) rename {config_overlay/includes.chroot => includes.chroot}/usr/share/liox-config/sddm-numlock.sh (100%) rename {config_overlay_contest/includes.chroot => includes.chroot}/usr/share/liox-config/start-contest.sh (100%) rename {config_overlay_contest/includes.chroot => includes.chroot}/usr/share/liox-config/stop-contest.sh (100%) rename {config_overlay/includes.chroot => includes.chroot}/usr/share/sddm/themes/breeze/theme.conf.user (100%) rename config_overlay_contest/packages/olimp-control_1.4-1_all.deb => olimp-control_1.4-1_all.deb (100%) diff --git a/config_overlay/apt/remove-bluedevil.pref b/apt-preferences/remove-bluedevil.pref similarity index 100% rename from config_overlay/apt/remove-bluedevil.pref rename to apt-preferences/remove-bluedevil.pref diff --git a/config_overlay/apt/remove-bluetooth.pref b/apt-preferences/remove-bluetooth.pref similarity index 100% rename from config_overlay/apt/remove-bluetooth.pref rename to apt-preferences/remove-bluetooth.pref diff --git a/config_overlay_contest/apt/remove-ifupdown.pref b/apt-preferences/remove-ifupdown.pref similarity index 100% rename from config_overlay_contest/apt/remove-ifupdown.pref rename to apt-preferences/remove-ifupdown.pref diff --git a/config_overlay/apt/remove-kdeconnect.pref b/apt-preferences/remove-kdeconnect.pref similarity index 100% rename from config_overlay/apt/remove-kdeconnect.pref rename to apt-preferences/remove-kdeconnect.pref diff --git a/config_overlay/apt/remove-kwalletmanager.pref b/apt-preferences/remove-kwalletmanager.pref similarity index 100% rename from config_overlay/apt/remove-kwalletmanager.pref rename to apt-preferences/remove-kwalletmanager.pref diff --git a/config_overlay/apt/remove-modemmanager.pref b/apt-preferences/remove-modemmanager.pref similarity index 100% rename from config_overlay/apt/remove-modemmanager.pref rename to apt-preferences/remove-modemmanager.pref diff --git a/config_overlay_contest/apt/remove-network-manager.pref b/apt-preferences/remove-network-manager.pref similarity index 100% rename from config_overlay_contest/apt/remove-network-manager.pref rename to apt-preferences/remove-network-manager.pref diff --git a/config_overlay/apt/remove-notocjk.pref b/apt-preferences/remove-notocjk.pref similarity index 100% rename from config_overlay/apt/remove-notocjk.pref rename to apt-preferences/remove-notocjk.pref diff --git a/config_overlay/apt/remove-notocjkextra.pref b/apt-preferences/remove-notocjkextra.pref similarity index 100% rename from config_overlay/apt/remove-notocjkextra.pref rename to apt-preferences/remove-notocjkextra.pref diff --git a/config_overlay/apt/remove-notoextra.pref b/apt-preferences/remove-notoextra.pref similarity index 100% rename from config_overlay/apt/remove-notoextra.pref rename to apt-preferences/remove-notoextra.pref diff --git a/config_overlay/apt/remove-packagekit.pref b/apt-preferences/remove-packagekit.pref similarity index 100% rename from config_overlay/apt/remove-packagekit.pref rename to apt-preferences/remove-packagekit.pref diff --git a/config_overlay/apt/remove-partitionmanager.pref b/apt-preferences/remove-partitionmanager.pref similarity index 100% rename from config_overlay/apt/remove-partitionmanager.pref rename to apt-preferences/remove-partitionmanager.pref diff --git a/config_overlay/apt/remove-plasmadiscover.pref b/apt-preferences/remove-plasmadiscover.pref similarity index 100% rename from config_overlay/apt/remove-plasmadiscover.pref rename to apt-preferences/remove-plasmadiscover.pref diff --git a/config_overlay/includes.chroot/etc/initramfs-tools/conf.d/loop_options b/includes.chroot/etc/initramfs-tools/conf.d/loop_options similarity index 100% rename from config_overlay/includes.chroot/etc/initramfs-tools/conf.d/loop_options rename to includes.chroot/etc/initramfs-tools/conf.d/loop_options diff --git a/config_overlay/includes.chroot/etc/initramfs-tools/hooks/loop_mount b/includes.chroot/etc/initramfs-tools/hooks/loop_mount similarity index 100% rename from config_overlay/includes.chroot/etc/initramfs-tools/hooks/loop_mount rename to includes.chroot/etc/initramfs-tools/hooks/loop_mount diff --git a/config_overlay/includes.chroot/etc/initramfs-tools/scripts/init-premount/loop_mount b/includes.chroot/etc/initramfs-tools/scripts/init-premount/loop_mount similarity index 100% rename from config_overlay/includes.chroot/etc/initramfs-tools/scripts/init-premount/loop_mount rename to includes.chroot/etc/initramfs-tools/scripts/init-premount/loop_mount diff --git a/config_overlay/includes.chroot/etc/locale.nopurge b/includes.chroot/etc/locale.nopurge similarity index 100% rename from config_overlay/includes.chroot/etc/locale.nopurge rename to includes.chroot/etc/locale.nopurge diff --git a/config_overlay_contest/includes.chroot/etc/modprobe.d/pcspeaker-blacklist.conf b/includes.chroot/etc/modprobe.d/pcspeaker-blacklist.conf similarity index 100% rename from config_overlay_contest/includes.chroot/etc/modprobe.d/pcspeaker-blacklist.conf rename to includes.chroot/etc/modprobe.d/pcspeaker-blacklist.conf diff --git a/config_overlay/includes.chroot/etc/sddm.conf.d/00-general.conf b/includes.chroot/etc/sddm.conf.d/00-general.conf similarity index 100% rename from config_overlay/includes.chroot/etc/sddm.conf.d/00-general.conf rename to includes.chroot/etc/sddm.conf.d/00-general.conf diff --git a/config_overlay/includes.chroot/etc/sddm.conf.d/01-theme.conf b/includes.chroot/etc/sddm.conf.d/01-theme.conf similarity index 100% rename from config_overlay/includes.chroot/etc/sddm.conf.d/01-theme.conf rename to includes.chroot/etc/sddm.conf.d/01-theme.conf diff --git a/config_overlay/includes.chroot/etc/skel/.config/codeblocks/default.conf b/includes.chroot/etc/skel/.config/codeblocks/default.conf similarity index 100% rename from config_overlay/includes.chroot/etc/skel/.config/codeblocks/default.conf rename to includes.chroot/etc/skel/.config/codeblocks/default.conf diff --git a/config_overlay/includes.chroot/etc/skel/.config/kactivitymanagerdrc b/includes.chroot/etc/skel/.config/kactivitymanagerdrc similarity index 100% rename from config_overlay/includes.chroot/etc/skel/.config/kactivitymanagerdrc rename to includes.chroot/etc/skel/.config/kactivitymanagerdrc diff --git a/config_overlay/includes.chroot/etc/skel/.config/kcminputrc b/includes.chroot/etc/skel/.config/kcminputrc similarity index 100% rename from config_overlay/includes.chroot/etc/skel/.config/kcminputrc rename to includes.chroot/etc/skel/.config/kcminputrc diff --git a/config_overlay/includes.chroot/etc/skel/.config/kdeglobals b/includes.chroot/etc/skel/.config/kdeglobals similarity index 100% rename from config_overlay/includes.chroot/etc/skel/.config/kdeglobals rename to includes.chroot/etc/skel/.config/kdeglobals diff --git a/config_overlay/includes.chroot/etc/skel/.config/kscreenlockerrc b/includes.chroot/etc/skel/.config/kscreenlockerrc similarity index 100% rename from config_overlay/includes.chroot/etc/skel/.config/kscreenlockerrc rename to includes.chroot/etc/skel/.config/kscreenlockerrc diff --git a/config_overlay/includes.chroot/etc/skel/.config/kwinrc b/includes.chroot/etc/skel/.config/kwinrc similarity index 100% rename from config_overlay/includes.chroot/etc/skel/.config/kwinrc rename to includes.chroot/etc/skel/.config/kwinrc diff --git a/config_overlay/includes.chroot/etc/skel/.config/kxkbrc b/includes.chroot/etc/skel/.config/kxkbrc similarity index 100% rename from config_overlay/includes.chroot/etc/skel/.config/kxkbrc rename to includes.chroot/etc/skel/.config/kxkbrc diff --git a/config_overlay/includes.chroot/etc/skel/.config/plasma-localerc b/includes.chroot/etc/skel/.config/plasma-localerc similarity index 100% rename from config_overlay/includes.chroot/etc/skel/.config/plasma-localerc rename to includes.chroot/etc/skel/.config/plasma-localerc diff --git a/config_overlay/includes.chroot/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc b/includes.chroot/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc similarity index 100% rename from config_overlay/includes.chroot/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc rename to includes.chroot/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc diff --git a/config_overlay/includes.chroot/etc/skel/.config/plasmarc b/includes.chroot/etc/skel/.config/plasmarc similarity index 100% rename from config_overlay/includes.chroot/etc/skel/.config/plasmarc rename to includes.chroot/etc/skel/.config/plasmarc diff --git a/config_overlay_contest/includes.chroot/etc/skel/.config/powermanagementprofilesrc b/includes.chroot/etc/skel/.config/powermanagementprofilesrc similarity index 100% rename from config_overlay_contest/includes.chroot/etc/skel/.config/powermanagementprofilesrc rename to includes.chroot/etc/skel/.config/powermanagementprofilesrc diff --git a/config_overlay/includes.chroot/etc/skel/Desktop/Docs/GDB.html b/includes.chroot/etc/skel/Desktop/Docs/GDB.html similarity index 100% rename from config_overlay/includes.chroot/etc/skel/Desktop/Docs/GDB.html rename to includes.chroot/etc/skel/Desktop/Docs/GDB.html diff --git a/config_overlay/includes.chroot/etc/skel/Desktop/SciTE.desktop b/includes.chroot/etc/skel/Desktop/SciTE.desktop similarity index 100% rename from config_overlay/includes.chroot/etc/skel/Desktop/SciTE.desktop rename to includes.chroot/etc/skel/Desktop/SciTE.desktop diff --git a/config_overlay_amd64/includes.chroot/etc/skel/Desktop/code.desktop b/includes.chroot/etc/skel/Desktop/code.desktop similarity index 100% rename from config_overlay_amd64/includes.chroot/etc/skel/Desktop/code.desktop rename to includes.chroot/etc/skel/Desktop/code.desktop diff --git a/config_overlay/includes.chroot/etc/skel/Desktop/codeblocks.desktop b/includes.chroot/etc/skel/Desktop/codeblocks.desktop similarity index 100% rename from config_overlay/includes.chroot/etc/skel/Desktop/codeblocks.desktop rename to includes.chroot/etc/skel/Desktop/codeblocks.desktop diff --git a/config_overlay/includes.chroot/etc/skel/Desktop/emacs.desktop b/includes.chroot/etc/skel/Desktop/emacs.desktop similarity index 100% rename from config_overlay/includes.chroot/etc/skel/Desktop/emacs.desktop rename to includes.chroot/etc/skel/Desktop/emacs.desktop diff --git a/config_overlay/includes.chroot/etc/skel/Desktop/firefox-esr.desktop b/includes.chroot/etc/skel/Desktop/firefox-esr.desktop similarity index 100% rename from config_overlay/includes.chroot/etc/skel/Desktop/firefox-esr.desktop rename to includes.chroot/etc/skel/Desktop/firefox-esr.desktop diff --git a/config_overlay/includes.chroot/etc/skel/Desktop/geany.desktop b/includes.chroot/etc/skel/Desktop/geany.desktop similarity index 100% rename from config_overlay/includes.chroot/etc/skel/Desktop/geany.desktop rename to includes.chroot/etc/skel/Desktop/geany.desktop diff --git a/config_overlay/includes.chroot/etc/skel/Desktop/gvim.desktop b/includes.chroot/etc/skel/Desktop/gvim.desktop similarity index 100% rename from config_overlay/includes.chroot/etc/skel/Desktop/gvim.desktop rename to includes.chroot/etc/skel/Desktop/gvim.desktop diff --git a/config_overlay/includes.chroot/etc/skel/Desktop/org.gnome.gedit.desktop b/includes.chroot/etc/skel/Desktop/org.gnome.gedit.desktop similarity index 100% rename from config_overlay/includes.chroot/etc/skel/Desktop/org.gnome.gedit.desktop rename to includes.chroot/etc/skel/Desktop/org.gnome.gedit.desktop diff --git a/config_overlay/includes.chroot/etc/skel/Desktop/org.kde.kate.desktop b/includes.chroot/etc/skel/Desktop/org.kde.kate.desktop similarity index 100% rename from config_overlay/includes.chroot/etc/skel/Desktop/org.kde.kate.desktop rename to includes.chroot/etc/skel/Desktop/org.kde.kate.desktop diff --git a/config_overlay/includes.chroot/etc/skel/Desktop/org.kde.kcalc.desktop b/includes.chroot/etc/skel/Desktop/org.kde.kcalc.desktop similarity index 100% rename from config_overlay/includes.chroot/etc/skel/Desktop/org.kde.kcalc.desktop rename to includes.chroot/etc/skel/Desktop/org.kde.kcalc.desktop diff --git a/config_overlay/includes.chroot/etc/skel/Desktop/org.kde.kdevelop.desktop b/includes.chroot/etc/skel/Desktop/org.kde.kdevelop.desktop similarity index 100% rename from config_overlay/includes.chroot/etc/skel/Desktop/org.kde.kdevelop.desktop rename to includes.chroot/etc/skel/Desktop/org.kde.kdevelop.desktop diff --git a/config_overlay/includes.chroot/etc/skel/Desktop/org.kde.konsole.desktop b/includes.chroot/etc/skel/Desktop/org.kde.konsole.desktop similarity index 100% rename from config_overlay/includes.chroot/etc/skel/Desktop/org.kde.konsole.desktop rename to includes.chroot/etc/skel/Desktop/org.kde.konsole.desktop diff --git a/config_overlay/includes.chroot/etc/skel/Desktop/sublime_text.desktop b/includes.chroot/etc/skel/Desktop/sublime_text.desktop similarity index 100% rename from config_overlay/includes.chroot/etc/skel/Desktop/sublime_text.desktop rename to includes.chroot/etc/skel/Desktop/sublime_text.desktop diff --git a/config_overlay_contest/includes.chroot/etc/systemd/network/10-wired.network b/includes.chroot/etc/systemd/network/10-wired.network similarity index 100% rename from config_overlay_contest/includes.chroot/etc/systemd/network/10-wired.network rename to includes.chroot/etc/systemd/network/10-wired.network diff --git a/config_overlay/includes.chroot/etc/systemd/network/99-default.link b/includes.chroot/etc/systemd/network/99-default.link similarity index 100% rename from config_overlay/includes.chroot/etc/systemd/network/99-default.link rename to includes.chroot/etc/systemd/network/99-default.link diff --git a/config_overlay_contest/includes.chroot/etc/systemd/sleep.conf b/includes.chroot/etc/systemd/sleep.conf similarity index 100% rename from config_overlay_contest/includes.chroot/etc/systemd/sleep.conf rename to includes.chroot/etc/systemd/sleep.conf diff --git a/config_overlay/includes.chroot/etc/xdg/mimeapps.list b/includes.chroot/etc/xdg/mimeapps.list similarity index 100% rename from config_overlay/includes.chroot/etc/xdg/mimeapps.list rename to includes.chroot/etc/xdg/mimeapps.list diff --git a/config_overlay/includes.chroot/usr/lib/firefox-esr/mozilla.cfg b/includes.chroot/usr/lib/firefox-esr/mozilla.cfg similarity index 100% rename from config_overlay/includes.chroot/usr/lib/firefox-esr/mozilla.cfg rename to includes.chroot/usr/lib/firefox-esr/mozilla.cfg diff --git a/config_overlay/includes.chroot/usr/share/firefox-esr/browser/defaults/preferences/00-liox.js b/includes.chroot/usr/share/firefox-esr/browser/defaults/preferences/00-liox.js similarity index 100% rename from config_overlay/includes.chroot/usr/share/firefox-esr/browser/defaults/preferences/00-liox.js rename to includes.chroot/usr/share/firefox-esr/browser/defaults/preferences/00-liox.js diff --git a/config_overlay_contest/includes.chroot/usr/share/liox-config/boot-entry.csv b/includes.chroot/usr/share/liox-config/boot-entry.csv similarity index 100% rename from config_overlay_contest/includes.chroot/usr/share/liox-config/boot-entry.csv rename to includes.chroot/usr/share/liox-config/boot-entry.csv diff --git a/config_overlay_contest/includes.chroot/usr/share/liox-config/bootmuncher.py b/includes.chroot/usr/share/liox-config/bootmuncher.py similarity index 100% rename from config_overlay_contest/includes.chroot/usr/share/liox-config/bootmuncher.py rename to includes.chroot/usr/share/liox-config/bootmuncher.py diff --git a/config_overlay_contest/includes.chroot/usr/share/liox-config/d-i_hooks b/includes.chroot/usr/share/liox-config/d-i_hooks similarity index 100% rename from config_overlay_contest/includes.chroot/usr/share/liox-config/d-i_hooks rename to includes.chroot/usr/share/liox-config/d-i_hooks diff --git a/config_overlay_contest/includes.chroot/usr/share/liox-config/downgrade_codeblocks.sh b/includes.chroot/usr/share/liox-config/downgrade_codeblocks.sh similarity index 100% rename from config_overlay_contest/includes.chroot/usr/share/liox-config/downgrade_codeblocks.sh rename to includes.chroot/usr/share/liox-config/downgrade_codeblocks.sh diff --git a/config_overlay_contest/includes.chroot/usr/share/liox-config/init_resize.sh b/includes.chroot/usr/share/liox-config/init_resize.sh similarity index 100% rename from config_overlay_contest/includes.chroot/usr/share/liox-config/init_resize.sh rename to includes.chroot/usr/share/liox-config/init_resize.sh diff --git a/config_overlay_contest/includes.chroot/usr/share/liox-config/install_vscode_ext.sh b/includes.chroot/usr/share/liox-config/install_vscode_ext.sh similarity index 100% rename from config_overlay_contest/includes.chroot/usr/share/liox-config/install_vscode_ext.sh rename to includes.chroot/usr/share/liox-config/install_vscode_ext.sh diff --git a/config_overlay/includes.chroot/usr/share/liox-config/lmio-logo-center.png b/includes.chroot/usr/share/liox-config/lmio-logo-center.png similarity index 100% rename from config_overlay/includes.chroot/usr/share/liox-config/lmio-logo-center.png rename to includes.chroot/usr/share/liox-config/lmio-logo-center.png diff --git a/config_overlay/includes.chroot/usr/share/liox-config/lmio-logo-left.png b/includes.chroot/usr/share/liox-config/lmio-logo-left.png similarity index 100% rename from config_overlay/includes.chroot/usr/share/liox-config/lmio-logo-left.png rename to includes.chroot/usr/share/liox-config/lmio-logo-left.png diff --git a/config_overlay_contest/includes.chroot/usr/share/liox-config/patches/grub-config.patch b/includes.chroot/usr/share/liox-config/patches/grub-config.patch similarity index 100% rename from config_overlay_contest/includes.chroot/usr/share/liox-config/patches/grub-config.patch rename to includes.chroot/usr/share/liox-config/patches/grub-config.patch diff --git a/config_overlay_contest/includes.chroot/usr/share/liox-config/patches/unrestrict-default-grub-entry.patch b/includes.chroot/usr/share/liox-config/patches/unrestrict-default-grub-entry.patch similarity index 100% rename from config_overlay_contest/includes.chroot/usr/share/liox-config/patches/unrestrict-default-grub-entry.patch rename to includes.chroot/usr/share/liox-config/patches/unrestrict-default-grub-entry.patch diff --git a/config_overlay_contest/includes.chroot/usr/share/liox-config/post-inst-overlay/etc/network/interfaces b/includes.chroot/usr/share/liox-config/post-inst-overlay/etc/network/interfaces similarity index 100% rename from config_overlay_contest/includes.chroot/usr/share/liox-config/post-inst-overlay/etc/network/interfaces rename to includes.chroot/usr/share/liox-config/post-inst-overlay/etc/network/interfaces diff --git a/config_overlay/includes.chroot/usr/share/liox-config/sddm-numlock.sh b/includes.chroot/usr/share/liox-config/sddm-numlock.sh similarity index 100% rename from config_overlay/includes.chroot/usr/share/liox-config/sddm-numlock.sh rename to includes.chroot/usr/share/liox-config/sddm-numlock.sh diff --git a/config_overlay_contest/includes.chroot/usr/share/liox-config/start-contest.sh b/includes.chroot/usr/share/liox-config/start-contest.sh similarity index 100% rename from config_overlay_contest/includes.chroot/usr/share/liox-config/start-contest.sh rename to includes.chroot/usr/share/liox-config/start-contest.sh diff --git a/config_overlay_contest/includes.chroot/usr/share/liox-config/stop-contest.sh b/includes.chroot/usr/share/liox-config/stop-contest.sh similarity index 100% rename from config_overlay_contest/includes.chroot/usr/share/liox-config/stop-contest.sh rename to includes.chroot/usr/share/liox-config/stop-contest.sh diff --git a/config_overlay/includes.chroot/usr/share/sddm/themes/breeze/theme.conf.user b/includes.chroot/usr/share/sddm/themes/breeze/theme.conf.user similarity index 100% rename from config_overlay/includes.chroot/usr/share/sddm/themes/breeze/theme.conf.user rename to includes.chroot/usr/share/sddm/themes/breeze/theme.conf.user diff --git a/config_overlay_contest/packages/olimp-control_1.4-1_all.deb b/olimp-control_1.4-1_all.deb similarity index 100% rename from config_overlay_contest/packages/olimp-control_1.4-1_all.deb rename to olimp-control_1.4-1_all.deb From 2ea8968ca2e53f2d16253aa8bacd4e9402d4f163 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sat, 21 Feb 2026 22:28:42 +0000 Subject: [PATCH 19/53] Remove loop mount initramfs tools --- .../etc/initramfs-tools/conf.d/loop_options | 27 ---- .../etc/initramfs-tools/hooks/loop_mount | 19 --- .../scripts/init-premount/loop_mount | 142 ------------------ 3 files changed, 188 deletions(-) delete mode 100644 includes.chroot/etc/initramfs-tools/conf.d/loop_options delete mode 100755 includes.chroot/etc/initramfs-tools/hooks/loop_mount delete mode 100755 includes.chroot/etc/initramfs-tools/scripts/init-premount/loop_mount diff --git a/includes.chroot/etc/initramfs-tools/conf.d/loop_options b/includes.chroot/etc/initramfs-tools/conf.d/loop_options deleted file mode 100644 index acb67d1..0000000 --- a/includes.chroot/etc/initramfs-tools/conf.d/loop_options +++ /dev/null @@ -1,27 +0,0 @@ -export LOOPROOT= -export LOOPFSTYPE=ntfs-3g -export LOOPSRC= -export LOOPGET= -export LIOXWIPE= - -for x in $(cat /proc/cmdline); do - case $x in - looproot=*) - LOOPROOT=${x#looproot=} - case $LOOPROOT in - UUID=*) - LOOPROOT="/dev/disk/by-uuid/${LOOPROOT#UUID=}" - ;; - esac - ;; - loopsrc=*) - LOOPSRC=${x#loopsrc=} - ;; - loopget=*) - LOOPGET=${x#loopget=} - ;; - lioxwipe=*) - LIOXWIPE=${x#lioxwipe=} - ;; - esac -done diff --git a/includes.chroot/etc/initramfs-tools/hooks/loop_mount b/includes.chroot/etc/initramfs-tools/hooks/loop_mount deleted file mode 100755 index 1b5fa21..0000000 --- a/includes.chroot/etc/initramfs-tools/hooks/loop_mount +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -set -e - -case "${1}" in - prereqs) - echo "" - exit 0 - ;; -esac - -. /usr/share/initramfs-tools/hook-functions -copy_exec /sbin/kpartx /sbin/ -copy_exec /usr/bin/wget /usr/bin/ -copy_exec /usr/bin/xz /usr/bin/ -copy_exec /bin/gzip /usr/bin/ -copy_exec /bin/mount /usr/bin/ -copy_exec /bin/rm /usr/bin/ - -exit 0 diff --git a/includes.chroot/etc/initramfs-tools/scripts/init-premount/loop_mount b/includes.chroot/etc/initramfs-tools/scripts/init-premount/loop_mount deleted file mode 100755 index 94d20dc..0000000 --- a/includes.chroot/etc/initramfs-tools/scripts/init-premount/loop_mount +++ /dev/null @@ -1,142 +0,0 @@ -#!/bin/sh - -set -e - -case "${1}" in - prereqs) - echo "ntfs_3g" - exit 0 - ;; -esac - -. /scripts/functions - -if [ "x${LOOPROOT}" != "x" ]; then - lprootp=/mnt/looproot - lprootd=/dev/loop0 - - sleep 2 - modprobe loop - mkdir -p ${lprootp} - - _log_msg "Mounting ${LOOPROOT} to ${lprootp} ...\n" - /usr/bin/mount ${LOOPROOT} ${lprootp} || { - rc=$? - log_failure_msg "mounting failed ${rc}" - exit ${rc} - } - _log_msg "... mounting done.\n" - - case ${LIOXWIPE} in - 1) - _log_msg "Deleting liox-*.raw from ${LOOPROOT}\n" - /usr/bin/rm -v -f ${LOOPROOT}/liox-*.raw - ;; - 2) - _log_msg "Deleting liox-*.raw* from ${LOOPROOT}\n" - /usr/bin/rm -v -f ${LOOPROOT}/liox-*.raw* - ;; - 3) - _log_msg "Deleting liox-*.raw* from ${LOOPROOT}\n" - /usr/bin/rm -v -f ${LOOPROOT}/liox-*.raw* - _log_msg "Dropping to shell\n" - exec /bin/sh - exit 1 - ;; - esac - - _log_msg "Will attempt to use ${LOOPSRC} from ${LOOPROOT} as loop mounted drive\n" - loopfile=${lprootp}/${LOOPSRC} - if [ -f ${loopfile} ]; then - log_success_msg "loop drive file exists and is $(stat -c %s ${loopfile}) bytes" - elif [ "x${LOOPGET}" != "x" ]; then - _log_msg "Loop drive file does not exist, will attempt to fetch it from ${LOOPGET}\n" - - set +e - _log_msg "Configuring networking ...\n" - configure_networking - _log_msg "... configuring done\n" - set -e - - _log_msg "Starting wget -P ${lprootp} -c ${LOOPGET} ...\n" - /usr/bin/wget -P ${lprootp} -c ${LOOPGET} || { - rc=$? - log_failure_msg "wget failed ${rc}" - exit ${rc} - } - _log_msg "... wget finished\n" - - outfile=${LOOPGET##http*/} - out_ext=${outfile##*.} - out_with_stripped_ext=${outfile%.*} - - _log_msg "Assuming that we fetched file ${outfile}\n" - case ${out_ext} in - xz) - _log_msg "Decompressing xz'ed image ...\n" - /usr/bin/xz --keep -v -d ${lprootp}/${outfile} || { - rc=$? - log_failure_msg "xz failed ${rc}" - exit ${rc} - } - _log_msg "... decompressing done\n" - ;; - gz) - _log_msg "Decompressing gzip'ed image ...\n" - /usr/bin/gzip -v -d ${lprootp}/${outfile} > ${lprootp}/${out_with_stripped_ext} || { - rc=$? - log_failure_msg "gzip failed ${rc}" - exit ${rc} - } - _log_msg "... decompressing done\n" - ;; - raw) - _log_msg "Fetched file with .raw extension, nothing else to do\n" - ;; - *) - log_failure_msg "fetched file with unsupported extension, failing" - exit 1 - ;; - esac - - if [ ! -f ${loopfile} ]; then - log_failure_msg "loop drive file still does not exist" - exit 1 - fi - - unset outfile - unset out_ext - unset out_with_stripped_ext - else - log_failure_msg "loop drive file does not exist and no fetch source configured" - exit 1 - fi - - _log_msg "Setting up loop device ${lprootd} from ${loopfile} ...\n" - losetup ${lprootd} ${loopfile} || { - rc=$? - log_failure_msg "losetup failed ${rc}" - exit ${rc} - } - _log_msg "... losetup done\n" - - _log_msg "Probing loop device for partitions ...\n" - kpartx -a ${lprootd} || { - rc=$? - log_failure_msg "kpartx failed ${rc}" - exit ${rc} - } - _log_msg "... probing done\n" - - _log_msg "Recording ntfs-3g driver in no-kill list\n" - mkdir -p /run/sendsigs.omit.d - pidof mount.ntfs-3g >> /run/sendsigs.omit.d/ntfs-3g || true - - unset loopfile - unset lprootp - unset lprootd - - log_success_msg "setup loop mounted root" -fi - -exit 0 From c0ee73e17a24ad35b29507593aa3cff782ed9fc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sat, 21 Feb 2026 22:39:45 +0000 Subject: [PATCH 20/53] VS Code reconfig: C++ cache allowed, AI is not --- includes.chroot/etc/skel/.config/Code/User/settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes.chroot/etc/skel/.config/Code/User/settings.json b/includes.chroot/etc/skel/.config/Code/User/settings.json index e3d7583..50358ad 100644 --- a/includes.chroot/etc/skel/.config/Code/User/settings.json +++ b/includes.chroot/etc/skel/.config/Code/User/settings.json @@ -1,3 +1,3 @@ { - "C_Cpp.intelliSenseCacheSize": 0 + "chat.disableAIFeatures": true } From cd5e82f71b57d0dcfa45e208395b00af0eb9ffd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sat, 21 Feb 2026 23:05:42 +0000 Subject: [PATCH 21/53] Content review: delete inactive overlays --- config_overlay_inactive/README.md | 6 -- .../etc/skel/.config/Code/User/settings.json | 3 - .../systemd/system/lmio-networking.service | 11 ---- .../usr/share/liox-config/static_or_dhcp.py | 65 ------------------- 4 files changed, 85 deletions(-) delete mode 100644 config_overlay_inactive/README.md delete mode 100644 config_overlay_inactive/includes.chroot/etc/skel/.config/Code/User/settings.json delete mode 100644 config_overlay_inactive/includes.chroot/usr/lib/systemd/system/lmio-networking.service delete mode 100755 config_overlay_inactive/includes.chroot/usr/share/liox-config/static_or_dhcp.py diff --git a/config_overlay_inactive/README.md b/config_overlay_inactive/README.md deleted file mode 100644 index 9dde876..0000000 --- a/config_overlay_inactive/README.md +++ /dev/null @@ -1,6 +0,0 @@ -includes.chroot/etc/skel/.config/Code/User/settings.json - Disables Intellisense cache for C/C++ extension, useful to limit disk consumption and I/O when constrained - -includes.chroot/usr/lib/systemd/system/lmio-networking.service -includes.chroot/usr/share/liox-config/static_or_dhcp.py - Determine networking setup based on MAC address diff --git a/config_overlay_inactive/includes.chroot/etc/skel/.config/Code/User/settings.json b/config_overlay_inactive/includes.chroot/etc/skel/.config/Code/User/settings.json deleted file mode 100644 index e3d7583..0000000 --- a/config_overlay_inactive/includes.chroot/etc/skel/.config/Code/User/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "C_Cpp.intelliSenseCacheSize": 0 -} diff --git a/config_overlay_inactive/includes.chroot/usr/lib/systemd/system/lmio-networking.service b/config_overlay_inactive/includes.chroot/usr/lib/systemd/system/lmio-networking.service deleted file mode 100644 index 3773a33..0000000 --- a/config_overlay_inactive/includes.chroot/usr/lib/systemd/system/lmio-networking.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=LMIO networking -Before=network-pre.target - -[Install] -WantedBy=network-pre.target - -[Service] -Type=oneshot -WorkingDirectory=/usr/share/liox-config -ExecStart=/usr/bin/python3 static_or_dhcp.py diff --git a/config_overlay_inactive/includes.chroot/usr/share/liox-config/static_or_dhcp.py b/config_overlay_inactive/includes.chroot/usr/share/liox-config/static_or_dhcp.py deleted file mode 100755 index 1c4ee0f..0000000 --- a/config_overlay_inactive/includes.chroot/usr/share/liox-config/static_or_dhcp.py +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -ifaces_dhcp = ''' -source /etc/network/interfaces.d/* - -auto lo -iface lo inet loopback - -allow-hotplug eth0 -iface eth0 inet dhcp -''' - -ifaces_static = ''' -source /etc/network/interfaces.d/* - -auto lo -iface lo inet loopback - -allow-hotplug eth0 -iface eth0 inet static - address {{ipaddr}} - netmask 255.255.255.0 - gateway 192.168.1.1 -''' - -addrlist = { - 'd0:50:99:40:90:cd': '192.168.1.140', - 'd0:50:99:40:8f:22': '192.168.1.141', - 'd0:50:99:40:8f:1a': '192.168.1.142', - 'd0:50:99:40:8f:38': '192.168.1.143', - 'd0:50:99:40:8f:32': '192.168.1.144', - 'd0:50:99:40:8f:3c': '192.168.1.145', - 'd0:50:99:40:91:c3': '192.168.1.146', - 'd0:50:99:40:8f:30': '192.168.1.147', - 'd0:50:99:39:aa:5e': '192.168.1.148', - 'd0:50:99:40:8f:2c': '192.168.1.149', - '78:24:af:3b:71:10': '192.168.1.160', - 'e0:3f:49:b5:2b:b7': '192.168.1.161', - 'e0:3f:49:b5:2b:a4': '192.168.1.162', - 'e0:3f:49:b5:2a:ab': '192.168.1.163', - 'e0:3f:49:b5:2b:b5': '192.168.1.164', - 'e0:3f:49:b5:2b:b3': '192.168.1.165', - 'e0:3f:49:b5:2b:ad': '192.168.1.166', - 'e0:3f:49:b5:1e:9e': '192.168.1.167', - '78:24:af:3b:70:d0': '192.168.1.168', - 'e0:3f:49:b5:2b:ae': '192.168.1.169', -} - - -def main(): - with open('/sys/class/net/eth0/address', 'r') as f: - mac = f.readline()[:-1].lower() - print("My MAC is", mac) - if mac in addrlist: - ifaces = ifaces_static[1:].replace('{{ipaddr}}', addrlist[mac]) - else: - ifaces = ifaces_dhcp[1:] - f = open('/etc/network/interfaces', 'w') - f.write(ifaces) - f.close() - - -if __name__ == '__main__': - main() From 1456bddcea81f069ddcc27eddc228f90a02be9ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sat, 21 Feb 2026 23:06:23 +0000 Subject: [PATCH 22/53] Content review: delete contest overlay, resolved already in --- config_overlay_contest/package-lists/liox-contest.list.chroot | 1 - 1 file changed, 1 deletion(-) delete mode 100644 config_overlay_contest/package-lists/liox-contest.list.chroot diff --git a/config_overlay_contest/package-lists/liox-contest.list.chroot b/config_overlay_contest/package-lists/liox-contest.list.chroot deleted file mode 100644 index cf6ebf3..0000000 --- a/config_overlay_contest/package-lists/liox-contest.list.chroot +++ /dev/null @@ -1 +0,0 @@ -systemd-resolved \ No newline at end of file From 7110001a26ab08be638b902a10f2224debf40c7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sat, 21 Feb 2026 23:43:11 +0000 Subject: [PATCH 23/53] Content review: remove old changeimg scripts --- changeimg | 77 --------------------------------------------- changeimg_raw | 86 --------------------------------------------------- 2 files changed, 163 deletions(-) delete mode 100755 changeimg delete mode 100755 changeimg_raw diff --git a/changeimg b/changeimg deleted file mode 100755 index 974bc4c..0000000 --- a/changeimg +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/sh - -# A tool to manipulate a VDI image. Useful for adding/removing users, -# changing passwords, setting up ssh keys, etc. without starting the VM. - -# Requires 'shift', so might not work with all shells. We are interested -# in dash and bash only anyway. - -set -e - -OP="$1" - -fatal() { - printf %s\\n "fatal error: $@" - exit 1 -} - -setup() { - DISK="$2" - [ ! -f "$DISK" ] && fatal "usage: $0 setup " - [ ! -b /dev/nbd0 ] && fatal "/dev/nbd0 not found, maybe run modprobe nbd?" - if [ -z "`pgrep qemu-nbd`" ]; then - qemu-nbd -c /dev/nbd0 "$DISK" || fatal "qemu-nbd -c /dev/nbd0 failed" - fi - [ ! -b /dev/mapper/nbd0p1 ] && kpartx -sa /dev/nbd0 - [ ! -b /dev/mapper/nbd0p1 ] && fatal "kpartx -sa /dev/nbd0 failed" - mkdir -p target - if [ ! -f target/vmlinuz ]; then - mount /dev/mapper/nbd0p1 target || fatal "mount /dev/mapper/nbd0p1 failed" - fi - echo Setup successful -} - -cleanup() { - if [ -f target/vmlinuz ]; then - umount target || fatal "umount target failed" - fi - [ -b /dev/mapper/nbd0p1 ] && kpartx -d /dev/nbd0 - [ -b /dev/mapper/nbd0p1 ] && fatal "kpartx -d /dev/nbd0 failed" - [ -n "`pgrep qemu-nbd`" ] && qemu-nbd -d /dev/nbd0 - [ -n "`pgrep qemu-nbd`" ] && fatal "seems like qemu-nbd still running" - echo Cleanup successful -} - -local_run() { - SCRIPT="$2" - [ ! -x "$SCRIPT" ] && fatal "usage: changeimg local_run " - [ ! -f target/vmlinuz ] && fatal "run setup first" - - cp "$SCRIPT" target/tmp/liox_tmp - shift; - exec chroot target tmp/liox_tmp "$@" -} - -chroot() { - [ ! -f target/vmlinuz ] && fatal "run setup first" - [ -z "$2" ] && exec chroot target /bin/bash -i - shift; - exec chroot target "$@" -} - -case $OP in - setup ) - setup "$@" - ;; - local_run ) - local_run "$@" - ;; - chroot ) - chroot "$@" - ;; - cleanup ) - cleanup "$@" - ;; - * ) - echo "Usage: $0 (setup|local_run|chroot|cleanup)" ;; -esac diff --git a/changeimg_raw b/changeimg_raw deleted file mode 100755 index 9e77ef0..0000000 --- a/changeimg_raw +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/bash -set -euo pipefail - -# A tool to manipulate a VDI image. Useful for adding/removing users, -# changing passwords, setting up ssh keys, etc. without starting the VM. - -OP=${1-} - -fatal() { - printf %s\\n "fatal error: $@" - exit 1 -} - -_get_loopdev() { - DISK=$1 - losetup -a | awk -F: "/$(basename ${DISK})/ { print \$1 }" -} - -setup() { - DISK="${2-}" - [ ! -f "$DISK" ] && fatal "usage: $0 setup " - LOOPDEV=`_get_loopdev ${DISK}` - if [ -z "$LOOPDEV" ]; then - LOOPDEV=`losetup -fv $DISK | awk '{ print $NF; exit }'` - fi - if [ -z "$LOOPDEV" ]; then - fatal "failed to attach $DISK to /dev/loopX" - fi - LOOPP1=/dev/mapper/${LOOPDEV#/dev/}p1 - [ ! -b $LOOPP1 ] && kpartx -sa $LOOPDEV - [ ! -b $LOOPP1 ] && fatal "kpartx -sa $LOOPDEV failed" - mkdir -p target - if [ ! -f target/vmlinuz ]; then - mount $LOOPP1 target || fatal "mount $LOOPP1 failed" - fi - echo Setup successful -} - -cleanup() { - DISK="${2-}" - [ ! -f "$DISK" ] && fatal "usage: $0 setup " - if [ -f target/vmlinuz ]; then - umount target || fatal "umount target failed" - fi - LOOPDEV=`_get_loopdev ${DISK}` - LOOPP1=/dev/mapper/${LOOPDEV#/dev/}p1 - [ -b $LOOPP1 ] && kpartx -d $LOOPDEV - [ -b $LOOPP1 ] && fatal "kpartx -d $LOOPDEV failed" - [ -n "`_get_loopdev ${DISK}`" ] && losetup -d $LOOPDEV - [ -n "`_get_loopdev ${DISK}`" ] && fatal "losetup -d $LOOPDEV failed" - echo Cleanup successful -} - -local_run() { - SCRIPT="$2" - [ ! -x "$SCRIPT" ] && fatal "usage: changeimg local_run " - [ ! -f target/vmlinuz ] && fatal "run setup first" - - cp "$SCRIPT" target/tmp/liox_tmp - shift; - exec chroot target tmp/liox_tmp "$@" -} - -chroot() { - [ ! -f target/vmlinuz ] && fatal "run setup first" - [ -z "$2" ] && exec chroot target /bin/bash -i - shift; - exec chroot target "$@" -} - -case $OP in - setup ) - setup "$@" - ;; - local_run ) - local_run "$@" - ;; - chroot ) - chroot "$@" - ;; - cleanup ) - cleanup "$@" - ;; - * ) - echo "Usage: $0 (setup|local_run|chroot|cleanup)" ;; -esac From 137dbb76d2b36539969a5e11f36fad0ef3fd01ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 22 Feb 2026 16:37:01 +0000 Subject: [PATCH 24/53] Make blank image using qemu-img, it's faster --- create-image.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/create-image.sh b/create-image.sh index 05ec4e3..996b35b 100755 --- a/create-image.sh +++ b/create-image.sh @@ -31,7 +31,7 @@ then fi else echo "Creating new image" - dd if=/dev/zero of="${BUILD_IMAGE}" bs=1M count="${IMAGE_SIZE_MB}" status=progress + qemu-img create -f raw "${BUILD_IMAGE}" "${IMAGE_SIZE_MB}M" fi set -x From 41c0325043e83c2a94be5af09f168aa99eccf251 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 22 Feb 2026 16:39:52 +0000 Subject: [PATCH 25/53] Bind mount includes.chroot instead of copy This removes an unnecessary set of copy&delete operations --- chroot-script.sh | 2 +- create-image.sh | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/chroot-script.sh b/chroot-script.sh index f77ab02..203abce 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -128,6 +128,6 @@ UUID=${ROOT_UUID} / ext4 defaults,errors=remount-ro 0 1 EOF grub-install --removable --target=x86_64-efi "${BLOCK_DEVICE}" update-grub -rm -rf /includes.chroot /etc/apt/apt.conf.d/99cache /chroot-script.sh +rm -rf /etc/apt/apt.conf.d/99cache /chroot-script.sh systemctl enable systemd-networkd diff --git a/create-image.sh b/create-image.sh index 996b35b..dc3df63 100755 --- a/create-image.sh +++ b/create-image.sh @@ -61,12 +61,14 @@ debootstrap \ stable "${BUILD_DIR}" https://deb.debian.org/debian mkdir -p "${BUILD_DIR}/var/cache/apt/archives" +mkdir -p "${BUILD_DIR}/includes.chroot" mount -t tmpfs chroot_tmp "${BUILD_DIR}/tmp" mount --make-rslave --rbind /proc "${BUILD_DIR}/proc" mount --make-rslave --rbind /sys "${BUILD_DIR}/sys" mount --make-rslave --rbind /dev "${BUILD_DIR}/dev" # mount --make-rslave --rbind /run "${BUILD_DIR}/run" mount --bind "${APT_CACHE_DIR}" "${BUILD_DIR}/var/cache/apt/archives" +mount --make-rslave --rbind -o ro ./includes.chroot "${BUILD_DIR}/includes.chroot" function cleanup_mounts() { @@ -77,6 +79,8 @@ function cleanup_mounts() # umount -l "${BUILD_DIR}/run" umount "${BUILD_DIR}/var/cache/apt/archives" umount "${BUILD_DIR}/boot/efi" + umount -l "${BUILD_DIR}/includes.chroot" + rmdir "${BUILD_DIR}/includes.chroot" umount "${BUILD_DIR}" losetup -d "${BLOCK_DEVICE}" rmdir "${BUILD_DIR}" @@ -84,7 +88,6 @@ function cleanup_mounts() trap cleanup_mounts EXIT cp ./chroot-script.sh "${BUILD_DIR}" -cp -r ./includes.chroot "${BUILD_DIR}" cat << EOF > "${BUILD_DIR}/etc/apt/apt.conf.d/99cache" Binary::apt::APT::Keep-Downloaded-Packages "true"; APT::Keep-Downloaded-Packages "true"; From 340d0421c66239ec40ab11bde03509445fee89a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 22 Feb 2026 16:40:58 +0000 Subject: [PATCH 26/53] Don't fetch GPG keys every time This is also slightly more secure as we could in theory verify that the keys we downloaded and checked in here are legit. --- apt-keys/microsoft.asc | 19 ++++++ apt-keys/sublimehq-pub.asc | 119 ++++++++++++++++++++++++++++++++++ apt-sources/sublime-text.list | 1 + apt-sources/vscode.list | 1 + chroot-script.sh | 10 +-- create-image.sh | 8 +++ 6 files changed, 153 insertions(+), 5 deletions(-) create mode 100644 apt-keys/microsoft.asc create mode 100644 apt-keys/sublimehq-pub.asc create mode 100644 apt-sources/sublime-text.list create mode 100644 apt-sources/vscode.list diff --git a/apt-keys/microsoft.asc b/apt-keys/microsoft.asc new file mode 100644 index 0000000..1b619e6 --- /dev/null +++ b/apt-keys/microsoft.asc @@ -0,0 +1,19 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BSN Pgp v1.1.0.0 + +mQENBFYxWIwBCADAKoZhZlJxGNGWzqV+1OG1xiQeoowKhssGAKvd+buXCGISZJwT +LXZqIcIiLP7pqdcZWtE9bSc7yBY2MalDp9Liu0KekywQ6VVX1T72NPf5Ev6x6DLV +7aVWsCzUAF+eb7DC9fPuFLEdxmOEYoPjzrQ7cCnSV4JQxAqhU4T6OjbvRazGl3ag +OeizPXmRljMtUUttHQZnRhtlzkmwIrUivbfFPD+fEoHJ1+uIdfOzZX8/oKHKLe2j +H632kvsNzJFlROVvGLYAk2WRcLu+RjjggixhwiB+Mu/A8Tf4V6b+YppS44q8EvVr +M+QvY7LNSOffSO6Slsy9oisGTdfE39nC7pVRABEBAAG0N01pY3Jvc29mdCAoUmVs +ZWFzZSBzaWduaW5nKSA8Z3Bnc2VjdXJpdHlAbWljcm9zb2Z0LmNvbT6JATQEEwEI +AB4FAlYxWIwCGwMGCwkIBwMCAxUIAwMWAgECHgECF4AACgkQ6z6Urb4SKc+P9gf/ +diY2900wvWEgV7iMgrtGzx79W/PbwWiOkKoD9sdzhARXWiP8Q5teL/t5TUH6TZ3B +ENboDjwr705jLLPwuEDtPI9jz4kvdT86JwwG6N8gnWM8Ldi56SdJEtXrzwtlB/Fe +6tyfMT1E/PrJfgALUG9MWTIJkc0GhRJoyPpGZ6YWSLGXnk4c0HltYKDFR7q4wtI8 +4cBu4mjZHZbxIO6r8Cci+xxuJkpOTIpr4pdpQKpECM6x5SaT2gVnscbN0PE19KK9 +nPsBxyK4wW0AvAhed2qldBPTipgzPhqB2gu0jSryil95bKrSmlYJd1Y1XfNHno5D +xfn5JwgySBIdWWvtOI05gw== +=zPfd +-----END PGP PUBLIC KEY BLOCK----- diff --git a/apt-keys/sublimehq-pub.asc b/apt-keys/sublimehq-pub.asc new file mode 100644 index 0000000..d83a218 --- /dev/null +++ b/apt-keys/sublimehq-pub.asc @@ -0,0 +1,119 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBFkQtZkBEADKbOf66dGnmDHnV/XEJwZUcNkn9X+bsOsbWtGqTh4ura5tEozO +EBDw2eCFFFN0PlLyj79WQOscgxUyi4h5AmInYJlL6DK8rHp9Cu0/IDtYwuO4nbUN +0SMTEb/9UdyVO8to63S+2PyFre8ijh/fGPbBgtu47rEI1tNCDkreUKSQ3XpbVEQL +8601tbakSoeVEApOMv06pQMc4ewG1Qo9ogYaqvlEQFVboW6CXBr+CoP1s7pcxr0l +/iJT90dMGQevFpyVt64CfQnLAmd1VOp7JfNYOTThAK/y+Da6XTp+R1kfcX7Ha1nW +hGiuOHWh7kUNQoc643Mk3M0O+TA+gamnFw/ZLYDvm2MyyTUvVdmS2Is9xllfwuqW +ELy3yADmSCPRcjlFU/Rsc6454HYEVd9tdaXt3LiY2WyaMp/5mBLOXbq6I8pPPouY +hWS3QSGG4HEMtiSibcXjwEzXf2cfBX1ckLL6mlaAQC1ZXs5HvnOhJT+LcbRJEe2I +2J1gEAjTu7drtKIIgtYX+woNI4juYUfrjkJC4pQfKcS/qAdY1SuzczT8T+QSzwm2 +5mq1KcPK6/o5QXdfUpRArH7MQBEXWeKUw0tpv3MXVrsK+WMhZLNbVYnXFNltdZvo +0OPt+w/PWR7OcWYn0lM6+zPE1t4NwmjVTh3JM2gGWf4gCtEGZpyNwW0ArQARAQAB +tCxTdWJsaW1lIEhRIFB0eSBMdGQgPHN1cHBvcnRAc3VibGltZXRleHQuY29tPokC +NAQTAQIAHgUCWRC1mQIbLwMLCQcEFQoJCAUWAgMBAAIeAQIXgAAKCRCtrmrSio+Q +GvPyD/9bGTuBAeS/NR68txC39koiGdWpRXvvOTDTo5tF78CLqmDb7KNjDpgwlfKr +iV+qdsUhvEZsA7WeB87KOqptztR8zhPWCN53hupoBsBLjvDET/AQYZYBwuCwsv90 +Sd8ErIK+kXxH1XnCSIiV9AwAPPfpZDM2lv22KoxxDowzz8i+eIayZH9oaOFAoLNc +aMhZywiDCH8lk5h22Jubq2ElwDAixowxdDL6xzYjTmsW6VPThdvixL4p+/kgXWGW +EPqMZUrLZvlCwGAHFdcg8o4vWibT/j7JAF0rYsOOBEzLOP+wbk6FCjwOgk8kwUaJ +QUuxEJp/xWw/aHcpVz48dWdXvgE+AQUY/qKe2t2MkSPTgScjXVsATb3fZo2YBrMm +2nY2OLRuXUIbCnh0ZxSKRI7+4jUPPCJPGh6xBNxnUcNal4dkeUEmZ+KL0G/4BtSI +pVq/sbBnxO/FOKEhs0z7ONrUD2KAhGRrSEgRsTCpzsvo8IdRzYnTnDAZU7ouK5oF +3jQVt/dvDp9CKUfG1QoP5FSKjZIpDyxT1sOqWWjEbcPbzMnMVcVqWh+zruGT6R8o +hSduhMcFTtrQHd+ECe0tBd2DGHEmPy5lA97gLVo4y19/IIlLJxXcXJbOPkCCeHln +Hq6nD/SCtnch7pDS6kaBe4VaeT8m4/EHjROAmI2SprI1TdzS/LkCDQRZELWZARAA +vlA9fJFa29VdBYDBAwygPaIfCelSwkq5UaPy9wLI0bSu5HaCnHD6FnENB2TOC0No +2MXIfxQwJ4nyna37xsaLYQO8Qt+3EJ0mFmnToyhL8tebdsSBkqprCVixAf2PjtkX +tr4XxHR4L2nt9nsb5w3eCkcZ3czkafkePSsMuu8c2y6e8k+Kb+caTENWNxob/oOm +p0ybJDBKVa8JV5BVbvUd8JcWsLzKx0BSTxTH0j9eCpfBLilZZml1A9v7AgW5tK6H +VNOufkR1DsHrAIQJQdyt8HKUXY0/7m3Tm7/61ONjKbuFaIJYrkNMgr0P7BKNFMAj +yJBFwa2Vf60idfxShu8svzvYBWSRWplEBnwlxSJvdQT2E6p08kOdgVX3FY4k9Jgm +MllE1ZsyIdF8hcpfReZn+3RcPrutvMYL5Cyc63xuiRUjaMLQroZ7CfFuvDRYqgkG +MQbHNhWrQzHx12FQ/Mlw7mS9ypbnFhJUP4SrYKIyVW2dEUTaUpaUlfflNNRZiVZX +gtnPiIU8kRu8WjDUWKHk3QMs4KuRiudk4ZSHP+neBe9Bm67BPhVkYcpBAyJBkLTZ +AWmosdDCMIAyXbupR760oQUQST7tEilplvHYX8XpDBmSIM43aMKQizI+A0HYf2zd +jiz5K5hAL0lQx9HgRSbgz6vWN6FK0pEFrm3TifvdZvUAEQEAAYkEPgQYAQIACQUC +WRC1mQIbAgIpCRCtrmrSio+QGsFdIAQZAQIABgUCWRC1mQAKCRD1fU9ZvT30VPOL +EACB+F2hb45D5ofEoVHgYBrD2BtPSItSAMQtvncwViH42CatT1g2n7MHwdnLts8x +SCeAaEdWzpIaMbUVO7qSkWP1gYjbq0gozEIYplzdcSFLvnDfkvSYCelJqv7GJWJx +JQ59hC7V1QWKUQFf4CH8X1Mm1tHyuSe8yTBerZXWExuLE/lkBcc/S6tSFUteODIw +PeXzOMkWqf0Z8XFNNUDwlKVDcT9apvpDxE5pyOmBgJ+QRE+QbstE//nZQaDN44d2 ++I/4N3NJcWNIq4D0viENwJHbCvDIeeAOux8QEjBOWlBxYsfYwd9xecRR6IiNMnLd +7zw2B1/44vbSUOTg8pVh9qJzYzolBlJSQU8cyejCoYmRt9GbWWrhoRudtKDq+5VF +IoJOSAAzgNAUgJWIRS6h+4jUoYLa9ew1eytGLTLrYR5fFVwA42WIjDfVXpP93IVS +jOFswyD/YeyGjQb22xlBvVGrLv/V3bK3ghQjAqlXRItLSH4bvFRolna1tdlpuCNd +HRwdpujd0IGvG7jMmKTbNQmjIM0ZLRYXKzSOoRx90Mc8u75qvC1seMtdTSdZap2e +tz38Cm7kRPjqVpLbv1obUtPIVPVjxuQpY1m8jmIT678t8W37zxCxrJ/4sOJ3PMNj +nl7Lj0Y4HZsopZN2Z4Yf+EnyNwDHTaVWpWqMrkgQMz79WG3gD/oCQ3SC7/5ByapZ +BwahFuaS52Qmw+70ahNkWiUNfLUZk3TTQbKpyJNziKdVW10llEr76MEw1TwdjXVP +H8uEGYTtI/gcbbGTeXMWfBorgSkSdjgN6QgMgZbHpY4ljDMPdPLuivJ2+TYKN3JC +WPGorOolzezyU+yZkz6353UoX6LMGLQObB7AugQLcJO6aZnMPNqC7wof7VjWZytG +vwA0id7Siudviw1IUOxj14oevNheNHwicVTTlS0fnc+88d1AAL0jmmKyrvdawPPm +uHCOosQ/ymXanAqNx/XUelGvJKSHC8i3itiVbDcArkaVrwoE2y2t//0AvStsmvKM +R7UE+R0u7C9/lbU2mAambMJkc1XzdjEbuwD55JMqik4AXgAqARnZceV/YkLzqJG7 +TbHv9QSv7t1Fg16gUW3LLIfRan+sRgF3QxnmJD9xNrz0EIvIRSKhFH+EX/cQAA/y +Uw78H0YeKGlPpXsOOHp8l/ZLXsCCK2RvMFmOWfCcoBEzuiNn5I+2MUoiXkSkdsBy +1F1O2ZyGTA3bhdRUW3ouD8PShapJrx8LnrM5ADzlbDvTS0TLegNN4An5bSbj09dI +Ret0lkql+RTCtyWh95sr1kgGyyQCyF/Jv7NSntcQlJL3whphCpOkvOvK+HlBoY5U +McvDuGKIXk111Z3nrF4DeIIc/U6ICQ== +=CCk2 +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBFkQsPABEACnBDDC1d1e6h3CH0VNjJ/gtExITglzThVvPADCFBOFpwUKgqnf +mEj6Rx/citX3QO1MAwyACCP7UsFad7JDNpBWHRBGGGZFQE1EYOvXccWN4dqMyH11 +06+GtzPuMRxo+qEpWzGbIGHDZH9GVjCM0QykHZQawJShPdnsgpYuDtGMlvNQKLk7 +eSNGsHZ/NxHeYbC8Ung4ts48a2N0js+dayv1DVSZI8L9TnzbgxkOTcUqytBhub7u +ZygYzalzvqN9BiHVsTXi2rd7T/XfK7Zl0rawOHQUQavY/5IsUuRmqKwimmM6dkcu +9500nwQTDkFB6Q50IsL9pZVf2tXT70OpKDTMiTlK9VkJNnKFIHdFfZkk/O3opFhR +jI7iD41sgSVH5X176lzS2nd15GGn3qW2jSVXZ7XnlgUML4GqJVKU+T//WQjudVkF +bpfeTCOzkxj9wF0ixW64MxhkOoaHDreFhKdyn9yjSWId8m4igS+pe1xHJKREZwTR +1kgQY8Od0eOxyyvZQlQons6Ac80gF0220Z2+qnpEawhGGOKBDmh8tgQkw4s+nJc5 +cHIB5o9oyhRo0R9yA7kj7D/bymN1uu7fYFnGOhwJ0jTW3LEKohRLJVgC14C/i44+ +1XZB6lOF98TcmjY7plBB1eSSBFk9mfHsb7PH2DE17xTczHC4mpLxd5w+WwARAQAB +tCxTdWJsaW1lIEhRIFB0eSBMdGQgPHN1cHBvcnRAc3VibGltZXRleHQuY29tPokC +NAQTAQIAHgUCWRCw8AIbLwMLCQcEFQoJCAUWAgMBAAIeAQIXgAAKCRDKRkqaIi0j +0LQsD/93IlZevTYbg9NmTPsVZx9zlBLO9qAIb4co+dOk9Fohc7FMYSevenpA7PTl +O+3yARJhqqB75+7u5LatjEyYo/VEpvZhDyhorPUHshoIcHnsDpC+Ua5zq42efNdl +PE9Vr3klVR7gKbX2FxjqUL5SE6/YLIIr2PhpdbbMQbOCH6s4kXklsVysjRu7k0Ip +U4XF90s4inXTILMruA8LdW59q6dg5Ej4tUv54d9//Jl2Rz0z8TbguYPwFEHaXRNv +hNv0oFnjt16sZENaar81E+icw7laHxGKPnZ1XRUlvsa40/hTYj62yBGzUhLbWPHv +Os7UrIkvsyiE+53cDfEfoFh/e6yLzkSEv12xwhk4p5GjeLnkgC7Wu4VHBZDj9atO +Muwtcxk/eNpdXKg0VA1+Zo1qCuLad7ciaSKGHTasGSEVUjvtnDMPaAzvc8o0kmi4 +lzZl6jHeDq2IKrgkT/FKEF9HrER7mFp+mjlVp65AM/xwZ7Ja23ocnuAVz4j9S5s4 +iz6dkdJNYkzZiZ67TMth+1Qc0D6LoTwHufMJQHUmUE1+ffRKOpXim4CE21eO+WbX +vOcPh20Khv4E7O4h669+i5Oz9w/qDK2pVEYwiS/7LxaSoYaLHg1xJWk1sQx4gryF +vkhZMlN+2B3cJD4XISa65TWhDSMyWrwElnXchfEc90svjkG/nw== +=bBxZ +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBGkJdvYBEADWhdySHM8j/ADp4YuVsnB6RkLVJoQI9A50uMiuDuNk8f05NpZJ +29bStn4m4/sB0jM2L7L6DK6IneHvU+6oUfsMylevZ6SrsjTibt3Ado7vmtEfXz1q +zZ1QbExJpYBXzUNGIIdsdUGgtkTO6dBPzZWA9zhsN8BkMJEJfnJgyJXV7eXqiHUa +LIfCFKy3f97BrLss/bXLY2d3d1J/14uoGhnpTV1udurw/i4F7WrpigauUAyKqvWc +pSCY6iXFGAhX7wTAKnkC7o/nRI4HxpZA01bUt43BMMM0S71xxW54kN/JVRRsVXEt +gE+ZgYB5UG9NjSIkF695PEqjtgv35tpkKnDU94m7Ws+yc51DkyW/6KgGO2FScxkD +bymF8VJl7JO9rZUcA60x45bmbPU6ex1BT4BIiE14mZMrOH80TmmgJDuU1KljMDL0 +L+ts4tsv5haPRDByOhLhQeuRRMnbhhQAQeP9oi3SvLl1by76ztwy25wvfkwC4Hrm +O4KoeuDeoP5wrlIVkJv4BO9y0jJypQ+YjSxS3hvChtZjIaNygjzV+fRf9OqVeZV/ +S0Lg7jgcDL6B1IMSbXp4uPTAkfciDjaNhgIXiK4jhSQZMLmJvKs0UQdIO09cTCUV +7qTx2IPP8A/VpXAJFLpw3NQGY50uLSYwR5DlOqn726rNF2xGgfLPcOqunQARAQAB +tCxTdWJsaW1lIEhRIFB0eSBMdGQgPHN1cHBvcnRAc3VibGltZXRleHQuY29tPokC +UQQTAQoAOxYhBOvHM7eKqzUtx3O/hX/i+hLPbjjyBQJpCXb2AhsDBQsJCAcCAiIC +BhUKCQgLAgQWAgMBAh4HAheAAAoJEH/i+hLPbjjy3HkQALMuihzYrqTzeM4j8FAN +V2y+cz/myqDsB+Z8Xnfj8/ZP7mA0hBOe87yV6lna2naaWm2p0uMFgpRc8qZ1Hgha +lBIfkprWBlukynFnUlGRzs449ayhieFQK7nHPz5R+d/1ZK1wVeHd7VWqR8vBw7G1 +Lc/ZHZCYLVh2DA23UgFBIOosIUAaaa2c2Xv1y5ljEDiRWxq64vgInSzcHjAydaIo +joT5tEYLYLPbXPQ/jSywsDSszkVAdGVJShaQLMY3+w5z7cszhQlcK3IuPCTjIdG+ +p7FGLimzmmjctkpGW1mHuoY58fPfcB7dTAo2sCkhh0+Vuml9ullI/8HVxQ/fGDV1 +XrBXE56psff+F2LYKBxAQTjTGGJlIQ77LDOKzLs7cbwF040LNnTnpDsXFUnIK8p5 +IPm+U+I8lAtudio5VZNj9NHiYyPfYXHRi2P85yDunoI5NxoxTcUFtjrozp2H23OF +jbY1kZVH/i94kaNkbikzFT42xw4XyMxg2QbtHn6376pJ3bRMNsE397UrZ4c9Cve5 +wW7nALCu2N74dFiPJSeJK9XBieEvTS43sIWDaLpQgZlc6Msd/3sYnygc71LR5Zdm +/g98Eq55oyqp8tOTSyH2Hnyerk3Qg2juFNe1qUXbHdDRZbr3DKOj1FRAZDmiHCc/ +AwZ5B2NwXZBg532zpvLNBlhp +=hSCO +-----END PGP PUBLIC KEY BLOCK----- diff --git a/apt-sources/sublime-text.list b/apt-sources/sublime-text.list new file mode 100644 index 0000000..fc956af --- /dev/null +++ b/apt-sources/sublime-text.list @@ -0,0 +1 @@ +deb https://download.sublimetext.com/ apt/stable/ diff --git a/apt-sources/vscode.list b/apt-sources/vscode.list new file mode 100644 index 0000000..3efeab3 --- /dev/null +++ b/apt-sources/vscode.list @@ -0,0 +1 @@ +deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main diff --git a/chroot-script.sh b/chroot-script.sh index 203abce..2482772 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -52,13 +52,13 @@ ff02::1 ip6-allnodes ff02::2 ip6-allrouters EOF -apt -y install linux-image-amd64 firmware-linux grub-efi debconf-utils wget gpg +apt -y install linux-image-amd64 firmware-linux grub-efi debconf-utils gpg +mkdir -p /etc/apt/sources.list.d/ +cp ./apt-sources/* /etc/apt/sources.list.d/ mkdir -p /etc/apt/trusted.gpg.d/ -echo "deb https://download.sublimetext.com/ apt/stable/" | tee /etc/apt/sources.list.d/sublime-text.list -echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" | tee /etc/apt/sources.list.d/vscode.list -wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/sublimehq-archive.gpg -wget -qO - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/ms-vscode-keyring.gpg +gpg --dearmor -o /etc/apt/trusted.gpg.d/sublimehq-pub.gpg < /apt-keys/sublimehq-pub.asc +gpg --dearmor -o /etc/apt/trusted.gpg.d/microsoft.gpg < /apt-keys/microsoft.asc apt -y update echo "iptables-persistent iptables-persistent/autosave_v4 boolean true" | debconf-set-selections diff --git a/create-image.sh b/create-image.sh index dc3df63..a82a978 100755 --- a/create-image.sh +++ b/create-image.sh @@ -62,6 +62,8 @@ debootstrap \ mkdir -p "${BUILD_DIR}/var/cache/apt/archives" mkdir -p "${BUILD_DIR}/includes.chroot" +mkdir -p "${BUILD_DIR}/apt-keys" +mkdir -p "${BUILD_DIR}/apt-sources" mount -t tmpfs chroot_tmp "${BUILD_DIR}/tmp" mount --make-rslave --rbind /proc "${BUILD_DIR}/proc" mount --make-rslave --rbind /sys "${BUILD_DIR}/sys" @@ -69,6 +71,8 @@ mount --make-rslave --rbind /dev "${BUILD_DIR}/dev" # mount --make-rslave --rbind /run "${BUILD_DIR}/run" mount --bind "${APT_CACHE_DIR}" "${BUILD_DIR}/var/cache/apt/archives" mount --make-rslave --rbind -o ro ./includes.chroot "${BUILD_DIR}/includes.chroot" +mount --make-rslave --rbind -o ro ./apt-keys "${BUILD_DIR}/apt-keys" +mount --make-rslave --rbind -o ro ./apt-sources "${BUILD_DIR}/apt-sources" function cleanup_mounts() { @@ -80,7 +84,11 @@ function cleanup_mounts() umount "${BUILD_DIR}/var/cache/apt/archives" umount "${BUILD_DIR}/boot/efi" umount -l "${BUILD_DIR}/includes.chroot" + umount -l "${BUILD_DIR}/apt-keys" + umount -l "${BUILD_DIR}/apt-sources" rmdir "${BUILD_DIR}/includes.chroot" + rmdir "${BUILD_DIR}/apt-keys" + rmdir "${BUILD_DIR}/apt-sources" umount "${BUILD_DIR}" losetup -d "${BLOCK_DEVICE}" rmdir "${BUILD_DIR}" From 43945290ee6687fd15dab465cf470c56bc9440f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 22 Feb 2026 16:44:03 +0000 Subject: [PATCH 27/53] Rename includes.chroot -> chroot-overlay Since we no longer need to use Debian Live terminology, this better represents what this is all for. --- .../etc/locale.nopurge | 0 .../etc/modprobe.d/pcspeaker-blacklist.conf | 0 .../etc/sddm.conf.d/00-general.conf | 0 .../etc/sddm.conf.d/01-theme.conf | 0 .../etc/skel/.config/Code/User/settings.json | 0 .../etc/skel/.config/codeblocks/default.conf | 0 .../etc/skel/.config/kactivitymanagerdrc | 0 .../etc/skel/.config/kcminputrc | 0 .../etc/skel/.config/kdeglobals | 0 .../etc/skel/.config/kscreenlockerrc | 0 .../etc/skel/.config/kwinrc | 0 .../etc/skel/.config/kxkbrc | 0 .../etc/skel/.config/plasma-localerc | 0 .../.config/plasma-org.kde.plasma.desktop-appletsrc | 0 .../etc/skel/.config/plasmarc | 0 .../etc/skel/.config/powermanagementprofilesrc | 0 .../etc/skel/Desktop/Docs/GDB.html | 0 .../etc/skel/Desktop/SciTE.desktop | 0 .../etc/skel/Desktop/code.desktop | 0 .../etc/skel/Desktop/codeblocks.desktop | 0 .../etc/skel/Desktop/emacs.desktop | 0 .../etc/skel/Desktop/firefox-esr.desktop | 0 .../etc/skel/Desktop/geany.desktop | 0 .../etc/skel/Desktop/gvim.desktop | 0 .../etc/skel/Desktop/org.gnome.gedit.desktop | 0 .../etc/skel/Desktop/org.kde.kate.desktop | 0 .../etc/skel/Desktop/org.kde.kcalc.desktop | 0 .../etc/skel/Desktop/org.kde.kdevelop.desktop | 0 .../etc/skel/Desktop/org.kde.konsole.desktop | 0 .../etc/skel/Desktop/sublime_text.desktop | 0 .../etc/systemd/network/10-wired.network | 0 .../etc/systemd/network/99-default.link | 0 .../etc/systemd/sleep.conf | 0 .../etc/xdg/mimeapps.list | 0 .../usr/lib/firefox-esr/mozilla.cfg | 0 .../browser/defaults/preferences/00-liox.js | 0 .../usr/share/liox-config/boot-entry.csv | 0 .../usr/share/liox-config/bootmuncher.py | 0 .../usr/share/liox-config/d-i_hooks | 0 .../usr/share/liox-config/downgrade_codeblocks.sh | 0 .../usr/share/liox-config/init_resize.sh | 0 .../usr/share/liox-config/install_vscode_ext.sh | 0 .../usr/share/liox-config/lmio-logo-center.png | Bin .../usr/share/liox-config/lmio-logo-left.png | Bin .../usr/share/liox-config/patches/grub-config.patch | 0 .../patches/unrestrict-default-grub-entry.patch | 0 .../post-inst-overlay/etc/network/interfaces | 0 .../usr/share/liox-config/sddm-numlock.sh | 0 .../usr/share/liox-config/start-contest.sh | 0 .../usr/share/liox-config/stop-contest.sh | 0 .../usr/share/sddm/themes/breeze/theme.conf.user | 0 chroot-script.sh | 2 +- create-image.sh | 8 ++++---- 53 files changed, 5 insertions(+), 5 deletions(-) rename {includes.chroot => chroot-overlay}/etc/locale.nopurge (100%) rename {includes.chroot => chroot-overlay}/etc/modprobe.d/pcspeaker-blacklist.conf (100%) rename {includes.chroot => chroot-overlay}/etc/sddm.conf.d/00-general.conf (100%) rename {includes.chroot => chroot-overlay}/etc/sddm.conf.d/01-theme.conf (100%) rename {includes.chroot => chroot-overlay}/etc/skel/.config/Code/User/settings.json (100%) rename {includes.chroot => chroot-overlay}/etc/skel/.config/codeblocks/default.conf (100%) rename {includes.chroot => chroot-overlay}/etc/skel/.config/kactivitymanagerdrc (100%) rename {includes.chroot => chroot-overlay}/etc/skel/.config/kcminputrc (100%) rename {includes.chroot => chroot-overlay}/etc/skel/.config/kdeglobals (100%) rename {includes.chroot => chroot-overlay}/etc/skel/.config/kscreenlockerrc (100%) rename {includes.chroot => chroot-overlay}/etc/skel/.config/kwinrc (100%) rename {includes.chroot => chroot-overlay}/etc/skel/.config/kxkbrc (100%) rename {includes.chroot => chroot-overlay}/etc/skel/.config/plasma-localerc (100%) rename {includes.chroot => chroot-overlay}/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc (100%) rename {includes.chroot => chroot-overlay}/etc/skel/.config/plasmarc (100%) rename {includes.chroot => chroot-overlay}/etc/skel/.config/powermanagementprofilesrc (100%) rename {includes.chroot => chroot-overlay}/etc/skel/Desktop/Docs/GDB.html (100%) rename {includes.chroot => chroot-overlay}/etc/skel/Desktop/SciTE.desktop (100%) rename {includes.chroot => chroot-overlay}/etc/skel/Desktop/code.desktop (100%) rename {includes.chroot => chroot-overlay}/etc/skel/Desktop/codeblocks.desktop (100%) rename {includes.chroot => chroot-overlay}/etc/skel/Desktop/emacs.desktop (100%) rename {includes.chroot => chroot-overlay}/etc/skel/Desktop/firefox-esr.desktop (100%) rename {includes.chroot => chroot-overlay}/etc/skel/Desktop/geany.desktop (100%) rename {includes.chroot => chroot-overlay}/etc/skel/Desktop/gvim.desktop (100%) rename {includes.chroot => chroot-overlay}/etc/skel/Desktop/org.gnome.gedit.desktop (100%) rename {includes.chroot => chroot-overlay}/etc/skel/Desktop/org.kde.kate.desktop (100%) rename {includes.chroot => chroot-overlay}/etc/skel/Desktop/org.kde.kcalc.desktop (100%) rename {includes.chroot => chroot-overlay}/etc/skel/Desktop/org.kde.kdevelop.desktop (100%) rename {includes.chroot => chroot-overlay}/etc/skel/Desktop/org.kde.konsole.desktop (100%) rename {includes.chroot => chroot-overlay}/etc/skel/Desktop/sublime_text.desktop (100%) rename {includes.chroot => chroot-overlay}/etc/systemd/network/10-wired.network (100%) rename {includes.chroot => chroot-overlay}/etc/systemd/network/99-default.link (100%) rename {includes.chroot => chroot-overlay}/etc/systemd/sleep.conf (100%) rename {includes.chroot => chroot-overlay}/etc/xdg/mimeapps.list (100%) rename {includes.chroot => chroot-overlay}/usr/lib/firefox-esr/mozilla.cfg (100%) rename {includes.chroot => chroot-overlay}/usr/share/firefox-esr/browser/defaults/preferences/00-liox.js (100%) rename {includes.chroot => chroot-overlay}/usr/share/liox-config/boot-entry.csv (100%) rename {includes.chroot => chroot-overlay}/usr/share/liox-config/bootmuncher.py (100%) rename {includes.chroot => chroot-overlay}/usr/share/liox-config/d-i_hooks (100%) rename {includes.chroot => chroot-overlay}/usr/share/liox-config/downgrade_codeblocks.sh (100%) rename {includes.chroot => chroot-overlay}/usr/share/liox-config/init_resize.sh (100%) rename {includes.chroot => chroot-overlay}/usr/share/liox-config/install_vscode_ext.sh (100%) rename {includes.chroot => chroot-overlay}/usr/share/liox-config/lmio-logo-center.png (100%) rename {includes.chroot => chroot-overlay}/usr/share/liox-config/lmio-logo-left.png (100%) rename {includes.chroot => chroot-overlay}/usr/share/liox-config/patches/grub-config.patch (100%) rename {includes.chroot => chroot-overlay}/usr/share/liox-config/patches/unrestrict-default-grub-entry.patch (100%) rename {includes.chroot => chroot-overlay}/usr/share/liox-config/post-inst-overlay/etc/network/interfaces (100%) rename {includes.chroot => chroot-overlay}/usr/share/liox-config/sddm-numlock.sh (100%) rename {includes.chroot => chroot-overlay}/usr/share/liox-config/start-contest.sh (100%) rename {includes.chroot => chroot-overlay}/usr/share/liox-config/stop-contest.sh (100%) rename {includes.chroot => chroot-overlay}/usr/share/sddm/themes/breeze/theme.conf.user (100%) diff --git a/includes.chroot/etc/locale.nopurge b/chroot-overlay/etc/locale.nopurge similarity index 100% rename from includes.chroot/etc/locale.nopurge rename to chroot-overlay/etc/locale.nopurge diff --git a/includes.chroot/etc/modprobe.d/pcspeaker-blacklist.conf b/chroot-overlay/etc/modprobe.d/pcspeaker-blacklist.conf similarity index 100% rename from includes.chroot/etc/modprobe.d/pcspeaker-blacklist.conf rename to chroot-overlay/etc/modprobe.d/pcspeaker-blacklist.conf diff --git a/includes.chroot/etc/sddm.conf.d/00-general.conf b/chroot-overlay/etc/sddm.conf.d/00-general.conf similarity index 100% rename from includes.chroot/etc/sddm.conf.d/00-general.conf rename to chroot-overlay/etc/sddm.conf.d/00-general.conf diff --git a/includes.chroot/etc/sddm.conf.d/01-theme.conf b/chroot-overlay/etc/sddm.conf.d/01-theme.conf similarity index 100% rename from includes.chroot/etc/sddm.conf.d/01-theme.conf rename to chroot-overlay/etc/sddm.conf.d/01-theme.conf diff --git a/includes.chroot/etc/skel/.config/Code/User/settings.json b/chroot-overlay/etc/skel/.config/Code/User/settings.json similarity index 100% rename from includes.chroot/etc/skel/.config/Code/User/settings.json rename to chroot-overlay/etc/skel/.config/Code/User/settings.json diff --git a/includes.chroot/etc/skel/.config/codeblocks/default.conf b/chroot-overlay/etc/skel/.config/codeblocks/default.conf similarity index 100% rename from includes.chroot/etc/skel/.config/codeblocks/default.conf rename to chroot-overlay/etc/skel/.config/codeblocks/default.conf diff --git a/includes.chroot/etc/skel/.config/kactivitymanagerdrc b/chroot-overlay/etc/skel/.config/kactivitymanagerdrc similarity index 100% rename from includes.chroot/etc/skel/.config/kactivitymanagerdrc rename to chroot-overlay/etc/skel/.config/kactivitymanagerdrc diff --git a/includes.chroot/etc/skel/.config/kcminputrc b/chroot-overlay/etc/skel/.config/kcminputrc similarity index 100% rename from includes.chroot/etc/skel/.config/kcminputrc rename to chroot-overlay/etc/skel/.config/kcminputrc diff --git a/includes.chroot/etc/skel/.config/kdeglobals b/chroot-overlay/etc/skel/.config/kdeglobals similarity index 100% rename from includes.chroot/etc/skel/.config/kdeglobals rename to chroot-overlay/etc/skel/.config/kdeglobals diff --git a/includes.chroot/etc/skel/.config/kscreenlockerrc b/chroot-overlay/etc/skel/.config/kscreenlockerrc similarity index 100% rename from includes.chroot/etc/skel/.config/kscreenlockerrc rename to chroot-overlay/etc/skel/.config/kscreenlockerrc diff --git a/includes.chroot/etc/skel/.config/kwinrc b/chroot-overlay/etc/skel/.config/kwinrc similarity index 100% rename from includes.chroot/etc/skel/.config/kwinrc rename to chroot-overlay/etc/skel/.config/kwinrc diff --git a/includes.chroot/etc/skel/.config/kxkbrc b/chroot-overlay/etc/skel/.config/kxkbrc similarity index 100% rename from includes.chroot/etc/skel/.config/kxkbrc rename to chroot-overlay/etc/skel/.config/kxkbrc diff --git a/includes.chroot/etc/skel/.config/plasma-localerc b/chroot-overlay/etc/skel/.config/plasma-localerc similarity index 100% rename from includes.chroot/etc/skel/.config/plasma-localerc rename to chroot-overlay/etc/skel/.config/plasma-localerc diff --git a/includes.chroot/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc b/chroot-overlay/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc similarity index 100% rename from includes.chroot/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc rename to chroot-overlay/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc diff --git a/includes.chroot/etc/skel/.config/plasmarc b/chroot-overlay/etc/skel/.config/plasmarc similarity index 100% rename from includes.chroot/etc/skel/.config/plasmarc rename to chroot-overlay/etc/skel/.config/plasmarc diff --git a/includes.chroot/etc/skel/.config/powermanagementprofilesrc b/chroot-overlay/etc/skel/.config/powermanagementprofilesrc similarity index 100% rename from includes.chroot/etc/skel/.config/powermanagementprofilesrc rename to chroot-overlay/etc/skel/.config/powermanagementprofilesrc diff --git a/includes.chroot/etc/skel/Desktop/Docs/GDB.html b/chroot-overlay/etc/skel/Desktop/Docs/GDB.html similarity index 100% rename from includes.chroot/etc/skel/Desktop/Docs/GDB.html rename to chroot-overlay/etc/skel/Desktop/Docs/GDB.html diff --git a/includes.chroot/etc/skel/Desktop/SciTE.desktop b/chroot-overlay/etc/skel/Desktop/SciTE.desktop similarity index 100% rename from includes.chroot/etc/skel/Desktop/SciTE.desktop rename to chroot-overlay/etc/skel/Desktop/SciTE.desktop diff --git a/includes.chroot/etc/skel/Desktop/code.desktop b/chroot-overlay/etc/skel/Desktop/code.desktop similarity index 100% rename from includes.chroot/etc/skel/Desktop/code.desktop rename to chroot-overlay/etc/skel/Desktop/code.desktop diff --git a/includes.chroot/etc/skel/Desktop/codeblocks.desktop b/chroot-overlay/etc/skel/Desktop/codeblocks.desktop similarity index 100% rename from includes.chroot/etc/skel/Desktop/codeblocks.desktop rename to chroot-overlay/etc/skel/Desktop/codeblocks.desktop diff --git a/includes.chroot/etc/skel/Desktop/emacs.desktop b/chroot-overlay/etc/skel/Desktop/emacs.desktop similarity index 100% rename from includes.chroot/etc/skel/Desktop/emacs.desktop rename to chroot-overlay/etc/skel/Desktop/emacs.desktop diff --git a/includes.chroot/etc/skel/Desktop/firefox-esr.desktop b/chroot-overlay/etc/skel/Desktop/firefox-esr.desktop similarity index 100% rename from includes.chroot/etc/skel/Desktop/firefox-esr.desktop rename to chroot-overlay/etc/skel/Desktop/firefox-esr.desktop diff --git a/includes.chroot/etc/skel/Desktop/geany.desktop b/chroot-overlay/etc/skel/Desktop/geany.desktop similarity index 100% rename from includes.chroot/etc/skel/Desktop/geany.desktop rename to chroot-overlay/etc/skel/Desktop/geany.desktop diff --git a/includes.chroot/etc/skel/Desktop/gvim.desktop b/chroot-overlay/etc/skel/Desktop/gvim.desktop similarity index 100% rename from includes.chroot/etc/skel/Desktop/gvim.desktop rename to chroot-overlay/etc/skel/Desktop/gvim.desktop diff --git a/includes.chroot/etc/skel/Desktop/org.gnome.gedit.desktop b/chroot-overlay/etc/skel/Desktop/org.gnome.gedit.desktop similarity index 100% rename from includes.chroot/etc/skel/Desktop/org.gnome.gedit.desktop rename to chroot-overlay/etc/skel/Desktop/org.gnome.gedit.desktop diff --git a/includes.chroot/etc/skel/Desktop/org.kde.kate.desktop b/chroot-overlay/etc/skel/Desktop/org.kde.kate.desktop similarity index 100% rename from includes.chroot/etc/skel/Desktop/org.kde.kate.desktop rename to chroot-overlay/etc/skel/Desktop/org.kde.kate.desktop diff --git a/includes.chroot/etc/skel/Desktop/org.kde.kcalc.desktop b/chroot-overlay/etc/skel/Desktop/org.kde.kcalc.desktop similarity index 100% rename from includes.chroot/etc/skel/Desktop/org.kde.kcalc.desktop rename to chroot-overlay/etc/skel/Desktop/org.kde.kcalc.desktop diff --git a/includes.chroot/etc/skel/Desktop/org.kde.kdevelop.desktop b/chroot-overlay/etc/skel/Desktop/org.kde.kdevelop.desktop similarity index 100% rename from includes.chroot/etc/skel/Desktop/org.kde.kdevelop.desktop rename to chroot-overlay/etc/skel/Desktop/org.kde.kdevelop.desktop diff --git a/includes.chroot/etc/skel/Desktop/org.kde.konsole.desktop b/chroot-overlay/etc/skel/Desktop/org.kde.konsole.desktop similarity index 100% rename from includes.chroot/etc/skel/Desktop/org.kde.konsole.desktop rename to chroot-overlay/etc/skel/Desktop/org.kde.konsole.desktop diff --git a/includes.chroot/etc/skel/Desktop/sublime_text.desktop b/chroot-overlay/etc/skel/Desktop/sublime_text.desktop similarity index 100% rename from includes.chroot/etc/skel/Desktop/sublime_text.desktop rename to chroot-overlay/etc/skel/Desktop/sublime_text.desktop diff --git a/includes.chroot/etc/systemd/network/10-wired.network b/chroot-overlay/etc/systemd/network/10-wired.network similarity index 100% rename from includes.chroot/etc/systemd/network/10-wired.network rename to chroot-overlay/etc/systemd/network/10-wired.network diff --git a/includes.chroot/etc/systemd/network/99-default.link b/chroot-overlay/etc/systemd/network/99-default.link similarity index 100% rename from includes.chroot/etc/systemd/network/99-default.link rename to chroot-overlay/etc/systemd/network/99-default.link diff --git a/includes.chroot/etc/systemd/sleep.conf b/chroot-overlay/etc/systemd/sleep.conf similarity index 100% rename from includes.chroot/etc/systemd/sleep.conf rename to chroot-overlay/etc/systemd/sleep.conf diff --git a/includes.chroot/etc/xdg/mimeapps.list b/chroot-overlay/etc/xdg/mimeapps.list similarity index 100% rename from includes.chroot/etc/xdg/mimeapps.list rename to chroot-overlay/etc/xdg/mimeapps.list diff --git a/includes.chroot/usr/lib/firefox-esr/mozilla.cfg b/chroot-overlay/usr/lib/firefox-esr/mozilla.cfg similarity index 100% rename from includes.chroot/usr/lib/firefox-esr/mozilla.cfg rename to chroot-overlay/usr/lib/firefox-esr/mozilla.cfg diff --git a/includes.chroot/usr/share/firefox-esr/browser/defaults/preferences/00-liox.js b/chroot-overlay/usr/share/firefox-esr/browser/defaults/preferences/00-liox.js similarity index 100% rename from includes.chroot/usr/share/firefox-esr/browser/defaults/preferences/00-liox.js rename to chroot-overlay/usr/share/firefox-esr/browser/defaults/preferences/00-liox.js diff --git a/includes.chroot/usr/share/liox-config/boot-entry.csv b/chroot-overlay/usr/share/liox-config/boot-entry.csv similarity index 100% rename from includes.chroot/usr/share/liox-config/boot-entry.csv rename to chroot-overlay/usr/share/liox-config/boot-entry.csv diff --git a/includes.chroot/usr/share/liox-config/bootmuncher.py b/chroot-overlay/usr/share/liox-config/bootmuncher.py similarity index 100% rename from includes.chroot/usr/share/liox-config/bootmuncher.py rename to chroot-overlay/usr/share/liox-config/bootmuncher.py diff --git a/includes.chroot/usr/share/liox-config/d-i_hooks b/chroot-overlay/usr/share/liox-config/d-i_hooks similarity index 100% rename from includes.chroot/usr/share/liox-config/d-i_hooks rename to chroot-overlay/usr/share/liox-config/d-i_hooks diff --git a/includes.chroot/usr/share/liox-config/downgrade_codeblocks.sh b/chroot-overlay/usr/share/liox-config/downgrade_codeblocks.sh similarity index 100% rename from includes.chroot/usr/share/liox-config/downgrade_codeblocks.sh rename to chroot-overlay/usr/share/liox-config/downgrade_codeblocks.sh diff --git a/includes.chroot/usr/share/liox-config/init_resize.sh b/chroot-overlay/usr/share/liox-config/init_resize.sh similarity index 100% rename from includes.chroot/usr/share/liox-config/init_resize.sh rename to chroot-overlay/usr/share/liox-config/init_resize.sh diff --git a/includes.chroot/usr/share/liox-config/install_vscode_ext.sh b/chroot-overlay/usr/share/liox-config/install_vscode_ext.sh similarity index 100% rename from includes.chroot/usr/share/liox-config/install_vscode_ext.sh rename to chroot-overlay/usr/share/liox-config/install_vscode_ext.sh diff --git a/includes.chroot/usr/share/liox-config/lmio-logo-center.png b/chroot-overlay/usr/share/liox-config/lmio-logo-center.png similarity index 100% rename from includes.chroot/usr/share/liox-config/lmio-logo-center.png rename to chroot-overlay/usr/share/liox-config/lmio-logo-center.png diff --git a/includes.chroot/usr/share/liox-config/lmio-logo-left.png b/chroot-overlay/usr/share/liox-config/lmio-logo-left.png similarity index 100% rename from includes.chroot/usr/share/liox-config/lmio-logo-left.png rename to chroot-overlay/usr/share/liox-config/lmio-logo-left.png diff --git a/includes.chroot/usr/share/liox-config/patches/grub-config.patch b/chroot-overlay/usr/share/liox-config/patches/grub-config.patch similarity index 100% rename from includes.chroot/usr/share/liox-config/patches/grub-config.patch rename to chroot-overlay/usr/share/liox-config/patches/grub-config.patch diff --git a/includes.chroot/usr/share/liox-config/patches/unrestrict-default-grub-entry.patch b/chroot-overlay/usr/share/liox-config/patches/unrestrict-default-grub-entry.patch similarity index 100% rename from includes.chroot/usr/share/liox-config/patches/unrestrict-default-grub-entry.patch rename to chroot-overlay/usr/share/liox-config/patches/unrestrict-default-grub-entry.patch diff --git a/includes.chroot/usr/share/liox-config/post-inst-overlay/etc/network/interfaces b/chroot-overlay/usr/share/liox-config/post-inst-overlay/etc/network/interfaces similarity index 100% rename from includes.chroot/usr/share/liox-config/post-inst-overlay/etc/network/interfaces rename to chroot-overlay/usr/share/liox-config/post-inst-overlay/etc/network/interfaces diff --git a/includes.chroot/usr/share/liox-config/sddm-numlock.sh b/chroot-overlay/usr/share/liox-config/sddm-numlock.sh similarity index 100% rename from includes.chroot/usr/share/liox-config/sddm-numlock.sh rename to chroot-overlay/usr/share/liox-config/sddm-numlock.sh diff --git a/includes.chroot/usr/share/liox-config/start-contest.sh b/chroot-overlay/usr/share/liox-config/start-contest.sh similarity index 100% rename from includes.chroot/usr/share/liox-config/start-contest.sh rename to chroot-overlay/usr/share/liox-config/start-contest.sh diff --git a/includes.chroot/usr/share/liox-config/stop-contest.sh b/chroot-overlay/usr/share/liox-config/stop-contest.sh similarity index 100% rename from includes.chroot/usr/share/liox-config/stop-contest.sh rename to chroot-overlay/usr/share/liox-config/stop-contest.sh diff --git a/includes.chroot/usr/share/sddm/themes/breeze/theme.conf.user b/chroot-overlay/usr/share/sddm/themes/breeze/theme.conf.user similarity index 100% rename from includes.chroot/usr/share/sddm/themes/breeze/theme.conf.user rename to chroot-overlay/usr/share/sddm/themes/breeze/theme.conf.user diff --git a/chroot-script.sh b/chroot-script.sh index 2482772..07bcd90 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -92,7 +92,7 @@ apt -y install \ sublime-text code \ /tmp/olimp-control*.deb -cp -rf /includes.chroot/* / +cp -rf /chroot-overlay/* / for P in $(ls /usr/share/liox-config/patches/*.patch); do patch -d/ -p0 < ${P} diff --git a/create-image.sh b/create-image.sh index a82a978..3b78ea7 100755 --- a/create-image.sh +++ b/create-image.sh @@ -61,7 +61,7 @@ debootstrap \ stable "${BUILD_DIR}" https://deb.debian.org/debian mkdir -p "${BUILD_DIR}/var/cache/apt/archives" -mkdir -p "${BUILD_DIR}/includes.chroot" +mkdir -p "${BUILD_DIR}/chroot-overlay" mkdir -p "${BUILD_DIR}/apt-keys" mkdir -p "${BUILD_DIR}/apt-sources" mount -t tmpfs chroot_tmp "${BUILD_DIR}/tmp" @@ -70,7 +70,7 @@ mount --make-rslave --rbind /sys "${BUILD_DIR}/sys" mount --make-rslave --rbind /dev "${BUILD_DIR}/dev" # mount --make-rslave --rbind /run "${BUILD_DIR}/run" mount --bind "${APT_CACHE_DIR}" "${BUILD_DIR}/var/cache/apt/archives" -mount --make-rslave --rbind -o ro ./includes.chroot "${BUILD_DIR}/includes.chroot" +mount --make-rslave --rbind -o ro ./chroot-overlay "${BUILD_DIR}/chroot-overlay" mount --make-rslave --rbind -o ro ./apt-keys "${BUILD_DIR}/apt-keys" mount --make-rslave --rbind -o ro ./apt-sources "${BUILD_DIR}/apt-sources" @@ -83,10 +83,10 @@ function cleanup_mounts() # umount -l "${BUILD_DIR}/run" umount "${BUILD_DIR}/var/cache/apt/archives" umount "${BUILD_DIR}/boot/efi" - umount -l "${BUILD_DIR}/includes.chroot" + umount -l "${BUILD_DIR}/chroot-overlay" umount -l "${BUILD_DIR}/apt-keys" umount -l "${BUILD_DIR}/apt-sources" - rmdir "${BUILD_DIR}/includes.chroot" + rmdir "${BUILD_DIR}/chroot-overlay" rmdir "${BUILD_DIR}/apt-keys" rmdir "${BUILD_DIR}/apt-sources" umount "${BUILD_DIR}" From 8587a6179fab908ebbbd679f1946f625743fb651 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 22 Feb 2026 16:54:06 +0000 Subject: [PATCH 28/53] Content review: delete config_overlay_amd64 as it has been sorted --- .../archives/vscode.key.chroot | 19 ------------------- .../archives/vscode.list.chroot | 1 - .../package-lists/liox-amd64.list.chroot | 1 - 3 files changed, 21 deletions(-) delete mode 100644 config_overlay_amd64/archives/vscode.key.chroot delete mode 100644 config_overlay_amd64/archives/vscode.list.chroot delete mode 100644 config_overlay_amd64/package-lists/liox-amd64.list.chroot diff --git a/config_overlay_amd64/archives/vscode.key.chroot b/config_overlay_amd64/archives/vscode.key.chroot deleted file mode 100644 index 6e319d4..0000000 --- a/config_overlay_amd64/archives/vscode.key.chroot +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.4.7 (GNU/Linux) - -mQENBFYxWIwBCADAKoZhZlJxGNGWzqV+1OG1xiQeoowKhssGAKvd+buXCGISZJwT -LXZqIcIiLP7pqdcZWtE9bSc7yBY2MalDp9Liu0KekywQ6VVX1T72NPf5Ev6x6DLV -7aVWsCzUAF+eb7DC9fPuFLEdxmOEYoPjzrQ7cCnSV4JQxAqhU4T6OjbvRazGl3ag -OeizPXmRljMtUUttHQZnRhtlzkmwIrUivbfFPD+fEoHJ1+uIdfOzZX8/oKHKLe2j -H632kvsNzJFlROVvGLYAk2WRcLu+RjjggixhwiB+Mu/A8Tf4V6b+YppS44q8EvVr -M+QvY7LNSOffSO6Slsy9oisGTdfE39nC7pVRABEBAAG0N01pY3Jvc29mdCAoUmVs -ZWFzZSBzaWduaW5nKSA8Z3Bnc2VjdXJpdHlAbWljcm9zb2Z0LmNvbT6JATUEEwEC -AB8FAlYxWIwCGwMGCwkIBwMCBBUCCAMDFgIBAh4BAheAAAoJEOs+lK2+EinPGpsH -/32vKy29Hg51H9dfFJMx0/a/F+5vKeCeVqimvyTM04C+XENNuSbYZ3eRPHGHFLqe -MNGxsfb7C7ZxEeW7J/vSzRgHxm7ZvESisUYRFq2sgkJ+HFERNrqfci45bdhmrUsy -7SWw9ybxdFOkuQoyKD3tBmiGfONQMlBaOMWdAsic965rvJsd5zYaZZFI1UwTkFXV -KJt3bp3Ngn1vEYXwijGTa+FXz6GLHueJwF0I7ug34DgUkAFvAs8Hacr2DRYxL5RJ -XdNgj4Jd2/g6T9InmWT0hASljur+dJnzNiNCkbn9KbX7J/qK1IbR8y560yRmFsU+ -NdCFTW7wY0Fb1fWJ+/KTsC4= -=J6gs ------END PGP PUBLIC KEY BLOCK----- diff --git a/config_overlay_amd64/archives/vscode.list.chroot b/config_overlay_amd64/archives/vscode.list.chroot deleted file mode 100644 index 3efeab3..0000000 --- a/config_overlay_amd64/archives/vscode.list.chroot +++ /dev/null @@ -1 +0,0 @@ -deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main diff --git a/config_overlay_amd64/package-lists/liox-amd64.list.chroot b/config_overlay_amd64/package-lists/liox-amd64.list.chroot deleted file mode 100644 index 01b2d72..0000000 --- a/config_overlay_amd64/package-lists/liox-amd64.list.chroot +++ /dev/null @@ -1 +0,0 @@ -code From 6abd04feac8fd104dae97888e2fdf796503550dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 22 Feb 2026 16:55:19 +0000 Subject: [PATCH 29/53] Content review: delete Sublime repo files as they've been sorted --- config_overlay/archives/sublime.key.chroot | 62 --------------------- config_overlay/archives/sublime.list.chroot | 1 - 2 files changed, 63 deletions(-) delete mode 100644 config_overlay/archives/sublime.key.chroot delete mode 100644 config_overlay/archives/sublime.list.chroot diff --git a/config_overlay/archives/sublime.key.chroot b/config_overlay/archives/sublime.key.chroot deleted file mode 100644 index 3f11304..0000000 --- a/config_overlay/archives/sublime.key.chroot +++ /dev/null @@ -1,62 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mQINBFkQtZkBEADKbOf66dGnmDHnV/XEJwZUcNkn9X+bsOsbWtGqTh4ura5tEozO -EBDw2eCFFFN0PlLyj79WQOscgxUyi4h5AmInYJlL6DK8rHp9Cu0/IDtYwuO4nbUN -0SMTEb/9UdyVO8to63S+2PyFre8ijh/fGPbBgtu47rEI1tNCDkreUKSQ3XpbVEQL -8601tbakSoeVEApOMv06pQMc4ewG1Qo9ogYaqvlEQFVboW6CXBr+CoP1s7pcxr0l -/iJT90dMGQevFpyVt64CfQnLAmd1VOp7JfNYOTThAK/y+Da6XTp+R1kfcX7Ha1nW -hGiuOHWh7kUNQoc643Mk3M0O+TA+gamnFw/ZLYDvm2MyyTUvVdmS2Is9xllfwuqW -ELy3yADmSCPRcjlFU/Rsc6454HYEVd9tdaXt3LiY2WyaMp/5mBLOXbq6I8pPPouY -hWS3QSGG4HEMtiSibcXjwEzXf2cfBX1ckLL6mlaAQC1ZXs5HvnOhJT+LcbRJEe2I -2J1gEAjTu7drtKIIgtYX+woNI4juYUfrjkJC4pQfKcS/qAdY1SuzczT8T+QSzwm2 -5mq1KcPK6/o5QXdfUpRArH7MQBEXWeKUw0tpv3MXVrsK+WMhZLNbVYnXFNltdZvo -0OPt+w/PWR7OcWYn0lM6+zPE1t4NwmjVTh3JM2gGWf4gCtEGZpyNwW0ArQARAQAB -tCxTdWJsaW1lIEhRIFB0eSBMdGQgPHN1cHBvcnRAc3VibGltZXRleHQuY29tPokC -NAQTAQIAHgUCWRC1mQIbLwMLCQcEFQoJCAUWAgMBAAIeAQIXgAAKCRCtrmrSio+Q -GvPyD/9bGTuBAeS/NR68txC39koiGdWpRXvvOTDTo5tF78CLqmDb7KNjDpgwlfKr -iV+qdsUhvEZsA7WeB87KOqptztR8zhPWCN53hupoBsBLjvDET/AQYZYBwuCwsv90 -Sd8ErIK+kXxH1XnCSIiV9AwAPPfpZDM2lv22KoxxDowzz8i+eIayZH9oaOFAoLNc -aMhZywiDCH8lk5h22Jubq2ElwDAixowxdDL6xzYjTmsW6VPThdvixL4p+/kgXWGW -EPqMZUrLZvlCwGAHFdcg8o4vWibT/j7JAF0rYsOOBEzLOP+wbk6FCjwOgk8kwUaJ -QUuxEJp/xWw/aHcpVz48dWdXvgE+AQUY/qKe2t2MkSPTgScjXVsATb3fZo2YBrMm -2nY2OLRuXUIbCnh0ZxSKRI7+4jUPPCJPGh6xBNxnUcNal4dkeUEmZ+KL0G/4BtSI -pVq/sbBnxO/FOKEhs0z7ONrUD2KAhGRrSEgRsTCpzsvo8IdRzYnTnDAZU7ouK5oF -3jQVt/dvDp9CKUfG1QoP5FSKjZIpDyxT1sOqWWjEbcPbzMnMVcVqWh+zruGT6R8o -hSduhMcFTtrQHd+ECe0tBd2DGHEmPy5lA97gLVo4y19/IIlLJxXcXJbOPkCCeHln -Hq6nD/SCtnch7pDS6kaBe4VaeT8m4/EHjROAmI2SprI1TdzS/LkCDQRZELWZARAA -vlA9fJFa29VdBYDBAwygPaIfCelSwkq5UaPy9wLI0bSu5HaCnHD6FnENB2TOC0No -2MXIfxQwJ4nyna37xsaLYQO8Qt+3EJ0mFmnToyhL8tebdsSBkqprCVixAf2PjtkX -tr4XxHR4L2nt9nsb5w3eCkcZ3czkafkePSsMuu8c2y6e8k+Kb+caTENWNxob/oOm -p0ybJDBKVa8JV5BVbvUd8JcWsLzKx0BSTxTH0j9eCpfBLilZZml1A9v7AgW5tK6H -VNOufkR1DsHrAIQJQdyt8HKUXY0/7m3Tm7/61ONjKbuFaIJYrkNMgr0P7BKNFMAj -yJBFwa2Vf60idfxShu8svzvYBWSRWplEBnwlxSJvdQT2E6p08kOdgVX3FY4k9Jgm -MllE1ZsyIdF8hcpfReZn+3RcPrutvMYL5Cyc63xuiRUjaMLQroZ7CfFuvDRYqgkG -MQbHNhWrQzHx12FQ/Mlw7mS9ypbnFhJUP4SrYKIyVW2dEUTaUpaUlfflNNRZiVZX -gtnPiIU8kRu8WjDUWKHk3QMs4KuRiudk4ZSHP+neBe9Bm67BPhVkYcpBAyJBkLTZ -AWmosdDCMIAyXbupR760oQUQST7tEilplvHYX8XpDBmSIM43aMKQizI+A0HYf2zd -jiz5K5hAL0lQx9HgRSbgz6vWN6FK0pEFrm3TifvdZvUAEQEAAYkEPgQYAQIACQUC -WRC1mQIbAgIpCRCtrmrSio+QGsFdIAQZAQIABgUCWRC1mQAKCRD1fU9ZvT30VPOL -EACB+F2hb45D5ofEoVHgYBrD2BtPSItSAMQtvncwViH42CatT1g2n7MHwdnLts8x -SCeAaEdWzpIaMbUVO7qSkWP1gYjbq0gozEIYplzdcSFLvnDfkvSYCelJqv7GJWJx -JQ59hC7V1QWKUQFf4CH8X1Mm1tHyuSe8yTBerZXWExuLE/lkBcc/S6tSFUteODIw -PeXzOMkWqf0Z8XFNNUDwlKVDcT9apvpDxE5pyOmBgJ+QRE+QbstE//nZQaDN44d2 -+I/4N3NJcWNIq4D0viENwJHbCvDIeeAOux8QEjBOWlBxYsfYwd9xecRR6IiNMnLd -7zw2B1/44vbSUOTg8pVh9qJzYzolBlJSQU8cyejCoYmRt9GbWWrhoRudtKDq+5VF -IoJOSAAzgNAUgJWIRS6h+4jUoYLa9ew1eytGLTLrYR5fFVwA42WIjDfVXpP93IVS -jOFswyD/YeyGjQb22xlBvVGrLv/V3bK3ghQjAqlXRItLSH4bvFRolna1tdlpuCNd -HRwdpujd0IGvG7jMmKTbNQmjIM0ZLRYXKzSOoRx90Mc8u75qvC1seMtdTSdZap2e -tz38Cm7kRPjqVpLbv1obUtPIVPVjxuQpY1m8jmIT678t8W37zxCxrJ/4sOJ3PMNj -nl7Lj0Y4HZsopZN2Z4Yf+EnyNwDHTaVWpWqMrkgQMz79WG3gD/oCQ3SC7/5ByapZ -BwahFuaS52Qmw+70ahNkWiUNfLUZk3TTQbKpyJNziKdVW10llEr76MEw1TwdjXVP -H8uEGYTtI/gcbbGTeXMWfBorgSkSdjgN6QgMgZbHpY4ljDMPdPLuivJ2+TYKN3JC -WPGorOolzezyU+yZkz6353UoX6LMGLQObB7AugQLcJO6aZnMPNqC7wof7VjWZytG -vwA0id7Siudviw1IUOxj14oevNheNHwicVTTlS0fnc+88d1AAL0jmmKyrvdawPPm -uHCOosQ/ymXanAqNx/XUelGvJKSHC8i3itiVbDcArkaVrwoE2y2t//0AvStsmvKM -R7UE+R0u7C9/lbU2mAambMJkc1XzdjEbuwD55JMqik4AXgAqARnZceV/YkLzqJG7 -TbHv9QSv7t1Fg16gUW3LLIfRan+sRgF3QxnmJD9xNrz0EIvIRSKhFH+EX/cQAA/y -Uw78H0YeKGlPpXsOOHp8l/ZLXsCCK2RvMFmOWfCcoBEzuiNn5I+2MUoiXkSkdsBy -1F1O2ZyGTA3bhdRUW3ouD8PShapJrx8LnrM5ADzlbDvTS0TLegNN4An5bSbj09dI -Ret0lkql+RTCtyWh95sr1kgGyyQCyF/Jv7NSntcQlJL3whphCpOkvOvK+HlBoY5U -McvDuGKIXk111Z3nrF4DeIIc/U6ICQ== -=CCk2 ------END PGP PUBLIC KEY BLOCK----- diff --git a/config_overlay/archives/sublime.list.chroot b/config_overlay/archives/sublime.list.chroot deleted file mode 100644 index fc956af..0000000 --- a/config_overlay/archives/sublime.list.chroot +++ /dev/null @@ -1 +0,0 @@ -deb https://download.sublimetext.com/ apt/stable/ From 1a93f95419b7a36fa194b93715bcb07230c3e3c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 22 Feb 2026 17:00:01 +0000 Subject: [PATCH 30/53] Content review: delete old package lists as they've been sorted through --- config_overlay/package-lists/liox.list.chroot | 33 ------------------- 1 file changed, 33 deletions(-) delete mode 100644 config_overlay/package-lists/liox.list.chroot diff --git a/config_overlay/package-lists/liox.list.chroot b/config_overlay/package-lists/liox.list.chroot deleted file mode 100644 index a7df43a..0000000 --- a/config_overlay/package-lists/liox.list.chroot +++ /dev/null @@ -1,33 +0,0 @@ -task-laptop - -plasma-desktop kwin-x11 sddm sddm-theme-breeze xserver-xorg -dolphin konsole kwrite ark gwenview okular - -firefox-esr wget -libreoffice-writer libreoffice-calc libreoffice-impress -libreoffice-kf5 libreoffice-plasma - -xserver-xorg-video-all - -vim vim-gtk3 joe gedit scite geany geany-plugins codeblocks codeblocks-contrib -kate sublime-text -kdevelop -neovim - -zsh mc emacs nano git - -make gcc g++ gdb ddd valgrind clang - -ruby python3 - -strace lsof tree curl dnsutils screen -iotop tmux htop kpartx tsocks units mlocate -bridge-utils bash-completion rfkill apt-file ntp locales -iptables-persistent -localepurge -firmware-iwlwifi - -gdb-doc manpages - -python3-requests -kcalc From 8de9f25fa7ff0e09aafae01656cbfb1312bcec78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 22 Feb 2026 17:37:54 +0000 Subject: [PATCH 31/53] We have space now, don't purge locales --- chroot-overlay/etc/locale.nopurge | 19 ------------------- chroot-script.sh | 5 +---- 2 files changed, 1 insertion(+), 23 deletions(-) delete mode 100644 chroot-overlay/etc/locale.nopurge diff --git a/chroot-overlay/etc/locale.nopurge b/chroot-overlay/etc/locale.nopurge deleted file mode 100644 index 40976f1..0000000 --- a/chroot-overlay/etc/locale.nopurge +++ /dev/null @@ -1,19 +0,0 @@ -# clean up man pages -MANDELETE - -# delete new locales without bothering -DONTBOTHERNEWLOCALE - -# list of locales to keep -en -en_US -en_US.UTF-8 -lt -lt_LT -lt_LT.UTF-8 -pl -pl_PL -pl_PL.UTF-8 -ru -ru_RU -ru_RU.UTF-8 diff --git a/chroot-script.sh b/chroot-script.sh index 07bcd90..0d43173 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -64,8 +64,6 @@ apt -y update echo "iptables-persistent iptables-persistent/autosave_v4 boolean true" | debconf-set-selections echo "iptables-persistent iptables-persistent/autosave_v6 boolean true" | debconf-set-selections echo "keyboard-configuration keyboard-configuration/variant select English (US)" | debconf-set-selections -echo "localepurge localepurge/nopurge multiselect en, en_US, en_US.UTF-8, lt, lt_LT, lt_LT.UTF-8, pl, pl_PL, pl_PL.UTF-8, ru, ru_RU, ru_RU.UTF-8" | debconf-set-selections -echo "localepurge localepurge/use-dpkg-feature boolean false" | debconf-set-selections apt -y install \ task-laptop \ @@ -80,9 +78,8 @@ apt -y install \ python3 \ strace lsof tree curl dnsutils screen \ iotop tmux htop kpartx tsocks units locate \ - bridge-utils bash-completion rfkill apt-file ntpsec locales \ + bridge-utils bash-completion rfkill apt-file ntpsec \ iptables-persistent \ - localepurge \ gdb-doc manpages \ python3-requests \ kcalc apt-transport-https \ From 85c6bc41f5354b5ed9c88441117745352ca72518 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 22 Feb 2026 23:16:37 +0000 Subject: [PATCH 32/53] Content review: delete old preseed script, now sorted --- .../includes.binary/preseed/auto.cfg | 501 ------------------ 1 file changed, 501 deletions(-) delete mode 100644 config_overlay/includes.binary/preseed/auto.cfg diff --git a/config_overlay/includes.binary/preseed/auto.cfg b/config_overlay/includes.binary/preseed/auto.cfg deleted file mode 100644 index 7c2095f..0000000 --- a/config_overlay/includes.binary/preseed/auto.cfg +++ /dev/null @@ -1,501 +0,0 @@ -#_preseed_V1 -#### Contents of the preconfiguration file (for bookworm) -### Localization -# Preseeding only locale sets language, country and locale. -#d-i debian-installer/locale string en_US - -# The values can also be preseeded individually for greater flexibility. -d-i debian-installer/language string en -d-i debian-installer/country string LT -d-i debian-installer/locale string en_US.UTF-8 -# Optionally specify additional locales to be generated. -d-i localechooser/supported-locales multiselect en_US.UTF-8, lt_LT.UTF-8, pl_PL.UTF-8, ru_RU.UTF-8 - -# Keyboard selection. -d-i keyboard-configuration/xkb-keymap select us -# d-i keyboard-configuration/toggle select No toggling - -### Network configuration -# Disable network configuration entirely. This is useful for cdrom -# installations on non-networked devices where the network questions, -# warning and long timeouts are a nuisance. -#d-i netcfg/enable boolean false - -# netcfg will choose an interface that has link if possible. This makes it -# skip displaying a list if there is more than one interface. -d-i netcfg/choose_interface select auto - -# To pick a particular interface instead: -#d-i netcfg/choose_interface select eth1 - -# To set a different link detection timeout (default is 3 seconds). -# Values are interpreted as seconds. -#d-i netcfg/link_wait_timeout string 10 - -# If you have a slow dhcp server and the installer times out waiting for -# it, this might be useful. -#d-i netcfg/dhcp_timeout string 60 -#d-i netcfg/dhcpv6_timeout string 60 - -# Automatic network configuration is the default. -# If you prefer to configure the network manually, uncomment this line and -# the static network configuration below. -#d-i netcfg/disable_autoconfig boolean true - -# If you want the preconfiguration file to work on systems both with and -# without a dhcp server, uncomment these lines and the static network -# configuration below. -#d-i netcfg/dhcp_failed note -#d-i netcfg/dhcp_options select Configure network manually - -# Static network configuration. -# -# IPv4 example -#d-i netcfg/get_ipaddress string 192.168.1.42 -#d-i netcfg/get_netmask string 255.255.255.0 -#d-i netcfg/get_gateway string 192.168.1.1 -#d-i netcfg/get_nameservers string 192.168.1.1 -#d-i netcfg/confirm_static boolean true -# -# IPv6 example -#d-i netcfg/get_ipaddress string fc00::2 -#d-i netcfg/get_netmask string ffff:ffff:ffff:ffff:: -#d-i netcfg/get_gateway string fc00::1 -#d-i netcfg/get_nameservers string fc00::1 -#d-i netcfg/confirm_static boolean true - -# Any hostname and domain names assigned from dhcp take precedence over -# values set here. However, setting the values still prevents the questions -# from being shown, even if values come from dhcp. -d-i netcfg/get_hostname string unassigned-hostname -d-i netcfg/get_domain string unassigned-domain - -# If you want to force a hostname, regardless of what either the DHCP -# server returns or what the reverse DNS entry for the IP is, uncomment -# and adjust the following line. -d-i netcfg/hostname string olimpiada - -# Disable that annoying WEP key dialog. -d-i netcfg/wireless_wep string -# The wacky dhcp hostname that some ISPs use as a password of sorts. -#d-i netcfg/dhcp_hostname string radish - -# If you want to completely disable firmware lookup (i.e. not use firmware -# files or packages that might be available on installation images): -#d-i hw-detect/firmware-lookup string never - -# If non-free firmware is needed for the network or other hardware, you can -# configure the installer to always try to load it, without prompting. Or -# change to false to disable asking. -d-i hw-detect/load_firmware boolean true - -### Network console -# Use the following settings if you wish to make use of the network-console -# component for remote installation over SSH. This only makes sense if you -# intend to perform the remainder of the installation manually. -#d-i anna/choose_modules string network-console -#d-i network-console/authorized_keys_url string http://10.0.0.1/openssh-key -#d-i network-console/password password r00tme -#d-i network-console/password-again password r00tme - -### Mirror settings -# Mirror protocol: -# If you select ftp, the mirror/country string does not need to be set. -# Default value for the mirror protocol: http. -#d-i mirror/protocol string ftp -d-i mirror/country string manual -d-i mirror/http/hostname string deb.debian.org -d-i mirror/http/directory string /debian -d-i mirror/http/proxy string - -# Suite to install. -#d-i mirror/suite string testing -# Suite to use for loading installer components (optional). -#d-i mirror/udeb/suite string testing - -### Account setup -# Skip creation of a root account (normal user account will be able to -# use sudo). -d-i passwd/root-login boolean false -# Alternatively, to skip creation of a normal user account. -#d-i passwd/make-user boolean false - -# Root password, either in clear text -#d-i passwd/root-password password r00tme -#d-i passwd/root-password-again password r00tme -# or encrypted using a crypt(3) hash. -#d-i passwd/root-password-crypted password [crypt(3) hash] - -# To create a normal user account. -d-i passwd/user-fullname string LMIO Administrator -d-i passwd/username string user -# Normal user's password, either in clear text -d-i passwd/user-password password live -d-i passwd/user-password-again password live -# or encrypted using a crypt(3) hash. -#d-i passwd/user-password-crypted password [crypt(3) hash] -# Create the first user with the specified UID instead of the default. -#d-i passwd/user-uid string 1010 - -# The user account will be added to some standard initial groups. To -# override that, use this. -#d-i passwd/user-default-groups string audio cdrom video - -### Clock and time zone setup -# Controls whether or not the hardware clock is set to UTC. -d-i clock-setup/utc boolean true - -# You may set this to any valid setting for $TZ; see the contents of -# /usr/share/zoneinfo/ for valid values. -d-i time/zone string Europe/Vilnius - -# Controls whether to use NTP to set the clock during the install -d-i clock-setup/ntp boolean true -# NTP server to use. The default is almost always fine here. -#d-i clock-setup/ntp-server string ntp.example.com - -### Partitioning -## Partitioning example -# If the system has free space you can choose to only partition that space. -# This is only honoured if partman-auto/method (below) is not set. -#d-i partman-auto/init_automatically_partition select biggest_free - -# Alternatively, you may specify a disk to partition. If the system has only -# one disk the installer will default to using that, but otherwise the device -# name must be given in traditional, non-devfs format (so e.g. /dev/sda -# and not e.g. /dev/discs/disc0/disc). -# For example, to use the first SCSI/SATA hard disk: -#d-i partman-auto/disk string /dev/sda -# In addition, you'll need to specify the method to use. -# The presently available methods are: -# - regular: use the usual partition types for your architecture -# - lvm: use LVM to partition the disk -# - crypto: use LVM within an encrypted partition -d-i partman-auto/method string regular - -# You can define the amount of space that will be used for the LVM volume -# group. It can either be a size with its unit (eg. 20 GB), a percentage of -# free space or the 'max' keyword. -d-i partman-auto-lvm/guided_size string max - -# If one of the disks that are going to be automatically partitioned -# contains an old LVM configuration, the user will normally receive a -# warning. This can be preseeded away... -d-i partman-lvm/device_remove_lvm boolean true -# The same applies to pre-existing software RAID array: -d-i partman-md/device_remove_md boolean true -# And the same goes for the confirmation to write the lvm partitions. -d-i partman-lvm/confirm boolean true -d-i partman-lvm/confirm_nooverwrite boolean true - -# You can choose one of the three predefined partitioning recipes: -# - atomic: all files in one partition -# - home: separate /home partition -# - multi: separate /home, /var, and /tmp partitions -#d-i partman-auto/choose_recipe select atomic - -# Or provide a recipe of your own... -# If you have a way to get a recipe file into the d-i environment, you can -# just point at it. -#d-i partman-auto/expert_recipe_file string /hd-media/recipe - -# If not, you can put an entire recipe into the preconfiguration file in one -# (logical) line. This example creates a small /boot partition, suitable -# swap, and uses the rest of the space for the root partition: -#d-i partman-auto/expert_recipe string \ -# boot-root :: \ -# 40 50 100 ext3 \ -# $primary{ } $bootable{ } \ -# method{ format } format{ } \ -# use_filesystem{ } filesystem{ ext3 } \ -# mountpoint{ /boot } \ -# . \ -# 500 10000 1000000000 ext3 \ -# method{ format } format{ } \ -# use_filesystem{ } filesystem{ ext3 } \ -# mountpoint{ / } \ -# . \ -# 64 512 300% linux-swap \ -# method{ swap } format{ } \ -# . - -d-i partman-auto/expert_recipe string \ - liox-efi :: \ - 100 100 100 free \ - $iflabel{ gpt } \ - $reusemethod{ } \ - method{ efi } format{ } \ - . \ - 512 512 1024 linux-swap \ - $reusemethod{ } \ - method{ swap } format{ } \ - . \ - 1000 1000 -1 ext4 \ - method{ format } format{ } \ - use_filesystem{ } filesystem{ ext4 } \ - mountpoint{ / } \ - . - -d-i partman-auto/choose_recipe select liox-efi - -# The full recipe format is documented in the file partman-auto-recipe.txt -# included in the 'debian-installer' package or available from D-I source -# repository. This also documents how to specify settings such as file -# system labels, volume group names and which physical devices to include -# in a volume group. - -## Partitioning for EFI -# If your system needs an EFI partition you could add something like -# this to the recipe above, as the first element in the recipe: -# 538 538 1075 free \ -# $iflabel{ gpt } \ -# $reusemethod{ } \ -# method{ efi } \ -# format{ } \ -# . \ -# -# The fragment above is for the amd64 architecture; the details may be -# different on other architectures. The 'partman-auto' package in the -# D-I source repository may have an example you can follow. - -# This makes partman automatically partition without confirmation, provided -# that you told it what to do using one of the methods above. -d-i partman-partitioning/confirm_write_new_label boolean true -d-i partman/choose_partition select finish -d-i partman/confirm boolean true -d-i partman/confirm_nooverwrite boolean true - -# Force UEFI booting ('BIOS compatibility' will be lost). Default: false. -d-i partman-efi/non_efi_system boolean true -# Ensure the partition table is GPT - this is required for EFI -d-i partman-partitioning/choose_label select gpt -d-i partman-partitioning/default_label string gpt - -# When disk encryption is enabled, skip wiping the partitions beforehand. -#d-i partman-auto-crypto/erase_disks boolean false - -## Partitioning using RAID -# The method should be set to "raid". -#d-i partman-auto/method string raid -# Specify the disks to be partitioned. They will all get the same layout, -# so this will only work if the disks are the same size. -#d-i partman-auto/disk string /dev/sda /dev/sdb - -# Next you need to specify the physical partitions that will be used. -#d-i partman-auto/expert_recipe string \ -# multiraid :: \ -# 1000 5000 4000 raid \ -# $primary{ } method{ raid } \ -# . \ -# 64 512 300% raid \ -# method{ raid } \ -# . \ -# 500 10000 1000000000 raid \ -# method{ raid } \ -# . - -# Last you need to specify how the previously defined partitions will be -# used in the RAID setup. Remember to use the correct partition numbers -# for logical partitions. RAID levels 0, 1, 5, 6 and 10 are supported; -# devices are separated using "#". -# Parameters are: -# \ -# - -#d-i partman-auto-raid/recipe string \ -# 1 2 0 ext3 / \ -# /dev/sda1#/dev/sdb1 \ -# . \ -# 1 2 0 swap - \ -# /dev/sda5#/dev/sdb5 \ -# . \ -# 0 2 0 ext3 /home \ -# /dev/sda6#/dev/sdb6 \ -# . - -# For additional information see the file partman-auto-raid-recipe.txt -# included in the 'debian-installer' package or available from D-I source -# repository. - -# This makes partman automatically partition without confirmation. -d-i partman-md/confirm boolean true -d-i partman-partitioning/confirm_write_new_label boolean true -d-i partman/choose_partition select finish -d-i partman/confirm boolean true -d-i partman/confirm_nooverwrite boolean true - -## Controlling how partitions are mounted -# The default is to mount by UUID, but you can also choose "traditional" to -# use traditional device names, or "label" to try filesystem labels before -# falling back to UUIDs. -#d-i partman/mount_style select uuid - -### Base system installation -# Configure APT to not install recommended packages by default. Use of this -# option can result in an incomplete system and should only be used by very -# experienced users. -#d-i base-installer/install-recommends boolean false - -# The kernel image (meta) package to be installed; "none" can be used if no -# kernel is to be installed. -#d-i base-installer/kernel/image string linux-image-686 - -### Apt setup -# Choose, if you want to scan additional installation media -# (default: false). -d-i apt-setup/cdrom/set-first boolean false -# You can choose to install non-free firmware. -d-i apt-setup/non-free-firmware boolean true -# You can choose to install non-free and contrib software. -d-i apt-setup/non-free boolean true -d-i apt-setup/contrib boolean true -# Uncomment the following line, if you don't want to have the sources.list -# entry for a DVD/BD installation image active in the installed system -# (entries for netinst or CD images will be disabled anyway, regardless of -# this setting). -#d-i apt-setup/disable-cdrom-entries boolean true -# Uncomment this if you don't want to use a network mirror. -#d-i apt-setup/use_mirror boolean false -# Select which update services to use; define the mirrors to be used. -# Values shown below are the normal defaults. -#d-i apt-setup/services-select multiselect security, updates -#d-i apt-setup/security_host string security.debian.org - -# Additional repositories, local[0-9] available -#d-i apt-setup/local0/repository string \ -# http://local.server/debian stable main -#d-i apt-setup/local0/comment string local server -# Enable deb-src lines -#d-i apt-setup/local0/source boolean true -# URL to the public key of the local repository; you must provide a key or -# apt will complain about the unauthenticated repository and so the -# sources.list line will be left commented out. -#d-i apt-setup/local0/key string http://local.server/key -# or one can provide it in-line by base64 encoding the contents of the -# key file (with `base64 -w0`) and specifying it thus: -#d-i apt-setup/local0/key string base64://LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCi4uLgo= -# The content of the key file is checked to see if it appears to be ASCII-armoured. -# If so it will be saved with an ".asc" extension, otherwise it gets a '.gpg' extension. -# "keybox database" format is currently not supported. (see generators/60local in apt-setup's source) - -# By default the installer requires that repositories be authenticated -# using a known gpg key. This setting can be used to disable that -# authentication. Warning: Insecure, not recommended. -#d-i debian-installer/allow_unauthenticated boolean true - -# Uncomment this to add multiarch configuration for i386 -#d-i apt-setup/multiarch string i386 - - -### Package selection -#tasksel tasksel/first multiselect standard, web-server, kde-desktop - -# Or choose to not get the tasksel dialog displayed at all (and don't install -# any packages): -#d-i pkgsel/run_tasksel boolean false - -# Individual additional packages to install -#d-i pkgsel/include string openssh-server build-essential -# Whether to upgrade packages after debootstrap. -# Allowed values: none, safe-upgrade, full-upgrade -#d-i pkgsel/upgrade select none - -# You can choose, if your system will report back on what software you have -# installed, and what software you use. The default is not to report back, -# but sending reports helps the project determine what software is most -# popular and should be included on the first CD/DVD. -#popularity-contest popularity-contest/participate boolean false - -### Boot loader installation -# Grub is the boot loader (for x86). - -# This is fairly safe to set, it makes grub install automatically to the UEFI -# partition/boot record if no other operating system is detected on the machine. -d-i grub-installer/only_debian boolean true - -# This one makes grub-installer install to the UEFI partition/boot record, if -# it also finds some other OS, which is less safe as it might not be able to -# boot that other OS. -d-i grub-installer/with_other_os boolean true - -# Due notably to potential USB sticks, the location of the primary drive can -# not be determined safely in general, so this needs to be specified: -#d-i grub-installer/bootdev string /dev/sda -# To install to the primary device (assuming it is not a USB stick): -d-i grub-installer/bootdev string default - -# Make GRUB install \EFI\Boot\bootx64.efi binary for best compatibility -# with different UEFI implementations. -d-i grub-installer/force-efi-extra-removable boolean true -grub-efi-amd64 grub2/force_efi_extra_removable boolean true - -# Alternatively, if you want to install to a location other than the UEFI -# parition/boot record, uncomment and edit these lines: -#d-i grub-installer/only_debian boolean false -#d-i grub-installer/with_other_os boolean false -#d-i grub-installer/bootdev string (hd0,1) -# To install grub to multiple disks: -#d-i grub-installer/bootdev string (hd0,1) (hd1,1) (hd2,1) - -# Optional password for grub, either in clear text -#d-i grub-installer/password password r00tme -#d-i grub-installer/password-again password r00tme -# or encrypted using an MD5 hash, see grub-md5-crypt(8). -#d-i grub-installer/password-crypted password [MD5 hash] - -# Use the following option to add additional boot parameters for the -# installed system (if supported by the bootloader installer). -# Note: options passed to the installer will be added automatically. -#d-i debian-installer/add-kernel-opts string nousb - -### Finishing up the installation -# During installations from serial console, the regular virtual consoles -# (VT1-VT6) are normally disabled in /etc/inittab. Uncomment the next -# line to prevent this. -#d-i finish-install/keep-consoles boolean true - -# Avoid that last message about the install being complete. -d-i finish-install/reboot_in_progress note - -# This will prevent the installer from ejecting the CD during the reboot, -# which is useful in some situations. -#d-i cdrom-detect/eject boolean false - -# This is how to make the installer shutdown when finished, but not -# reboot into the installed system. -#d-i debian-installer/exit/halt boolean true -# This will power off the machine instead of just halting it. -#d-i debian-installer/exit/poweroff boolean true - -### Preseeding other packages -# Depending on what software you choose to install, or if things go wrong -# during the installation process, it's possible that other questions may -# be asked. You can preseed those too, of course. To get a list of every -# possible question that could be asked during an install, do an -# installation, and then run these commands: -# debconf-get-selections --installer > file -# debconf-get-selections >> file - -#### Advanced options -### Running custom commands during the installation -# d-i preseeding is inherently not secure. Nothing in the installer checks -# for attempts at buffer overflows or other exploits of the values of a -# preconfiguration file like this one. Only use preconfiguration files from -# trusted locations! To drive that home, and because it's generally useful, -# here's a way to run any shell command you'd like inside the installer, -# automatically. - -# This first command is run as early as possible, just after -# preseeding is read. -#d-i preseed/early_command string anna-install some-udeb -# This command is run immediately before the partitioner starts. It may be -# useful to apply dynamic partitioner preseeding that depends on the state -# of the disks (which may not be visible when preseed/early_command runs). -#d-i partman/early_command \ -# string debconf-set partman-auto/disk "$(list-devices disk | head -n1)" -# This command is run just before the install finishes, but when there is -# still a usable /target directory. You can chroot to /target and use it -# directly, or use the apt-install and in-target commands to easily install -# packages and run commands in the target system. -#d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh - From eae2456ded5f30d252b6f4417faddbbc25737787 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 22 Feb 2026 23:18:24 +0000 Subject: [PATCH 33/53] Review .gitignore: remove Debian Live artifacts --- .gitignore | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/.gitignore b/.gitignore index dd22480..6c478b1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,34 +1,3 @@ -# debian live version -/.build -/.lock -/.stage -/binary -/binary.contents -/binary.deb -/binary-*.iso -/binary.iso.zsync -/binary.packages -/binary.udeb -/config -/live-image-*.contents -/live-image-*.deb -/live-image-*.files -/live-image-*.iso -/live-image-*.iso.zsync -/live-image-*.packages -/live-image-*.udeb -/cache -/chroot -/chroot.files -/chroot.packages.install -/chroot.packages.live -/hdd-*.vdi -/target -/extra_config -/liox-* -/build.log - -# debootstrap version *.raw *.img *.qcow2 From 377acfaa9a135fbd7d4763e1b430c7d3571eac90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 22 Feb 2026 23:19:11 +0000 Subject: [PATCH 34/53] Remove old Debian Live config scripts --- auto/build | 5 ----- auto/clean | 8 -------- auto/config | 46 ---------------------------------------------- 3 files changed, 59 deletions(-) delete mode 100755 auto/build delete mode 100755 auto/clean delete mode 100755 auto/config diff --git a/auto/build b/auto/build deleted file mode 100755 index f8d8346..0000000 --- a/auto/build +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -set -e - -lb build noauto "${@}" 2>&1 | tee build.log diff --git a/auto/clean b/auto/clean deleted file mode 100755 index 69874ee..0000000 --- a/auto/clean +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -set -e - -lb clean noauto "${@}" - -rm -f config/binary config/bootstrap config/chroot config/common config/source -rm -f build.log diff --git a/auto/config b/auto/config deleted file mode 100755 index 8a00864..0000000 --- a/auto/config +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/sh - -set -e - -case "$LIOX_ARCH" in - i386) - LX_ARCHS=i386 - LX_FLAVS=686-pae - ;; - amd64) - LX_ARCHS=amd64 - LX_FLAVS=amd64 - ;; - *) - echo "Please specify LIOX_ARCH (i386 or amd64)" - exit 1 - ;; -esac - -# '--debian-installer-distribution daily' is a workaround to make d-i kernel and -# live image modules match. -lb config noauto \ - --architectures $LX_ARCHS \ - --linux-flavours $LX_FLAVS \ - --distribution bookworm \ - --archive-areas "main contrib non-free non-free-firmware" \ - --debian-installer live \ - --debian-installer-distribution bookworm \ - --debootstrap-options "--include=ca-certificates,openssl" \ - --hdd-size 7600 \ - --security true \ - --updates true \ - "${@}" - -cp -rT config_overlay config - -# This is required because Visual Studio Code doesn't have a 32-bit repo at the -# moment, so we need to have a way to diverge configurations between i386/amd64. -if [ "${LIOX_ARCH}" = "amd64" ]; then - cp -rT config_overlay_amd64 config -fi - -if [ -n "${LIOX_CONTEST}" ]; then - cp -rT config_overlay_contest config - ./contest-config -fi From 8020e7e9ffb479d5a7b238c4d16d1dc708cf2c62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 22 Feb 2026 23:21:46 +0000 Subject: [PATCH 35/53] Fix sleep.conf file format --- chroot-overlay/etc/systemd/sleep.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/chroot-overlay/etc/systemd/sleep.conf b/chroot-overlay/etc/systemd/sleep.conf index d90609b..adc7685 100644 --- a/chroot-overlay/etc/systemd/sleep.conf +++ b/chroot-overlay/etc/systemd/sleep.conf @@ -1,2 +1,3 @@ +[Sleep] AllowSuspend=no AllowHibernation=no From f189f2d9cd7d58a593c3b7705b4d1153764df06c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 22 Feb 2026 23:27:14 +0000 Subject: [PATCH 36/53] Regenerate initramfs towards end of install process This will make sure that network interface naming config actually takes effect --- chroot-script.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/chroot-script.sh b/chroot-script.sh index 0d43173..5bd5607 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -123,6 +123,7 @@ UUID=${EFI_UUID} /boot/efi vfat umask=0077 0 1 UUID=${SWAP_UUID} swap swap defaults 0 0 UUID=${ROOT_UUID} / ext4 defaults,errors=remount-ro 0 1 EOF +update-initramfs -u -k all grub-install --removable --target=x86_64-efi "${BLOCK_DEVICE}" update-grub rm -rf /etc/apt/apt.conf.d/99cache /chroot-script.sh From c715395e422c39660028d8966e499046fbd62c25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 22 Feb 2026 23:36:45 +0000 Subject: [PATCH 37/53] Rearrange package list --- chroot-script.sh | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/chroot-script.sh b/chroot-script.sh index 5bd5607..84fdca5 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -66,27 +66,17 @@ echo "iptables-persistent iptables-persistent/autosave_v6 boolean true" | debcon echo "keyboard-configuration keyboard-configuration/variant select English (US)" | debconf-set-selections apt -y install \ - task-laptop \ - plasma-desktop kwin-x11 sddm sddm-theme-breeze xserver-xorg \ - dolphin konsole kwrite ark gwenview okular \ - firefox-esr wget \ - xserver-xorg-video-all \ - vim-gtk3 joe gedit scite geany geany-plugins codeblocks codeblocks-contrib \ - kate \ - zsh mc emacs nano git \ - make gcc g++ gdb ddd valgrind \ - python3 \ - strace lsof tree curl dnsutils screen \ - iotop tmux htop kpartx tsocks units locate \ - bridge-utils bash-completion rfkill apt-file ntpsec \ - iptables-persistent \ - gdb-doc manpages \ - python3-requests \ - kcalc apt-transport-https \ - clang firmware-iwlwifi kdevelop \ + task-laptop firmware-iwlwifi apt-file apt-transport-https manpages \ + plasma-desktop kwin-x11 sddm sddm-theme-breeze xserver-xorg xserver-xorg-video-all \ + dolphin konsole kwrite ark gwenview okular kcalc \ libreoffice-calc libreoffice-impress libreoffice-kf6 libreoffice-plasma libreoffice-writer \ - neovim ruby vim whois \ - sublime-text code \ + firefox-esr wget curl dnsutils tsocks bridge-utils ntpsec iptables-persistent whois rfkill \ + joe gedit scite geany geany-plugins codeblocks codeblocks-contrib \ + kate emacs nano kdevelop neovim vim vim-gtk3 sublime-text code \ + zsh mc strace lsof tree screen iotop tmux htop kpartx units locate bash-completion \ + git make gcc g++ gdb gdb-doc ddd valgrind clang \ + python3 ruby \ + python3-requests \ /tmp/olimp-control*.deb cp -rf /chroot-overlay/* / From 07dfb1af63a9b33913bae7c42ad408454f81b421 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 22 Feb 2026 23:45:54 +0000 Subject: [PATCH 38/53] Move external .deb packages to own folder --- chroot-script.sh | 2 +- create-image.sh | 5 ++++- .../olimp-control_1.4-1_all.deb | Bin 3 files changed, 5 insertions(+), 2 deletions(-) rename olimp-control_1.4-1_all.deb => packages/olimp-control_1.4-1_all.deb (100%) diff --git a/chroot-script.sh b/chroot-script.sh index 84fdca5..7fc91f3 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -77,7 +77,7 @@ apt -y install \ git make gcc g++ gdb gdb-doc ddd valgrind clang \ python3 ruby \ python3-requests \ - /tmp/olimp-control*.deb + /packages/*.deb cp -rf /chroot-overlay/* / diff --git a/create-image.sh b/create-image.sh index 3b78ea7..18ec1f8 100755 --- a/create-image.sh +++ b/create-image.sh @@ -64,6 +64,7 @@ mkdir -p "${BUILD_DIR}/var/cache/apt/archives" mkdir -p "${BUILD_DIR}/chroot-overlay" mkdir -p "${BUILD_DIR}/apt-keys" mkdir -p "${BUILD_DIR}/apt-sources" +mkdir -p "${BUILD_DIR}/packages" mount -t tmpfs chroot_tmp "${BUILD_DIR}/tmp" mount --make-rslave --rbind /proc "${BUILD_DIR}/proc" mount --make-rslave --rbind /sys "${BUILD_DIR}/sys" @@ -73,6 +74,7 @@ mount --bind "${APT_CACHE_DIR}" "${BUILD_DIR}/var/cache/apt/archives" mount --make-rslave --rbind -o ro ./chroot-overlay "${BUILD_DIR}/chroot-overlay" mount --make-rslave --rbind -o ro ./apt-keys "${BUILD_DIR}/apt-keys" mount --make-rslave --rbind -o ro ./apt-sources "${BUILD_DIR}/apt-sources" +mount --make-rslave --rbind -o ro ./packages "${BUILD_DIR}/packages" function cleanup_mounts() { @@ -86,9 +88,11 @@ function cleanup_mounts() umount -l "${BUILD_DIR}/chroot-overlay" umount -l "${BUILD_DIR}/apt-keys" umount -l "${BUILD_DIR}/apt-sources" + umount -l "${BUILD_DIR}/packages" rmdir "${BUILD_DIR}/chroot-overlay" rmdir "${BUILD_DIR}/apt-keys" rmdir "${BUILD_DIR}/apt-sources" + rmdir "${BUILD_DIR}/packages" umount "${BUILD_DIR}" losetup -d "${BLOCK_DEVICE}" rmdir "${BUILD_DIR}" @@ -102,7 +106,6 @@ APT::Keep-Downloaded-Packages "true"; EOF mkdir -p "${BUILD_DIR}/etc/apt/preferences.d" cp ./apt-preferences/* "${BUILD_DIR}/etc/apt/preferences.d" -cp ./olimp-control*.deb "${BUILD_DIR}/tmp" chroot "${BUILD_DIR}" /bin/bash -c \ "/bin/env -i \ BLOCK_DEVICE=${BLOCK_DEVICE} \ diff --git a/olimp-control_1.4-1_all.deb b/packages/olimp-control_1.4-1_all.deb similarity index 100% rename from olimp-control_1.4-1_all.deb rename to packages/olimp-control_1.4-1_all.deb From 37962a9e27988a5aa58eb28dab2589c9b51d137a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Mon, 23 Feb 2026 00:00:47 +0000 Subject: [PATCH 39/53] We have space now, don't remove Noto fonts --- apt-preferences/remove-notocjk.pref | 3 --- apt-preferences/remove-notocjkextra.pref | 3 --- apt-preferences/remove-notoextra.pref | 3 --- 3 files changed, 9 deletions(-) delete mode 100644 apt-preferences/remove-notocjk.pref delete mode 100644 apt-preferences/remove-notocjkextra.pref delete mode 100644 apt-preferences/remove-notoextra.pref diff --git a/apt-preferences/remove-notocjk.pref b/apt-preferences/remove-notocjk.pref deleted file mode 100644 index 4abf5d0..0000000 --- a/apt-preferences/remove-notocjk.pref +++ /dev/null @@ -1,3 +0,0 @@ -Package: fonts-noto-cjk -Pin: version * -Pin-Priority: -1 diff --git a/apt-preferences/remove-notocjkextra.pref b/apt-preferences/remove-notocjkextra.pref deleted file mode 100644 index 95d1b11..0000000 --- a/apt-preferences/remove-notocjkextra.pref +++ /dev/null @@ -1,3 +0,0 @@ -Package: fonts-noto-cjk-extra -Pin: version * -Pin-Priority: -1 diff --git a/apt-preferences/remove-notoextra.pref b/apt-preferences/remove-notoextra.pref deleted file mode 100644 index b0078a6..0000000 --- a/apt-preferences/remove-notoextra.pref +++ /dev/null @@ -1,3 +0,0 @@ -Package: fonts-noto-extra -Pin: version * -Pin-Priority: -1 From aca50d2a695143e262618cf143b8ffa45ef80d32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Mon, 23 Feb 2026 00:02:15 +0000 Subject: [PATCH 40/53] Make sure DNS resolution works --- chroot-script.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/chroot-script.sh b/chroot-script.sh index 7fc91f3..5208e25 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -66,7 +66,7 @@ echo "iptables-persistent iptables-persistent/autosave_v6 boolean true" | debcon echo "keyboard-configuration keyboard-configuration/variant select English (US)" | debconf-set-selections apt -y install \ - task-laptop firmware-iwlwifi apt-file apt-transport-https manpages \ + task-laptop firmware-iwlwifi apt-file apt-transport-https manpages systemd-resolved \ plasma-desktop kwin-x11 sddm sddm-theme-breeze xserver-xorg xserver-xorg-video-all \ dolphin konsole kwrite ark gwenview okular kcalc \ libreoffice-calc libreoffice-impress libreoffice-kf6 libreoffice-plasma libreoffice-writer \ @@ -119,3 +119,4 @@ update-grub rm -rf /etc/apt/apt.conf.d/99cache /chroot-script.sh systemctl enable systemd-networkd +systemctl enable systemd-resolved From 50967280b01d3b576811822334f05b440b35d81a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Mon, 23 Feb 2026 21:12:32 +0000 Subject: [PATCH 41/53] Add VS Code policy --- chroot-overlay/etc/vscode/policy.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 chroot-overlay/etc/vscode/policy.json diff --git a/chroot-overlay/etc/vscode/policy.json b/chroot-overlay/etc/vscode/policy.json new file mode 100644 index 0000000..c1219ac --- /dev/null +++ b/chroot-overlay/etc/vscode/policy.json @@ -0,0 +1,13 @@ +{ + "ChatAgentExtensionTools": false, + "ChatAgentMode": false, + "ChatHooks": false, + "ChatMCP": "none", + "ChatToolsAutoApprove": false, + "ChatToolsEligibleForAutoApproval": "", + "McpGalleryServiceUrl": "", + "ChatToolsTerminalEnableAutoApprove": false, + "EnableFeedback": false, + "TelemetryLevel": "off", + "UpdateMode": "none" +} From e67cd11fedeec808b41995cb3a4d3f5e304beb3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Mon, 23 Feb 2026 21:47:52 +0000 Subject: [PATCH 42/53] Default to C++20 in Code::Blocks --- chroot-overlay/etc/skel/.config/codeblocks/default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chroot-overlay/etc/skel/.config/codeblocks/default.conf b/chroot-overlay/etc/skel/.config/codeblocks/default.conf index f6a213b..8bd8674 100644 --- a/chroot-overlay/etc/skel/.config/codeblocks/default.conf +++ b/chroot-overlay/etc/skel/.config/codeblocks/default.conf @@ -27,7 +27,7 @@ - + From e0f90b6ae453b816d4c4780db5c0e2e0cdbbe17d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Mon, 23 Feb 2026 21:48:09 +0000 Subject: [PATCH 43/53] Install VS Code C++ extensions --- chroot-script.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/chroot-script.sh b/chroot-script.sh index 5208e25..8cf9e23 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -98,6 +98,14 @@ LIOADMIN_PWD_HASH=$(echo "${LIOADMIN_PWD}" | mkpasswd -s -m sha-512) useradd -m -s /bin/bash -p "${LIOADMIN_PWD_HASH}" lioadmin usermod -a -G sudo lioadmin +/usr/share/liox-config/install_vscode_ext.sh lioadmin +#sleep 10 +#/usr/share/liox-config/install_vscode_ext.sh d0 +#sleep 10 +#/usr/share/liox-config/install_vscode_ext.sh d1 +#sleep 10 +#/usr/share/liox-config/install_vscode_ext.sh d2 + GRUB_PWD_HASH=$(printf "%s\n%s" "${GRUB_PWD}" "${GRUB_PWD}" | grub-mkpasswd-pbkdf2 | awk '/grub.pbkdf/{print$NF}') mkdir -p /boot/grub cat > /boot/grub/custom.cfg < Date: Mon, 23 Feb 2026 22:07:33 +0000 Subject: [PATCH 44/53] Tabs to spaces --- create-image.sh | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/create-image.sh b/create-image.sh index 18ec1f8..623f258 100755 --- a/create-image.sh +++ b/create-image.sh @@ -3,8 +3,8 @@ set -euo pipefail if [ $(id -u) -ne 0 ] then - echo "Script must be run as root" - exit 1 + echo "Script must be run as root" + exit 1 fi IMAGE_SIZE_MB=16384 @@ -17,18 +17,18 @@ BUILD_IMAGE="./liox.img" if [ -d "${BUILD_DIR}" ] then - echo "Directory \`${BUILD_DIR}\` exists" - exit 1 + echo "Directory \`${BUILD_DIR}\` exists" + exit 1 fi if [ -f "${BUILD_IMAGE}" ] then - read -p "Image \`${BUILD_IMAGE}\` already exists. Rebuild? [y/N] " prompt - if [[ "${prompt}" != "y" && "${prompt}" != "Y" ]] - then - echo "Aborting" - exit 1 - fi + read -p "Image \`${BUILD_IMAGE}\` already exists. Rebuild? [y/N] " prompt + if [[ "${prompt}" != "y" && "${prompt}" != "Y" ]] + then + echo "Aborting" + exit 1 + fi else echo "Creating new image" qemu-img create -f raw "${BUILD_IMAGE}" "${IMAGE_SIZE_MB}M" @@ -107,7 +107,7 @@ EOF mkdir -p "${BUILD_DIR}/etc/apt/preferences.d" cp ./apt-preferences/* "${BUILD_DIR}/etc/apt/preferences.d" chroot "${BUILD_DIR}" /bin/bash -c \ - "/bin/env -i \ + "/bin/env -i \ BLOCK_DEVICE=${BLOCK_DEVICE} \ EFIPART=${EFIPART} \ SWAPPART=${SWAPPART} \ From 28818f447cc039dd891a42489220c2f2cb3b9ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Mon, 23 Feb 2026 23:25:53 +0000 Subject: [PATCH 45/53] Source secrets from environment file --- .gitignore | 1 + chroot-script.sh | 44 ++++++++++++++++++++++++++++---------------- create-image.sh | 3 +++ 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index 6c478b1..7db8ddb 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ liox_tmp/ result result-fd qemushared/rootfs.tar.zstd +contest.env diff --git a/chroot-script.sh b/chroot-script.sh index 8cf9e23..3b26db6 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -1,10 +1,15 @@ #!/usr/bin/env bash set -xeuo pipefail -CTRL_KEY="abcde" -LIOADMIN_PWD="lioadmin" -GRUB_PWD="grub" -HOSTNAME="lioxbox" +if [ -f /tmp/contest.env ]; then + source /tmp/contest.env +fi + +CTRL_KEY="${CTRL_KEY:-nonsecret}" +LIOADMIN_PWD="${LIOADMIN_PWD:-lioadmin}" +GRUB_PWD="${GRUB_PWD:-grub}" +HOSTNAME="${HOSTNAME:-lioxbox}" + TIMEZONE="Europe/Vilnius" export LANG=C.UTF-8 @@ -91,20 +96,27 @@ echo -n "${CTRL_KEY}" > /etc/olimp-control/key chown root:root /etc/olimp-control/key chmod 400 /etc/olimp-control/key -# useradd -m -s /bin/bash -p ${D0_PWD_HASH} d0 -# useradd -m -s /bin/bash -p ${D1_PWD_HASH} d1 -# useradd -m -s /bin/bash -p ${D2_PWD_HASH} d2 -LIOADMIN_PWD_HASH=$(echo "${LIOADMIN_PWD}" | mkpasswd -s -m sha-512) -useradd -m -s /bin/bash -p "${LIOADMIN_PWD_HASH}" lioadmin +function make_user() +{ + local USERNAME="$1" + local PASSWORD_HASH=$(echo "$2" | mkpasswd -s -m sha-512) + useradd -m -s /bin/bash -p "${PASSWORD_HASH}" "${USERNAME}" + /usr/share/liox-config/install_vscode_ext.sh "${USERNAME}" + sleep 10 +} + +make_user lioadmin "${LIOADMIN_PWD}" usermod -a -G sudo lioadmin -/usr/share/liox-config/install_vscode_ext.sh lioadmin -#sleep 10 -#/usr/share/liox-config/install_vscode_ext.sh d0 -#sleep 10 -#/usr/share/liox-config/install_vscode_ext.sh d1 -#sleep 10 -#/usr/share/liox-config/install_vscode_ext.sh d2 +if [ -n "${D0_PWD}" ]; then + make_user d0 "${D0_PWD}" +fi +if [ -n "${D1_PWD}" ]; then + make_user d1 "${D1_PWD}" +fi +if [ -n "${D2_PWD}" ]; then + make_user d2 "${D2_PWD}" +fi GRUB_PWD_HASH=$(printf "%s\n%s" "${GRUB_PWD}" "${GRUB_PWD}" | grub-mkpasswd-pbkdf2 | awk '/grub.pbkdf/{print$NF}') mkdir -p /boot/grub diff --git a/create-image.sh b/create-image.sh index 623f258..0496ebb 100755 --- a/create-image.sh +++ b/create-image.sh @@ -100,6 +100,9 @@ function cleanup_mounts() trap cleanup_mounts EXIT cp ./chroot-script.sh "${BUILD_DIR}" +if [ -f ./contest.env ]; then + cp ./contest.env "${BUILD_DIR}/tmp/" +fi cat << EOF > "${BUILD_DIR}/etc/apt/apt.conf.d/99cache" Binary::apt::APT::Keep-Downloaded-Packages "true"; APT::Keep-Downloaded-Packages "true"; From b59a9b813dbd8d06884f513aa5fe9b67e1f3d7b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Thu, 26 Feb 2026 17:02:59 +0200 Subject: [PATCH 46/53] fix unbound variable errors for password hashes --- chroot-script.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/chroot-script.sh b/chroot-script.sh index 3b26db6..a5c8d13 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -108,13 +108,13 @@ function make_user() make_user lioadmin "${LIOADMIN_PWD}" usermod -a -G sudo lioadmin -if [ -n "${D0_PWD}" ]; then +if [[ -v D0_PWD ]]; then make_user d0 "${D0_PWD}" fi -if [ -n "${D1_PWD}" ]; then +if [[ -v D1_PWD ]]; then make_user d1 "${D1_PWD}" fi -if [ -n "${D2_PWD}" ]; then +if [[ -v D2_PWD ]]; then make_user d2 "${D2_PWD}" fi From 68c88c05a2786a9f8e0e4de50fa824c07b5c16cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Thu, 26 Feb 2026 17:44:57 +0200 Subject: [PATCH 47/53] installing vscode extensions for multiple users with single download --- .../share/liox-config/install_vscode_ext.sh | 58 ++++++++++++------- chroot-script.sh | 5 +- 2 files changed, 41 insertions(+), 22 deletions(-) diff --git a/chroot-overlay/usr/share/liox-config/install_vscode_ext.sh b/chroot-overlay/usr/share/liox-config/install_vscode_ext.sh index 71a8ff8..fb9051f 100755 --- a/chroot-overlay/usr/share/liox-config/install_vscode_ext.sh +++ b/chroot-overlay/usr/share/liox-config/install_vscode_ext.sh @@ -1,28 +1,46 @@ -#!/bin/sh +#!/usr/bin/env bash -set -e +set -euo pipefail if [ "$(id -u)" -ne 0 ]; then - echo "Please run as root" - exit + echo "Please run as root" + exit 1 fi -if [ "$#" -ne 1 ]; then - echo "Usage: $0 " - exit +if [ "$#" -lt 1 ]; then + echo "Usage: $0 " + exit 1 fi -if [ ! -d "/home/$1" ]; then - echo "User $1 does not exist" -else - VSCODE_DIR=/home/$1/.vscode/extensions - su - $1 -c "mkdir -p $VSCODE_DIR" - if [ ! -f "$VSCODE_DIR/extensions.json" ]; then - echo "Creating extensions.json" - echo "[]" > "$VSCODE_DIR/extensions.json" - chown $1:$1 "$VSCODE_DIR/extensions.json" - fi - su - $1 -c "code --extensions-dir $VSCODE_DIR --install-extension ms-vscode.cpptools-extension-pack" - echo "Removing VSIXs" - rm -f /home/$1/.config/Code/CachedExtensionVSIXs/* +FIRST_USER="$1" +shift +OTHER_USERS=("$@") +EXTENSION_NAME="ms-vscode.cpptools-extension-pack" + +echo "Will install vscode extension: '$EXTENSION_NAME'" +echo "Will install from internet for user: ${FIRST_USER}" +if [ "${#OTHER_USERS[@]}" -ne 0 ]; then + echo "Will install from cached VSIXs for users: ${OTHER_USERS[@]}" fi + +cleanup_tmpdir() { + echo "Removing ${VSIX_TMP_DIR}" + rm -rf "${VSIX_TMP_DIR}" +} + +VSIX_TMP_DIR="$(mktemp -d /tmp/vscode-vsix.XXXXXXXXX)" +trap cleanup_tmpdir EXIT + +echo "Installing from internet for ${FIRST_USER}" +sudo -u "${FIRST_USER}" code --install-extension ${EXTENSION_NAME} +install_args=() +for f in "/home/${FIRST_USER}/.config/Code/CachedExtensionVSIXs/"*; do + vsix_file="${VSIX_TMP_DIR}/$(basename "${f}").vsix" + mv "${f}" "${vsix_file}" + install_args+=(--install-extension "${vsix_file}") +done +chmod 777 "${VSIX_TMP_DIR}" +for user in "${OTHER_USERS[@]}"; do + echo "Installing from VSIXs for ${user}" + sudo -u "${user}" code ${install_args[@]} +done diff --git a/chroot-script.sh b/chroot-script.sh index a5c8d13..b24ed71 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -96,13 +96,13 @@ echo -n "${CTRL_KEY}" > /etc/olimp-control/key chown root:root /etc/olimp-control/key chmod 400 /etc/olimp-control/key +USER_LIST=() function make_user() { local USERNAME="$1" local PASSWORD_HASH=$(echo "$2" | mkpasswd -s -m sha-512) + USER_LIST+=("${USERNAME}") useradd -m -s /bin/bash -p "${PASSWORD_HASH}" "${USERNAME}" - /usr/share/liox-config/install_vscode_ext.sh "${USERNAME}" - sleep 10 } make_user lioadmin "${LIOADMIN_PWD}" @@ -117,6 +117,7 @@ fi if [[ -v D2_PWD ]]; then make_user d2 "${D2_PWD}" fi +/usr/share/liox-config/install_vscode_ext.sh "${USER_LIST[@]}" GRUB_PWD_HASH=$(printf "%s\n%s" "${GRUB_PWD}" "${GRUB_PWD}" | grub-mkpasswd-pbkdf2 | awk '/grub.pbkdf/{print$NF}') mkdir -p /boot/grub From 372f397d5a631bbfd79115c14b91b7a7132ac190 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Thu, 26 Feb 2026 22:20:08 +0000 Subject: [PATCH 48/53] Fix double installation of cpptools VSIX For some reason if the extension pack is specified on the same cmdline as ms-vscode.cpptools-1.30.5-linux-x64.vsix, this very large (~350 MB) extension gets installed twice - one path with the OS&architecture suffix. Save a bunch of space by separating the extension pack from the dependencies (we no longer save space in general, but it is useful to fit within 16GB). --- .../usr/share/liox-config/install_vscode_ext.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/chroot-overlay/usr/share/liox-config/install_vscode_ext.sh b/chroot-overlay/usr/share/liox-config/install_vscode_ext.sh index fb9051f..9186b4b 100755 --- a/chroot-overlay/usr/share/liox-config/install_vscode_ext.sh +++ b/chroot-overlay/usr/share/liox-config/install_vscode_ext.sh @@ -34,13 +34,19 @@ trap cleanup_tmpdir EXIT echo "Installing from internet for ${FIRST_USER}" sudo -u "${FIRST_USER}" code --install-extension ${EXTENSION_NAME} install_args=() +final_install_args=() for f in "/home/${FIRST_USER}/.config/Code/CachedExtensionVSIXs/"*; do vsix_file="${VSIX_TMP_DIR}/$(basename "${f}").vsix" mv "${f}" "${vsix_file}" - install_args+=(--install-extension "${vsix_file}") + if [[ "$(basename "${f}")" == "${EXTENSION_NAME}"* ]]; then + final_install_args+=(--install-extension "${vsix_file}") + else + install_args+=(--install-extension "${vsix_file}") + fi done chmod 777 "${VSIX_TMP_DIR}" for user in "${OTHER_USERS[@]}"; do echo "Installing from VSIXs for ${user}" sudo -u "${user}" code ${install_args[@]} + sudo -u "${user}" code ${final_install_args[@]} done From 83945f1caf2e55e73f745eae9dd4192dda183d89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pevcevi=C4=8Dius?= Date: Fri, 27 Feb 2026 16:16:05 +0200 Subject: [PATCH 49/53] boot grub directly instead of using shim --- apt-preferences/remove-grub-shim.pref | 15 +++++++++++++++ chroot-script.sh | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 apt-preferences/remove-grub-shim.pref diff --git a/apt-preferences/remove-grub-shim.pref b/apt-preferences/remove-grub-shim.pref new file mode 100644 index 0000000..cd22292 --- /dev/null +++ b/apt-preferences/remove-grub-shim.pref @@ -0,0 +1,15 @@ +Package: shim-signed +Pin: version * +Pin-Priority: -1 + +Package: shim-signed-common +Pin: version * +Pin-Priority: -1 + +Package: shim-helpers-amd64-signed +Pin: version * +Pin-Priority: -1 + +Package: shim-unsigned +Pin: version * +Pin-Priority: -1 diff --git a/chroot-script.sh b/chroot-script.sh index b24ed71..efa4576 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -135,7 +135,7 @@ UUID=${SWAP_UUID} swap swap defaults 0 0 UUID=${ROOT_UUID} / ext4 defaults,errors=remount-ro 0 1 EOF update-initramfs -u -k all -grub-install --removable --target=x86_64-efi "${BLOCK_DEVICE}" +grub-install --removable --no-nvram --target=x86_64-efi "${BLOCK_DEVICE}" update-grub rm -rf /etc/apt/apt.conf.d/99cache /chroot-script.sh From 5d618c9e2517834e4fcf8f9aa3f83d8ab939147c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 15 Mar 2026 17:26:56 +0000 Subject: [PATCH 50/53] Disable daily APT tasks --- chroot-script.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/chroot-script.sh b/chroot-script.sh index efa4576..f698407 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -141,3 +141,6 @@ rm -rf /etc/apt/apt.conf.d/99cache /chroot-script.sh systemctl enable systemd-networkd systemctl enable systemd-resolved + +systemctl disable apt-daily-upgrade.timer +systemctl disable apt-daily.timer From 4b49369d2714cd596076c4873bb4b9266b4e66b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antanas=20Ur=C5=A1ulis?= Date: Sun, 15 Mar 2026 17:31:55 +0000 Subject: [PATCH 51/53] Configure hosts at end of image setup --- chroot-script.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/chroot-script.sh b/chroot-script.sh index f698407..ca364b2 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -144,3 +144,9 @@ systemctl enable systemd-resolved systemctl disable apt-daily-upgrade.timer systemctl disable apt-daily.timer + +cat >> /etc/hosts < Date: Thu, 19 Mar 2026 21:02:55 +0000 Subject: [PATCH 52/53] 2026 ips --- chroot-script.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chroot-script.sh b/chroot-script.sh index ca364b2..3463490 100755 --- a/chroot-script.sh +++ b/chroot-script.sh @@ -146,7 +146,7 @@ systemctl disable apt-daily-upgrade.timer systemctl disable apt-daily.timer cat >> /etc/hosts < Date: Fri, 20 Mar 2026 00:32:07 +0000 Subject: [PATCH 53/53] Poettering! --- chroot-overlay/etc/systemd/network/10-wired.network | 3 +++ 1 file changed, 3 insertions(+) diff --git a/chroot-overlay/etc/systemd/network/10-wired.network b/chroot-overlay/etc/systemd/network/10-wired.network index 3559b01..97e8a1f 100644 --- a/chroot-overlay/etc/systemd/network/10-wired.network +++ b/chroot-overlay/etc/systemd/network/10-wired.network @@ -3,3 +3,6 @@ Name=eth* en* [Network] DHCP=yes + +[DHCPv4] +ClientIdentifier=mac