Fix bug with partitioning upstream + add detail about config in README.md

This commit is contained in:
Clement Bouchard 2022-03-27 18:40:33 +02:00
parent 5e87ec8e8f
commit b7fc28e8e9
7 changed files with 192 additions and 110 deletions

View File

@ -1,17 +1,35 @@
# About
Scripts to install my system setup.
Fork of ALIS scripts to quickly install system setup with my personal configuration.
No desktop env / WM or package installation here, it should be done after first reboot using repository cb/dotfiles.
Installation is done in 3 steps:
- Install arch based system
- Install packages from AR, AUR or source
- Deploy configuration based on my dotfiles repository
What has been configured
* Keys in fr
* Disable log trace (passwords appears in cleartext in it)
* Enable LUKS
* Add LTS kernels
* Set kernel parameter nvme_load=YES
* Enable Reflector in France
* Timezone to paris
* Locale
* Keylayout to fr
* Keymap to fr
* Hostname cb-system
* Username set to cb
* Configure package multilib (mainly for display drivers)
What has been manually edited in scripts
* alis-commons.sh -> Root parition sizing 2GiB
* alis.sh -> Replace networkmanager by netctl
Trying to keep most configuration in auto to be able
# Commands
```
# loadkeys fr
# iwctl --passphrase "[WIFI_KEY]" station [WIFI_INTERFACE] connect "[WIFI_ESSID]"
# iwctl --passphrase <WiFi-Key> station <WiFi-Interface> connect <WiFi-SSID>
# git clone https://gitea.cebe.one/cb/system-setup
# sh install.sh
# ./alis.sh
```

View File

@ -37,8 +37,9 @@ AUR_COMMAND="paru"
BIOS_TYPE=""
ASCIINEMA=""
DEVICE_SATA="false"
DEVICE_SDA="false"
DEVICE_NVME="false"
DEVICE_VDA="false"
DEVICE_MMC="false"
CPU_VENDOR=""
GPU_VENDOR=""
@ -51,3 +52,4 @@ LOG_FILE="false"
USER_NAME="picodotdev"
USER_PASSWORD="ask"
PACKAGES_PIPEWIRE="false"

115
setup-arch/alis-commons.sh → alis-commons.sh Executable file → Normal file
View File

@ -341,67 +341,58 @@ function partition_setup() {
fi
PARTITION_PARTED_UEFI="mklabel gpt mkpart ESP fat32 1MiB 2048MiB mkpart root $PARTITION_PARTED_FILE_SYSTEM_TYPE 2048MiB 100% set 1 esp on"
PARTITION_PARTED_BIOS="mklabel msdos mkpart primary ext4 4MiB 2048MiB mkpart primary $PARTITION_PARTED_FILE_SYSTEM_TYPE 2048MiB 100% set 1 boot on"
if [ "$BIOS_TYPE" == "uefi" ]; then
if [ "$DEVICE_SATA" == "true" ]; then
PARTITION_BOOT="${DEVICE}1"
PARTITION_ROOT="${DEVICE}2"
DEVICE_ROOT="${DEVICE}2"
fi
if [ "$DEVICE_NVME" == "true" ]; then
PARTITION_BOOT="${DEVICE}p1"
PARTITION_ROOT="${DEVICE}p2"
DEVICE_ROOT="${DEVICE}p2"
fi
if [ "$DEVICE_MMC" == "true" ]; then
PARTITION_BOOT="${DEVICE}p1"
PARTITION_ROOT="${DEVICE}p2"
DEVICE_ROOT="${DEVICE}p2"
fi
fi
if [ "$BIOS_TYPE" == "bios" ]; then
if [ "$DEVICE_SATA" == "true" ]; then
PARTITION_BOOT="${DEVICE}1"
PARTITION_ROOT="${DEVICE}2"
DEVICE_ROOT="${DEVICE}2"
fi
if [ "$DEVICE_NVME" == "true" ]; then
PARTITION_BOOT="${DEVICE}p1"
PARTITION_ROOT="${DEVICE}p2"
DEVICE_ROOT="${DEVICE}p2"
fi
if [ "$DEVICE_MMC" == "true" ]; then
PARTITION_BOOT="${DEVICE}p1"
PARTITION_ROOT="${DEVICE}p2"
DEVICE_ROOT="${DEVICE}p2"
fi
fi
elif [ "$PARTITION_MODE" == "custom" ]; then
PARTITION_PARTED_UEFI="$PARTITION_CUSTOM_PARTED_UEFI"
PARTITION_PARTED_BIOS="$PARTITION_CUSTOM_PARTED_BIOS"
fi
if [ "$PARTITION_MODE" == "custom" -o "$PARTITION_MODE" == "manual" ]; then
PARTITION_BOOT="$PARTITION_CUSTOMMANUAL_BOOT"
PARTITION_ROOT="$PARTITION_CUSTOMMANUAL_ROOT"
DEVICE_ROOT="${PARTITION_ROOT}"
if [ "$DEVICE_SDA" == "true" ]; then
PARTITION_BOOT="$(partition_device "${DEVICE}" "${PARTITION_BOOT_NUMBER}")"
PARTITION_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")"
DEVICE_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")"
fi
PARTITION_BOOT_NUMBER="$PARTITION_BOOT"
PARTITION_ROOT_NUMBER="$PARTITION_ROOT"
PARTITION_BOOT_NUMBER="${PARTITION_BOOT_NUMBER//\/dev\/sda/}"
PARTITION_BOOT_NUMBER="${PARTITION_BOOT_NUMBER//\/dev\/nvme0n1p/}"
PARTITION_BOOT_NUMBER="${PARTITION_BOOT_NUMBER//\/dev\/vda/}"
PARTITION_BOOT_NUMBER="${PARTITION_BOOT_NUMBER//\/dev\/mmcblk0p/}"
PARTITION_ROOT_NUMBER="${PARTITION_ROOT_NUMBER//\/dev\/sda/}"
PARTITION_ROOT_NUMBER="${PARTITION_ROOT_NUMBER//\/dev\/nvme0n1p/}"
PARTITION_ROOT_NUMBER="${PARTITION_ROOT_NUMBER//\/dev\/vda/}"
PARTITION_ROOT_NUMBER="${PARTITION_ROOT_NUMBER//\/dev\/mmcblk0p/}"
if [ "$DEVICE_NVME" == "true" ]; then
PARTITION_BOOT="$(partition_device "${DEVICE}" "${PARTITION_BOOT_NUMBER}")"
PARTITION_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")"
DEVICE_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")"
fi
if [ "$DEVICE_VDA" == "true" ]; then
PARTITION_BOOT="$(partition_device "${DEVICE}" "${PARTITION_BOOT_NUMBER}")"
PARTITION_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")"
DEVICE_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")"
fi
if [ "$DEVICE_MMC" == "true" ]; then
PARTITION_BOOT="$(partition_device "${DEVICE}" "${PARTITION_BOOT_NUMBER}")"
PARTITION_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")"
DEVICE_ROOT="$(partition_device "${DEVICE}" "${PARTITION_ROOT_NUMBER}")"
fi
}
function partition_device() {
local DEVICE="$1"
local NUMBER="$2"
local PARTITION_DEVICE=""
if [ "$DEVICE_SDA" == "true" ]; then
PARTITION_DEVICE="${DEVICE}${NUMBER}"
fi
if [ "$DEVICE_NVME" == "true" ]; then
PARTITION_DEVICE="${DEVICE}p${NUMBER}"
fi
if [ "$DEVICE_VDA" == "true" ]; then
PARTITION_DEVICE="${DEVICE}${NUMBER}"
fi
if [ "$DEVICE_MMC" == "true" ]; then
PARTITION_DEVICE="${DEVICE}p${NUMBER}"
fi
echo "$PARTITION_DEVICE"
}
function partition_options() {
@ -439,9 +430,25 @@ function partition_mount() {
mount -o "subvol=${SUBVOLUME[1]},$PARTITION_OPTIONS,compress=zstd" "$DEVICE_ROOT" "/mnt${SUBVOLUME[2]}"
done
else
# root
mount -o "$PARTITION_OPTIONS" "$DEVICE_ROOT" /mnt
# boot
mkdir -p /mnt/boot
mount -o "$PARTITION_OPTIONS_BOOT" "$PARTITION_BOOT" /mnt/boot
# mount points
for I in "${PARTITION_MOUNT_POINTS[@]}"; do
if [[ "$I" =~ ^!.* ]]; then
continue
fi
IFS='=' PARTITION_MOUNT_POINT=($I)
if [ "${PARTITION_MOUNT_POINT[1]}" == "/boot" -o "${PARTITION_MOUNT_POINT[1]}" == "/" ]; then
continue
fi
local PARTITION_DEVICE="$(partition_device "${DEVICE}" "${PARTITION_MOUNT_POINT[0]}")"
mkdir -p "/mnt${PARTITION_MOUNT_POINT[1]}"
mount -o "$PARTITION_OPTIONS" "${PARTITION_DEVICE}" "/mnt${PARTITION_MOUNT_POINT[1]}"
done
fi
}

View File

@ -13,11 +13,11 @@
## LOG_FILE generates a log file with the commands executed and output generated during installation.
### The log file is saved to /var/log/alis.log.
KEYS="fr"
LOG_TRACE="true"
LOG_TRACE="false"
LOG_FILE="false"
# partition
## DEVICE sets which is the device for the installation.
## DEVICE sets which is the device for the installation. auto autodetects the device.
## DEVICE_TRIM sets if the DEVICE device supports TRIM feature.
## LVM sets if the DEVICE is partitioned with LVM partition scheme.
## LUKS_PASSWORD and LUKS_PASSWORD_RETYPE if set is the password for encrypt the device. With LVM, LVM on LUKS is used. If "ask" password alis asks for a secure password.
@ -27,10 +27,11 @@ LOG_FILE="false"
## SWAP_SIZE swap file size with a size of the value in megabytes. If no value no swap file is created.
## PARTITION_MODE how partition is performed on DEVICE.
### "auto" value deletes all existing partitions and creates a boot partition and a root partition using disk full size.
### Warning! all disk data will be lost, so backup existing data before.
### Warning! all disk data will be lost, so backup existing data before.
### "custom" value allows to use a custom parted partition script.
### "manual" allows to specify which existing partitions are used for boot partition and root partition.
DEVICE="/dev/sda !/dev/nvme0n1 !/dev/vda !/dev/mmcblk0" # sata nvme mmc (single)
## PARTITION_MOUNT_POINTS mount points, partition number and directory, to mount from DEVICE.
DEVICE="auto !/dev/sda !/dev/nvme0n1 !/dev/vda !/dev/mmcblk0" # sata nvme mmc (single)
DEVICE_TRIM="true"
LVM="false"
LUKS_PASSWORD="ask"
@ -38,12 +39,11 @@ LUKS_PASSWORD_RETYPE="ask"
FILE_SYSTEM_TYPE="ext4 !btrfs !xfs !f2fs !reiserfs" # (single)
BTRFS_SUBVOLUMES_MOUNTPOINTS=("root,root,/" "home,home,/home" "var,var,/var" "snapshots,snapshots,/snapshots" "swap,swap,/swap")
#BTRFS_SUBVOLUMES_MOUNTPOINTS=("root,@,/" "home,@home,/home" "var,@var_log,/var/log" "snapshots,@snapshots,/.snapshots" "swap,@swap,/swap")
SWAP_SIZE="!2048 !4096 8192" # (single)
SWAP_SIZE="!2048 !4096 !8192" # (single)
PARTITION_MODE="auto !custom !manual"
PARTITION_CUSTOM_PARTED_UEFI="mklabel gpt mkpart ESP fat32 1MiB 2048MiB mkpart root $FILE_SYSTEM_TYPE 2048MiB 100% set 1 esp on"
PARTITION_CUSTOM_PARTED_BIOS="mklabel msdos mkpart primary ext4 4MiB 2048MiB mkpart primary $FILE_SYSTEM_TYPE 2048MiB 100% set 1 boot on"
PARTITION_CUSTOMMANUAL_BOOT="!/dev/sda1 !/dev/nvme0n1p1 !/dev/vda1 !/dev/mmcblk0p1"
PARTITION_CUSTOMMANUAL_ROOT="!/dev/sda2 !/dev/nvme0n1p2 !/dev/vda2 !/dev/mmcblk0p2"
PARTITION_MOUNT_POINTS=("1=/boot" "2=/" "!3=/home")
PARTITION_CUSTOM_PARTED_UEFI="mklabel gpt mkpart ESP fat32 1MiB 512MiB mkpart root $FILE_SYSTEM_TYPE 512MiB 100% set 1 esp on"
PARTITION_CUSTOM_PARTED_BIOS="mklabel msdos mkpart primary ext4 4MiB 512MiB mkpart primary $FILE_SYSTEM_TYPE 512MiB 100% set 1 boot on"
# network_install
## Variables to setup the WIFI connection to internet.
@ -63,8 +63,8 @@ PING_HOSTNAME="mirrors.kernel.org"
## KERNELS additional kernels and headers to install.
## KERNELS_COMPRESSION selects the algorithm for kernel compression.
## KERNELS_PARAMETERS specific kernel parameters to set on boot. eg. iommu=soft
REFLECTOR="false"
REFLECTOR_COUNTRIES=("Spain")
REFLECTOR="true"
REFLECTOR_COUNTRIES=("France")
PACMAN_MIRROR="https://mirrors.kernel.org/archlinux/\$repo/os/\$arch"
PACMAN_PARALLEL_DOWNLOADS="true"
KERNELS="linux-lts !linux-lts-headers !linux-hardened !linux-hardened-headers !linux-zen !linux-zen-headers" # (multiple)
@ -108,7 +108,7 @@ KEYOPTIONS=""
KEYMAP="KEYMAP=fr"
FONT=""
FONT_MAP=""
HOSTNAME="cbsystem"
HOSTNAME="cb-system"
ROOT_PASSWORD="ask"
ROOT_PASSWORD_RETYPE="ask"
@ -177,3 +177,4 @@ SYSTEMD_UNITS=""
## REBOOT on installation end reboots the system automatically. If "false" no reboot is performed and the user must do it explicitly.
REBOOT="true"

105
setup-arch/alis.sh → alis.sh Executable file → Normal file
View File

@ -54,8 +54,6 @@ function sanitize_variables() {
PARTITION_MODE=$(sanitize_variable "$PARTITION_MODE")
PARTITION_CUSTOM_PARTED_UEFI=$(sanitize_variable "$PARTITION_CUSTOM_PARTED_UEFI")
PARTITION_CUSTOM_PARTED_BIOS=$(sanitize_variable "$PARTITION_CUSTOM_PARTED_BIOS")
PARTITION_CUSTOMMANUAL_BOOT=$(sanitize_variable "$PARTITION_CUSTOMMANUAL_BOOT")
PARTITION_CUSTOMMANUAL_ROOT=$(sanitize_variable "$PARTITION_CUSTOMMANUAL_ROOT")
FILE_SYSTEM_TYPE=$(sanitize_variable "$FILE_SYSTEM_TYPE")
SWAP_SIZE=$(sanitize_variable "$SWAP_SIZE")
KERNELS=$(sanitize_variable "$KERNELS")
@ -79,6 +77,15 @@ function sanitize_variables() {
BTRFS_SUBVOLUME_SWAP=("${SUBVOLUME[@]}")
fi
done
for I in "${PARTITION_MOUNT_POINTS[@]}"; do
IFS='=' PARTITION_MOUNT_POINT=($I)
if [ ${PARTITION_MOUNT_POINT[1]} == "/boot" ]; then
PARTITION_BOOT_NUMBER="${PARTITION_MOUNT_POINT[0]}"
elif [ ${PARTITION_MOUNT_POINT[1]} == "/" ]; then
PARTITION_ROOT_NUMBER="${PARTITION_MOUNT_POINT[0]}"
fi
done
}
function check_variables() {
@ -86,6 +93,49 @@ function check_variables() {
check_variables_boolean "LOG_TRACE" "$LOG_TRACE"
check_variables_boolean "LOG_FILE" "$LOG_FILE"
check_variables_value "DEVICE" "$DEVICE"
if [ "$DEVICE" == "auto" ]; then
local DEVICE_BOOT=$(PKNAME=""; eval $(lsblk -oMOUNTPOINT,PKNAME -P -M | grep 'MOUNTPOINT="/run/archiso/bootmnt"'); echo "$PKNAME")
if [ -n "$DEVICE_BOOT" ]; then
local DEVICE_BOOT="/dev/$DEVICE_BOOT"
fi
local DEVICE_DETECTED="false"
if [ -e "/dev/sda" -a "$DEVICE_BOOT" != "/dev/sda" ]; then
if [ "$DEVICE_DETECTED" == "true" ]; then
echo "Auto device is ambigous, detected $DEVICE and /dev/sda."
exit 1
fi
DEVICE_DETECTED="true"
DEVICE_SDA="true"
DEVICE="/dev/sda"
fi
if [ -e "/dev/nvme0n1" -a "$DEVICE_BOOT" != "/dev/nvme0n1" ]; then
if [ "$DEVICE_DETECTED" == "true" ]; then
echo "Auto device is ambigous, detected $DEVICE and /dev/nvme0n1."
exit 1
fi
DEVICE_DETECTED="true"
DEVICE_NVME="true"
DEVICE="/dev/nvme0n1"
fi
if [ -e "/dev/vda" -a "$DEVICE_BOOT" != "/dev/vda" ]; then
if [ "$DEVICE_DETECTED" == "true" ]; then
echo "Auto device is ambigous, detected $DEVICE and /dev/vda."
exit 1
fi
DEVICE_DETECTED="true"
DEVICE_VDA="true"
DEVICE="/dev/vda"
fi
if [ -e "/dev/mmcblk0" -a "$DEVICE_BOOT" != "/dev/mmcblk0" ]; then
if [ "$DEVICE_DETECTED" == "true" ]; then
echo "Auto device is ambigous, detected $DEVICE and /dev/mmcblk0."
exit 1
fi
DEVICE_DETECTED="true"
DEVICE_MMC="true"
DEVICE="/dev/mmcblk0"
fi
fi
check_variables_boolean "DEVICE_TRIM" "$DEVICE_TRIM"
check_variables_boolean "LVM" "$LVM"
check_variables_equals "LUKS_PASSWORD" "LUKS_PASSWORD_RETYPE" "$LUKS_PASSWORD" "$LUKS_PASSWORD_RETYPE"
@ -100,14 +150,8 @@ function check_variables() {
check_variables_size "SUBVOLUME" ${#SUBVOLUME[@]} 3
done
check_variables_list "PARTITION_MODE" "$PARTITION_MODE" "auto custom manual" "true" "true"
if [ "$PARTITION_MODE" == "custom" ]; then
check_variables_value "PARTITION_CUSTOM_PARTED_UEFI" "$PARTITION_CUSTOM_PARTED_UEFI"
check_variables_value "PARTITION_CUSTOM_PARTED_BIOS" "$PARTITION_CUSTOM_PARTED_BIOS"
fi
if [ "$PARTITION_MODE" == "custom" -o "$PARTITION_MODE" == "manual" ]; then
check_variables_value "PARTITION_CUSTOMMANUAL_BOOT" "$PARTITION_CUSTOMMANUAL_BOOT"
check_variables_value "PARTITION_CUSTOMMANUAL_ROOT" "$PARTITION_CUSTOMMANUAL_ROOT"
fi
check_variables_value "PARTITION_BOOT_NUMBER" "$PARTITION_BOOT_NUMBER"
check_variables_value "PARTITION_ROOT_NUMBER" "$PARTITION_ROOT_NUMBER"
check_variables_equals "WIFI_KEY" "WIFI_KEY_RETYPE" "$WIFI_KEY" "$WIFI_KEY_RETYPE"
check_variables_value "PING_HOSTNAME" "$PING_HOSTNAME"
check_variables_boolean "REFLECTOR" "$REFLECTOR"
@ -159,8 +203,11 @@ function warning() {
echo -e "${BLUE}Welcome to Arch Linux Install Script${NC}"
echo ""
echo -e "${RED}Warning"'!'"${NC}"
echo -e "${RED}This script deletes all partitions of the persistent${NC}"
echo -e "${RED}storage and continuing all your data in it will be lost.${NC}"
echo -e "${RED}This script can delete all partitions of the persistent${NC}"
echo -e "${RED}storage and continuing all your data can be lost.${NC}"
echo ""
echo -e "Install device: $DEVICE."
echo -e "Mount points: ${PARTITION_MOUNT_POINTS[@]}."
echo ""
if [ "$WARNING_CONFIRM" == "true" ]; then
read -p "Do you want to continue? [y/N] " yn
@ -193,10 +240,12 @@ function facts() {
facts_commons
if [ -n "$(echo "$DEVICE" | grep "^/dev/[a-z]d[a-z]")" ]; then
DEVICE_SATA="true"
if [ -n "$(echo "$DEVICE" | grep "^/dev/sd[a-z]")" ]; then
DEVICE_SDA="true"
elif [ -n "$(echo "$DEVICE" | grep "^/dev/nvme")" ]; then
DEVICE_NVME="true"
elif [ -n "$(echo "$DEVICE" | grep "^/dev/vd[a-z]")" ]; then
DEVICE_VDA="true"
elif [ -n "$(echo "$DEVICE" | grep "^/dev/mmc")" ]; then
DEVICE_MMC="true"
fi
@ -468,19 +517,39 @@ function partition() {
wipefs -a -f $PARTITION_BOOT || true
wipefs -a -f $DEVICE_ROOT || true
## boot
if [ "$BIOS_TYPE" == "uefi" ]; then
mkfs.fat -n ESP -F32 $PARTITION_BOOT
fi
if [ "$BIOS_TYPE" == "bios" ]; then
mkfs.ext4 -L boot $PARTITION_BOOT
fi
## root
if [ "$FILE_SYSTEM_TYPE" == "reiserfs" ]; then
mkfs."$FILE_SYSTEM_TYPE" -l root $DEVICE_ROOT
mkfs."$FILE_SYSTEM_TYPE" -f -l root $DEVICE_ROOT
elif [ "$FILE_SYSTEM_TYPE" == "f2fs" ]; then
mkfs."$FILE_SYSTEM_TYPE" -l root $DEVICE_ROOT
else
mkfs."$FILE_SYSTEM_TYPE" -L root $DEVICE_ROOT
fi
## mountpoint
for I in "${PARTITION_MOUNT_POINTS[@]}"; do
if [[ "$I" =~ ^!.* ]]; then
continue
fi
IFS='=' PARTITION_MOUNT_POINT=($I)
if [ "${PARTITION_MOUNT_POINT[1]}" == "/boot" -o "${PARTITION_MOUNT_POINT[1]}" == "/" ]; then
continue
fi
local PARTITION_DEVICE="$(partition_device "${DEVICE}" "${PARTITION_MOUNT_POINT[0]}")"
if [ "$FILE_SYSTEM_TYPE" == "reiserfs" ]; then
mkfs."$FILE_SYSTEM_TYPE" -f $PARTITION_DEVICE
elif [ "$FILE_SYSTEM_TYPE" == "f2fs" ]; then
mkfs."$FILE_SYSTEM_TYPE" $PARTITION_DEVICE
else
mkfs."$FILE_SYSTEM_TYPE" $PARTITION_DEVICE
fi
done
# options
partition_options
@ -1048,6 +1117,7 @@ function network() {
print_step "network()"
pacman_install "netctl"
arch-chroot /mnt systemctl enable netctl-sleep.service
}
function virtualbox() {
@ -1664,6 +1734,8 @@ function end() {
echo "Reboot aborted. You will must do a explicit reboot (./alis-reboot.sh)."
echo ""
fi
copy_logs
fi
else
if [ "$ASCIINEMA" == "true" ]; then
@ -1673,6 +1745,8 @@ function end() {
echo "No reboot. You will must do a explicit reboot (./alis-reboot.sh)."
echo ""
fi
copy_logs
fi
}
@ -1795,3 +1869,4 @@ function main() {
}
main $@

View File

@ -1,21 +0,0 @@
echo "------------------------------------"
echo "------------------------------------"
echo "--- Install Script for Arch Base ---"
echo "------------------------------------"
echo "------------------------------------"
echo "BEWARE, disk will be formatted. ALL DATA will be LOST"
echo "Press <Ctrl> <C> now to stop"
echo "Start in 5"
sleep 1
echo "Start in 4"
sleep 1
echo "Start in 3"
sleep 1
echo "Start in 2"
sleep 1
echo "Start in 1"
sleep 1
sh setup-arch/alis.sh