diff options
author | xengineering <mail2xengineering@protonmail.com> | 2019-11-25 12:56:06 +0100 |
---|---|---|
committer | xengineering <mail2xengineering@protonmail.com> | 2019-11-25 12:56:06 +0100 |
commit | dccbca60ec1bcf9cb6bbd85f50eb16853eb35028 (patch) | |
tree | e1bbffad45ba7ed3620ad2b8591de0f3d8d7174a | |
parent | e834e1f3bf442d6baaa8c8f71719b19c6888db5d (diff) | |
download | archinstall-dccbca60ec1bcf9cb6bbd85f50eb16853eb35028.tar archinstall-dccbca60ec1bcf9cb6bbd85f50eb16853eb35028.tar.zst archinstall-dccbca60ec1bcf9cb6bbd85f50eb16853eb35028.zip |
First version with json config file.
-rw-r--r-- | README.md | 4 | ||||
-rw-r--r-- | archinstall.sh | 3 | ||||
-rw-r--r-- | bin/first_stage.sh | 33 | ||||
-rw-r--r-- | bin/get_config_string.py | 40 | ||||
-rw-r--r-- | bin/write_config.py | 60 |
5 files changed, 109 insertions, 31 deletions
@@ -29,12 +29,12 @@ Execute 'loadkeys de-latin1' after booting to live environment, if you want to s ## To Do -- [ ] Provide reusable configuration file (json) - [ ] Support LVM - [ ] Provide LUKS on LVM encryption - [ ] Support english localization - [ ] Support installation with WiFi (instead of cable connection) - [ ] Modify mirrorlist -- [x] Provide complete error log +- [x] Provide reusable configuration file (json) +- [x] Provide error log - [x] Automatic partitioning - [x] Write first version of archinstall.sh diff --git a/archinstall.sh b/archinstall.sh index 025f318..f205409 100644 --- a/archinstall.sh +++ b/archinstall.sh @@ -55,6 +55,7 @@ REPOSITORY_URL="https://github.com/xengineering/archinstall/" REPOSITORY_PATH="/opt/archinstall" BRANCH_OR_COMMIT="master" # select another branch name or commit hash if needed LOG_FILE_PATH="/var/log/archinstall.log" +CONFIG_FILE_PATH="/etc/archinstall/config.json" DELAY=0.5 # delay for reading messages in seconds @@ -104,4 +105,4 @@ sleep $DELAY # Launching first stage bash $REPOSITORY_PATH/bin/first_stage.sh \ -$DELAY $REPOSITORY_PATH $LOG_FILE_PATH | tee -a $LOG_FILE_PATH +$DELAY $REPOSITORY_PATH $LOG_FILE_PATH $CONFIG_FILE_PATH | tee -a $LOG_FILE_PATH diff --git a/bin/first_stage.sh b/bin/first_stage.sh index 6195d0f..1924434 100644 --- a/bin/first_stage.sh +++ b/bin/first_stage.sh @@ -28,37 +28,14 @@ DELAY=$1 REPOSITORY_PATH=$2 LOG_FILE_PATH=$3 +CONFIG_FILE_PATH=$4 -# Interview +python $2/bin/write_config.py $CONFIG_FILE_PATH +disk=$(python $2/bin/get_config_string.py $CONFIG_FILE_PATH "disk") +disk_path=/dev/$disk +hostname=$(python $2/bin/get_config_string.py $CONFIG_FILE_PATH "hostname") -echo "Here is a list of available hard disks on your computer:" -echo "" -lsblk -o NAME,SIZE,TYPE | grep -v part -echo "" -echo "Please type in the 'NAME' of the hard disk on which you want to" -echo "install Arch Linux:" -read disk -disk_path="/dev/$disk" -echo "" - - -echo "Please type in the hostname of your new machine:" -read hostname -echo "" - - -cat << EOF -################################################################# - - Summary - - Hard disk: - $disk - Hostname: - $hostname - -################################################################# - -EOF echo "All data on disk '$disk' will be finally lost!" echo "Are you SURE that you want to install Arch Linux to '$disk'?!" diff --git a/bin/get_config_string.py b/bin/get_config_string.py new file mode 100644 index 0000000..86febd1 --- /dev/null +++ b/bin/get_config_string.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python + + +# 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 <https://www.gnu.org/licenses/>. + + +########################## +# get_config_string.py # +########################## + + +import sys +import json + + +config_file_path = sys.argv[1] +requested_detail = sys.argv[2] + + +with open(config_file_path) as f: + config_json = f.read() + +config = json.loads(config_json) + + +print(config[requested_detail]) diff --git a/bin/write_config.py b/bin/write_config.py new file mode 100644 index 0000000..c01eb47 --- /dev/null +++ b/bin/write_config.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python + + +# 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 <https://www.gnu.org/licenses/>. + + +##################### +# write_config.py # +##################### + + +import sys +import json +import subprocess + + +config_file_path = sys.argv[1] + + +config = {} + + +# Disk selection + +print("Please type in the 'NAME' of the hard disk on which you want to install Arch Linux:") +subprocess.run("lsblk -o NAME,SIZE,TYPE | grep -v part", shell=True) +config["disk"] = input() + + +# Select hostname + +print("Please type in the hostname of your new machine:") +config["hostname"] = input() + + +# Write config to json file + +config_json = json.dumps(config, indent=4) +with open(config_file_path, 'w') as f: + f.write(config_json) + + +# Output json config for logging purpose + +print("Config for this installation:") +print(config_json) |