From c42abbd0f192a5d4a6a58fd901f45d2c06b018b5 Mon Sep 17 00:00:00 2001 From: davidovski Date: Sun, 15 Jan 2023 21:24:17 +0000 Subject: Add installer to iso --- scripts/install.sh | 139 ----------------------- scripts/installer.sh | 306 --------------------------------------------------- scripts/mkiso.sh | 92 ---------------- 3 files changed, 537 deletions(-) delete mode 100755 scripts/install.sh delete mode 100755 scripts/installer.sh delete mode 100755 scripts/mkiso.sh (limited to 'scripts') diff --git a/scripts/install.sh b/scripts/install.sh deleted file mode 100755 index 89ee11b..0000000 --- a/scripts/install.sh +++ /dev/null @@ -1,139 +0,0 @@ -#!/bin/sh - -default_packages="base linux-libre xipkg dracut grub bash" -additional_packages="doas neofetch vim networkmanager" -default_key="davidovski https://xi.davidovski.xyz/keychain/xi.pub" - -XIPKG="/usr/bin/xi" -XIFLAGS="-ylu" -TMPDIR=/tmp -SYSROOT=$1 - -umask 0022 - -[ ! -e $XIPKG ] && { - git clone https://xi.davidovski.xyz/git/xiutils.git $TMPDIR/xiutils - make && make install - - git clone https://xi.davidovski.xyz/git/xipkg.git $TMPDIR/xipkg - make && make install -} - -echo "Please make sure that you have correctly formatted any partitions and mounted them as desired under $SYSROOT" - -[ $# -eq 0 ] && echo "Please specify where you would like to instal the system" && exit 1 - -[ -e $SYSROOT ] && { - printf "Remove existing system at $SYSROOT? [Y/n] " - read response - [ "$response" != "n" ] && rm -rf $SYSROOT && echo "removed $SYSROOT" -} - -$XIPKG $XIFLAGS sync -mkdir -p $SYSROOT -$XIPKG $XIFLAGS -r $SYSROOT bootstrap -mkdir -p $SYSROOT -$XIPKG $XIFLAGS -r $SYSROOT install $default_packages -$XIPKG $XIFLAGS -r $SYSROOT keyimport $default_key - -configuring_users () { - echo "Setting root password: " - xichroot $SYSROOT passwd - - echo - echo "Creating user" - read -p "Enter username: " username - xichroot $SYSROOT useradd -s /bin/bash -m $username - xichroot $SYSROOT passwd $username -} - -configuring_system () { - read -p "Enter system hostname: " hostname - - echo $hostname > $SYSROOT/etc/hostname - - cat > $SYSROOT/etc/hosts << EOF -127.0.0.1 localhost -::1 localhost -127.0.1.1 $hostname.local $hostname -EOF -} - -configuring_nameservers () { - echo "Configuring nameservers..." - - cat > $SYSROOT/etc/resolv.conf << EOF -nameserver 80.80.80.80 -EOF -} - -generating_fstab () { - echo "Generating fstab..." - xichroot $SYSROOT genfstab -U / > $SYSROOT/etc/fstab -} - -building_initramfs () { - echo "Building initramfs..." - kernel_version=$(ls $SYSROOT/usr/lib/modules | tail -1) - xichroot $SYSROOT mkdir /var/tmp - xichroot $SYSROOT dracut --kver $kernel_version 2>$TMPDIR/dracut.log > $TMPDIR/dracut.log -} - -installing_bootloader () { - read -p "Install Grub? [y]" r - [ "$r" != "n" ] && { - opts="--target=x86_64-efi" - - xichroot $SYSROOT lsblk - read -p "Enter efi directory: " efi_part - opts="$opts --efi-directory=$efi_part" - - read -p "Removable system? [y]" r - [ "$r" != "n" ] && { - opts="$opts --removable" - } - - xichroot $SYSROOT grub-install $opts - xichroot $SYSROOT grub-mkconfig -o /boot/grub/grub.cfg - } -} - -fixing_permissions () { - xichroot $SYSROOT chmod 755 / - xichroot $SYSROOT chmod 755 /usr - xichroot $SYSROOT chmod 755 /usr/bin - xichroot $SYSROOT chmod 755 /usr/lib -} - -downloading_additional_packages () { - echo "Syncing repos..." - xichroot $SYSROOT xi sync - echo "Downloading additional packages..." - xi -r $SYSROOT $XIFLAGS install $additional_packages -} - -steps=" -configuring_nameservers -generating_fstab -building_initramfs -configuring_system -installing_bootloader -configuring_users -fixing_permissions -downloading_additional_packages -" - -len=$(echo "$steps" | wc -l) -i=0 - -echo "Press [return] to enter configuration" -read response - -for step in $steps; do - i=$((i+1)) - clear - hbar -t -T "$(echo $step | sed "s/_/ /g")" $i $len - $step -done - -echo "Installation finished!" diff --git a/scripts/installer.sh b/scripts/installer.sh deleted file mode 100755 index 589574d..0000000 --- a/scripts/installer.sh +++ /dev/null @@ -1,306 +0,0 @@ -#!/bin/sh - -. /usr/lib/xitui.sh -. /usr/lib/glyphs.sh -. /usr/lib/colors.sh - -logfile="installer.log" -default_packages="base linux xipkg dracut grub mksh sudo neofetch vim tzdata" -additional_services="networkmanager xorg iwd" - -list_disks () { - lsblk -r | while read -r line; do - set - $line - [ "$6" = "disk" ] && { - printf '"/dev/%s (%s)" ' $1 $4 - } - done -} - -list_partitions () { - ls $1* - echo "none" -} - -partition_disk () { - t_msg "Partitioning $1..." - export EFI_PART=$11 - export SYS_PART=$12 - export SWAP_PART=none - echo " - unit: sectors - sector-size: 512 - - type=ef, start=2048, size=210000 - type=83 - " | sfdisk $1 >$logfile && - t_msg "Partitioned $1!" -} - -partition_disks () { - eval "t_radio 'Select install disk' $(list_disks)" - local selected=$(echo $T_RESULT | cut -d' ' -f1) - - t_yesno "${BLUE}Auto-partition $selected disk?\n${RED}(Warning: existing data will be overwritten)" && { - partition_disk $selected || return 1 - } || { - cfdisk $selected && { - t_radio 'Select primary system partition' $(list_partitions $selected) - export SYS_PART=$T_RESULT - - t_radio 'Select efi system partition' $(list_partitions $selected) - export EFI_PART=$T_RESULT - - t_radio 'Select swap partition' $(list_partitions $selected) - export SWAP_PART=$T_RESULT - } - } -} - -format_disks () { - t_msg "Formatting partitions... -${TABCHAR}System Partition -${TABCHAR}EFI Partition -" - - - [ -b "$SYS_PART" ] && mkfs.ext4 $SYS_PART > $logfile - t_msg "Formatting partitions... -${GREEN}${TABCHAR}System partition ${CHECKMARK} (ext4) -${TABCHAR}EFI Partition -" - - [ -b "$EFI_PART" ] && mkfs.fat -F 32 $EFI_PART > $logfile - t_msg "Formatting partitions... -${GREEN}${TABCHAR}System partition ${CHECKMARK} (ext4) -${GREEN}${TABCHAR}EFI Partition ${CHECKMARK} (fat32) -" - - [ -b "$SWAP_PART" ] && mkswap $SWAP_PART > $logfile - return 0 -} - -mount_disks () { - t_msg "Mounting disks..." - export sysroot=/xilinux.mnt - export efi_mntpoint=/xilinux.mnt/boot/efi - - [ ! -f "$sysroot" ] && mkdir -p $sysroot - - [ -b "$SYS_PART" ] && { - mount $SYS_PART $sysroot - } || { - t_prompt "${RED}No system partition is available!" - return 1 - } - - [ -b "$EFI_PART" ] && { - mkdir -p $efi_mntpoint - mount $EFI_PART $efi_mntpoint - } - - [ -b "$SWAP_PART" ] && swapon $SWAP_PART - return 0 -} - -bootstrap_system () { - t_msg "Creating directories..." - xi -vy -r $sysroot bootstrap >> $logfile -} - -install_base () { - t_msg "Installing packages..." - xi -vy -r $sysroot sync >> $logfile - xi -vy -r $sysroot install $default_packages >> $logfile -} - -copy_resolvconf () { - [ ! -d $sysroot/etc ] && mkdir $sysroot/etc - cp /etc/resolv.conf $sysroot/etc/resolv.conf -} - -sync_system () { - t_msg "Syncing system..." - xichroot $sysroot xi sync >> $logfile -} - -generate_fstab () { - t_msg "Generating fstab..." - xichroot $sysroot genfstab -U / > $sysroot/etc/fstab -} - -build_initramfs () { - t_msg "Build initramfs" - - kernel_version=$(ls $SYSROOT/usr/lib/modules | tail -1) - - mkdir -p $sysroot/var/tmp - xichroot $sysroot dracut --kver $kernel_version 2>&1 >> $logfile -} - -install_grub () { - t_yesno "Install grub?" && { - target="x86_64-efi" - opts="--target=$target --efi-directory=$efi_mntpoint" - - t_yesno "Install as removable system?" && opts="$opts --removable" - - t_msg "Installing grub for target $target..." - xichrooot $sysroot grub-install $opts >> $logfile - - t_msg "Creating grub configuration..." - xichrooot $sysroot grub-mkconfig -o /boot/grub/grub.cfg - } || return 0 -} - -enter_password () { - export password="" - t_input_hidden "Enter Password:" - passwd=$T_RESULT - t_input_hidden "Confirm Password:" - local cpasswd=$T_RESULT - - [ "$passwd" = "$cpasswd" ] || { - t_prompt "Passwords do not match!" - enter_password - } - -} - -configure_users () { - t_input_cmd "xichroot $sysroot passwd" "Enter root password" - - t_input "Enter username:" - local username=$T_RESULT - enter_password - - t_msg "Creating user..." - xichroot $sysroot useradd -s /bin/mksh -m $username - printf "$passwd\n$passwd\n" | xichroot $sysroot passwd $username - - t_yesno "Allow this user to use sudo?" && { - echo "$username ALL=(ALL:ALL) ALL" >> $sysroot/etc/sudoers - } - - t_yesno "Set a password for the root user?" && { - enter_password - printf "$passwd\n$passwd\n" | xichroot $sysroot passwd - } - - return 0 -} - -fix_permissions () { - xichroot $sysroot chmod 755 / - xichroot $sysroot chmod 755 /usr - xichroot $sysroot chmod 755 /usr/bin - xichroot $sysroot chmod 755 /usr/lib -} - -set_timezone () { - zoneinfo="$sysroot/usr/share/zoneinfo" - cp $zoneinfo/$1 $sysroot/etc/localtime - echo "$1" > /etc/timezone - - t_cls_ptrn - t_prompt "Successfully set timezone!" -} - -select_timezone () { - t_clean_ptrn - zoneinfo="$sysroot/usr/share/zoneinfo" - selection=$1 - t_paged_radio "Select your timezone: $selection" $(ls "$zoneinfo/$selection") "more..." - [] - selection="$selection/$T_RESULT" - - [ -f "$zoneinfo/$selection" ] && { - - t_yesno "Use $selection as your system timezone? " && { - set_timezone $selection - } || { - select_timezone - } - return 0 - } - - [ -d "$zoneinfo/$selection" ] && { - select_timezone $selection - } || { - t_prompt "The timezone you entered does not exist!" - select_timezone - } -} - -install_additional () { - t_check "Install and configure additional services: " $additional_services - local services=$T_RESULT - - for service in $services; do - service_$service - done -} - -service_networkmanager () { - t_msg "Installing NetworkManager..." - { - xi -ly -r $sysroot install networkmanager - xichroot $sysroot rc-update add networkmanager - } >> $logfile -} - -service_iwd () { - t_msg "Installing iwd..." - { - xi -ly -r $sysroot install iwd - xichroot $sysroot rc-update add iwd - } >> $logfile -} - -service_xorg () { - t_msg "Installing xorg..." - xi -r $sysroot install base-xorg base-fonts >> $logfile - t_check "Select video drivers:" $(xi search xd86-video- | cut -f2 -d/) - [ "${#T_RESULT}" != "0" ] && xi -r $sysroot install $T_RESULT - t_prompt "Installed basic xorg functionality -TODO: preconfigured window managers, for now you need to configure them yourself" -} - - -umount_disks () { - umount -R $sysroot - [ -b "$SWAP_PART" ] && swapoff $SWAP_PART - return 0 -} - -t_init -t_no_cur -checkroot - -steps="partition_disks -format_disks -mount_disks -bootstrap_system -install_base -copy_resolvconf -sync_system -generate_fstab -build_initramfs -configure_users -fix_permissions -select_timezone -install_additional -umount_disks -" - -for step in $steps; do - t_cls_ptrn - $step 2>> $logfile || { - t_prompt "${RED}An error occured!" - t_clean - exit 1 - } -done -t_prompt "Completed install!" - -t_clean diff --git a/scripts/mkiso.sh b/scripts/mkiso.sh deleted file mode 100755 index 264b802..0000000 --- a/scripts/mkiso.sh +++ /dev/null @@ -1,92 +0,0 @@ -#!/bin/sh - -ISO_NAME="xilinux-$(date -u +%Y%m%d)" -ISO_LABEL="xilinux" -PUBLISHER="davidovski" -SYSLINUX_VER=6.04-pre1 - -XI_ARGS="" - -chroot=/tmp/chroot -isoroot=/tmp/iso -iso_pkgs="linux linux-firmware base dracut grub bash xipkg squashfs-tools lvm2 cryptsetup networkmanager stty" - -create_basesystem () { - xi $XI_ARGS sync - xi $XI_ARGS -r "$chroot" bootstrap - xi $XI_ARGS -r "$chroot" install "$iso_pkgs" - - cat > $chroot/etc/resolv.conf << EOF -nameserver 80.80.80.80 -EOF - - hostname=xilinux - echo xilinux > $chroot/etc/hostname - - cat > $chroot/etc/hosts << EOF -127.0.0.1 localhost -::1 localhost -127.0.1.1 $hostname.local $hostname -EOF - - xichroot $SYSROOT passwd - - xichroot "$chroot" -} - -build_initramfs () { - kernel_version=$(ls $chroot/usr/lib/modules | tail -1) - mkdir -p "$chroot"/var/tmp - xichroot "$chroot" dracut --nomdadmconf --nolvmconf --xz --add dmsquash-live --add bash --add convertfs --add pollcdrom --force --kver $kernel_version -} - -create_isoroot() { - mkdir -p $isoroot/ - cp $chroot/boot/vmlinuz-** $isoroot/vmlinuz - cp $chroot/boot/initramfs-** $isoroot/initrd.img - - mkdir -p $isoroot/isolinux -} - -install_syslinux () { - curl https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/Testing/$(echo $SYSLINUX_VER | cut -d'-' -f1)/syslinux-$SYSLINUX_VER.tar.xz > syslinux-$SYSLINUX_VER.tar.xz - - tar -C /tmp -xf syslinux-$SYSLINUX_VER.tar.xz - #cp syslinux-$SYSLINUX_VER - cp /tmp/syslinux-$SYSLINUX_VER/bios/core/isolinux.bin $isoroot/isolinux/isolinux.bin - cp /tmp/syslinux-$SYSLINUX_VER/bios/com32/elflink/ldlinux/ldlinux.c32 $isoroot/isolinux/ldlinux.c32 -} - -build_iso () { - cat > $isoroot/isolinux/isolinux.cfg << EOF -default 1 - -label 1 - kernel /vmlinuz - append initrd=/initrd.img splash console=tty0 console=ttyS0,9600 root=live:CDLABEL=xilinux rd.live.dir=/ rd.live.squashimg=filesystem.squashfs rd.live.debug=1 - - - -EOF - - mksquashfs $chroot $isoroot/filesystem.squashfs -noappend -no-progress -e "/proc/*" -e "/dev/*" -e "/sys/*" - genisoimage -r -V "$ISO_LABEL" -cache-inodes -J -l \ - -allow-limited-size -udf \ - -b isolinux/isolinux.bin -c isolinux/boot.cat \ - -no-emul-boot -boot-load-size 4 -boot-info-table \ - -p "$PUBLISHER " \ - -A "$ISO_LABEL" -o "$ISO_NAME.iso" $isoroot -} - - -[ "$#" = 0 ] && { - create_basesystem - build_initramfs - create_isoroot - install_syslinux - build_iso -} || { - for task in $*; do - $task - done -} -- cgit v1.2.1