Initial work on nvidia driver setup
- whitespace around > redirection paths - live session changes/improvments - use getopts for argument parsing
This commit is contained in:
parent
122b7d6794
commit
6cc6c6d095
@ -3,25 +3,30 @@
|
||||
# This program is free software, provided under the GNU GPL
|
||||
# Written by Nathaniel Maia for use in Archlabs
|
||||
# Some ideas and code reworked from other resources
|
||||
# AIF, Cnichi, Calamares, Arch Wiki.. Credit where credit is due
|
||||
# AIF, Calamares, and the Arch Wiki.. Credit where credit is due
|
||||
|
||||
VER=2.0.86
|
||||
# check for syntax errors
|
||||
# set -n
|
||||
|
||||
VER=2.0.89
|
||||
|
||||
# bulk default values {
|
||||
|
||||
: ${DIST=ArchLabs} # distro name if not set
|
||||
MNT=/mnt # install mountpoint
|
||||
ANS=/tmp/ans # dialog answer file
|
||||
MNT=/mnt # installation root mountpoint
|
||||
ANS=/tmp/ans # dialog answer output file
|
||||
BOOTDIR=boot # location to mount boot partition
|
||||
FONT=ter-i16n # font used for the linux console
|
||||
HOOKS=shutdown # list of additional mkinitcpio HOOKS
|
||||
HOOKS=shutdown # additional mkinitcpio HOOKS
|
||||
SEL=0 # currently selected menu item
|
||||
SYS=Unknown # bios type to be determined: UEFI/BIOS
|
||||
ERR=/tmp/errlog # error log used internally
|
||||
DBG=/tmp/debuglog # debug log when passed -d
|
||||
SYS=Unknown # bios type, to be determined: UEFI/BIOS
|
||||
ERR=/tmp/errlog # stderr log used internally by errshow()
|
||||
DBG=/tmp/debuglog # debug log file when passed -d
|
||||
RUN=/run/archiso/bootmnt/arch/boot # path for live system /boot
|
||||
VM="$(dmesg | grep -i hypervisor)" # system running in a virtual machine
|
||||
export DIALOGOPTS="--cr-wrap" # see `man dialog`
|
||||
EXMNTS="" # extra partitions that were mounted, used to verify mountpoint and show user
|
||||
FORMATTED="" # partitions that have been formatted, allows skipping the format step
|
||||
export DIALOGOPTS="--cr-wrap" # dialog environment variable to hold default options, see `man dialog`
|
||||
|
||||
BASE_PKGS="base xorg xorg-drivers sudo git gvfs gtk3 libmad libmatroska tumbler "
|
||||
BASE_PKGS+="playerctl pulseaudio pulseaudio-alsa pavucontrol pamixer scrot xdg-user-dirs "
|
||||
@ -172,18 +177,18 @@ main()
|
||||
(( SEL < 12 )) && (( SEL++ ))
|
||||
tput civis
|
||||
dialog --backtitle "$DIST Installer - $SYS - v$VER" --title " Prepare " --default-item $SEL --cancel-label 'Exit' --menu "$_prep" 0 0 0 \
|
||||
1 "Device tree (optional)" \
|
||||
2 "Partitioning (optional)" \
|
||||
3 "LUKS setup (optional)" \
|
||||
4 "LVM setup (optional)" \
|
||||
5 "Mount partitions" \
|
||||
6 "System bootloader" \
|
||||
7 "User and password" \
|
||||
8 "System configuration" \
|
||||
9 "Select WM/DE (optional)" \
|
||||
10 "Select Packages (optional)" \
|
||||
11 "View configuration (optional)" \
|
||||
12 "Start the installation" 2>"$ANS"
|
||||
1 "Show device tree" \
|
||||
2 "Partitioning helpers" \
|
||||
3 "LUKS encryption setup" \
|
||||
4 "Logical volume management setup" \
|
||||
5 "* Mount system partitions" \
|
||||
6 "* Select system bootloader" \
|
||||
7 "* Create user and password" \
|
||||
8 "* Basic system configuration" \
|
||||
9 "Select window manager or desktop" \
|
||||
10 "Select additional packages" \
|
||||
11 "View configuration selections" \
|
||||
12 "* Confirm choices and start the installation" 2> "$ANS"
|
||||
|
||||
read -r SEL < "$ANS"
|
||||
[[ -z $WARN && $SEL =~ (2|5) ]] && { msg "Data Warning" "$_warn"; WARN=true; }
|
||||
@ -573,15 +578,7 @@ part_menu()
|
||||
part_shrink "$device"
|
||||
elif [[ $choice == 'auto' ]]; then
|
||||
local root_size txt table boot_fs
|
||||
root_size=$(lsblk -lno SIZE "$device" | awk 'NR == 1 {
|
||||
if ($1 ~ "G") {
|
||||
sub(/G/, "")
|
||||
print ($1 * 1000 - 512) / 1000 "G"
|
||||
} else {
|
||||
sub(/M/, "")
|
||||
print ($1 - 512) "M"
|
||||
}
|
||||
}')
|
||||
root_size=$(lsblk -lno SIZE "$device" | awk 'NR == 1 {if ($1 ~ "G") {sub(/G/, ""); print ($1 * 1000 - 512) / 1000 "G"} else {sub(/M/, ""); print ($1 - 512) "M"}}')
|
||||
txt="\nWARNING:\n\nALL data on $device will be destroyed and the following partitions will be created\n\n- "
|
||||
if [[ $SYS == 'BIOS' ]]; then
|
||||
table="msdos" boot_fs="ext4"
|
||||
@ -1134,6 +1131,8 @@ install_main()
|
||||
errshow 1 "genfstab -U $MNT > $MNT/etc/fstab"
|
||||
[[ -f $MNT/swapfile ]] && sed -i "s~${MNT}~~" "$MNT/etc/fstab"
|
||||
install_packages
|
||||
# video driver tearfree configs, MUST be done after package install to support nvidia
|
||||
install_tearfree_conf "$MNT/etc/X11/xorg.conf.d"
|
||||
install_mkinitcpio
|
||||
install_boot
|
||||
chrun "hwclock --systohc --utc" || chrun "hwclock --systohc --utc --directisa"
|
||||
@ -1183,49 +1182,28 @@ install_base()
|
||||
trap - EXIT
|
||||
unset BG_PID
|
||||
|
||||
# archiso files
|
||||
rm -rf "$MNT/etc/mkinitcpio-archiso.conf"
|
||||
find "$MNT/usr/lib/initcpio" -name 'archiso*' -type f -delete
|
||||
|
||||
# remove/disable customizations done to airootfs during building
|
||||
chrun "systemctl disable pacman-init.service choose-mirror.service" > /dev/null 2>&1
|
||||
rm -f "$MNT/etc/systemd/scripts/choose-mirror"
|
||||
rm -f "$MNT/etc/systemd/system/"{choose-mirror.service,etc-pacman.d-gnupg.mount,pacman-init.service}
|
||||
sed -i 's/#\(Storage=\)volatile/\1auto/' "$MNT/etc/systemd/journald.conf"
|
||||
sed -i 's/#\(HandleSuspendKey=\)ignore/\1suspend/' "$MNT/etc/systemd/logind.conf"
|
||||
sed -i 's/#\(HandleHibernateKey=\)ignore/\1hibernate/' "$MNT/etc/systemd/logind.conf"
|
||||
sed -i 's/#\(HandleLidSwitch=\)ignore/\1suspend/' "$MNT/etc/systemd/logind.conf"
|
||||
find "$MNT/boot" -name '*-ucode.img' -delete
|
||||
|
||||
# changing distro name?
|
||||
[[ $DIST != "ArchLabs" ]] || sed -i "s/ArchLabs/$DIST/g" "$MNT/etc/"{lsb-release,os-release}
|
||||
|
||||
if [[ $VM ]]; then
|
||||
echo "Virtual machine detected, removing xorg configs"
|
||||
find "$MNT/etc/X11/xorg.conf.d/" -name '*.conf' -delete -printf "remove %p\n"
|
||||
elif lspci | grep ' VGA ' | grep -q 'Intel'; then
|
||||
echo "Creating Intel Tear Free config /etc/X11/xorg.conf.d/20-intel.conf"
|
||||
cat > "$MNT/etc/X11/xorg.conf.d/20-intel.conf" <<- EOF
|
||||
Section "Device"
|
||||
Identifier "Intel Graphics"
|
||||
Driver "intel"
|
||||
Option "TearFree" "true"
|
||||
EndSection
|
||||
EOF
|
||||
elif lspci | grep ' VGA ' | grep -q 'AMD/ATI.*RX'; then # newer RX cards can use the amdgpu driver
|
||||
echo "Creating AMD Tear Free config /etc/X11/xorg.conf.d/20-amdgpu.conf"
|
||||
cat > "$MNT/etc/X11/xorg.conf.d/20-amdgpu.conf" <<- EOF
|
||||
Section "Device"
|
||||
Identifier "AMD Graphics"
|
||||
Driver "amdgpu"
|
||||
Option "TearFree" "true"
|
||||
EndSection
|
||||
EOF
|
||||
elif lspci | grep ' VGA ' | grep -q 'AMD/ATI.*HD [2-6][0-9]*'; then # older HD 2xxx-6xxx cards must use the radeon driver
|
||||
echo "Creating Radeon Tear Free config /etc/X11/xorg.conf.d/20-radeon.conf"
|
||||
cat > "$MNT/etc/X11/xorg.conf.d/20-radeon.conf" <<- EOF
|
||||
Section "Device"
|
||||
Identifier "AMD Graphics"
|
||||
Driver "radeon"
|
||||
Option "TearFree" "on"
|
||||
EndSection
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [[ -e /run/archiso/sfs/airootfs ]]; then
|
||||
# vmlinuz, if this isn't copied the standard kernel may fail mkinitcpio
|
||||
cp -vf "$RUN/x86_64/vmlinuz" "$MNT/boot/vmlinuz-linux" 2> $ERR 2>&1
|
||||
errshow 1 "cp -vf $RUN/x86_64/vmlinuz $MNT/boot/vmlinuz-linux"
|
||||
fi
|
||||
|
||||
# copy network settings
|
||||
[[ -d /etc/netctl ]] && cp -rfv /etc/netctl "$MNT/etc/"
|
||||
[[ -f /etc/resolv.conf ]] && cp -fv /etc/resolv.conf "$MNT/etc/"
|
||||
[[ -e /etc/NetworkManager/system-connections ]] && cp -rvf /etc/NetworkManager/system-connections "$MNT/etc/NetworkManager/"
|
||||
@ -1255,6 +1233,7 @@ install_base()
|
||||
BACKSPACE="guess"
|
||||
EOF
|
||||
printf "KEYMAP=%s\nFONT=%s\n" "$CMAP" "$FONT" > "$MNT/etc/vconsole.conf"
|
||||
|
||||
echo "$MYHOST" > "$MNT/etc/hostname"
|
||||
cat > "$MNT/etc/hosts" <<- EOF
|
||||
127.0.0.1 localhost
|
||||
@ -1311,9 +1290,12 @@ install_boot()
|
||||
|
||||
install_user()
|
||||
{
|
||||
local groups='audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel'
|
||||
local groups='audio,video,floppy,log,network,rfkill,scanner,storage,optical,power,wheel'
|
||||
if [[ -e $MNT/etc/X11/xorg.conf.d/20-nvida.conf && -e $MNT/usr/bin/optirun ]]; then
|
||||
groups+=',bumblebee'
|
||||
fi
|
||||
|
||||
rm -f "$MNT/root/.zshrc" # remove welcome message from root zshrc
|
||||
rm -f "$MNT/root/.zlogin" # remove welcome message
|
||||
|
||||
chrun "chpasswd <<< 'root:$ROOT_PASS'" 2> $ERR 2>&1
|
||||
errshow 1 "set root password"
|
||||
@ -1330,8 +1312,6 @@ install_user()
|
||||
chrun "chpasswd <<< '$NEWUSER:$USER_PASS'" 2> $ERR 2>&1
|
||||
errshow 1 "set $NEWUSER password"
|
||||
|
||||
chrun "pamixer --unmute; gtk-update-icon-cache /usr/share/icons/ArchLabs-Dark /usr/share/icons/ArchLabs-Light /usr/share/icons/ArchLabs"
|
||||
|
||||
if [[ $INSTALL_WMS == *dwm* ]];then
|
||||
install_suckless "/home/$NEWUSER" chroot
|
||||
[[ $INSTALL_WMS == 'dwm' ]] && rm -rf "$MNT/home/$NEWUSER/.config/xfce4"
|
||||
@ -1406,17 +1386,24 @@ install_packages()
|
||||
rmpkg+="archlabs-installer "
|
||||
fi
|
||||
|
||||
if [[ $VM ]] && dmesg | grep -qi 'vbox'; then
|
||||
inpkg+="virtualbox-guest-utils "
|
||||
case "$KERNEL" in
|
||||
linux) inpkg+="virtualbox-guest-modules-arch " ;;
|
||||
*) inpkg+="virtualbox-guest-modules-dkms ${KERNEL}-headers " ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [[ $MYSHELL == 'zsh' ]]; then
|
||||
inpkg+="zsh-completions "
|
||||
else
|
||||
rmpkg+="zsh "
|
||||
fi
|
||||
|
||||
if [[ $INSTALL_WMS == 'dwm' ]]; then # dwm only needs a very limited package set
|
||||
if [[ $INSTALL_WMS =~ (openbox|bspwm|i3-gaps|fluxbox) ]]; then
|
||||
inpkg+="$WM_BASE_PKGS "
|
||||
elif [[ $INSTALL_WMS == 'dwm' ]]; then # dwm only needs a very limited package set
|
||||
inpkg+="nitrogen polkit-gnome gnome-keyring dunst "
|
||||
else
|
||||
[[ $INSTALL_WMS =~ (plasma|gnome|cinnamon) ]] || inpkg+="archlabs-ksuperkey "
|
||||
[[ $INSTALL_WMS =~ (openbox|bspwm|i3-gaps|fluxbox) ]] && inpkg+="$WM_BASE_PKGS "
|
||||
fi
|
||||
|
||||
# update and install crucial packages first to avoid issues
|
||||
@ -1452,6 +1439,32 @@ install_packages()
|
||||
return 0
|
||||
}
|
||||
|
||||
install_suckless()
|
||||
{
|
||||
local dir="$1/suckless"
|
||||
shift
|
||||
|
||||
if [[ $2 == 'chroot' ]]; then
|
||||
chrun "mkdir -pv '$dir'"
|
||||
for i in dwm dmenu st; do
|
||||
if chrun "git clone 'https://git.suckless.org/$i' '$dir/$i'"; then
|
||||
chrun "cd '$dir/$i' && make PREFIX=/usr install"
|
||||
else
|
||||
printf "failed to clone %s repo\n" "$i"
|
||||
fi
|
||||
done
|
||||
else
|
||||
mkdir -pv "$dir"
|
||||
for i in dwm dmenu st; do
|
||||
if git clone "https://git.suckless.org/$i" "$dir/$i"; then
|
||||
cd "$dir/$i" && make PREFIX=/usr install
|
||||
else
|
||||
printf "failed to clone %s repo\n" "$i"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
install_mkinitcpio()
|
||||
{
|
||||
local add=''
|
||||
@ -1486,8 +1499,6 @@ install_mirrorlist()
|
||||
fi
|
||||
curl -fsSL "$mirror" | sed -e 's/^#Server/Server/' -e '/^#/d' | rankmirrors -n 6 - > "$1"
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
install_background()
|
||||
@ -1497,30 +1508,73 @@ install_background()
|
||||
trap "kill $BG_PID 2> /dev/null" EXIT
|
||||
}
|
||||
|
||||
install_suckless()
|
||||
install_tearfree_conf()
|
||||
{
|
||||
local dir="$1/suckless"
|
||||
shift
|
||||
local xpath="$1"
|
||||
|
||||
if [[ $2 == 'chroot' ]]; then
|
||||
chrun "mkdir -pv '$dir'"
|
||||
for i in dwm dmenu st; do
|
||||
if chrun "git clone 'https://git.suckless.org/$i' '$dir/$i'"; then
|
||||
chrun "cd '$dir/$i' && make PREFIX=/usr install"
|
||||
if [[ $VM ]]; then
|
||||
echo "Virtual machine detected, removing xorg configs"
|
||||
find "$xpath/" -name '*.conf' -delete -printf "remove %p\n"
|
||||
elif lspci | grep ' VGA ' | grep -q 'Intel'; then
|
||||
echo "Creating Intel Tear Free config /etc/X11/xorg.conf.d/20-intel.conf"
|
||||
cat > "$xpath/20-intel.conf" <<- EOF
|
||||
Section "Device"
|
||||
Identifier "Intel Graphics"
|
||||
Driver "intel"
|
||||
Option "TearFree" "true"
|
||||
EndSection
|
||||
EOF
|
||||
elif lspci | grep ' VGA ' | grep -q 'AMD/ATI.*RX\|AMD/ATI.*R[579]'; then # newer RX, R5, R7, and R9 cards can use the amdgpu driver
|
||||
echo "Creating AMD Tear Free config /etc/X11/xorg.conf.d/20-amdgpu.conf"
|
||||
cat > "$xpath/20-amdgpu.conf" <<- EOF
|
||||
Section "Device"
|
||||
Identifier "AMD Graphics"
|
||||
Driver "amdgpu"
|
||||
Option "TearFree" "true"
|
||||
EndSection
|
||||
EOF
|
||||
elif lspci | grep ' VGA ' | grep -q 'AMD/ATI.*HD [2-6][0-9]*'; then # older HD 2xxx-6xxx cards must use the radeon driver
|
||||
echo "Creating Radeon Tear Free config /etc/X11/xorg.conf.d/20-radeon.conf"
|
||||
cat > "$xpath/20-radeon.conf" <<- EOF
|
||||
Section "Device"
|
||||
Identifier "AMD Graphics"
|
||||
Driver "radeon"
|
||||
Option "TearFree" "on"
|
||||
EndSection
|
||||
EOF
|
||||
elif lspci | grep ' VGA ' | grep -q 'NVIDIA'; then # nvidia cards require a bit of checking for notebook gpus
|
||||
echo "Trying nvidia driver install"
|
||||
if lspci | grep ' VGA ' | grep -q 'Intel\|AMD' && lspci | grep ' VGA ' | grep -q 'NVIDIA.*[6-9][1-8][05]M[X]\?\|NVIDIA.*Quadro.*[KMP][1-6][0-2][0]*M'; then # optimus
|
||||
if [[ $xpath == *"$MNT"* ]]; then
|
||||
chrun "nvidia-installer --bumblebee"
|
||||
else
|
||||
printf "failed to clone %s repo\n" "$i"
|
||||
nvidia-installer --bumblebee
|
||||
fi
|
||||
done
|
||||
else
|
||||
mkdir -pv "$dir"
|
||||
for i in dwm dmenu st; do
|
||||
if git clone "https://git.suckless.org/$i" "$dir/$i"; then
|
||||
cd "$dir/$i" && make PREFIX=/usr install
|
||||
if [[ $xpath == *"$MNT"* ]]; then
|
||||
chrun "nvidia-installer" # unsure which card so try auto detection
|
||||
else
|
||||
printf "failed to clone %s repo\n" "$i"
|
||||
nvidia-installer
|
||||
fi
|
||||
done
|
||||
fi
|
||||
if [[ -e $xpath/20-nvidia.conf ]]; then
|
||||
echo "NVIDIA driver installed"
|
||||
if [[ $xpath == *"$MNT"* ]]; then
|
||||
echo "Trying to load the driver for live session"
|
||||
nvidia-smi -r
|
||||
fi
|
||||
echo "To enable driver vsync:"
|
||||
echo -e "\trun nvidia-settings (as root) on first boot\n\tenable 'ForceFullCompositionPipeline' under the advanced settings"
|
||||
echo -e "\tlastly save the change to your nvida xorg config /etc/X11/xorg.conf.d/20-nvidia.conf"
|
||||
echo -e "\tand remove everything but the Device and Screen sections from the file"
|
||||
else
|
||||
echo "Unable to install nvidia driver"
|
||||
fi
|
||||
return 0
|
||||
fi
|
||||
|
||||
# remove nvidia installer from installed system when not running nvidia gpu
|
||||
[[ $xpath == *"$MNT"* ]] && rm -rf "$MNT/usr/bin/nvidia-installer" "$MNT/var/lib/nvidia-installer"
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
@ -1543,17 +1597,17 @@ lightdm_config()
|
||||
|
||||
ly_config()
|
||||
{
|
||||
:
|
||||
: #TODO
|
||||
}
|
||||
|
||||
gdm_config()
|
||||
{
|
||||
:
|
||||
: #TODO
|
||||
}
|
||||
|
||||
sddm_config()
|
||||
{
|
||||
:
|
||||
: #TODO
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
@ -2182,32 +2236,41 @@ live()
|
||||
clear
|
||||
die 0
|
||||
elif ! net_connect; then
|
||||
msg "Not Connected" "\nRunning live requires an active internet connection.\n\nExiting..\n" 2
|
||||
msg "Not Connected" "\nRunning live requires an active internet connection to install packages.\n\nExiting..\n" 2
|
||||
die 1
|
||||
elif (( $(awk '/MemTotal/ {print int($2 / 1024)}' /proc/meminfo) < 2500)); then
|
||||
msg "Not Enough Memory" "\nRunning live requires at least 2.5G of system memory.\n\nExiting..\n" 2
|
||||
msg "Not Enough Memory" "\nLive session requires at least 2.5G of system memory for installing packages.\n\nExiting..\n" 2
|
||||
die 1
|
||||
else
|
||||
fi
|
||||
|
||||
clear
|
||||
echo "Sorting mirrorlist first"
|
||||
echo "Sorting mirrorlist"
|
||||
mount /run/archiso/cowspace -o remount,size=2G
|
||||
install_mirrorlist "/etc/pacman.d/mirrorlist"
|
||||
pacman -Syyu --noconfirm || die 1
|
||||
rm -rf "/var/cache/pacman/pkg/"*
|
||||
pacman -S $BASE_PKGS $AL_BASE_PKGS xorg-xinit --needed --noconfirm || die 1
|
||||
rm -rf "/var/cache/pacman/pkg/"*
|
||||
case "$ses" in
|
||||
i3-gaps|openbox|fluxbox|bspwm|awesome) pacman -S "$ses" $WM_BASE_PKGS ${WM_EXT[$ses]} --needed --noconfirm || die 1 ;;
|
||||
gnome|plasma|cinnamon|xfce4) pacman -S "$ses" ${WM_EXT[$ses]} --needed --noconfirm || die 1 ;;
|
||||
i3-gaps|openbox|fluxbox|bspwm|awesome|xfce4) pacman -S "$ses" $WM_BASE_PKGS ${WM_EXT[$ses]} --needed --noconfirm || die 1 ;;
|
||||
gnome|plasma|cinnamon) pacman -S "$ses" ${WM_EXT[$ses]} --needed --noconfirm || die 1 ;;
|
||||
dwm) { pacman -S git --needed --noconfirm || die 1; }; install_suckless "/root" nochroot ;;
|
||||
esac
|
||||
pamixer --unmute
|
||||
gtk-update-icon-cache /usr/share/icons/ArchLabs-Dark /usr/share/icons/ArchLabs-Light /usr/share/icons/ArchLabs
|
||||
rm -rf "/var/cache/pacman/pkg/"*
|
||||
[[ $VM ]] && dmesg | grep -qi 'vbox' && pacman -S virtualbox-guest-utils virtualbox-guest-modules-arch --needed --noconfirm
|
||||
pacman -Scc --noconfirm
|
||||
rm -rf "/var/cache/pacman/pkg/"*
|
||||
cp -rfT /etc/skel /root || die 1
|
||||
cp -rfT /etc/skel /root
|
||||
install_tearfree_conf "/etc/X11/xorg.conf.d"
|
||||
case "$ses" in
|
||||
plasma|gnome|cinnamon) sed -i '/super/d; /nitrogen/d; /compton/d' /root/.xprofile ;;
|
||||
dwm) sed -i '/super/d; /compton/d' /root/.xprofile ;;
|
||||
esac
|
||||
rm -f /root/.zlogin
|
||||
echo -e "pulseaudio &\n(sleep 1; pamixer --unmute --set-volume 50) &" >> /root/.xprofile
|
||||
sed -i "/exec/ c exec ${WM_SESSIONS[$ses]}" /root/.xinitrc
|
||||
printf "\n%s has been set as the login session in ~/.xinitrc, to start the session simply run\n\n\tstartx\n\n" "${WM_SESSIONS[$ses]}"
|
||||
die 0
|
||||
fi
|
||||
}
|
||||
|
||||
usage()
|
||||
@ -2238,6 +2301,12 @@ usage()
|
||||
|
||||
DIST='MyDistro' $1
|
||||
|
||||
root/boot partition:
|
||||
|
||||
set the ROOT_PART and/or BOOT_PART environment variables before launching the installer eg.
|
||||
|
||||
ROOT_PART='/dev/sda2' BOOT_PART='/dev/sda1' $1
|
||||
|
||||
editor used:
|
||||
|
||||
set the EDITOR environment variable before launching the installer eg.
|
||||
@ -2374,7 +2443,7 @@ net_connect()
|
||||
nmtui-connect
|
||||
fi
|
||||
chk_connect
|
||||
elif hash wifi-menu >dev/null 2>&1; then
|
||||
elif hash wifi-menu > /dev/null 2>&1; then
|
||||
wifi-menu
|
||||
chk_connect
|
||||
else
|
||||
@ -2423,7 +2492,7 @@ system_identify()
|
||||
|
||||
modprobe -q efivarfs > /dev/null 2>&1
|
||||
|
||||
_prep="\nOnce a step is finished a step you will be returned here, if the step was successful the cursor will be advanced to the next step.\nIf a step is unsuccessful the cursor will be placed on the step required to advance (when possible).\n\nTo begin the install you should have:\n\n - A root (/) partition mounted."
|
||||
_prep="\nOnce a step is finished a step you will be returned here, if the step was successful the cursor will be advanced to the next step.\nIf a step is unsuccessful the cursor will be placed on the step required to advance (when possible).\n\nSteps beginning with an asterix (*) are required before continuing.\n\nTo begin the install you should have:\n\n - A root (/) partition mounted."
|
||||
if [[ -d /sys/firmware/efi/efivars ]]; then
|
||||
export SYS="UEFI"
|
||||
grep -q /sys/firmware/efi/efivars /proc/mounts || mount -t efivarfs efivarfs /sys/firmware/efi/efivars
|
||||
@ -2448,21 +2517,26 @@ if (( UID != 0 )); then
|
||||
elif ! grep -qwm 1 'lm' /proc/cpuinfo; then
|
||||
msg "Not x86_64 Architecture" "\nThis installer only supports x86_64 architectures.\n\nExiting..\n" 2
|
||||
die 1
|
||||
else
|
||||
case "$1" in
|
||||
-d|--debug) debug ;;
|
||||
-h|--help) usage "$0" ;;
|
||||
-l|--live)
|
||||
case "$2" in
|
||||
gnome|cinnamon|dwm|plasma|xfce4|i3-gaps|openbox|fluxbox|bspwm|awesome) live "$2" ;;
|
||||
*) echo "error: invalid session for -l, --live, see -h, --help"; die 1 ;;
|
||||
esac ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# trap ^C to perform cleanup
|
||||
trap 'printf "\n^C\n" && die 1' INT
|
||||
|
||||
while getopts ":hl:d" OPT; do
|
||||
case "$OPT" in
|
||||
d) debug ;;
|
||||
h) usage "$0" ;;
|
||||
l)
|
||||
if [[ "${!WM_SESSIONS[@]}" =~ $OPTARG ]]; then
|
||||
live "$OPTARG"
|
||||
else
|
||||
echo "error: invalid session for -l, see -h for help"; die 1
|
||||
fi
|
||||
;;
|
||||
\?) echo "error: invalid option: -$OPTARG"; die 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
system_identify
|
||||
system_devices
|
||||
|
||||
@ -2474,8 +2548,6 @@ elif ! net_connect; then
|
||||
msg "Not Connected" "\nThis installer requires an active internet connection.\n\nExiting..\n" 2
|
||||
die 1
|
||||
fi
|
||||
EXMNTS=""
|
||||
FORMATTED=""
|
||||
|
||||
while :; do
|
||||
main
|
||||
|
Reference in New Issue
Block a user