diff --git a/live_exam_os/Dockerfile b/live_exam_os/Dockerfile index c204f22e918be758a8effa3cd932f3c1dd2b2459..becfe63876c2fffa4b6cf9f29bd4447dbec3b45f 100644 --- a/live_exam_os/Dockerfile +++ b/live_exam_os/Dockerfile @@ -1,31 +1,25 @@ -ARG ALPINE_VERSION - -FROM alpine:${ALPINE_VERSION} - -RUN apk add mtools xorriso squashfs-tools cryptsetup e2fsprogs limine-x86_64 limine-cd - -RUN apk update && apk add --no-cache \ - gcc \ - musl-dev \ - pkgconf \ - git \ - wget \ - make \ - ca-certificates \ - glfw-dev \ - libxcursor-dev \ - libxinerama-dev \ - libxi-dev \ - libxxf86vm-dev \ - libxrandr-dev \ - upx \ - glfw \ - xrandr +#ARG ALPINE_VERSION +ARG DEBIAN_FRONTEND=noninteractive +#FROM alpine:${ALPINE_VERSION} +FROM ubuntu:22.04 + +#RUN apk add mtools xorriso squashfs-tools cryptsetup e2fsprogs limine-x86_64 limine-cd + + + +RUN apt-get update && apt-get install -y gcc pkg-config git wget make ca-certificates libglfw3-dev libxcursor-dev libxinerama-dev libxi-dev libxxf86vm-dev upx-ucl + +RUN DEBIAN_FRONTEND=noninteractive apt install -y cryptsetup squashfs-tools +RUN apt install -y debootstrap schroot + +RUN git clone https://github.com/limine-bootloader/limine.git --branch=v8.x-binary --depth=1 /opt/limine + +# Install go 1.22 from the official GO site ENV archive=go1.22.6.linux-amd64.tar.gz ENV PATH=$PATH:/usr/local/go/bin -WORKDIR /go -RUN wget https://go.dev/dl/$archive && \ - tar -C /usr/local -xzf $archive && \ - rm $archive +RUN wget https://go.dev/dl/$archive +RUN tar -C /usr/local -xzf $archive + +RUN apt install -y xorriso diff --git a/live_exam_os/Makefile b/live_exam_os/Makefile index cb7365cf29ca638d9be6707ac9686e17f0eda457..edc51eadcca971816c1be00f62ff3b35abdd4278 100644 --- a/live_exam_os/Makefile +++ b/live_exam_os/Makefile @@ -36,3 +36,6 @@ bios: bios_cd: qemu-system-x86_64 -drive file=${iso_file},media=cdrom,if=ide,readonly=on -boot d -m 4G -smp 4 + +uefiserie: + qemu-system-x86_64 -bios /usr/share/OVMF/x64/OVMF.fd -drive file=${iso_file},format=raw -boot d -m 16G -smp 4 -netdev user,id=n1 -device virtio-net-pci,netdev=n1 -serial mon:stdio diff --git a/live_exam_os/build.sh b/live_exam_os/build.sh index b98f701c864967bbc73a94747a6c0634762f6125..9837640fc8bf518a0b59999487871f7ef4856c60 100755 --- a/live_exam_os/build.sh +++ b/live_exam_os/build.sh @@ -130,47 +130,80 @@ if [ "$LUKS_ENABLED" = "yes" ] && [ -z "$LUKS_PASSPHRASE" ]; then helper fi -check_container_and_alpine_version +#check_container_and_alpine_version check_environment_var -echo "[Compiling nexus-exam...]" -cd .. -make build_nexus-exam -mkdir -p live_exam_os/$ROOTFS_DIR/usr/local/bin -cp build/nexus-exam live_exam_os/$ROOTFS_DIR/usr/local/bin/nexus-exam -make clean_client -cd - +#echo "[Compiling nexus-exam...]" +#cd .. +#make build_nexus-exam +#mkdir -p live_exam_os/$ROOTFS_DIR/usr/local/bin +#cp build/nexus-exam live_exam_os/$ROOTFS_DIR/usr/local/bin/nexus-exam +#make clean_client +#cd - echo "[Create initramfs...]" rm -rf $INITRD_DIR mkdir -p "$INITRD_DIR" - -apk update -if [ $LUKS_ENABLED = "yes" ]; then - cp config/01-initramfs/init $INITRD_DIR/init - packages="busybox musl cryptsetup cryptsetup-libs popt libuuid libblkid - device-mapper-libs libcrypto3 argon2-libs json-c libeconf - udev kmod-libs zlib xz-libs zstd-libs" +if [ "$LUKS_ENABLED" = "yes" ]; then + packages="busybox cryptsetup libblkid1 libuuid1 libdevmapper1.02.1 libcryptsetup12 \ + libargon2-1 libjson-c5 libudev1 kmod zlib1g xz-utils zstd" else - cp config/01-initramfs/init_no_luks $INITRD_DIR/init - packages="busybox musl libblkid libeconf libcrypto3 - udev kmod-libs zlib xz-libs zstd-libs" + packages="busybox libblkid1 libudev1 kmod zlib1g xz-utils zstd" fi -chmod +x $INITRD_DIR/init + +chmod 777 $INITRD_DIR + +cd $INITRD_DIR for package in $packages; do - apk fetch -s "$package" > "$INITRD_DIR/$package.apk" - tar -xzf "$INITRD_DIR/$package.apk" -C $INITRD_DIR - rm "$INITRD_DIR/$package.apk" + apt download "$package" --allow-unauthenticated done +for deb in *.deb; do + echo "$deb" + dpkg-deb -x "$deb" . + rm "$deb" +done +cd ../.. + + +#apk update +#if [ $LUKS_ENABLED = "yes" ]; then +# cp config/01-initramfs/init $INITRD_DIR/init +# packages="busybox musl cryptsetup cryptsetup-libs popt libuuid libblkid +# device-mapper-libs libcrypto3 argon2-libs json-c libeconf +# udev kmod-libs zlib xz-libs zstd-libs" +#else +# cp config/01-initramfs/init_no_luks $INITRD_DIR/init +# packages="busybox musl libblkid libeconf libcrypto3 +# udev kmod-libs zlib xz-libs zstd-libs" +#fi +#chmod +x $INITRD_DIR/init +#for package in $packages; do +# apk fetch -s "$package" > "$INITRD_DIR/$package.apk" +# tar -xzf "$INITRD_DIR/$package.apk" -C $INITRD_DIR +# rm "$INITRD_DIR/$package.apk" +#done + echo "[Create filesystem...]" mkdir -p "$ROOTFS_DIR" -apk add --initdb --root "$ROOTFS_DIR" -cp /etc/apk/repositories "$ROOTFS_DIR/etc/apk/repositories" +#apk add --initdb --root "$ROOTFS_DIR" +#cp /etc/apk/repositories "$ROOTFS_DIR/etc/apk/repositories" echo "[Installing packages...]" -apk update --root "$ROOTFS_DIR" --allow-untrusted -apk add --root "$ROOTFS_DIR" --allow-untrusted $(cat config/02-packages_install/packages) &>/dev/null +debootstrap --arch=amd64 focal $ROOTFS_DIR http://archive.ubuntu.com/ubuntu/ +chroot $ROOTFS_DIR /bin/bash -c " +apt update && +DEBIAN_FRONTEND=noninteractive apt install -y \$(cat config/02-packages_install/packages)" + +echo "[Installing kernel...]" +chroot $ROOTFS_DIR /bin/bash -c " +apt update && +DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends linux-image-generic" +# && +#update-initramfs -c -k all" + +#apk update --root "$ROOTFS_DIR" --allow-untrusted +#apk add --root "$ROOTFS_DIR" --allow-untrusted $(cat config/02-packages_install/packages) &>/dev/null mkdir -p $INITRD_DIR/lib cp -r $ROOTFS_DIR/lib/modules $INITRD_DIR/lib/ @@ -219,14 +252,14 @@ else cp "$SQUASHFS" "$ISO_DIR/squash.rootfs" fi + echo "[Create iso...]" mkdir -p "$ISO_DIR/EFI/BOOT" -chown -R root:root $ISO_DIR -cp /usr/share/limine/BOOTX64.EFI "$ISO_DIR/EFI/BOOT/" -cp /usr/share/limine/*.bin "$ISO_DIR/" -cp /usr/share/limine/*.sys "$ISO_DIR/" +cp /opt/limine/BOOTX64.EFI "$ISO_DIR/EFI/BOOT/" +cp /opt/limine/*.bin "$ISO_DIR/" +cp /opt/limine/*.sys "$ISO_DIR/" cp config/00-bootloader/limine.cfg "$ISO_DIR/limine.cfg" @@ -237,4 +270,4 @@ xorriso -as mkisofs -R -r -J -b "limine-bios-cd.bin" \ -volid "NEXUSCLIENTISO" \ "$ISO_DIR" -o image.iso -limine bios-install image.iso +#limine bios-install image.iso diff --git a/live_exam_os/config/00-bootloader/limine.cfg b/live_exam_os/config/00-bootloader/limine.cfg index d52659cf1b0559c70a1b04ad32c007efbac3383e..485a990f969ec2d1f46a25d2ea47337cd9706625 100644 --- a/live_exam_os/config/00-bootloader/limine.cfg +++ b/live_exam_os/config/00-bootloader/limine.cfg @@ -2,6 +2,6 @@ TIMEOUT=0 :AlpineLinux PROTOCOL=linux - KERNEL_PATH=boot:///boot/vmlinuz-lts - KERNEL_CMDLINE=quiet + KERNEL_PATH=boot:///boot/vmlinuz-5.4.0-26-generic + KERNEL_CMDLINE=quiet console=ttyS0 MODULE_PATH=boot:///boot/initrd diff --git a/live_exam_os/config/01-initramfs/init b/live_exam_os/config/01-initramfs/init index a6d1d8cea177fe1ae1f285b773ab20aff5ae16c2..706064bc8efd0bda5c689f927c832503bc124c90 100644 --- a/live_exam_os/config/01-initramfs/init +++ b/live_exam_os/config/01-initramfs/init @@ -24,6 +24,8 @@ modprobe ata_piix modprobe cdrom modprobe loop +/bin/sh + udevadm trigger echo "Mounting cdrom..." diff --git a/live_exam_os/config/02-packages_install/packages b/live_exam_os/config/02-packages_install/packages index 55880c4966bb4748a984bc4ebc18219594e76bd0..7d571e7ababbd94d0d70d403094dbb7ce73d45da 100644 --- a/live_exam_os/config/02-packages_install/packages +++ b/live_exam_os/config/02-packages_install/packages @@ -1,24 +1,3 @@ -linux-lts +linux-generic linux-firmware -linux-firmware-other -alpine-base -eudev -networkmanager -networkmanager-tui -xorg-server -xf86-input-libinput -xinit -xfce4 -xfce4-terminal -elogind -polkit-elogind -adwaita-icon-theme -agetty -dbus -dbus-x11 -virt-viewer -mesa-dri-gallium -ip6tables -ufw -sudo -vim +ubuntu-minimal