#!/bin/bash set -x set -e export HOME=/root export LC_ALL=C export DEBIAN_FRONTEND=noninteractive export DEBOOT_STRAP_URL=http://mirror.raiolanetworks.com/ubuntu/ source buildlib.sh function configure_sddm_and_openbox() { # Allow root login sed -ie 's/^\(.*root quiet_success\)$/#\1/' /etc/pam.d/sddm # Start pcman for the Desktop #mkdir -p /root/.config/autostart/ # cat < /root/.config/autostart/pcmanfm.desktop mkdir -p /etc/xdg/openbox/ cat < /etc/xdg/openbox/autostart pcmanfm --desktop & EOF # Create desktop launcher for calamares # mkdir -p /root/Desktop # cat < /root/Desktop/opengnsys-installer.desktop mkdir -p /etc/skel/Desktop cat < /etc/skel/Desktop/opengnsys-installer.desktop [Desktop Entry] Version=1.0 Name=Install OpenGnsys Comment=Este es un acceso directo para ejecutar un script como root Exec=/usr/local/bin/openGnsys-installer.sh Icon=/usr/share/opengnsys/images/logo_ogw.png Terminal=false Type=Application Categories=Utility; EOF # chmod +x /root/Desktop/opengnsys-installer.desktop chmod +x /etc/skel/Desktop/opengnsys-installer.desktop # Configure ssdm autologin mkdir -p /etc/sddm.conf.d/ cat < /etc/sddm.conf.d/autologin.conf [Autologin] User=og Session=openbox EOF } function set_pkg_configuration() { echo "keyboard-configuration keyboard-configuration/layout select Spanish" | debconf-set-selections echo "keyboard-configuration keyboard-configuration/variant select Spanish" | debconf-set-selections echo "keyboard-configuration keyboard-configuration/xkb-keymap select es" | debconf-set-selections } function reconfigure_packages() { reconfigure_locales reconfigure_network_manager } function create_image() { mkdir -p /image/{casper,isolinux,install} cp /boot/vmlinuz-**-**-generic /image/casper/vmlinuz cp /boot/initrd.img-**-**-generic /image/casper/initrd wget --progress=dot https://memtest.org/download/v7.00/mt86plus_7.00.binaries.zip -O /image/install/memtest86.zip unzip -p /image/install/memtest86.zip memtest64.bin > /image/install/memtest86+.bin unzip -p /image/install/memtest86.zip memtest64.efi > /image/install/memtest86+.efi rm -f /image/install/memtest86.zip } function configure_grub_menu() { touch /image/ubuntu cat < /image/isolinux/grub.cfg search --set=root --file /ubuntu insmod all_video set default="0" set timeout=30 menuentry "Install Ubuntu FS" { linux /casper/vmlinuz boot=casper quiet splash --- initrd /casper/initrd } menuentry "Check disc for defects" { linux /casper/vmlinuz boot=casper integrity-check quiet splash --- initrd /casper/initrd } grub_platform if [ "\$grub_platform" = "efi" ]; then menuentry 'UEFI Firmware Settings' { fwsetup } menuentry "Test memory Memtest86+ (UEFI)" { linux /install/memtest86+.efi } else menuentry "Test memory Memtest86+ (BIOS)" { linux16 /install/memtest86+.bin } fi EOF # Generate manifest dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee /image/casper/filesystem.manifest cp -v /image/casper/filesystem.manifest /image/casper/filesystem.manifest-desktop sed -i '/ubiquity/d' /image/casper/filesystem.manifest-desktop sed -i '/casper/d' /image/casper/filesystem.manifest-desktop sed -i '/discover/d' /image/casper/filesystem.manifest-desktop sed -i '/laptop-detect/d' /image/casper/filesystem.manifest-desktop sed -i '/os-prober/d' /image/casper/filesystem.manifest-desktop # Create diskdefines cat < /image/README.diskdefines #define DISKNAME Ubuntu from scratch #define TYPE binary #define TYPEbinary 1 #define ARCH amd64 #define ARCHamd64 1 #define DISKNUM 1 #define DISKNUM1 1 #define TOTALNUM 0 #define TOTALNUM0 1 EOF } function create_image2(){ cp /usr/lib/shim/shimx64.efi.signed.previous /image/isolinux/bootx64.efi cp /usr/lib/shim/mmx64.efi /image/isolinux/mmx64.efi cp /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed /image/isolinux/grubx64.efi cd /image/isolinux && \ dd if=/dev/zero of=efiboot.img bs=1M count=10 && \ mkfs.vfat -F 16 efiboot.img && \ LC_CTYPE=C mmd -i efiboot.img efi efi/ubuntu efi/boot && \ LC_CTYPE=C mcopy -i efiboot.img ./bootx64.efi ::efi/boot/bootx64.efi && \ LC_CTYPE=C mcopy -i efiboot.img ./mmx64.efi ::efi/boot/mmx64.efi && \ LC_CTYPE=C mcopy -i efiboot.img ./grubx64.efi ::efi/boot/grubx64.efi && \ LC_CTYPE=C mcopy -i efiboot.img ./grub.cfg ::efi/ubuntu/grub.cfg && \ # Create a grub bios images cd /image && \ grub-mkstandalone \ --format=i386-pc \ --output=isolinux/core.img \ --install-modules="linux16 linux normal iso9660 biosdisk memdisk search tar ls" \ --modules="linux16 linux normal iso9660 biosdisk search" \ --locales="" \ --fonts="" \ "boot/grub/grub.cfg=isolinux/grub.cfg" cat /usr/lib/grub/i386-pc/cdboot.img isolinux/core.img > isolinux/bios.img # find . -type f -print0 | xargs -0 md5sum | grep -v -e 'isolinux' > md5sum.txt } function install_mesa_repo() { add-apt-repository ppa:kisak/kisak-mesa apt -y update } function user_add() { useradd -m -k /etc/skel -s /bin/bash -G sudo og echo "og:og" | chpasswd } function set_root_passwd() { ROOT_PASSWORD=$(cat /root_passwd) echo "root:$ROOT_PASSWORD" | chpasswd } function add_og_to_sudoers() { echo "Adding og to sudoers" mkdir -p /etc/sudoers.d/ echo "og ALL=(ALL) NOPASSWD: /usr/bin/calamares" > /etc/sudoers.d/og chmod 440 /etc/sudoers.d/og } function add_auditd_rules() { echo "Adding auditd rules" cat << EOF > /etc/audit/rules.d/audit.rules -w /etc/sddm.conf -p wa -k sddm_watch EOF } function delete_sddm_conf() { cat < /etc/systemd/system/delete-sddm-conf.service [Unit] Description=Eliminar /etc/sddm.conf antes de iniciar SDDM Before=sddm.service [Service] Type=oneshot ExecStart=/bin/rm -f /etc/sddm.conf [Install] WantedBy=multi-user.target EOF systemctl enable delete-sddm-conf } ## Main echo "ubuntu-fs-live" > /etc/hostname mount_proc_sys_dev setup_sources_list install_packages libterm-readline-gnu-perl systemd-sysv software-properties-common setup_chroot set_pkg_configuration install_mesa_repo install_non_interactive install_packages sudo ubuntu-standard sudo casper dbus-bin mesa-utils mesa-vulkan-drivers discover isc-dhcp-client laptop-detect unzip os-prober network-manager net-tools wireless-tools wpagui locales grub-common grub-gfxpayload-lists grub-pc grub-pc-bin grub2-common grub-efi-amd64-signed shim-signed mtools binutils virtualbox-guest-utils virtualbox-guest-x11 python3-xdg install_non_interactive sddm openbox plymouth calamares terminator pcmanfm yad qml-module* install_no_recommends linux-image-generic auditd set_root_passwd configure_divert remove_unneeded_packages reconfigure_packages configure_sddm_and_openbox user_add add_og_to_sudoers add_auditd_rules delete_sddm_conf create_image configure_grub_menu create_image2 clean