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 --- iso/install.sh | 139 ++++++++++++++++++++++ iso/mkiso.sh | 93 +++++++++++++++ iso/root/.profile | 9 ++ iso/root/installer.sh | 313 ++++++++++++++++++++++++++++++++++++++++++++++++++ scripts/install.sh | 139 ---------------------- scripts/installer.sh | 306 ------------------------------------------------ scripts/mkiso.sh | 92 --------------- 7 files changed, 554 insertions(+), 537 deletions(-) create mode 100755 iso/install.sh create mode 100755 iso/mkiso.sh create mode 100644 iso/root/.profile create mode 100755 iso/root/installer.sh delete mode 100755 scripts/install.sh delete mode 100755 scripts/installer.sh delete mode 100755 scripts/mkiso.sh diff --git a/iso/install.sh b/iso/install.sh new file mode 100755 index 0000000..89ee11b --- /dev/null +++ b/iso/install.sh @@ -0,0 +1,139 @@ +#!/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/iso/mkiso.sh b/iso/mkiso.sh new file mode 100755 index 0000000..925c52a --- /dev/null +++ b/iso/mkiso.sh @@ -0,0 +1,93 @@ +#!/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 xitui" + +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 + + cp -r ./root $chroot/ + + cat > $chroot/etc/conf.d/agetty << EOF +agetty_options="--autologin root --noclear" +EOF + +} + +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 quiet + +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 +} diff --git a/iso/root/.profile b/iso/root/.profile new file mode 100644 index 0000000..a15c12b --- /dev/null +++ b/iso/root/.profile @@ -0,0 +1,9 @@ +splash () { + clear + echo "Welcome to xilinux" +} + +[ "$(fgconsole 2>/dev/null)" = "1" ] && exec $HOME/installer.sh + +splash + diff --git a/iso/root/installer.sh b/iso/root/installer.sh new file mode 100755 index 0000000..ed20bf9 --- /dev/null +++ b/iso/root/installer.sh @@ -0,0 +1,313 @@ +#!/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!" +} + +welcome_splash () { + t_dialogue "Welcome to the xilinux installer" "" + +} + + +partition_disks () { + # need to use eval to work with spaces in line names + 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="welcome_splash +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/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