#!/bin/bash
# archinstall - A minimal Installation Script for Arch Linux
# Copyright (C) 2019 xengineering
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#################################################################
# _ _ _ _ _ #
# __ _ _ __ ___| |__ (_)_ __ ___| |_ __ _| | | ___| |__ #
# / _` | '__/ __| '_ \| | '_ \/ __| __/ _` | | | / __| '_ \ #
# | (_| | | | (__| | | | | | | \__ \ || (_| | | |_\__ \ | | | #
# \__,_|_| \___|_| |_|_|_| |_|___/\__\__,_|_|_(_)___/_| |_| #
# #
#################################################################
# Static config
TESTSERVER="8.8.8.8" # hostnames will not work properly
LOG_FILE_PATH="/var/log/archinstall.log"
REPOSITORY_URL="https://github.com/xengineering/archinstall/"
REPOSITORY_PATH="/opt/archinstall.git"
BRANCH_OR_COMMIT="master"
SCRIPT_BASE_PATH=$REPOSITORY_PATH
SCRIPT_BASE_PATH+="/bin/"
CONFIG_FILE_FOLDER_PATH="/etc/archinstall/"
CONFIG_FILE_PATH=$CONFIG_FILE_FOLDER_PATH
CONFIG_FILE_PATH+="config.json"
DELAY=0.5
# Initial message
cat << EOF
#################################################################
# #
# Arch Linux Installation Script #
# #
# archinstall Copyright (C) 2019 xengineering #
# This program comes with ABSOLUTELY NO WARRANTY. #
# This is free software, and you are welcome to redistribute it #
# under certain conditions. See #
# for details. #
# #
#################################################################
EOF
# Create log and provide output function ...
touch $LOG_FILE_PATH
echo "" > $LOG_FILE_PATH
output () {
echo $1 | tee -a $LOG_FILE_PATH
echo "" | tee -a $LOG_FILE_PATH
sleep $DELAY
}
output "Log created - OK"
output "Checking if booted with UEFI ..."
if [ -d "/sys/firmware/efi/efivars" ]; then
output "Booted with UEFI - OK"
else
output "Not booted with UEFI. Please enable it in your mainboard settings. - FAILED"
exit
fi
output "Check internet connection ..."
if ping -w 3 -c 1 $TESTSERVER > /dev/null; then
output "Internet connection is ready - OK"
else
output "Could not reach testserver '$TESTSERVER' - FAILED"
exit
fi
output "Update system clock ..."
timedatectl set-ntp true
if [ $? -eq 0 ]; then
output "Updated system clock - OK"
else
output "Could not update system clock - FAILED"
exit
fi
output "Cloning git repository ..."
pacman --noconfirm -Sy git | tee -a $LOG_FILE_PATH
mkdir $REPOSITORY_PATH
git clone $REPOSITORY_URL $REPOSITORY_PATH | tee -a $LOG_FILE_PATH
cd $REPOSITORY_PATH && git checkout $BRANCH_OR_COMMIT | tee -a $LOG_FILE_PATH
cd
output "Git repository cloned - OK"
output "Generating config ..."
script_path=$SCRIPT_BASE_PATH
script_path+="config_writer.py"
mkdir $CONFIG_FILE_FOLDER_PATH
touch $CONFIG_FILE_PATH
python $script_path $LOG_FILE_PATH $CONFIG_FILE_PATH
output "Generated config - OK"
# Generate new system ...
# Copy everything to new system
# log
# repo
# config
# Unmount new system