Large cleanup.

- Merge pacstrap and copy iso code path, most of it was the same.

- Use systemd-detect-virt for VM detection instead of dmesg hacks.

- Add AMD microcode back to the install process *(still not sure if it's
actually needed)*.

- Make sure cryptsetup is installed for when using pacstrap.

- Remove signal file if we've reached the background bit, the output
from pacman is better *(and maybe faster)* when running in the
foreground.

- General cleanup.
This commit is contained in:
natemaia 2020-05-02 23:25:41 -07:00
parent 3aac0aeaf8
commit 87ffbdcb42

View File

@ -7,7 +7,7 @@
# shellcheck disable=SC2086,SC2046,SC2254
VER=2.1.39
VER=2.1.40
# default values {
@ -23,9 +23,9 @@ BG=/tmp/bgout # output from background process
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
EXMNTS="" # extra partitions that were mounted, used to verify mountpoint and show user
USER_CMD="" # optional command(s) entered by the user to run in the chroot
VM="$(systemd-detect-virt)" # system running in a virtual machine
export DIALOGOPTS="--cr-wrap" # dialog environment variable to hold default options, see `man dialog`
@ -1499,22 +1499,22 @@ install_base()
clear
tput cnorm
if [[ $BG_PID ]] && kill -0 $BG_PID 2> /dev/null; then
[[ -e /tmp/wmlist ]] && rm /tmp/wmlist
printf "\nA background install process is still running, tailing the output...\n"
tail -f --pid=$BG_PID "$BG"
trap - EXIT
unset BG_PID
fi
if [[ $PACSTRAP == 1 ]]; then
if (( PACSTRAP )); then
cp -vf /etc/modprobe.d/* "$MNT/etc/modprobe.d/"
cp -vf /etc/X11/xorg.conf.d/* "$MNT/etc/X11/xorg.conf.d/"
# we have some customizations in /etc on the iso we want to preserve
if [[ $DIST == "ArchLabs" ]]; then
cp -vf /etc/dialogrc "$MNT/etc/dialogrc"
cp -vf /etc/os-release "$MNT/etc/os-release"
cp -vf /etc/lsb-release "$MNT/etc/lsb-release"
cp -vf /etc/skel/.zshrc "$MNT/etc/skel/.zshrc"
cp -vf /etc/pacman.conf "$MNT/etc/pacman.conf"
cp -vf /etc/modprobe.d/* "$MNT/etc/modprobe.d/"
cp -vf /etc/X11/xorg.conf.d/* "$MNT/etc/X11/xorg.conf.d/"
fi
else
# remove archiso files when copying iso
@ -1789,10 +1789,10 @@ install_packages()
errshow 1 "chrun 'pacman -S efibootmgr --needed --noconfirm'"
fi
if [[ $VM ]] && dmesg | grep -qi 'vbox'; then
if [[ $VM == 'oracle' ]]; then
case "$KERNEL" in
linux) chrun "pacman -S virtualbox-guest-utils virtualbox-guest-modules-arch --needed --noconfirm" ;;
*) chrun "pacman -S virtualbox-guest-utils virtualbox-guest-modules-dkms ${KERNEL}-headers --needed --noconfirm" ;;
*) chrun "pacman -S ${KERNEL}-headers virtualbox-guest-utils virtualbox-guest-modules-dkms --needed --noconfirm" ;;
esac
fi
@ -1829,7 +1829,7 @@ install_tearfree()
{
local xpath="$1"
if [[ $VM ]]; then
if [[ $VM != 'none' ]]; then
echo "Virtual machine detected, removing xorg configs"
find "$xpath/" -name '*.conf' -delete -printf "remove %p\n"
elif [[ $TEARFREE ]]; then
@ -1956,37 +1956,44 @@ install_mirrorlist()
install_background()
{
local net="networkmanager"
[[ ! -d /etc/NetworkManager/system-connections ]] && net="netctl"
local luks net="networkmanager"
[[ ! -d /etc/NetworkManager/system-connections ]] && net="netctl"
[[ $LUKS ]] && luks="cryptsetup"
yesno "Background Install" "$_bginstall" "Pacstrap" "Copy ISO" || PACSTRAP=0
if yesno "Background Install" "$_bginstall" "Pacstrap" "Copy ISO"; then
(
install_mirrorlist "/etc/pacman.d/mirrorlist" > /tmp/bgout 2>&1 &&
pacman -Syy >> /tmp/bgout 2>&1 &&
pacstrap /mnt base ${ISO_PKGS[*]} $net >> /tmp/bgout 2>&1 &&
cp /etc/pacman.d/mirrorlist "$MNT/etc/pacman.d/mirrorlist" &&
cp /etc/pacman.conf "$MNT/etc/pacman.conf" &&
al_repo "$MNT/etc/pacman.conf" &&
[[ $net == "networkmanager" ]] && chrun "systemctl enable NetworkManager.service" >> /tmp/bgout 2>&1
[[ -e /tmp/wmlist ]] && chrun "pacman -S ${BASE_PKGS[*]} --noconfirm --needed" >> /tmp/bgout 2>&1
) &
BG_PID=$!
PACSTRAP=1
install_mirrorlist "/etc/pacman.d/mirrorlist" > /tmp/bgout 2>&1
if (( PACSTRAP )); then
pacstrap /mnt >> /tmp/bgout 2>&1
else
(
rsync -avh /run/archiso/sfs/airootfs/ "$MNT/" > /tmp/bgout 2>&1 &&
install_mirrorlist "/etc/pacman.d/mirrorlist" >> /tmp/bgout 2>&1 &&
pacman -Syy >> /tmp/bgout 2>&1 &&
cp /etc/pacman.d/mirrorlist "$MNT/etc/pacman.d/mirrorlist" &&
cp /etc/pacman.conf "$MNT/etc/pacman.conf" &&
al_repo "$MNT/etc/pacman.conf" &&
chrun "pacman -Syyu $net --noconfirm --needed" >> /tmp/bgout 2>&1 &&
[[ $net == "networkmanager" ]] && chrun "systemctl enable NetworkManager.service" >> /tmp/bgout 2>&1
[[ -e /tmp/wmlist ]] && chrun "pacman -S ${BASE_PKGS[*]} --noconfirm --needed" >> /tmp/bgout 2>&1
) &
BG_PID=$!
PACSTRAP=0
rsync -avh /run/archiso/sfs/airootfs/ "$MNT/" >> /tmp/bgout 2>&1
fi
pacman -Sy >> /tmp/bgout 2>&1
cp /etc/pacman.conf "$MNT/etc/pacman.conf"
cp /etc/pacman.d/mirrorlist "$MNT/etc/pacman.d/mirrorlist"
al_repo "$MNT/etc/pacman.conf"
if (( PACSTRAP )); then
chrun "pacman -S ${ISO_PKGS[*]} $net $luks --noconfirm --needed" >> /tmp/bgout 2>&1
else
chrun "pacman -Syyu $net --noconfirm --needed" >> /tmp/bgout 2>&1
fi
if [[ $net == "networkmanager" ]]; then
chrun "systemctl enable NetworkManager.service" >> /tmp/bgout 2>&1
else
chrun "systemctl enable netctl.service" >> /tmp/bgout 2>&1
fi
if [[ -e /tmp/wmlist ]]; then
chrun "pacman -S ${BASE_PKGS[*]} --noconfirm --needed" >> /tmp/bgout 2>&1
fi
) &
BG_PID=$!
# shellcheck disable=SC2064
trap "kill $BG_PID 2> /dev/null" EXIT
}
@ -2720,7 +2727,7 @@ live()
dwm) { pacman -S git --needed --noconfirm || die 1; }; install_suckless "/root" nochroot ;;
esac
rm -rf /var/cache/pacman/pkg/*
[[ $VM ]] && dmesg | grep -qi 'vbox' && pacman -S virtualbox-guest-utils virtualbox-guest-modules-arch --needed --noconfirm
[[ $VM == 'oracle' ]] && 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
@ -2925,7 +2932,7 @@ umount_dir()
chk_connect()
{
msg "Network Connect" "\nVerifying network connection\n" 0
if [[ $VM ]] && hash nm-online > /dev/null 2>&1; then
if [[ $VM != 'none' ]] && hash nm-online > /dev/null 2>&1; then
nm-online > /dev/null 2>&1
else
ping -qc1 'archlinux.org' > /dev/null 2>&1
@ -2988,11 +2995,10 @@ system_devices()
system_identify()
{
if [[ $VM ]]; then
if [[ $VM != 'none' ]]; then
UCODE=''
# amd-ucode is not needed it's provided by linux-firmware
# elif grep -q 'AuthenticAMD' /proc/cpuinfo; then
# UCODE="amd-ucode"
elif grep -q 'AuthenticAMD' /proc/cpuinfo; then
UCODE="amd-ucode"
elif grep -q 'GenuineIntel' /proc/cpuinfo; then
UCODE="intel-ucode"
fi