progressbar on mkinitcpio running

This commit is contained in:
Tobias Powalowski 2023-08-06 10:33:28 +02:00
parent 38cb2f401d
commit b58c3eb0ae

View file

@ -186,6 +186,38 @@ _auto_bash(){
fi
}
_auto_hwdetect() {
# check on framebuffer modules and kms FBPARAMETER
grep -q "^radeon" /proc/modules && _FBPARAMETER="--ati-kms"
grep -q "^amdgpu" /proc/modules && _FBPARAMETER="--amd-kms"
grep -q "^i915" /proc/modules && _FBPARAMETER="--intel-kms"
grep -q "^nouveau" /proc/modules && _FBPARAMETER="--nvidia-kms"
# check on nfs and keymap HWPARAMETER
# check on used keymap, if not us keyboard layout
! grep -q '^KEYMAP="us"' "${_DESTDIR}"/etc/vconsole.conf && _HWPARAMETER="${_HWPARAMETER} --keymap"
_progress "33" "Preconfiguring mkinitcpio settings on installed system..."
# get kernel version
if [[ "${_RUNNING_ARCH}" == "x86_64" ]]; then
offset="$(od -An -j0x20E -dN2 "${_DESTDIR}/boot/${_VMLINUZ}")"
read -r _HWKVER _ < <(dd if="${_DESTDIR}/boot/${_VMLINUZ}" bs=1 count=127 skip=$((offset + 0x200)) 2>"${_LOG}")
elif [[ "${_RUNNING_ARCH}" == "aarch64" || "${_RUNNING_ARCH}" == "riscv64" ]]; then
reader="cat"
# try if the image is gzip compressed
bytes="$(od -An -t x2 -N2 "${_DESTDIR}/boot/${_VMLINUZ}" | tr -dc '[:alnum:]')"
[[ $bytes == '8b1f' ]] && reader="zcat"
read -r _ _ _HWKVER _ < <($reader "${_DESTDIR}/boot/${_VMLINUZ}" | grep -m1 -aoE 'Linux version .(\.[-[:alnum:]]+)+')
fi
_progress "66" "Preconfiguring mkinitcpio settings on installed system..."
# arrange MODULES for mkinitcpio.conf
_HWDETECTMODULES="$(hwdetect --kernel_directory="${_DESTDIR}" --kernel_version="${_HWKVER}" --hostcontroller --filesystem ${_FBPARAMETER})"
# arrange HOOKS for mkinitcpio.conf
_HWDETECTHOOKS="$(hwdetect --kernel_directory="${_DESTDIR}" --kernel_version="${_HWKVER}" --rootdevice="${_ROOTDEV}" --hooks-dir="${_DESTDIR}"/usr/lib/initcpio/install "${_HWPARAMETER}" --hooks)"
# change mkinitcpio.conf
[[ -n "${_HWDETECTMODULES}" ]] && sed -i -e "s/^MODULES=.*/${_HWDETECTMODULES}/g" "${_DESTDIR}"/etc/mkinitcpio.conf
[[ -n "${_HWDETECTHOOKS}" ]] && sed -i -e "s/^HOOKS=.*/${_HWDETECTHOOKS}/g" "${_DESTDIR}"/etc/mkinitcpio.conf
_progress "100" "Preconfiguring mkinitcpio settings on installed system..."
}
_auto_mkinitcpio() {
_FBPARAMETER=""
_HWPARAMETER=""
@ -199,33 +231,8 @@ _auto_mkinitcpio() {
if lsmod | grep -q ^nfs; then
_dialog --defaultno --yesno "Setup detected nfs driver...\nDo you need support for booting from nfs shares?" 0 0 && _HWPARAMETER="${_HWPARAMETER} --nfs"
fi
_dialog --no-mouse --infobox "Preconfiguring mkinitcpio settings on installed system..." 3 70
# check on framebuffer modules and kms FBPARAMETER
grep -q "^radeon" /proc/modules && _FBPARAMETER="--ati-kms"
grep -q "^amdgpu" /proc/modules && _FBPARAMETER="--amd-kms"
grep -q "^i915" /proc/modules && _FBPARAMETER="--intel-kms"
grep -q "^nouveau" /proc/modules && _FBPARAMETER="--nvidia-kms"
# check on nfs and keymap HWPARAMETER
# check on used keymap, if not us keyboard layout
! grep -q '^KEYMAP="us"' "${_DESTDIR}"/etc/vconsole.conf && _HWPARAMETER="${_HWPARAMETER} --keymap"
# get kernel version
if [[ "${_RUNNING_ARCH}" == "x86_64" ]]; then
offset="$(od -An -j0x20E -dN2 "${_DESTDIR}/boot/${_VMLINUZ}")"
read -r _HWKVER _ < <(dd if="${_DESTDIR}/boot/${_VMLINUZ}" bs=1 count=127 skip=$((offset + 0x200)) 2>"${_NO_LOG}")
elif [[ "${_RUNNING_ARCH}" == "aarch64" || "${_RUNNING_ARCH}" == "riscv64" ]]; then
reader="cat"
# try if the image is gzip compressed
bytes="$(od -An -t x2 -N2 "${_DESTDIR}/boot/${_VMLINUZ}" | tr -dc '[:alnum:]')"
[[ $bytes == '8b1f' ]] && reader="zcat"
read -r _ _ _HWKVER _ < <($reader "${_DESTDIR}/boot/${_VMLINUZ}" | grep -m1 -aoE 'Linux version .(\.[-[:alnum:]]+)+')
fi
# arrange MODULES for mkinitcpio.conf
_HWDETECTMODULES="$(hwdetect --kernel_directory="${_DESTDIR}" --kernel_version="${_HWKVER}" --hostcontroller --filesystem ${_FBPARAMETER})"
# arrange HOOKS for mkinitcpio.conf
_HWDETECTHOOKS="$(hwdetect --kernel_directory="${_DESTDIR}" --kernel_version="${_HWKVER}" --rootdevice="${_ROOTDEV}" --hooks-dir="${_DESTDIR}"/usr/lib/initcpio/install "${_HWPARAMETER}" --hooks)"
# change mkinitcpio.conf
[[ -n "${_HWDETECTMODULES}" ]] && sed -i -e "s/^MODULES=.*/${_HWDETECTMODULES}/g" "${_DESTDIR}"/etc/mkinitcpio.conf
[[ -n "${_HWDETECTHOOKS}" ]] && sed -i -e "s/^HOOKS=.*/${_HWDETECTHOOKS}/g" "${_DESTDIR}"/etc/mkinitcpio.conf
_dialog --no-mouse --infobox "" 3 70
_auto_hwdetect | _dialog --title " Logging to ${_LOG} " --gauge "Preconfiguring mkinitcpio settings on installed system..." 8 75 0
# disable fallpack preset
sed -i -e "s# 'fallback'##g" "${_DESTDIR}"/etc/mkinitcpio.d/*.preset
# remove fallback initramfs