forked from obel1x/fedora-OEMDRV
8652131882
setup_system.inc.sh: replace $(dirname "$0") with $(dirname "${BASH_SOURCE[0]:-$0}") so
paths resolve correctly whether the file is sourced or executed directly. Add --missingconfok
flag to warn-and-continue instead of prompting+aborting when config is missing. Fix machine_uuid
path (missing ../). Move `source config` into the else branch so it is not reached when
missingconfok skips the exit.
install.sh: source inc.sh instead of executing it as a subprocess so exported variables
(REPO_URL etc.) propagate back to the caller. Fix git-origin conflict handling: when reusing
an existing OEMDRV partition the user has already confirmed they want to keep it, so remove
the "fresh clone / wipe" option entirely. Now always pulls (fetch+checkout) when a git repo
is present; clears and fresh-clones only when no git repo exists on the partition.
basic_pre_script.inc: dot-source inc.sh so INSTALLDOCS and other config vars are available.
config.dist, sync_client_software.sh: rename UPGRADEURL/UPGRADEBRANCH to REPO_URL/REPO_BRANCH
to match the variable names already used in install.sh.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
97 lines
3.6 KiB
PHP
97 lines
3.6 KiB
PHP
# Fedora Install Pre- Script
|
|
#
|
|
# SPDX-FileCopyrightText: Daniel Pätzold
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
#
|
|
# This script is meant to be executed from Fedora install ks.cfg in the pre-section
|
|
# It should reside on the Partition named OEMDRV formated as BTRFS or EXT4
|
|
# The Location inside the OEMDRV- Partition should be /ks_base_profiles/basic_pre_script.inc
|
|
# When running from ks.cfg pre-section, the OEMDRV should be mountet by Anaconda to /mnt/tmp
|
|
# It will be run as root and will use sh to execute, the pre-section should look somewhat like this:
|
|
# %pre
|
|
# /bin/sh /mnt/tmp/ks_base_profiles/basic_pre_script.inc
|
|
# %end
|
|
|
|
# The Script will search for the drive with the Partition OEMDRV on it and
|
|
# REMOVE ANY OTHER PARTITIONS ON THAT DRIVE
|
|
# As Anacondas scripts are non interactive, it will do so without asking or stopping.
|
|
|
|
# We need to be root
|
|
if [ "$EUID" -ne 0 ]
|
|
then echo "* Error: Please run as root"
|
|
exit 1
|
|
fi
|
|
|
|
# Usually, the pre section is run in the sh- shell, the OEMDRV will be mountet at /mnt/tmp
|
|
# So we need to check if this is the case
|
|
FQFILENAME="/mnt/anaconda_pre/ks_base_profiles/basic_pre_script.inc"
|
|
if [ ! -f ${FQFILENAME} ]; then
|
|
echo "* Error finding the expeted Directory/File structure: Missing File"
|
|
echo "${FQFILENAME}"
|
|
echo "* Please check to run from Kickstart- Installation, or mount the OEMDRV with this File in /mnt/anaconda_pre before."
|
|
exit 1
|
|
fi
|
|
|
|
# Check if there is a Partition OEMDRV and on which Drive
|
|
. /mnt/anaconda_pre/system_setup/setup_system.inc.sh
|
|
OEMDRVINFO=$(blkid | grep 'LABEL="OEMDRV"')
|
|
if [ "${OEMDRVINFO}." == "." ] ; then
|
|
echo "* Error: Required partition with label 'OEMDRV' is not found."
|
|
echo "It seems like this PC has never been setup to this Domain before."
|
|
echo "Please Check your Documentation at"
|
|
echo "${INSTALLDOCS}"
|
|
echo "on how to create a new setup on this PC"
|
|
exit 1
|
|
fi
|
|
OEMDRVPART=$(echo "${OEMDRVINFO}" | cut -d ':' -f 1)
|
|
echo "Found Label OEMDRV on ${OEMDRVPART}"
|
|
|
|
#Checking which is the Drive that the Partition is on
|
|
SYSDRIVE=$(lsblk -l | grep ":0" | while IFS= read -r SYSDRIVETMP; do
|
|
SYSDRIVE='/dev/'$(echo "${SYSDRIVETMP}" | cut -d ' ' -f 1)
|
|
# echo "Check ${SYSDRIVE}"
|
|
if echo "${OEMDRVPART}" | grep -q "${SYSDRIVE}"; then
|
|
echo ${SYSDRIVE}
|
|
break;
|
|
fi
|
|
done)
|
|
echo "Found Disk for Installation: ${SYSDRIVE} with Partition ${OEMDRVPART}"
|
|
|
|
#Check if the Drive has a GPT
|
|
if [ "$(fdisk -l ${SYSDRIVE} | grep 'type: gpt')." == "." ]; then
|
|
echo "* Error: The Drive ${SYSDRIVE} does not look like it has a GPT. Installation cannot proceed."
|
|
exit 1
|
|
else
|
|
echo "The Drive ${SYSDRIVE} contains a GPT."
|
|
fi
|
|
|
|
# Write the target disk for %include in the kickstart main section
|
|
echo "ignoredisk --only-use=${SYSDRIVE:5}" > /tmp/disk-include.cfg
|
|
|
|
OEMDRVPARTSHORT=${OEMDRVPART:5}
|
|
ALLPARTS=$(lsblk -n -l -o NAME "${SYSDRIVE}" -Q 'TYPE=="part"')
|
|
REMPARTS=$(echo "$ALLPARTS" | grep -v "${OEMDRVPARTSHORT}")
|
|
if [ "${REMPARTS}." != "." ]; then
|
|
echo
|
|
echo "The Following Partitions were found and are now going to be deleted:"
|
|
# echo "${REMPARTS}"
|
|
echo "${REMPARTS}" | while IFS= read -r REMPART; do
|
|
# Find the Last Number
|
|
PARTNR=""
|
|
for (( i=0; i<${#REMPART}; i++ )); do
|
|
CHAR="${REMPART:$i:1}"
|
|
if [[ "${CHAR}" =~ [0-9] ]]; then
|
|
PARTNR+="${CHAR}" # Append if its a digit
|
|
else
|
|
PARTNR="" # Reset if a non-digit is encountered
|
|
fi
|
|
done
|
|
echo "${SYSDRIVE}: Part ${PARTNR}"
|
|
blkid /dev/${REMPART}
|
|
if [ $? -eq 0 ]; then
|
|
parted ${SYSDRIVE} rm ${PARTNR}
|
|
fi
|
|
done
|
|
fi
|
|
sync
|