Compare commits

8 Commits

5 changed files with 97 additions and 95 deletions

View File

@@ -2,13 +2,13 @@
set -euo pipefail
BASEDIR="$(dirname "${0}" | sed "s|^\.|${PWD}|")"
baseDir="$(realpath "$(dirname "${0}")")"
cat << EOF
#######################################
## ##
## $(cat "${BASEDIR}/title") Script ##
## $(cat "${baseDir}/title") Script ##
## ##
## Jean <jean@easthighnerd.net> ##
## ##
@@ -25,17 +25,17 @@ EOF
printf \
'ZOL_FEDORA_VER="2-6"\n' | \
'zolFedoraVer="2-6"\n' | \
tee \
"${BASEDIR}/system.conf" \
"${baseDir}/system.conf" \
&> \
/dev/null
printf \
'(NVMe) SSD or HDD?\n'
select OPTION in 'SSD' 'HDD'
select option in 'SSD' 'HDD'
do
case "${OPTION}" in
case "${option}" in
'SSD'|'HDD')
break
;;
@@ -47,10 +47,10 @@ do
done
printf \
"DISK_TYPE=\"${OPTION}\"\n" | \
"diskType=\"${option}\"\n" | \
tee \
--append \
"${BASEDIR}/system.conf" \
"${baseDir}/system.conf" \
&> \
/dev/null
@@ -59,9 +59,9 @@ printf \
printf \
'\nGet disk from:\n'
select OPTION in '/dev/disk/by-id/' '/dev/'
select option in '/dev/disk/by-id/' '/dev/'
do
case "${OPTION}" in
case "${option}" in
'/dev/disk/by-id/'|'/dev/')
break
;;
@@ -75,26 +75,26 @@ done
printf \
'\033[2J\033[H'
if [[ "${OPTION}" == '/dev/disk/by-id/' ]]; then
DRIVES="$(ls -Ago /dev/disk/by-id/ | grep -v 'sr' | grep -v 'dm-' | grep -v 'nvme-eui.' | grep -v '\-part' | grep -v 'wwn-' | grep -v '_[1-9] -> ' | grep -v 'total' | sed 's|^.*\:[0-5][0-9] ||g; s| -> .*$||g' | tr -d '[:blank:]')"
if [[ "${option}" == '/dev/disk/by-id/' ]]; then
drives="$(ls -Ago /dev/disk/by-id/ | grep -v 'sr' | grep -v 'dm-' | grep -v 'nvme-eui.' | grep -v '\-part' | grep -v 'wwn-' | grep -v '_[1-9] -> ' | grep -v 'total' | sed 's|^.*\:[0-5][0-9] ||g; s| -> .*$||g' | tr -d '[:blank:]')"
printf \
'\nSelect the disk you want to use:\n'
DRIVES=( ${DRIVES} )
drives=( ${drives} )
shopt -s extglob
MENU="@(${DRIVES[0]}"
menu="@(${drives[0]}"
for ((i=1;i<${#DRIVES[@]};i++)); do
MENU+="|${DRIVES[$i]}"
for ((i=1;i<${#drives[@]};i++)); do
menu+="|${drives[$i]}"
done
MENU+=")"
menu+=")"
select DRIVE in "${DRIVES[@]}"
select drive in "${drives[@]}"
do
case ${DRIVE} in
${MENU})
case ${drive} in
${menu})
break
;;
*)
@@ -105,32 +105,32 @@ if [[ "${OPTION}" == '/dev/disk/by-id/' ]]; then
done
printf \
"DISK=\"/dev/disk/by-id/${DRIVE}\"\n" | \
"disk=\"/dev/disk/by-id/${drive}\"\n" | \
tee \
--append \
"${BASEDIR}/system.conf" \
"${baseDir}/system.conf" \
&> \
/dev/null
elif [[ "${OPTION}" == '/dev/' ]]; then
DRIVES="$(lsblk -do name | grep -v 'loop' | grep -v 'sr' | grep -v 'zram' | grep -v 'NAME' | tr -d '[:blank:]')"
elif [[ "${option}" == '/dev/' ]]; then
drives="$(lsblk -do name | grep -v 'loop' | grep -v 'sr' | grep -v 'zram' | grep -v 'NAME' | tr -d '[:blank:]')"
printf \
'\nSelect the disk you want to use:\n'
DRIVES=( ${DRIVES} )
drives=( ${drives} )
shopt -s extglob
MENU="@(${DRIVES[0]}"
menu="@(${drives[0]}"
for ((i=1;i<${#DRIVES[@]};i++)); do
MENU+="|${DRIVES[$i]}"
for ((i=1;i<${#drives[@]};i++)); do
menu+="|${drives[$i]}"
done
MENU+=")"
menu+=")"
select DRIVE in "${DRIVES[@]}"
select drive in "${drives[@]}"
do
case ${DRIVE} in
${MENU})
case ${drive} in
${menu})
break
;;
*)
@@ -141,10 +141,10 @@ elif [[ "${OPTION}" == '/dev/' ]]; then
done
printf \
"DISK=\"/dev/${DRIVE}\"\n" | \
"disk=\"/dev/${drive}\"\n" | \
tee \
--append \
"${BASEDIR}/system.conf" \
"${baseDir}/system.conf" \
&> \
/dev/null
fi
@@ -152,52 +152,52 @@ fi
printf \
'\033[2J\033[H'
HOSTNAME='-'
hostname='-'
while [[ "${HOSTNAME}" == '-' ]] || [[ -z "${HOSTNAME}" ]] || [[ "${HOSTNAME}" = *' '* ]] || [[ "${HOSTNAME}" = *_* ]]; do
while [[ "${hostname}" == '-' ]] || [[ -z "${hostname}" ]] || [[ "${hostname}" = *' '* ]] || [[ "${hostname}" = *_* ]]; do
printf \
'\nEnter a hostname for this machine (no spaces or underscores):\n'
read \
-r \
HOSTNAME
hostname
if [[ "${HOSTNAME}" = *' '* ]] || [[ "${HOSTNAME}" = *_* ]]; then
if [[ "${hostname}" = *' '* ]] || [[ "${hostname}" = *_* ]]; then
printf \
'ERROR:\tNo spaces or underscores in the hostname!\n'
fi
done
printf \
"HOSTNAME=\"${HOSTNAME}\"\n" | \
"hostname=\"${hostname}\"\n" | \
tee \
--append \
"${BASEDIR}/system.conf" \
"${baseDir}/system.conf" \
&> \
/dev/null
printf \
'\033[2J\033[H'
USERNAME='-'
username='-'
while [[ "${USERNAME}" == '-' ]] || [[ -z "${USERNAME}" ]] || [[ "${USERNAME}" = *' '* ]] || [[ "${USERNAME}" = *[A-Z]* ]]; do
while [[ "${username}" == '-' ]] || [[ -z "${username}" ]] || [[ "${username}" = *' '* ]] || [[ "${username}" = *[A-Z]* ]]; do
printf \
'\nEnter a name for the new user account (lowercase, no spaces):\n'
read \
-r \
USERNAME
username
if [[ "${USERNAME}" = *' '* ]] || [[ "${USERNAME}" = *[A-Z]* ]]; then
if [[ "${username}" = *' '* ]] || [[ "${username}" = *[A-Z]* ]]; then
printf \
'ERROR:\tNo spaces or uppercase letters in the username!\n'
fi
done
printf \
"USERNAME=\"${USERNAME}\"\n" | \
"username=\"${username}\"\n" | \
tee \
--append \
"${BASEDIR}/system.conf" \
"${baseDir}/system.conf" \
&> \
/dev/null
@@ -206,9 +206,9 @@ printf \
printf \
'\nEnable SWAP?\n'
select OPTION in 'yes' 'no'
select option in 'yes' 'no'
do
case "${OPTION}" in
case "${option}" in
'yes'|'no')
break
;;
@@ -220,10 +220,10 @@ do
done
printf \
"ENABLE_SWAP=\"${OPTION}\"\n" | \
"enableSwap=\"${option}\"\n" | \
tee \
--append \
"${BASEDIR}/system.conf" \
"${baseDir}/system.conf" \
&> \
/dev/null
@@ -232,9 +232,9 @@ printf \
printf \
'\nEnable encryption?\n'
select OPTION in 'yes' 'no'
select option in 'yes' 'no'
do
case "${OPTION}" in
case "${option}" in
'yes'|'no')
break
;;
@@ -246,10 +246,10 @@ do
done
printf \
"ENCRYPTION=\"${OPTION}\"\n" | \
"encryption=\"${option}\"\n" | \
tee \
--append \
"${BASEDIR}/system.conf" \
"${baseDir}/system.conf" \
&> \
/dev/null
@@ -258,7 +258,7 @@ printf \
cat << EOF
Configuration stored in '${BASEDIR}/system.conf'
Configuration stored in '${baseDir}/system.conf'
Press any key to return to the main menu
EOF

View File

@@ -1,15 +1,15 @@
#!/bin/bash
set -euo pipefail
BASEDIR="$(dirname "${0}" | sed "s|^\.|${PWD}|")"
baseDir="$(realpath "$(dirname "${0}")")"
source \
/etc/os-release
source \
"${BASEDIR}/system.conf"
"${baseDir}/system.conf"
if [[ "${1}" == '-1' ]]; then
if [[ "${1}" == '--mmdebstrap' ]]; then
packages=(\
console-setup \
cryptsetup \
@@ -48,17 +48,17 @@ zstd\
${include} \
"${VERSION_CODENAME}" \
/mnt
elif [[ "${1}" == '-2' ]]; then
NETWORK_INTERFACE=($(ip -br addr show | sed 's| .*$||g' | grep -v '^lo' | grep -v 'tailscale' | grep -v '^wg'))
elif [[ "${1}" == '--network-interfaces' ]]; then
networkInterface=($(ip -br addr show | sed 's| .*$||g' | grep -v '^lo' | grep -v 'tailscale' | grep -v '^wg'))
shopt -s extglob
for ((i = 0; i < ${#NETWORK_INTERFACE[@]}; i++)); do
cat << EOF | tee /mnt/etc/network/interfaces.d/${NETWORK_INTERFACE[$i]} &> /dev/null
allow-hotplug ${NETWORK_INTERFACE[$i]}
iface ${NETWORK_INTERFACE[$i]} inet dhcp
for ((i = 0; i < ${#networkInterface[@]}; i++)); do
cat << EOF | tee /mnt/etc/network/interfaces.d/${networkInterface[$i]} &> /dev/null
allow-hotplug ${networkInterface[$i]}
iface ${networkInterface[$i]} inet dhcp
EOF
done
elif [[ "${1}" == '-3' ]]; then
elif [[ "${1}" == '--sources' ]]; then
cat << EOF | tee /mnt/etc/apt/sources.list.d/${VERSION_CODENAME}.sources &> /dev/null
# ${VERSION_CODENAME^}
Enabled: yes

View File

@@ -1,15 +1,15 @@
#!/bin/bash
set -euo pipefail
BASEDIR="$(dirname "${0}" | sed "s|^\.|${PWD}|")"
baseDir="$(realpath "$(dirname "${0}")")"
source \
/etc/os-release
source \
"${BASEDIR}/system.conf"
"${baseDir}/system.conf"
if [[ "${1}" == '-1' ]]; then
if [[ "${1}" == '--mmdebstrap' ]]; then
packages=(\
console-setup \
cryptsetup \
@@ -44,7 +44,7 @@ zstd\
${include} \
"${UBUNTU_VERSION_CODENAME}" \
/mnt
elif [[ "${1}" == '-2' ]]; then
elif [[ "${1}" == '--sources' ]]; then
cat <<EOF >/mnt/etc/apt/sources.list.d/${UBUNTU_VERSION_CODENAME}.sources
# ${UBUNTU_VERSION_CODENAME^}
Enabled: yes
@@ -90,11 +90,11 @@ Signed-By: /etc/apt/trusted.gpg.d/patches.key.asc
EOF
rm /mnt/etc/apt/sources.list
elif [[ "${1}" == '-3' ]]; then
elif [[ "${1}" == '--skel' ]]; then
rsync -pogAXtlHrDx \
/etc/skel \
/mnt/etc
elif [[ "${1}" == '-4' ]]; then
elif [[ "${1}" == '--elementary' ]]; then
cp \
/etc/os-release \
/mnt/etc

View File

@@ -1,15 +1,15 @@
#!/bin/bash
set -euo pipefail
BASEDIR="$(dirname "${0}" | sed "s|^\.|${PWD}|")"
baseDir="$(realpath "$(dirname "${0}")")"
source \
/etc/os-release
source \
"${BASEDIR}/system.conf"
"${baseDir}/system.conf"
if [[ "${1}" == '-1' ]]; then
if [[ "${1}" == '--rsync' ]]; then
mkdir -p /run/install
if [[ "${VERSION_ID}" -lt '41' ]]; then
@@ -24,7 +24,7 @@ if [[ "${1}" == '-1' ]]; then
--exclude=/etc/machine-id \
--info=progress2 \
/run/install/ /mnt
elif [[ "${1}" == '-2' ]]; then
elif [[ "${1}" == '--resolv-conf' ]]; then
mv /mnt/etc/resolv.conf \
/mnt/etc/resolv.conf.orig

View File

@@ -1,7 +1,7 @@
#!/bin/bash
set -euo pipefail
BASEDIR="$(dirname "${0}" | sed "s|^\.|${PWD}|")"
baseDir="$(realpath "$(dirname "${0}")")"
printf \
'\033[?47l\012'
@@ -9,7 +9,7 @@ printf \
cat << EOF
#######################################
## ##
## $(cat "${BASEDIR}/title") Script ##
## $(cat "${baseDir}/title") Script ##
## ##
## Jean <jean@easthighnerd.net> ##
## ##
@@ -28,7 +28,7 @@ EOF
source \
/etc/os-release
source \
"${BASEDIR}/system.conf"
"${baseDir}/system.conf"
if [[ "${ID}" == 'debian' ]]; then
@@ -77,7 +77,7 @@ elif [[ "${ID}" == 'fedora' ]]; then
dnf install \
-y \
https://zfsonlinux.org/fedora/zfs-release-${ZOL_FEDORA_VER}$(rpm --eval "%{dist}").noarch.rpm
https://zfsonlinux.org/fedora/zfs-release-${zolFedoraVer}$(rpm --eval "%{dist}").noarch.rpm
dnf install \
-y \
@@ -101,11 +101,11 @@ if [[ ! "$(hostname)" == "debian-live" ]]; then
fi
"${BASEDIR}/partition.sh"
"${baseDir}/partition.sh"
sleep 5
"${BASEDIR}/mkfs.zfs.sh"
"${baseDir}/zfs.sh"
mkdir \
-p \
@@ -122,25 +122,27 @@ mkdir \
/mnt/run/lock
if [[ "${ID}" == 'elementary' ]]; then
"${BASEDIR}/base-elementary.sh" -1
"${baseDir}/elementary.sh" --mmdebstrap
elif [[ "${ID}" == 'debian' ]]; then
"${BASEDIR}/base-debian.sh" -1
"${baseDir}/debian.sh" --mmdebstrap
elif [[ "${ID}" == 'fedora' ]]; then
"${baseDir}/fedora.sh" --rsync
fi
printf \
"${HOSTNAME}\n" | tee /mnt/etc/hostname &> /dev/null
"${hostname}\n" | tee /mnt/etc/hostname &> /dev/null
printf \
"127.0.1.1\t${HOSTNAME}\n" | tee --append /mnt/etc/hosts &> /dev/null
"127.0.1.1\t${hostname}\n" | tee --append /mnt/etc/hosts &> /dev/null
if [[ "${ID}" == 'debian' ]]; then
"${BASEDIR}/base-debian.sh" -2
"${baseDir}/debian.sh" --network-interfaces
fi
if [[ "${ID}" == 'elementary' ]]; then
"${BASEDIR}/base-elementary.sh" -2
"${baseDir}/elementary.sh" --sources
elif [[ "${ID}" == 'debian' ]]; then
"${BASEDIR}/base-debian.sh" -3
"${baseDir}/debian.sh" --sources
fi
mount \
@@ -163,27 +165,27 @@ cp \
/mnt/etc/
if [[ "${ID}" == 'fedora' ]]; then
"${BASEDIR}/base-fedora.sh" -2
"${baseDir}/fedora.sh" --resolv-conf
fi
rsync -pogAXtlHrDx \
"${BASEDIR}" \
"${baseDir}" \
/mnt
if [[ "${ID}" == 'elementary' ]]; then
"${BASEDIR}/base-elementary.sh" -3
"${baseDir}/elementary.sh" --skel
fi
# if [[ ! "${*}" = *--no-part* ]]; then
if [[ -f "/etc/zfs/keys/${HOSTNAME,,}.key" ]]; then
if [[ -f "/etc/zfs/keys/${hostname,,}.key" ]]; then
cp \
/etc/zfs/keys/${HOSTNAME,,}.key \
/etc/zfs/keys/${hostname,,}.key \
/mnt/etc/zfs/keys/
fi
# fi
if [[ "${ID}" == 'elementary' ]]; then
"${BASEDIR}/base-elementary.sh" -4
"${baseDir}/elementary.sh" --elementary
fi
printf \
@@ -191,7 +193,7 @@ printf \
chroot \
/mnt \
"$(printf "${BASEDIR}\n" | sed 's|.*\/|\/|')/install.sh"
"$(printf "${baseDir}\n" | sed 's|.*\/|\/|')/install.sh"
mount | grep -v zfs | tac | awk '/\/mnt/ {print $3}' | xargs -I {} umount -Rlf {}