From 2ea4af39534cdad5afc5a5e329144b24c43d7242 Mon Sep 17 00:00:00 2001 From: Kevin Puertas Date: Sat, 27 May 2017 12:01:39 +0200 Subject: [PATCH] Updated installer and scripts --- ISOCreateScripts/README.md | 1 - ISOCreateScripts/depsjkarch.sh | 52 -------------- ISOCreateScripts/totalisocreate.sh | 110 ++++++++--------------------- installer/installer.sh | 76 ++++++++------------ installer/skeluser.tar.xz | Bin 10996 -> 11016 bytes 5 files changed, 58 insertions(+), 181 deletions(-) delete mode 100755 ISOCreateScripts/depsjkarch.sh diff --git a/ISOCreateScripts/README.md b/ISOCreateScripts/README.md index 650d5f5..de4dbaa 100644 --- a/ISOCreateScripts/README.md +++ b/ISOCreateScripts/README.md @@ -1,3 +1,2 @@ # Scripts usados por JKANetwork para generar las imagenes de CD que estan en jkarch.jkanetwork.com -# NO FUNCIONA / NOT WORK \ No newline at end of file diff --git a/ISOCreateScripts/depsjkarch.sh b/ISOCreateScripts/depsjkarch.sh deleted file mode 100755 index 6bcd879..0000000 --- a/ISOCreateScripts/depsjkarch.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash - -## This file download all JKArch dependencies and puts it in a folder with repo created, ready to use - -#Force sudo -if [[ $(/usr/bin/id -u) != "0" ]];then -sudo ${0} $@ -exit -fi - -rm -rf trydeps/ -rm -rf repoofflinejkarch/ -mkdir trydeps -#Only pacstrap for the essential packages for download the rest, pacman, and mirrorlist. Base added to pacman -Sw of later -pacstrap -d trydeps pacman jkarch-mirrorlist -cp /etc/pacman.conf trydeps/etc/pacman.conf - -arch-chroot trydeps/ /usr/bin/pacman -Sw base base-devel yaourt btrfs-progs rsync exfat-utils jkarch-mirrorlist jka-toolkit git wget netctl iw wpa_supplicant dialog sudo alsa-utils dosfstools \ -ntfs-3g bash-completion reflector ntp \ -mesa libva-vdpau-driver mesa-libgl libva-mesa-driver mesa-vdpau libva-intel-driver libvdpau-va-gl virtualbox-guest-utils virtualbox-guest-modules-arch xf86-input-vmmouse open-vm-tools \ -firefox google-chrome chromium opera otter-browser flashplugin \ -libreoffice-fresh abiword gnumeric wps-office leafpad gedit notepadqq \ -vlc qt4 smplayer totem clementine \ -gimp inkscape pinta krita \ -noto-fonts noto-fonts-cjk noto-fonts-emoji ttf-dejavu ttf-liberation ttf-ms-fonts ttf-google-fonts-git \ -evince ristretto librsvg gnome-calculator gnome-disk-utility file-roller lrzip p7zip unace unrar tumbler poppler-glib ffmpegthumbnailer libgsf \ -cups cups-filters cups-pk-helper system-config-printer gtk3-print-backends hplip foomatic-db-engine foomatic-db foomatic-db-ppds xsane bluez bluez-utils bluez-cups bluez-firmware bluez-libs blueberry \ -dropbox megasync geary k3b jre8-openjdk wine-staging wine_gecko winetricks lib32-libpng lib32-libldap lib32-gnutls lib32-mpg123 lib32-libpulse lib32-ncurses lib32-openal lib32-alsa-lib lib32-gst-plugins-base-libs bleachbit \ -sublime-text-dev sublime-text visual-studio-code jdk8-openjdk eclipse-java monodevelop brackets atom-editor-bin gdevelop poedit arduino \ -xorg-server xorg-xinit xorg-server-common xf86-input-libinput xterm lightdm lightdm-gtk-greeter gvfs gvfs-mtp gvfs-afc gvfs-smb udisks2 networkmanager network-manager-applet gnome-keyring xdialog \ -jkarch-appearance lxterminal ttf-inconsolata octopi octopi-notifier gksu pulseaudio pavucontrol xdg-user-dirs xfce4-power-manager \ -lxappearance lxappearance-obconf lxde-common lxinput lxpanel lxrandr lxsession lxtask lxterminal openbox pcmanfm xfce4-notifyd \ -xfce4 cinnamon gnome-extra gnome mate-extra mate gtk-engine-murrine plasma gtk-engine-aurora faenza-icon-theme \ -efibootmgr dosfstools refind-efi grub os-prober --noconfirm - -arch-chroot trydeps/ /usr/bin/pacman -Sw $(pacman -Ssq xf86-video-*) --noconfirm -mkdir repoofflinejkarch -mv trydeps/var/cache/pacman/pkg/* repoofflinejkarch/ -rm -rf trydeps/ -cd repoofflinejkarch/ -repo-add localjkarch.db.tar.gz *.pkg.* -rm localjkarch.files -rm localjkarch.db -mv localjkarch.files.tar.gz localjkarch.files -mv localjkarch.db.tar.gz localjkarch.db -rm -f *.old -rm -f *.log -rm -f .log -cd .. -#Permisos -chmod 777 repoofflinejkarch/ -chmod 666 repoofflinejkarch/* diff --git a/ISOCreateScripts/totalisocreate.sh b/ISOCreateScripts/totalisocreate.sh index 607ea9f..f4d89f8 100755 --- a/ISOCreateScripts/totalisocreate.sh +++ b/ISOCreateScripts/totalisocreate.sh @@ -29,11 +29,11 @@ function modifyimage { #Delete packages not needed from official iso - sudo arch-chroot $sfslocate/ /usr/bin/pacman -R clonezilla darkhttpd diffutils grml-zsh-config irssi linux-atm lvm2 man-db man-pages mc ndisc6 nmap smartmontools testdisk vi vim vim-runtime zsh openconnect pcsclite python2 --noconfirm + sudo arch-chroot $sfslocate/ /usr/bin/pacman -R clonezilla darkhttpd diffutils grml-zsh-config irssi linux-atm lvm2 man-db man-pages mc ndisc6 nmap smartmontools testdisk vi vim vim-runtime openconnect pcsclite python2 python reflector --noconfirm #Restore bash shell (not zsh) sudo arch-chroot $sfslocate/ /usr/bin/chsh -s /bin/bash root #Install new - sudo arch-chroot $sfslocate/ /usr/bin/pacman -Su gparted xf86-video-vesa xorg-xinit lwm localepurge --noconfirm --ignore linux #Do not upgrade kernel automatically + sudo arch-chroot $sfslocate/ /usr/bin/pacman -Su gparted xf86-video-vesa xorg-xinit lwm xorg-xrandr xterm localepurge --noconfirm --ignore linux #Do not upgrade kernel automatically #For gparted to work sudo rm $sfslocate/etc/X11/xinit/xinitrc sudo touch $sfslocate/etc/X11/xinit/xinitrc @@ -80,13 +80,8 @@ function bashprofile { sudo echo "#" > $sfslocate/root/.bash_profile sudo echo "# ~/.bash_profile" >> $sfslocate/root/.bash_profile sudo echo "#" >> $sfslocate/root/.bash_profile - if [[ $1 = "Online" ]];then - sudo echo "cd /root/" >> $sfslocate/root/.bash_profile - sudo echo "./downloadinstall.sh" >> $sfslocate/root/.bash_profile - else #Offline - sudo echo "cd /root/offlinefiles/" >> $sfslocate/root/.bash_profile - sudo echo "./selectlang.sh" >> $sfslocate/root/.bash_profile - fi + sudo echo "cd /root/" >> $sfslocate/root/.bash_profile + sudo echo "./downloadinstall.sh" >> $sfslocate/root/.bash_profile sudo echo "[[ -f ~/.bashrc ]] && . ~/.bashrc" >> $sfslocate/root/.bash_profile } @@ -103,70 +98,6 @@ function prepareISOFolder { cp temp/airootfs.sfs iso/arch/x86_64/airootfs.sfs } -##Function online iso create -function createOnline { - # Online ISO Procedure - #Copy important files - prepareISOFolder - - sudo unsquashfs -d $sfslocate/ iso/arch/x86_64/airootfs.sfs - - #Permisos de root de la imagen cambiar temporalmente - sudo chmod 777 $sfslocate/root/ - sudo rm $sfslocate/root/* - - #.bash_profile Online - bashprofile "Online" - - #Copiar fichero instalador - sudo cp ../archinstall/downloadinstall.sh $sfslocate/root/ - - #Resto de modificaciones (las comunes) y cerrado del sfs - modifyimage - - #Creamos la ISO - mkisofs -b isolinux/isolinux.bin -r -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "JKARCH-ISO" -o JKArch-Online-$yearmonth.iso iso/ - sudo rm -rf iso/ - echo "ISO Online creada" -} - -function createOffline { - # Offline ISO Procedure - #Copy important files - prepareISOFolder - - #Unsquash sfs file - sudo unsquashfs -d $sfslocate/ iso/arch/x86_64/airootfs.sfs - - #Permisos de root de la imagen cambiar temporalmente - sudo chmod 777 $sfslocate/root/ - sudo rm $sfslocate/root/* - - #.bash_profile Offline - bashprofile "Offline" - - #Create subfolder and folder at same time - sudo mkdir -p $sfslocate/root/offlinefiles/mods/ - #Esta ruta es absoluta, no vale para todos los sistemas (Es "temporal") - sudo cp ../archinstall/* $sfslocate/root/offlinefiles/ - sudo rm $sfslocate/root/offlinefiles/downloadinstall.sh $sfslocate/root/offlinefiles/archinstall-dev.sh - sudo cp ../mods/* $sfslocate/root/offlinefiles/mods/ - - #Resto de modificaciones (las comunes) y cerrado del sfs - modifyimage - - #Creamos el repositorio - sudo sh depsjkarch.sh - #Lo movemos a su sitio - mkdir -p iso/repo/ - mv repoofflinejkarch/* iso/repo/ - rm -rf repoofflinejkarch/ - - #Creamos la ISO - mkisofs -b isolinux/isolinux.bin -r -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "JKARCH-ISO" -o JKArch-Offline-$yearmonth.iso iso/ - sudo rm -rf iso/ - echo "ISO Offline creada" -} #Date for builds today=$(date +%y%m%d) @@ -193,13 +124,28 @@ if [[ $today != $lastdownload ]];then #Only download one time at day fi -#Switch del argumento $1 para ver si solo se quiere crear una de las dos imagenes iso -case $1 in - "Online") createOnline;; - "Offline") createOffline;; - "") - createOnline - createOffline - ;; -esac +# Create ISO Procedure +#Copy important files +prepareISOFolder + +sudo unsquashfs -d $sfslocate/ iso/arch/x86_64/airootfs.sfs + +#Permisos de root de la imagen cambiar temporalmente +sudo chmod 777 $sfslocate/root/ +sudo rm $sfslocate/root/* + +#.bash_profile +bashprofile + +#Copiar fichero instalador +sudo cp ../archinstall/downloadinstall.sh $sfslocate/root/ + +#Resto de modificaciones (las comunes) y cerrado del sfs +modifyimage + +#Creamos la ISO +mkisofs -b isolinux/isolinux.bin -r -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "JKARCH-ISO" -o JKArch-Online-$yearmonth.iso iso/ +sudo rm -rf iso/ +echo "ISO creado" + echo "Script terminado" \ No newline at end of file diff --git a/installer/installer.sh b/installer/installer.sh index 3cf1e14..6004a6e 100755 --- a/installer/installer.sh +++ b/installer/installer.sh @@ -45,8 +45,8 @@ function showdo { function yesnobox { local title=$1 - #Return Y or N - echo `dialog --stdout --nocancel --menu "$title" 0 0 4 Y "$(T "Yes")" N "No"` + #Exit code is 0 for Yes, and 1 for no + dialog --nocancel --yes-label "$(T "Yes")" --yesno "$title" 0 0 } function fatalerror { @@ -322,7 +322,7 @@ function particiones { ## Date and language function horaidioma { - while [[ $confirm != "Y" ]];do + while [[ $confirm != "0" ]];do varx="" #Empty var langs=$(cat /etc/locale.gen | grep '^#[a-zA-Z]' | cut -f1 -d" " | cut -c2-30 | sort | uniq) for addr in $(echo $langs | tr " " "\n") @@ -337,14 +337,16 @@ function horaidioma { langinst=$(cat /etc/locale.gen | grep -m1 '^#'$opclang | cut -c2-40) #Confirm - confirm=`yesnobox "$(T "Your language:") $opclang. Correcto?"` + yesnobox "$(T "Your language:") $opclang. Correcto?" + confirm=$? # 0->Yes done #End of selecting lang confirm="" #Erase var echo "$(T "Now select your timezone for adjusting the clock")" - while [[ $confirm != "Y" ]];do - NEW_TIMEZONE=$(execl tzselect) - confirm=`yesnobox "$(T "Your timezone is") $NEW_TIMEZONE ?"` + while [[ $confirm != "0" ]];do # 0->Yes + NEW_TIMEZONE=$(execl tzselect) + yesnobox "$(T "Your timezone is") $NEW_TIMEZONE ?" + confirm=$? # 0->Yes done confirm="" #Erase var } @@ -395,12 +397,12 @@ function appsuser { 3) packages="$packages opera";; esac - confirm=`yesnobox "Habilitar soporte bluetooth?"` - if [[ $confirm == "Y" ]];then + yesnobox "Habilitar soporte bluetooth?" + if [[ $? == "0" ]];then packages="$packages bluez bluez-utils bluez-cups bluez-firmware bluez-libs blueberry " fi - confirm=`yesnobox "Habilitar compatibilidad programas Windows (Usando wine)?"` - if [[ $confirm == "Y" ]];then + yesnobox "Habilitar compatibilidad programas Windows (Usando wine)?" + if [[ $? == "0" ]];then packages="$packages wine-staging wine_gecko winetricks" packages="$packages lib32-libpng lib32-libldap lib32-gnutls lib32-mpg123 lib32-libpulse lib32-ncurses lib32-openal lib32-alsa-lib lib32-gst-plugins-base-libs gnome-exe-thumbnailer samba" #Some 32bit libs for winearch 32 work better, and thumbs for .exe (samba needed too) inswine=1 @@ -550,8 +552,8 @@ function installconf { # Linux kernel execl chroot mkinitcpio -p linux #Hacemos el mkinitcpio después de tener instalados los gráficos - confirm=`yesnobox "¿Instalar gestor de arranque? (Pulsar SI a no ser que sepas lo que haces)"` - if [[ $confirm == "Y" ]];then + yesnobox "¿Instalar gestor de arranque? (Pulsar SI a no ser que sepas lo que haces)" + if [[ $? == "0" ]];then # Install and configure bootloader GRUB/rEFInd if [[ -z $partefi ]];then #If it dont have EFI execl chroot pacman -S grub os-prober --noconfirm @@ -729,14 +731,8 @@ userpass clear # Resumen de los cambios -tput setaf 6 -echo "$(T "Ok, last thing before start installing, summary of changes")" -echo "$(T "Partition scheme before your changes")" -tput setaf 9 -lsblk --output NAME,KNAME,FSTYPE,SIZE,LABEL -tput setaf 6 -echo "$(T "Your changes")" -tput setaf 9 + +# Vars before the dialog case $formatoraiz in "mkfs.ext4 -F") mosfraiz="$(T "ext4 formatted")";; @@ -747,8 +743,6 @@ case $formatoraiz in "echo No formatear ") mosfraiz="$(T "not formatted")";; esac -echo "$(T "Root partition"): $particionraiz , $mosfraiz" -if [[ $particionhome ]];then case $formatohome in "mkfs.ext4 -F") mosfhome="$(T "ext4 formatted")";; @@ -759,12 +753,6 @@ case $formatohome in "echo No formatear ") mosfhome="$(T "not formatted")";; esac -echo "$(T "Home partition"): $particionhome , $mosfhome" -fi -if [[ $partefi ]];then - echo "$(T "EFI partition in") $partefi" -fi - # Log options echo "------" >> "/tmp/install.log" echo "Install partition options" >> "/tmp/install.log" @@ -782,25 +770,21 @@ if [[ $particionhome ]];then fi # +# Make the question +dialog --nocancel --stdout --yes-label "Si, instalar" --no-label "No, volver a empezar" --yesno "$(T "Ok, last thing before start installing, summary of changes")\n \ +$(T "Partition scheme before your changes") \n \ +$(lsblk --output NAME,KNAME,FSTYPE,SIZE,LABEL) \n \ +$(T "Your changes") \n \ +$(T "Root partition"): $particionraiz , $mosfraiz \n \ +$(T "Home partition"): $particionhome , $mosfhome \n \ +$(if [[ $partefi ]];then echo $(T "EFI partition in") $partefi;fi) \n \ +¿Estas de acuerdo con los cambios y quieres comenzar la instalacion?" -#Pregunta si instalar o no -tput setaf 1 -echo "¿Estas de acuerdo con los cambios y quieres comenzar la instalacion?" -options=("No, volver a empezar" "Si, instalar" "No, apagar el ordenador") -select opt in "${options[@]}" -do - case $opt in - "No, volver a empezar") +if [[ $? == "1" ]];then #If say no, reset install rm /tmp/install.log - exec ./selectlang.sh - break;; - "Si, instalar") break;; - "No, apagar el ordenador") - poweroff - exit - ;; - esac -done + exec ./installer.sh + exit +fi tput setaf 9 # Real install diff --git a/installer/skeluser.tar.xz b/installer/skeluser.tar.xz index dcd5532c89d69ffc74e52c580fbbf5c33b8b5b96..b3f117aa0095117a6b81c89dbb4b96c4a3c01c10 100644 GIT binary patch delta 10932 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 W)C2$_BgVb4#Ao{g000001X)`ASwsT> delta 10912 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 CqfOla