mirror of
https://gitlab.archlinux.org/tpowa/archboot.git
synced 2024-09-19 19:40:37 +02:00
add progressbar to quicksetup
This commit is contained in:
parent
618db70c48
commit
adbdd8a4ca
1 changed files with 53 additions and 40 deletions
|
@ -1,6 +1,58 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# SPDX-License-Identifier: GPL-2.0-only
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
# created by Tobias Powalowski <tpowa@archlinux.org>
|
# created by Tobias Powalowski <tpowa@archlinux.org>
|
||||||
|
_auto_partition() {
|
||||||
|
sleep 2
|
||||||
|
_progress "10" "Cleaning ${_DISK}..."
|
||||||
|
_clean_disk "${_DISK}"
|
||||||
|
# we assume a /dev/sdX,/dev/vdX or /dev/nvmeXnY format
|
||||||
|
if [[ -n "${_GUIDPARAMETER}" ]]; then
|
||||||
|
# GPT (GUID) is supported only by 'parted' or 'sgdisk'
|
||||||
|
# create fresh GPT
|
||||||
|
sgdisk --clear "${_DISK}" &>"${_NO_LOG}"
|
||||||
|
# create actual partitions
|
||||||
|
_progress "20" "Creating partitions ..."
|
||||||
|
sgdisk --new="${_GPT_BIOS_GRUB_DEV_NUM}":0:+"${_GPT_BIOS_GRUB_DEV_SIZE}"M --typecode="${_GPT_BIOS_GRUB_DEV_NUM}":EF02 --change-name="${_GPT_BIOS_GRUB_DEV_NUM}":BIOS_GRUB "${_DISK}" >"${_LOG}"
|
||||||
|
if [[ -n "${_UEFI_BOOT}" ]]; then
|
||||||
|
_progress "25" "Creating partitions ..."
|
||||||
|
sgdisk --new="${_UEFISYSDEV_NUM}":0:+"${_UEFISYSDEV_SIZE}"M --typecode="${_UEFISYSDEV_NUM}":EF00 --change-name="${_UEFISYSDEV_NUM}":EFI_SYSTEM "${_DISK}" >"${_LOG}"
|
||||||
|
fi
|
||||||
|
if [[ -n "${_UEFISYS_BOOTDEV}" ]]; then
|
||||||
|
# set the legacy BIOS boot 2bit attribute
|
||||||
|
_progress "40" "Creating partitions ..."
|
||||||
|
sgdisk --attributes="${_UEFISYSDEV_NUM}":set:2 "${_DISK}" >"${_LOG}"
|
||||||
|
else
|
||||||
|
_progress "40" "Creating partitions ..."
|
||||||
|
sgdisk --new="${_BOOTDEV_NUM}":0:+"${_BOOTDEV_SIZE}"M --typecode="${_BOOTDEV_NUM}":EA00 --attributes="${_BOOTDEV_NUM}":set:2 --change-name="${_BOOTDEV_NUM}":ARCH_LINUX_XBOOT "${_DISK}" >"${_LOG}"
|
||||||
|
fi
|
||||||
|
_progress "55" "Creating partitions ..."
|
||||||
|
sgdisk --new="${_SWAPDEV_NUM}":0:+"${_SWAPDEV_SIZE}"M --typecode="${_SWAPDEV_NUM}":8200 --change-name="${_SWAPDEV_NUM}":ARCH_LINUX_SWAP "${_DISK}" >"${_LOG}"
|
||||||
|
[[ "${_RUNNING_ARCH}" == "aarch64" ]] && _GUID_TYPE=8305
|
||||||
|
[[ "${_RUNNING_ARCH}" == "x86_64" ]] && _GUID_TYPE=8304
|
||||||
|
_progress "70" "Creating partitions ..."
|
||||||
|
sgdisk --new="${_ROOTDEV_NUM}":0:+"${_ROOTDEV_SIZE}"M --typecode="${_ROOTDEV_NUM}":"${_GUID_TYPE}" --change-name="${_ROOTDEV_NUM}":ARCH_LINUX_ROOT "${_DISK}" >"${_LOG}"
|
||||||
|
_progress "85" "Creating partitions ..."
|
||||||
|
sgdisk --new="${_HOMEDEV_NUM}":0:0 --typecode="${_HOMEDEV_NUM}":8302 --change-name="${_HOMEDEV_NUM}":ARCH_LINUX_HOME "${_DISK}" >"${_LOG}"
|
||||||
|
_progress "100" "Creating partitions ..."
|
||||||
|
sgdisk --print "${_DISK}" >"${_LOG}"
|
||||||
|
else
|
||||||
|
# start at sector 1 for 4k drive compatibility and correct alignment
|
||||||
|
# create DOS MBR with parted
|
||||||
|
_progress "20" "Creating partitions ..."
|
||||||
|
parted -a optimal -s "${_DISK}" unit MiB mktable msdos &>"${_NO_LOG}"
|
||||||
|
_progress "35" "Creating partitions ..."
|
||||||
|
parted -a optimal -s "${_DISK}" unit MiB mkpart primary 1 $((_BOOTDEV_SIZE)) >"${_LOG}"
|
||||||
|
_progress "50" "Creating partitions ..."
|
||||||
|
parted -a optimal -s "${_DISK}" unit MiB set 1 boot on >"${_LOG}"
|
||||||
|
_progress "60" "Creating partitions ..."
|
||||||
|
parted -a optimal -s "${_DISK}" unit MiB mkpart primary $((_BOOTDEV_SIZE)) $((_BOOTDEV_SIZE+_SWAPDEV_SIZE)) >"${_LOG}"
|
||||||
|
_progress "85" "Creating partitions ..."
|
||||||
|
parted -a optimal -s "${_DISK}" unit MiB mkpart primary $((_BOOTDEV_SIZE+_SWAPDEV_SIZE)) $((_BOOTDEV_SIZE+_SWAPDEV_SIZE+_ROOTDEV_SIZE)) >"${_LOG}"
|
||||||
|
_progress "100" "Creating partitions ..."
|
||||||
|
parted -a optimal -s "${_DISK}" unit MiB mkpart primary $((_BOOTDEV_SIZE+_SWAPDEV_SIZE+_ROOTDEV_SIZE)) "$(sgdisk -E "${_DISK}" | grep "^[0-9]")S" >"${_LOG}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
_autoprepare() {
|
_autoprepare() {
|
||||||
# check on special devices and stop them, else weird things can happen during partitioning!
|
# check on special devices and stop them, else weird things can happen during partitioning!
|
||||||
_stopluks
|
_stopluks
|
||||||
|
@ -199,46 +251,7 @@ _autoprepare() {
|
||||||
_umountall
|
_umountall
|
||||||
# disable swap and all mounted partitions, umount / last!
|
# disable swap and all mounted partitions, umount / last!
|
||||||
_printk off
|
_printk off
|
||||||
_dialog --no-mouse --infobox "Partitioning ${_DISK}..." 0 0
|
_auto_partition | _dialog --title " Partitioning " --no-mouse --gauge "Partitioning ${_DISK}..." 6 75 0
|
||||||
_clean_disk "${_DISK}"
|
|
||||||
# we assume a /dev/sdX,/dev/vdX or /dev/nvmeXnY format
|
|
||||||
if [[ -n "${_GUIDPARAMETER}" ]]; then
|
|
||||||
# GPT (GUID) is supported only by 'parted' or 'sgdisk'
|
|
||||||
# create fresh GPT
|
|
||||||
sgdisk --clear "${_DISK}" &>"${_NO_LOG}"
|
|
||||||
# create actual partitions
|
|
||||||
sgdisk --new="${_GPT_BIOS_GRUB_DEV_NUM}":0:+"${_GPT_BIOS_GRUB_DEV_SIZE}"M --typecode="${_GPT_BIOS_GRUB_DEV_NUM}":EF02 --change-name="${_GPT_BIOS_GRUB_DEV_NUM}":BIOS_GRUB "${_DISK}" >"${_LOG}"
|
|
||||||
if [[ -n "${_UEFI_BOOT}" ]]; then
|
|
||||||
sgdisk --new="${_UEFISYSDEV_NUM}":0:+"${_UEFISYSDEV_SIZE}"M --typecode="${_UEFISYSDEV_NUM}":EF00 --change-name="${_UEFISYSDEV_NUM}":EFI_SYSTEM "${_DISK}" >"${_LOG}"
|
|
||||||
fi
|
|
||||||
if [[ -n "${_UEFISYS_BOOTDEV}" ]]; then
|
|
||||||
# set the legacy BIOS boot 2bit attribute
|
|
||||||
sgdisk --attributes="${_UEFISYSDEV_NUM}":set:2 "${_DISK}" >"${_LOG}"
|
|
||||||
else
|
|
||||||
sgdisk --new="${_BOOTDEV_NUM}":0:+"${_BOOTDEV_SIZE}"M --typecode="${_BOOTDEV_NUM}":EA00 --attributes="${_BOOTDEV_NUM}":set:2 --change-name="${_BOOTDEV_NUM}":ARCH_LINUX_XBOOT "${_DISK}" >"${_LOG}"
|
|
||||||
fi
|
|
||||||
sgdisk --new="${_SWAPDEV_NUM}":0:+"${_SWAPDEV_SIZE}"M --typecode="${_SWAPDEV_NUM}":8200 --change-name="${_SWAPDEV_NUM}":ARCH_LINUX_SWAP "${_DISK}" >"${_LOG}"
|
|
||||||
[[ "${_RUNNING_ARCH}" == "aarch64" ]] && _GUID_TYPE=8305
|
|
||||||
[[ "${_RUNNING_ARCH}" == "x86_64" ]] && _GUID_TYPE=8304
|
|
||||||
sgdisk --new="${_ROOTDEV_NUM}":0:+"${_ROOTDEV_SIZE}"M --typecode="${_ROOTDEV_NUM}":"${_GUID_TYPE}" --change-name="${_ROOTDEV_NUM}":ARCH_LINUX_ROOT "${_DISK}" >"${_LOG}"
|
|
||||||
sgdisk --new="${_HOMEDEV_NUM}":0:0 --typecode="${_HOMEDEV_NUM}":8302 --change-name="${_HOMEDEV_NUM}":ARCH_LINUX_HOME "${_DISK}" >"${_LOG}"
|
|
||||||
sgdisk --print "${_DISK}" >"${_LOG}"
|
|
||||||
else
|
|
||||||
# start at sector 1 for 4k drive compatibility and correct alignment
|
|
||||||
# create DOS MBR with parted
|
|
||||||
parted -a optimal -s "${_DISK}" unit MiB mktable msdos &>"${_NO_LOG}"
|
|
||||||
parted -a optimal -s "${_DISK}" unit MiB mkpart primary 1 $((_BOOTDEV_SIZE)) >"${_LOG}"
|
|
||||||
parted -a optimal -s "${_DISK}" unit MiB set 1 boot on >"${_LOG}"
|
|
||||||
parted -a optimal -s "${_DISK}" unit MiB mkpart primary $((_BOOTDEV_SIZE)) $((_BOOTDEV_SIZE+_SWAPDEV_SIZE)) >"${_LOG}"
|
|
||||||
parted -a optimal -s "${_DISK}" unit MiB mkpart primary $((_BOOTDEV_SIZE+_SWAPDEV_SIZE)) $((_BOOTDEV_SIZE+_SWAPDEV_SIZE+_ROOTDEV_SIZE)) >"${_LOG}"
|
|
||||||
parted -a optimal -s "${_DISK}" unit MiB mkpart primary $((_BOOTDEV_SIZE+_SWAPDEV_SIZE+_ROOTDEV_SIZE)) "$(sgdisk -E "${_DISK}" | grep "^[0-9]")S" >"${_LOG}"
|
|
||||||
fi
|
|
||||||
#shellcheck disable=SC2181
|
|
||||||
if [[ $? -gt 0 ]]; then
|
|
||||||
_dialog --msgbox "Error: Partitioning ${_DISK} (see ${_LOG} for details)." 0 0
|
|
||||||
_printk on
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
# reread partitiontable for kernel
|
# reread partitiontable for kernel
|
||||||
partprobe "${_DISK}"
|
partprobe "${_DISK}"
|
||||||
_printk on
|
_printk on
|
||||||
|
|
Loading…
Reference in a new issue