Remove syslinux UEFI install

This commit is contained in:
natemaia 2018-12-16 15:45:46 -08:00
parent acef733eda
commit f53ddd904b
12 changed files with 179 additions and 260 deletions

View File

@ -17,7 +17,6 @@
- `dialog` for all user input/output. - `dialog` for all user input/output.
- `vim` for editing files post install. - `vim` for editing files post install.
- `parted` for partition creation. - `parted` for partition creation.
- `wipe` for the secure wipe.
- `arch-chroot` to perform operations in a chroot. - `arch-chroot` to perform operations in a chroot.
- `chpasswd` to set root and user passwords. - `chpasswd` to set root and user passwords.
- `awk` `sed` `grep` `uniq` `sort` `find` `ping` `mkfs` `lsblk` `curl` - `awk` `sed` `grep` `uniq` `sort` `find` `ping` `mkfs` `lsblk` `curl`

View File

@ -41,7 +41,7 @@ _ConfLocale="Language and Timezone"
# Select Config Files # Select Config Files
_EditTitle="Edit Files" _EditTitle="Edit Files"
_EditBody="\nBefore exiting the installer you may select configuration files to review/change." _EditBody="\nBefore exiting you can select configuration files from below to review/change.\n\nIf you need to make additional changes with the drives still mounted, use Ctrl-z to pause the installer and return to the terminal, when finished type 'fg' and Enter or Ctrl-z again to resume the installer."
# Close Installer # Close Installer
_CloseInst="Close Installer" _CloseInst="Close Installer"
@ -58,14 +58,14 @@ _TimeSubZBody="\nSelect the nearest city to your location from the list below."
_TimeZQ="\nSet time zone as:" _TimeZQ="\nSet time zone as:"
# bootloader # bootloader
_MntBootBody="\nSelect which bootloader you want to use, if you have a boot partition the mountpoint on the right will be used.\n\nSystemd-boot automatically detects other bootloaders and is recommended for multiboot, grub also does this however you will need to run 'grub-mkconfig' manually after first boot in order to detect other bootloaders and add menu entries for them." _MntBootBody="\nSelect which bootloader to use."
_InstSysTitle="Install Syslinux" _InstSysTitle="Install Syslinux"
_InstSysBody="\nInstall syslinux to the master boot record (MBR) or to root (/)?" _InstSysBody="\nInstall syslinux to the master boot record (MBR) or to root (/)?"
# mirrors # mirrors
_MirrorTitle="Setup Mirrorlist" _MirrorTitle="Setup Mirrorlist"
_MirrorSetup="\nWant the mirrorlist automatically sorted?\n\nThis will take longer but guarantees the fastest mirrors.\n" _MirrorSetup="\nWant the mirrorlist automatically sorted?\n\nThis will take longer but gets the fastest mirrors.\n"
_MirrorCmd="\nThe command below will be used to sort the mirrorlist, a short description of each option is provided, edit the command if needed.\n" _MirrorCmd="\nThe command below will be used to sort the mirrorlist, edit the command if needed.\n"
# window managers and packages # window managers and packages
_WMChoice="Select WMs or DEs" _WMChoice="Select WMs or DEs"
@ -154,7 +154,7 @@ _SelSwpNone="None"
_SelSwpErr="Swap Setup Error: Must be 1(M|G) or greater, and can only contain whole numbers\n\nSize Entered:" _SelSwpErr="Swap Setup Error: Must be 1(M|G) or greater, and can only contain whole numbers\n\nSize Entered:"
_SelSwpSize="\nEnter the size to use for swap in MB or GB.\n\nFor ease of use and as an example the size has been filled in to the size of your system memory (RAM).\n\nMust be greater than 1, end in either M or G, and contain only whole numbers." _SelSwpSize="\nEnter the size to use for swap in MB or GB.\n\nFor ease of use and as an example the size has been filled in to the size of your system memory (RAM).\n\nMust be greater than 1, end in either M or G, and contain only whole numbers."
_SelUefiBody="\nSelect the system EFI boot partition.\n\nThis is a special partition used for booting modern UEFI systems. It's usually the first partition on the drive, less than 512M, and will be formatted as vfat/fat32 if not already." _SelUefiBody="\nSelect the system EFI boot partition.\n\nThis is a required partition for booting UEFI systems. It's usually the first partition on the drive, less than 512M, and will be formatted as vfat/fat32 if not already."
_FormUefiBody="IMPORTANT:\n\nThe EFI partition" _FormUefiBody="IMPORTANT:\n\nThe EFI partition"
_FormBiosBody="IMPORTANT:\n\nThe boot partition" _FormBiosBody="IMPORTANT:\n\nThe boot partition"
_FormUefiBody2="is already formatted as vfat/fat32.\n\nFor a clean install, previously existing partitions should be reformatted, however this removes ALL data (bootloaders) on the partition so choose carefully.\n\nDo you want to reformat the partition?\n" _FormUefiBody2="is already formatted as vfat/fat32.\n\nFor a clean install, previously existing partitions should be reformatted, however this removes ALL data (bootloaders) on the partition so choose carefully.\n\nDo you want to reformat the partition?\n"

View File

@ -10,7 +10,7 @@
# immutable globals # immutable globals
readonly VER="1.7.40" # Installer version readonly VER="1.7.43" # Installer version
readonly DIST="ArchLabs" # Linux distributor readonly DIST="ArchLabs" # Linux distributor
readonly MNT="/mnt" # Install mountpoint readonly MNT="/mnt" # Install mountpoint
readonly ERR="/tmp/errlog" # Built-in error log readonly ERR="/tmp/errlog" # Built-in error log
@ -18,13 +18,13 @@ readonly DBG="/tmp/debuglog" # Built-in error log
main() main()
{ {
if [[ $CURRENT_MENU != "main" ]]; then if [[ $CURRENT_MENU != "main" && $SAVED ]]; then
SELECTED=1
CURRENT_MENU="main" CURRENT_MENU="main"
if [[ $SAVED ]]; then
SELECTED=$((SAVED + 1)) SELECTED=$((SAVED + 1))
unset SAVED unset SAVED
fi elif [[ $CURRENT_MENU != "main" ]]; then
SELECTED=1
CURRENT_MENU="main"
elif (( SELECTED < 8 )); then elif (( SELECTED < 8 )); then
((SELECTED++)) # increment the highlighted menu item ((SELECTED++)) # increment the highlighted menu item
fi fi
@ -33,20 +33,18 @@ main()
SELECTED=$(dialog --cr-wrap --stdout --backtitle "$BT" \ SELECTED=$(dialog --cr-wrap --stdout --backtitle "$BT" \
--title " $_PrepTitle " --default-item $SELECTED \ --title " $_PrepTitle " --default-item $SELECTED \
--cancel-label "Exit" --menu "$_PrepBody" 0 0 0 \ --cancel-label "Exit" --menu "$_PrepBody" 0 0 0 \
"1" "$_PrepShowDev" "2" "$_PrepParts" \ "1" "$_PrepShowDev" \
"3" "$_PrepLUKS" "4" "$_PrepLVM" \ "2" "$_PrepParts" \
"5" "$_PrepMount" "6" "$_PrepConfig" \ "3" "$_PrepLUKS" \
"7" "Check Choices" "8" "$_PrepInstall") "4" "$_PrepLVM" \
"5" "$_PrepMount" \
"6" "$_PrepConfig" \
"7" "Check Choices" \
"8" "$_PrepInstall")
if [[ $SELECTED ]]; then if [[ $WARN != true && $SELECTED =~ (2|5) ]]; then
if (( SELECTED == 8 )); then
preinstall_checks 1 || return 1
elif (( SELECTED == 6 )); then
preinstall_checks || return 1
elif [[ $WARN != true ]] && (( SELECTED == 2 || SELECTED == 5 )); then
msgbox "$_PrepTitle" "$_WarnMount"
WARN=true WARN=true
fi msgbox "$_PrepTitle" "$_WarnMount"
fi fi
case $SELECTED in case $SELECTED in
@ -55,9 +53,9 @@ main()
3) luks_menu || SELECTED=$((SELECTED - 1)) ;; 3) luks_menu || SELECTED=$((SELECTED - 1)) ;;
4) lvm_menu || SELECTED=$((SELECTED - 1)) ;; 4) lvm_menu || SELECTED=$((SELECTED - 1)) ;;
5) mnt_menu || SELECTED=$((SELECTED - 1)) ;; 5) mnt_menu || SELECTED=$((SELECTED - 1)) ;;
6) cfg_menu || SELECTED=$((SELECTED - 1)) ;; 6) preinstall_checks && { cfg_menu || SELECTED=$((SELECTED - 1)); } ;;
7) show_cfg ;; 7) show_cfg ;;
8) install ;; 8) preinstall_checks 1 && install ;;
*) yesno "$_CloseInst" "$_CloseInstBody" "Exit" "Back" && die *) yesno "$_CloseInst" "$_CloseInstBody" "Exit" "Back" && die
esac esac
} }

View File

@ -19,14 +19,13 @@ declare -Ag BMNTS=(
[BIOS-grub]="/boot" [BIOS-grub]="/boot"
[UEFI-grub]="/boot/efi" [UEFI-grub]="/boot/efi"
[BIOS-syslinux]="/boot" [BIOS-syslinux]="/boot"
[UEFI-syslinux]="/boot"
[UEFI-systemd-boot]="/boot" [UEFI-systemd-boot]="/boot"
) )
# bootloader options with respective boot partition mountpoint # bootloader options with respective boot partition mountpoint
declare -Ag BOOTLDRS=( declare -Ag BOOTLDRS=(
[BIOS]="grub ${BMNTS[BIOS-grub]} syslinux ${BMNTS[BIOS-syslinux]}" [BIOS]="grub ${BMNTS[BIOS-grub]} syslinux ${BMNTS[BIOS-syslinux]}"
[UEFI]="systemd-boot ${BMNTS[UEFI-systemd-boot]} grub ${BMNTS[UEFI-grub]} syslinux ${BMNTS[UEFI-syslinux]}" [UEFI]="systemd-boot ${BMNTS[UEFI-systemd-boot]} grub ${BMNTS[UEFI-grub]}"
) )
setup_boot() setup_boot()
@ -58,16 +57,10 @@ setup_grub()
luks_pass "$_LuksOpen" "$ROOT_PART" || return 1 luks_pass "$_LuksOpen" "$ROOT_PART" || return 1
fi fi
if [[ $IS_64BIT == true ]]; then
local ttype='x86_64-efi'
else
local ttype="i386-efi"
fi
# the mount mess is needed for os-prober to work properly in the chroot # the mount mess is needed for os-prober to work properly in the chroot
BCMDS[grub]="mkdir -p /run/udev && mkdir -p /run/lvm && BCMDS[grub]="mkdir -p /run/udev && mkdir -p /run/lvm &&
mount --bind /hostrun/udev /run/udev && mount --bind /hostrun/lvm /run/lvm && mount --bind /hostrun/udev /run/udev && mount --bind /hostrun/lvm /run/lvm &&
${BCMDS[grub]} --target=$ttype --efi-directory=${BMNTS[UEFI-grub]} --bootloader-id=$DIST && ${BCMDS[grub]} --efi-directory=${BMNTS[UEFI-grub]} --bootloader-id=$DIST &&
grub-mkconfig -o /boot/grub/grub.cfg && grub-mkconfig -o /boot/grub/grub.cfg &&
umount /run/udev && umount /run/lvm" umount /run/udev && umount /run/lvm"
fi fi
@ -77,17 +70,7 @@ setup_grub()
setup_syslinux() setup_syslinux()
{ {
if [[ $SYS == 'BIOS' ]]; then
EDIT_FILES[9]="/boot/syslinux/syslinux.cfg" EDIT_FILES[9]="/boot/syslinux/syslinux.cfg"
if ! BCMDS[syslinux]="$(menubox "$_InstSysTitle" "$_InstSysBody" 0 0 0 \
"syslinux-install_update -iam" "Install to MBR (Master Boot Record)" \
"syslinux-install_update -i" "Install to root partition (/)")"; then
return 1
fi
else
EDIT_FILES[9]="/boot/EFI/syslinux/syslinux.cfg"
BCMDS[syslinux]="efibootmgr -c -d $BOOT_DEVICE -p $BOOT_PART_NUM -l /EFI/syslinux/syslinux.efi -L $DIST"
fi
} }
setup_systemd-boot() setup_systemd-boot()
@ -148,13 +131,13 @@ prerun_systemd-boot()
[[ $ROOT_PART =~ /dev/mapper ]] || ROOT_PART_ID="PART$ROOT_PART_ID" [[ $ROOT_PART =~ /dev/mapper ]] || ROOT_PART_ID="PART$ROOT_PART_ID"
# create the boot entry configs # create the boot entry configs
mkdir -p ${MNT}${BMNTS[$SYS-$BOOTLDR]}/loader/entries mkdir -p ${MNT}${BMNTS[$SYS-systemd-boot]}/loader/entries
cat > ${MNT}${BMNTS[$SYS-$BOOTLDR]}/loader/loader.conf << EOF cat > ${MNT}${BMNTS[$SYS-systemd-boot]}/loader/loader.conf << EOF
default $DIST default $DIST
timeout 5 timeout 5
editor no editor no
EOF EOF
cat > ${MNT}${BMNTS[$SYS-$BOOTLDR]}/loader/entries/${DIST}.conf << EOF cat > ${MNT}${BMNTS[$SYS-systemd-boot]}/loader/entries/${DIST}.conf << EOF
title $DIST Linux title $DIST Linux
linux /vmlinuz-${KERNEL}$([[ $UCODE ]] && printf "\ninitrd %s" "/${UCODE}.img") linux /vmlinuz-${KERNEL}$([[ $UCODE ]] && printf "\ninitrd %s" "/${UCODE}.img")
initrd /initramfs-$KERNEL.img initrd /initramfs-$KERNEL.img
@ -180,17 +163,9 @@ EOF
prerun_syslinux() prerun_syslinux()
{ {
if [[ $SYS == 'UEFI' ]]; then mkdir -pv $MNT${BMNTS[$SYS-syslinux]}/syslinux
local cfgdir="${MNT}${BMNTS[$SYS-$BOOTLDR]}/EFI/syslinux" cp -rfv /usr/lib/syslinux/bios/* $MNT${BMNTS[$SYS-syslinux]}/syslinux/
local cfgsrcdir="/usr/lib/syslinux/efi32"
[[ $IS_64BIT == true ]] && cfgsrcdir="/usr/lib/syslinux/efi64/"
else
local cfgdir="$MNT${BMNTS[$SYS-$BOOTLDR]}/syslinux"
local cfgsrcdir="/usr/lib/syslinux/bios"
fi
mkdir -p $cfgdir
cp -rf $cfgsrcdir/* $cfgdir/
cat > $cfgdir/syslinux.cfg << EOF cat > $cfgdir/syslinux.cfg << EOF
UI menu.c32 UI menu.c32
PROMPT 0 PROMPT 0
@ -217,11 +192,7 @@ EOF
install_bootloader() install_bootloader()
{ {
if ! [[ $ROOT_PART =~ /dev/mapper ]]; then if ! [[ $ROOT_PART =~ /dev/mapper ]]; then
if [[ $BOOTLDR == 'syslinux' ]]; then
ROOT_PART_ID="UUID=$(blkid -s UUID -o value $ROOT_PART)"
else
ROOT_PART_ID="UUID=$(blkid -s PARTUUID -o value $ROOT_PART)" ROOT_PART_ID="UUID=$(blkid -s PARTUUID -o value $ROOT_PART)"
fi
else else
# for LVM we just use the partition label # for LVM we just use the partition label
ROOT_PART_ID="$ROOT_PART" ROOT_PART_ID="$ROOT_PART"
@ -232,7 +203,7 @@ install_bootloader()
# remove old UEFI boot entries # remove old UEFI boot entries
if [[ $SYS == 'UEFI' ]]; then if [[ $SYS == 'UEFI' ]]; then
find ${MNT}${BMNTS[$SYS-$BOOTLDR]}/EFI/ \ find ${MNT}${BMNTS[UEFI-$BOOTLDR]}/EFI/ \
-maxdepth 1 -mindepth 1 -name '[aA][rR][cC][hH][lL]abs' \ -maxdepth 1 -mindepth 1 -name '[aA][rR][cC][hH][lL]abs' \
-type d -exec rm -rf '{}' \; >/dev/null 2>&1 -type d -exec rm -rf '{}' \; >/dev/null 2>&1
fi fi
@ -249,7 +220,7 @@ install_bootloader()
fi fi
# copy efi stub to generic catch all # copy efi stub to generic catch all
if [[ $SYS == 'UEFI' && ($BOOTLDR == 'grub' || $BOOTLDR == 'syslinux') ]]; then if [[ $SYS == 'UEFI' && $BOOTLDR == 'grub' ]]; then
uefi_boot_fallback uefi_boot_fallback
fi fi
@ -260,36 +231,24 @@ uefi_boot_fallback()
{ {
# some UEFI firmware requires a dir in the ESP with a generic bootx64.efi # some UEFI firmware requires a dir in the ESP with a generic bootx64.efi
# see: https://wiki.archlinux.org/index.php/GRUB#UEFI # see: https://wiki.archlinux.org/index.php/GRUB#UEFI
# also: https://wiki.archlinux.org/index.php/syslinux#UEFI_Systems
local esp="${MNT}${BMNTS[$SYS-$BOOTLDR]}" local esp="${MNT}${BMNTS[UEFI-grub]}"
local default="boot" local default="boot"
default="$(find $esp/EFI/ -maxdepth 1 -mindepth 1 -name '[Bb][oO][oO][tT]' -type d)" default="$(find $esp/EFI/ -maxdepth 1 -mindepth 1 -name '[Bb][oO][oO][tT]' -type d)"
default="$(basename $default)" default="$(basename $default)"
if [[ -d $esp/EFI/$default ]]; then if [[ -d $esp/EFI/$default ]]; then
rm -rf $esp/EFI/$default/* rm -rfv $esp/EFI/$default/*
else else
mkdir -p $esp/EFI/$default mkdir -pv $esp/EFI/$default
fi fi
if [[ $BOOTLDR == 'syslinux' ]]; then cp -fv $esp/EFI/$DIST/grubx64.efi $esp/EFI/$default/bootx64.efi
cp -rf $esp/EFI/syslinux/* $esp/EFI/$default/
cp -f $esp/EFI/syslinux/syslinux.efi $esp/EFI/$default/bootx64.efi
elif [[ $BOOTLDR == 'grub' && $IS_64BIT == true ]]; then
cp -f $esp/EFI/$DIST/grubx64.efi $esp/EFI/$default/bootx64.efi
elif [[ $BOOTLDR == 'grub' ]]; then
cp -f $esp/EFI/$DIST/grubia32.efi $esp/EFI/$default/bootia32.efi
fi
return 0 return 0
} }
shim_secure_boot() shim_secure_boot()
{ {
# still a W.I.P efibootmgr -c -w -L $DIST -d $BOOT_DEVICE -p $BOOT_PART_NUM -l ${MNT}${BMNTS[$SYS-$BOOTLDR]}/shim64.efi
local shim_file="shim.efi"
[[ $IS_64BIT == true ]] && shim_file="shim64.efi"
efibootmgr -c -w -L $DIST -d $BOOT_DEVICE -p $BOOT_PART_NUM -l ${MNT}${BMNTS[$SYS-$BOOTLDR]}/$shim_file
return 0
} }

View File

@ -164,13 +164,18 @@ select_language()
{ {
tput civis tput civis
local lang local lang
local title="\nLanguage - sprache - taal - språk - lingua - idioma - nyelv - língua\n" lang=$(menubox "Select Language" \
lang=$(menubox "Select Language" "$title" 0 0 0 \ "\nLanguage - sprache - taal - språk - lingua - idioma - nyelv - língua\n" 0 0 0 \
"1" "English (en_**)" "2" "Español (es_ES)" \ "1" "English (en_**)" \
"3" "Português [Brasil] (pt_BR)" "4" "Português (pt_PT)" \ "2" "Español (es_ES)" \
"5" "Français (fr_FR)" "6" "Russkiy (ru_RU)" \ "3" "Português [Brasil] (pt_BR)" \
"7" "Italiano (it_IT)" "8" "Nederlands (nl_NL)" \ "4" "Português (pt_PT)" \
"9" "Magyar (hu_HU)" "10" "Chinese (zh_CN)") "5" "Français (fr_FR)" \
"6" "Russkiy (ru_RU)" \
"7" "Italiano (it_IT)" \
"8" "Nederlands (nl_NL)" \
"9" "Magyar (hu_HU)" \
"10" "Chinese (zh_CN)")
local srcdir="/usr/share/archlabs/installer/lang" local srcdir="/usr/share/archlabs/installer/lang"
src $srcdir/english.trans src $srcdir/english.trans
@ -395,11 +400,18 @@ select_packages()
fi fi
tput civis tput civis
SELECTED=$(dialog --cr-wrap --stdout --backtitle "$BT" --title " $_Packages " \ SELECTED=$(dialog --cr-wrap --stdout --backtitle "$BT" \
--default-item $SELECTED --menu "$_PackageMenu" 0 0 0 \ --title " $_Packages " --default-item $SELECTED \
"1" "Browsers" "2" "Editors" "3" "Terminals" \ --menu "$_PackageMenu" 0 0 0 \
"4" "Multimedia" "5" "Chat/Mail" "6" "Professional" \ "1" "Browsers" \
"7" "System" "8" "Miscellaneous" "9" "$_Done") "2" "Editors" \
"3" "Terminals" \
"4" "Multimedia" \
"5" "Chat/Mail" \
"6" "Professional" \
"7" "System" \
"8" "Miscellaneous" \
"9" "$_Done")
if [[ $SELECTED -lt 9 ]]; then if [[ $SELECTED -lt 9 ]]; then
case $SELECTED in case $SELECTED in
@ -488,11 +500,19 @@ edit_configs()
fi fi
SELECTED=$(dialog --cr-wrap --stdout --backtitle "$BT" \ SELECTED=$(dialog --cr-wrap --stdout --backtitle "$BT" \
--title " $_EditTitle " --default-item $SELECTED --menu "$_EditBody" 0 0 0 \ --title " $_EditTitle " --default-item $SELECTED \
"1" "$exitstr" "2" "${EDIT_FILES[2]}" "3" "${EDIT_FILES[3]}" \ --menu "$_EditBody" 0 0 0 \
"4" "${EDIT_FILES[4]}" "5" "${EDIT_FILES[5]}" "6" "${EDIT_FILES[6]}" \ "1" "$exitstr" \
"7" "${EDIT_FILES[7]}" "8" "${EDIT_FILES[8]}" "9" "${EDIT_FILES[9]}" \ "2" "${EDIT_FILES[2]}" \
"10" "${EDIT_FILES[10]}" "11" "${EDIT_FILES[11]}") "3" "${EDIT_FILES[3]}" \
"4" "${EDIT_FILES[4]}" \
"5" "${EDIT_FILES[5]}" \
"6" "${EDIT_FILES[6]}" \
"7" "${EDIT_FILES[7]}" \
"8" "${EDIT_FILES[8]}" \
"9" "${EDIT_FILES[9]}" \
"10" "${EDIT_FILES[10]}" \
"11" "${EDIT_FILES[11]}")
if [[ ! $SELECTED || $SELECTED -eq 1 ]]; then if [[ ! $SELECTED || $SELECTED -eq 1 ]]; then
[[ $DEBUG == true && -r $DBG ]] && vim $DBG [[ $DEBUG == true && -r $DBG ]] && vim $DBG

View File

@ -23,7 +23,6 @@ install()
oneshot install_base oneshot install_base
# generate /etc/fstab and touch it up if we used a swapfile # generate /etc/fstab and touch it up if we used a swapfile
printf "\n\n"
genfstab -U $MNT > $MNT/etc/fstab 2>$ERR genfstab -U $MNT > $MNT/etc/fstab 2>$ERR
echeck "genfstab -U $MNT > $MNT/etc/fstab" echeck "genfstab -U $MNT > $MNT/etc/fstab"
[[ -f $MNT/swapfile ]] && sed -i "s~${MNT}~~" $MNT/etc/fstab [[ -f $MNT/swapfile ]] && sed -i "s~${MNT}~~" $MNT/etc/fstab
@ -57,43 +56,30 @@ install()
install_base() install_base()
{ {
# compressed image?
if [[ -e /run/archiso/sfs/airootfs/etc/skel ]]; then if [[ -e /run/archiso/sfs/airootfs/etc/skel ]]; then
printf "\n\nUnpacking base system --- Total: ~ 2.6G\n\n" printf "\n\nUnpacking base system --- Total: ~ 2.6G\n"
rsync -ah --info=progress2 /run/archiso/sfs/airootfs/ $MNT/ rsync -ah --info=progress2 /run/archiso/sfs/airootfs/ $MNT/
else else
# update the mirrorlist.. MUST be done before pacstrapping or it may be slow
oneshot mirrorlist_sort oneshot mirrorlist_sort
printf "\nPacstrapping the base system.\n\n"
local vmpkgs local vmpkgs
if [[ $VM && $KERNEL == 'linux-lts' ]]; then if [[ $VM && $KERNEL == 'linux-lts' ]]; then
vmpkgs="virtualbox-guest-utils virtualbox-guest-dkms linux-lts-headers" vmpkgs="virtualbox-guest-utils virtualbox-guest-dkms linux-lts-headers"
elif [[ $VM && $KERNEL == 'linux' ]]; then elif [[ $VM && $KERNEL == 'linux' ]]; then
vmpkgs="virtualbox-guest-utils virtualbox-guest-modules-arch" vmpkgs="virtualbox-guest-utils virtualbox-guest-modules-arch"
fi fi
local packages local packages
packages="$(grep -hv '^#' /usr/share/archlabs/installer/packages.txt)" packages="$(grep -hv '^#' /usr/share/archlabs/installer/packages.txt)"
pacstrap $MNT base $KERNEL $UCODE $packages $vmpkgs pacstrap $MNT base $KERNEL $UCODE $packages $vmpkgs
fi fi
# remove archiso init files and clean up install files
rm -rf $MNT/etc/mkinitcpio-archiso.conf rm -rf $MNT/etc/mkinitcpio-archiso.conf
find $MNT/usr/lib/initcpio -name 'archiso*' -type f -exec rm '{}' \; find $MNT/usr/lib/initcpio -name 'archiso*' -type f -exec rm '{}' \;
# journal
sed -i 's/volatile/auto/g' $MNT/etc/systemd/journald.conf sed -i 's/volatile/auto/g' $MNT/etc/systemd/journald.conf
# allow members of group 'wheel' to execute sudo commands
sed -i "s/# %wheel ALL=(ALL) ALL/%wheel ALL=(ALL) ALL/g" $MNT/etc/sudoers sed -i "s/# %wheel ALL=(ALL) ALL/%wheel ALL=(ALL) ALL/g" $MNT/etc/sudoers
if [[ $VM ]]; then if [[ $VM ]]; then
# in a VM remove xorg configs, these cause issues rm -rfv $MNT/etc/X11/xorg.conf.d/*?.conf
rm -rf $MNT/etc/X11/xorg.conf.d
elif [[ $(lspci | grep ' VGA ' | grep 'Intel') != "" ]]; then elif [[ $(lspci | grep ' VGA ' | grep 'Intel') != "" ]]; then
# xorg config for intel, this should never happen in a VM
cat > $MNT/etc/X11/xorg.conf.d/20-intel.conf <<EOF cat > $MNT/etc/X11/xorg.conf.d/20-intel.conf <<EOF
Section "Device" Section "Device"
Identifier "Intel Graphics" Identifier "Intel Graphics"
@ -104,22 +90,15 @@ EOF
fi fi
if [[ -e /run/archiso/sfs/airootfs ]]; then if [[ -e /run/archiso/sfs/airootfs ]]; then
# copy the kernel image for the regular kernel [[ $KERNEL != 'linux-lts' ]] && cp -vf $RUN/x86_64/vmlinuz $MNT/boot/vmlinuz-linux
[[ $KERNEL != 'linux-lts' ]] && cp -f $RUN/x86_64/vmlinuz $MNT/boot/vmlinuz-linux [[ $UCODE && ! $VM ]] && cp -vf $RUN/${UCODE/-/_}.img $MNT/boot/${UCODE}.img
# copy CPU micro-code if set. manufacturer_ucode.img -> manufacturer-ucode.img
[[ $UCODE ]] && cp -f $RUN/${UCODE/-/_}.img $MNT/boot/${UCODE}.img
fi fi
# copy network settings
if [[ -e /etc/NetworkManager/system-connections ]]; then if [[ -e /etc/NetworkManager/system-connections ]]; then
cp -rf /etc/NetworkManager/system-connections $MNT/etc/NetworkManager/ cp -rvf /etc/NetworkManager/system-connections $MNT/etc/NetworkManager/
fi fi
cp -f /etc/resolv.conf $MNT/etc/ cp -fv /etc/resolv.conf $MNT/etc/
# set the locale
printf "\n\n"
cat > $MNT/etc/locale.conf << EOF cat > $MNT/etc/locale.conf << EOF
LANG=$LOCALE LANG=$LOCALE
EOF EOF
@ -127,18 +106,15 @@ EOF
LANG=$LOCALE LANG=$LOCALE
EOF EOF
sed -i "s/#en_US.UTF-8/en_US.UTF-8/g; s/#${LOCALE}/${LOCALE}/g" $MNT/etc/locale.gen sed -i "s/#en_US.UTF-8/en_US.UTF-8/g; s/#${LOCALE}/${LOCALE}/g" $MNT/etc/locale.gen
chrun "locale-gen" 2>/dev/null chrun "echo && locale-gen" 2>/dev/null
# set the timezone chrun "ln -svf /usr/share/zoneinfo/$ZONE/$SUBZONE /etc/localtime" 2>/dev/null
chrun "ln -sf /usr/share/zoneinfo/$ZONE/$SUBZONE /etc/localtime" 2>/dev/null
if [[ $BROADCOM_WL == true ]]; then if [[ $BROADCOM_WL == true ]]; then
echo 'blacklist bcma' >> $MNT/etc/modprobe.d/blacklist.conf echo 'blacklist bcma' >> $MNT/etc/modprobe.d/blacklist.conf
rm -f $MNT/etc/modprobe/ rm -f $MNT/etc/modprobe/
fi fi
# set the keymaps
mkdir -p $MNT/etc/X11/xorg.conf.d
cat > $MNT/etc/X11/xorg.conf.d/00-keyboard.conf <<EOF cat > $MNT/etc/X11/xorg.conf.d/00-keyboard.conf <<EOF
# Use localectl(1) to instruct systemd-localed to update it. # Use localectl(1) to instruct systemd-localed to update it.
Section "InputClass" Section "InputClass"
@ -156,16 +132,10 @@ XKBVARIANT=""
XKBOPTIONS="" XKBOPTIONS=""
BACKSPACE="guess" BACKSPACE="guess"
EOF EOF
# console keymap
cat > $MNT/etc/vconsole.conf <<EOF cat > $MNT/etc/vconsole.conf <<EOF
KEYMAP=$CMAP KEYMAP=$CMAP
FONT=$FONT FONT=$FONT
EOF EOF
# set the hostname
cat > $MNT/etc/hostname << EOF cat > $MNT/etc/hostname << EOF
$HOSTNAME $HOSTNAME
EOF EOF
@ -186,7 +156,7 @@ create_user()
if [[ $MYSHELL != *zsh ]]; then if [[ $MYSHELL != *zsh ]]; then
chrun "usermod -s $MYSHELL root" chrun "usermod -s $MYSHELL root"
cp -f $MNT/etc/skel/.mkshrc /root/.mkshrc cp -fv $MNT/etc/skel/.mkshrc /root/.mkshrc
fi fi
local groups='audio,autologin,floppy,log,network,rfkill,scanner,storage,optical,power,wheel' local groups='audio,autologin,floppy,log,network,rfkill,scanner,storage,optical,power,wheel'
@ -201,8 +171,8 @@ create_user()
# for neovim set up ~/.config/nvim # for neovim set up ~/.config/nvim
if [[ $PACKAGES =~ neovim ]]; then if [[ $PACKAGES =~ neovim ]]; then
mkdir -p $MNT/home/$NEWUSER/.config/nvim mkdir -p $MNT/home/$NEWUSER/.config/nvim
cp -f $MNT/home/$NEWUSER/.vimrc $MNT/home/$NEWUSER/.config/nvim/init.vim cp -fv $MNT/home/$NEWUSER/.vimrc $MNT/home/$NEWUSER/.config/nvim/init.vim
cp -rf $MNT/home/$NEWUSER/.vim/colors $MNT/home/$NEWUSER/.config/nvim/colors cp -rfv $MNT/home/$NEWUSER/.vim/colors $MNT/home/$NEWUSER/.config/nvim/colors
fi fi
[[ $INSTALL_WMS =~ dwm ]] && suckless_install [[ $INSTALL_WMS =~ dwm ]] && suckless_install
@ -313,9 +283,6 @@ run_mkinitcpio()
local add="" local add=""
# setup a keyfile for LUKS.. Only when choosing grub and system is UEFI # setup a keyfile for LUKS.. Only when choosing grub and system is UEFI
if [[ $LUKS && ! $LVM && $SYS == 'UEFI' && $BOOTLDR == 'grub' ]]; then if [[ $LUKS && ! $LVM && $SYS == 'UEFI' && $BOOTLDR == 'grub' ]]; then
if [[ $LUKS_PASS ]]; then
luks_pass "$_LuksOpen" "$LUKS_NAME" || return 1
fi
luks_keyfile luks_keyfile
fi fi

View File

@ -9,8 +9,8 @@
# shellcheck disable=2154,2034 # shellcheck disable=2154,2034
declare -g LVM="" declare -g LVM=""
declare -g GROUP_PARTS=""
declare -g VOL_GROUP_MB=0 declare -g VOL_GROUP_MB=0
declare -g GROUP_PARTS=0
lvm_detect() lvm_detect()
{ {

View File

@ -8,7 +8,9 @@
# shellcheck disable=2154,2153,2046,2034 # shellcheck disable=2154,2153,2046,2034
readonly SYS_MEM="$(awk '/MemTotal/ {print int($2 / 1024)"M"}' /proc/meminfo)" readonly SYS_MEM="$(awk '/MemTotal/ {
print int($2 / 1024)"M"
}' /proc/meminfo)"
readonly LOCALES="$(awk '/\.UTF-8/ { readonly LOCALES="$(awk '/\.UTF-8/ {
gsub(/# .*|#/, "") gsub(/# .*|#/, "")
@ -121,19 +123,44 @@ select_mount_opts()
select_filesystem() select_filesystem()
{ {
local part="$1" local part="$1"
local fs cur_fs str title local fs
local cur_fs
cur_fs="$(lsblk -lno FSTYPE $part)" cur_fs="$(lsblk -lno FSTYPE $part)"
str="$([[ $cur_fs && $part != "$ROOT_PART" ]] && printf "\nExisting Filesystem: %s" "$cur_fs")"
local title="\nSelect which filesystem you want to use for $part\n\nPartition Name: "
tput civis tput civis
title="\nSelect which filesystem you want to use for $part\n\nPartition Name: " if [[ $cur_fs && $part != "$ROOT_PART" ]]; then
fs="$(menubox "$_FSTitle: $part" "${title}${part}${str}$_FSBody" 0 0 0 \ fs="$(menubox "$_FSTitle: $part" \
$([[ $cur_fs && $part != "$ROOT_PART" ]] && printf "%s" "$_Skip -") \ "${title}${part}\nExisting Filesystem: ${cur_fs}$_FSBody" 0 0 0 \
"ext4" "${FS_CMDS[ext4]}" "ext3" "${FS_CMDS[ext3]}" \ "$_Skip" "-" \
"ext2" "${FS_CMDS[ext2]}" "vfat" "${FS_CMDS[vfat]}" \ "ext4" "${FS_CMDS[ext4]}" \
"ntfs" "${FS_CMDS[ntfs]}" "f2fs" "${FS_CMDS[f2fs]}" \ "ext3" "${FS_CMDS[ext3]}" \
"jfs" "${FS_CMDS[jfs]}" "nilfs2" "${FS_CMDS[nilfs2]}" \ "ext2" "${FS_CMDS[ext2]}" \
"reiserfs" "${FS_CMDS[reiserfs]}" "xfs" "${FS_CMDS[xfs]}")" "vfat" "${FS_CMDS[vfat]}" \
"ntfs" "${FS_CMDS[ntfs]}" \
"f2fs" "${FS_CMDS[f2fs]}" \
"jfs" "${FS_CMDS[jfs]}" \
"nilfs2" "${FS_CMDS[nilfs2]}" \
"reiserfs" "${FS_CMDS[reiserfs]}" \
"xfs" "${FS_CMDS[xfs]}")"
else
fs="$(menubox "$_FSTitle: $part" \
"${title}${part}$_FSBody" 0 0 0 \
"ext4" "${FS_CMDS[ext4]}" \
"ext3" "${FS_CMDS[ext3]}" \
"ext2" "${FS_CMDS[ext2]}" \
"vfat" "${FS_CMDS[vfat]}" \
"ntfs" "${FS_CMDS[ntfs]}" \
"f2fs" "${FS_CMDS[f2fs]}" \
"jfs" "${FS_CMDS[jfs]}" \
"nilfs2" "${FS_CMDS[nilfs2]}" \
"reiserfs" "${FS_CMDS[reiserfs]}" \
"xfs" "${FS_CMDS[xfs]}")"
fi
[[ $fs == "$_Skip" ]] && return 0 || { [[ $fs == "" ]] && return 1; } [[ $fs == "$_Skip" ]] && return 0 || { [[ $fs == "" ]] && return 1; }
if yesno "$_FSTitle" "\nFormat $part as $fs?\n" "Format" "Go Back"; then if yesno "$_FSTitle" "\nFormat $part as $fs?\n" "Format" "Go Back"; then
@ -141,6 +168,7 @@ select_filesystem()
else else
select_filesystem $part || return 1 select_filesystem $part || return 1
fi fi
return 0 return 0
} }
@ -150,16 +178,15 @@ select_efi_partition()
if (( COUNT == 1 )); then if (( COUNT == 1 )); then
BOOT_PART="$(awk 'NF > 0 {print $1}' <<< "$PARTS")" BOOT_PART="$(awk 'NF > 0 {print $1}' <<< "$PARTS")"
infobox "$_PrepMount" "$_OnlyOne for EFI: $BOOT_PART\n" 1 infobox "$_PrepMount" "$_OnlyOne for EFI: $BOOT_PART\n" 1
else elif ! BOOT_PART="$(menubox "$_PrepMount" "$_SelUefiBody" 0 0 0 $PARTS)"; then
if ! BOOT_PART="$(menubox "$_PrepMount" "$_SelUefiBody" 0 0 0 $PARTS)"; then
return 1 return 1
fi fi
fi
if grep -q 'fat' <<< "$(fsck -N "$BOOT_PART")"; then if grep -q 'fat' <<< "$(fsck -N "$BOOT_PART")"; then
local msg="$_FormUefiBody $BOOT_PART $_FormUefiBody2" local msg="$_FormUefiBody $BOOT_PART $_FormUefiBody2"
yesno "$_PrepMount" "$msg" "Format $BOOT_PART" "Do Not Format" "no" && if yesno "$_PrepMount" "$msg" "Format $BOOT_PART" "Do Not Format" "no"; then
format "$BOOT_PART" "vfat" format "$BOOT_PART" "vfat"
fi
else else
format "$BOOT_PART" "vfat" format "$BOOT_PART" "vfat"
fi fi
@ -189,8 +216,12 @@ select_root_partition()
ROOT_PART="/dev/mapper/$LUKS_NAME" ROOT_PART="/dev/mapper/$LUKS_NAME"
decr_count "$LUKS_PART" decr_count "$LUKS_PART"
elif [[ $LVM ]]; then elif [[ $LVM ]]; then
[[ $LUKS ]] && decr_count "$LUKS_PART" if [[ $LUKS ]]; then
for part in $(printf "%s" "$GROUP_PARTS"); do decr_count "$part"; done decr_count "$LUKS_PART"
fi
for part in $(printf "%s" "$GROUP_PARTS"); do
decr_count "$part"
done
ROOT_PART="" ROOT_PART=""
fi fi
@ -203,8 +234,7 @@ select_root_partition()
return 1 return 1
fi fi
else else
local msg="\nUsing${LUKS} root partition:" # $LUKS might just be an empty string infobox "$_PrepMount" "\nUsing${LUKS} root partition: $ROOT_PART\n" 1
infobox "$_PrepMount" "$msg $ROOT_PART\n" 1
fi fi
select_filesystem "$ROOT_PART" || { ROOT_PART=""; return 1; } select_filesystem "$ROOT_PART" || { ROOT_PART=""; return 1; }
@ -219,17 +249,17 @@ select_extra_partitions()
local part local part
if ! part="$(menubox "$_PrepMount " "$_ExtPartBody" 0 0 0 "$_Done" "-" $PARTS)" || [[ $part == "$_Done" ]]; then if ! part="$(menubox "$_PrepMount " "$_ExtPartBody" 0 0 0 "$_Done" "-" $PARTS)" || [[ $part == "$_Done" ]]; then
break break
elif ! select_filesystem "$part"; then
break
return 1
elif ! select_mountpoint; then
break
return 1
elif ! mount_partition "$part" "$EXTRA_MNT"; then
break
return 1
fi fi
# choose what filesystem and get the mountpoint
select_filesystem "$part" || { break; return 1; }
select_mountpoint || { break; return 1; }
# mount it
mount_partition "$part" "$EXTRA_MNT" || { break; return 1; }
EXTRA_MNTS="$EXTRA_MNTS $part: $EXTRA_MNT" EXTRA_MNTS="$EXTRA_MNTS $part: $EXTRA_MNT"
# if the mountpoint was /usr add 'usr' to MKINIT_HOOKS
[[ $EXTRA_MNT == "/usr" && $MKINIT_HOOKS != *usr* ]] && MKINIT_HOOKS="usr $MKINIT_HOOKS" [[ $EXTRA_MNT == "/usr" && $MKINIT_HOOKS != *usr* ]] && MKINIT_HOOKS="usr $MKINIT_HOOKS"
done done

View File

@ -8,22 +8,24 @@
# shellcheck disable=2154,2153,2046,2034 # shellcheck disable=2154,2153,2046,2034
# package extras
# if you add a package to $PACKAGES in any dialog and it uses or requires some # PKG_EXT: if you add a package to $PACKAGES in any dialog
# additional packages, you can add them here to keep it simple for the end user # and it uses/requires some additional packages,
# you can add them here to keep it simple: [package]="extra"
# duplicates are removed with `uniq` before install
declare -gA PKG_EXT=( declare -gA PKG_EXT=(
[vlc]="qt4" [vlc]="qt4"
[mpd]="mpc" [mpd]="mpc"
[mupdf]="mupdf-tools" [mupdf]="mupdf-tools"
[qt5ct]="qt5-styleplugins" [qt5ct]="qt5-styleplugins"
[zathura]="zathura-pdf-poppler"
[cairo-dock]="cairo-dock-plug-ins"
[noto-fonts]="noto-fonts-emoji"
[kdenlive]="kdebase-runtime dvdauthor frei0r-plugins breeze breeze-gtk"
[vlc]="qt5ct qt5-styleplugins" [vlc]="qt5ct qt5-styleplugins"
[kdenlive]="qt5ct qt5-styleplugins" # duplicates are stripped with `uniq` later [zathura]="zathura-pdf-poppler"
[noto-fonts]="noto-fonts-emoji"
[cairo-dock]="cairo-dock-plug-ins"
[kdenlive]="qt5ct qt5-styleplugins"
[qbittorrent]="qt5ct qt5-styleplugins" [qbittorrent]="qt5ct qt5-styleplugins"
[qutebrowser]="qt5ct qt5-styleplugins" [qutebrowser]="qt5ct qt5-styleplugins"
[kdenlive]="kdebase-runtime dvdauthor frei0r-plugins breeze breeze-gtk"
) )
select_browsers() select_browsers()

View File

@ -203,8 +203,7 @@ auto_partition()
{ {
local device="$1" local device="$1"
local size local size
size=$(lsblk -lno SIZE $device | size=$(lsblk -lno SIZE $device | awk 'NR == 1 {
awk 'NR == 1 {
if ($1 ~ "G") { if ($1 ~ "G") {
sub(/G/, ""); print ($1 * 1000 - 512) / 1000"G" sub(/G/, ""); print ($1 * 1000 - 512) / 1000"G"
} else { } else {
@ -212,14 +211,14 @@ auto_partition()
} }
}') }')
if [[ $SYS == 'BIOS' ]]; then
local msg="$(sed 's|vfat/fat32|ext4|' <<< "$_PartBody2")"
local table="msdos"
local fs="ext4"
else
local msg="$_PartBody2" local msg="$_PartBody2"
local table="gpt" local table="gpt"
local fs="fat32"; local fs="fat32";
if [[ $SYS == 'BIOS' ]]; then
msg="$(sed 's|vfat/fat32|ext4|' <<< "$msg")"
table="msdos"
fs="ext4"
fi fi
# confirm or bail # confirm or bail
@ -231,10 +230,9 @@ auto_partition()
dev_info="$(parted -s $device print)" dev_info="$(parted -s $device print)"
# walk the partitions on the device in reverse order and delete them # walk the partitions on the device in reverse order and delete them
# shellcheck disable=2013 while read -r i; do
for i in $(awk '/^ [1-9][0-9]?/ {print $1}' <<< "$dev_info" | sort -r); do
parted -s $device rm $i >/dev/null 2>&1 parted -s $device rm $i >/dev/null 2>&1
done done <<< "$(awk '/^ [1-9][0-9]?/ {print $1}' <<< "$dev_info" | sort -r)"
if [[ $(awk '/Table:/ {print $3}' <<< "$dev_info") != "$table" ]]; then if [[ $(awk '/Table:/ {print $3}' <<< "$dev_info") != "$table" ]]; then
parted -s $device mklabel $table >/dev/null 2>&1 parted -s $device mklabel $table >/dev/null 2>&1
@ -338,4 +336,5 @@ find_partitions()
fi fi
return 0 return 0
} }

View File

@ -129,7 +129,6 @@ system_devices()
system_identify() system_identify()
{ {
declare -g IS_64BIT=false
local efidir="/sys/firmware/efi" local efidir="/sys/firmware/efi"
if grep -q 'GenuineIntel' /proc/cpuinfo; then if grep -q 'GenuineIntel' /proc/cpuinfo; then
@ -146,8 +145,6 @@ system_identify()
if [[ -d $efidir ]]; then if [[ -d $efidir ]]; then
SYS="UEFI" SYS="UEFI"
[[ $(cat $efidir/fw_platform_size) == 64 ]] && IS_64BIT=true
if ! grep -q $efidir/efivars <<< "$(mount)"; then if ! grep -q $efidir/efivars <<< "$(mount)"; then
mount -t efivarfs efivarfs $efidir/efivars mount -t efivarfs efivarfs $efidir/efivars
fi fi

View File

@ -1,68 +1,35 @@
# base # base
acpid
arch-install-scripts arch-install-scripts
b43-firmware b43-firmware
b43-fwcutter b43-fwcutter
bridge-utils
broadcom-wl broadcom-wl
btrfs-progs
clonezilla clonezilla
crda
darkhttpd
ddrescue
dhclient dhclient
dhcpcd dhcpcd
dmidecode
dmraid
dnsmasq
dnsutils
ethtool ethtool
exfat-utils exfat-utils
f2fs-tools f2fs-tools
fakeroot fakeroot
fsarchiver
gnu-netcat
gpm
gptfdisk gptfdisk
grub grub
vim vim
hdparm hdparm
ipw2100-fw ipw2100-fw
ipw2200-fw ipw2200-fw
irssi
laptop-detect laptop-detect
lftp
lsscsi
mtools
ndisc6
nfs-utils nfs-utils
nilfs-utils nilfs-utils
nmap
ntfs-3g ntfs-3g
openconnect
openssh
openvpn
pacman-contrib pacman-contrib
partclone
parted parted
partimage
ppp
pptpclient
refind-efi refind-efi
rp-pppoe
rsync rsync
sdparm sdparm
sg3_utils
smartmontools smartmontools
sudo sudo
tcpdump
testdisk
usb_modeswitch
vpnc
wget wget
wireless_tools wireless_tools
wpa_actiond wpa_actiond
wvdial
xl2tpd xl2tpd
# xorg # xorg
@ -72,10 +39,8 @@ xorg-drivers
xorg-server xorg-server
xorg-xinit xorg-xinit
# installer # install
dialog
os-prober os-prober
wipe
# codecs # codecs
alsa-firmware alsa-firmware
@ -94,7 +59,6 @@ pulseaudio-alsa
# xfce # xfce
xfce4-settings xfce4-settings
xfce4-power-manager xfce4-power-manager
gtk-engines
gtk-engine-murrine gtk-engine-murrine
# network # network
@ -108,13 +72,9 @@ gvfs-afc
gvfs-mtp gvfs-mtp
gvfs-nfs gvfs-nfs
tumbler tumbler
xdg-user-dirs-gtk
# utilities # utilities
gnome-keyring gnome-keyring
imagemagick
jsoncpp
libmpdclient
lm_sensors lm_sensors
lsb-release lsb-release
numlockx numlockx
@ -129,31 +89,19 @@ volumeicon
wmctrl wmctrl
xclip xclip
xdotool xdotool
zenity
# applications # applications
arandr arandr
compton compton
dunst dunst
feh feh
file-roller
gparted
gsimplecal gsimplecal
htop htop
mpv
nitrogen nitrogen
pavucontrol pavucontrol
ranger ranger
w3m w3m
xterm
# default WM
openbox
# fonts # fonts
terminus-font terminus-font
ttf-roboto ttf-dejavu
ttf-ubuntu-font-family
# archlabs
archlabs_unstable/archlabs