mirror of
https://codeberg.org/Computertruhe/Setup-Skripte.git
synced 2025-06-28 03:16:21 +02:00
130 lines
3 KiB
Bash
Executable file
130 lines
3 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Das ist die Version 2 von Platte einlesen.
|
|
# Hier wird mit einem anderen tool als dd ein image erstellt. Mit partclone
|
|
# daher muss das Layout der Installation strikt eingehalten werden
|
|
# P0=Efi(vfat) P1=swap P2=homeroot(Btrfs)
|
|
|
|
source sub_install
|
|
|
|
GG=$(lsblk -r -p -n -o NAME,TYPE |grep disk | cut -f1 -d' ')
|
|
echo $GG
|
|
Devs=()
|
|
for dev in $GG; do
|
|
Devs+=($dev)
|
|
Devs+=("")
|
|
done
|
|
|
|
|
|
while true
|
|
do
|
|
|
|
dev=`dialog --menu "Platte einlesen. Festplattengerät wählen" 0 0 0 \
|
|
"${Devs[@]}" 3>&1 1>&2 2>&3`
|
|
dialog --clear
|
|
dialog --yesno "Bestätigen Sie Ihre Auswahl: $dev" 0 0
|
|
|
|
# Get exit status
|
|
# 0 means user hit [yes] button.
|
|
# 1 means user hit [no] button.
|
|
# 255 means user hit [Esc] key.
|
|
response=$?
|
|
case $response in
|
|
0) echo "Bestätigt"; break;;
|
|
1) echo "Neu wählen";;
|
|
255) echo "[ESC]"; exit 1;;
|
|
esac
|
|
|
|
done
|
|
|
|
# in $dev steht jetzt das Basisdevice
|
|
|
|
|
|
|
|
while true
|
|
do
|
|
dialog --clear
|
|
# show an inputbox
|
|
FILENM=$(dialog --title "Imagedateiverzeichnis" --inputbox "Verzeichnisname " 8 60 3>&1 1>&2 2>&3 3>&- )
|
|
|
|
# get respose
|
|
respose=$?
|
|
case $response in
|
|
1) exit 2 ;;
|
|
255) echo "[ESC]"; exit 1;;
|
|
esac
|
|
|
|
|
|
dialog --clear
|
|
dialog --yesno "Gewählter Name: $FILENM" 0 0
|
|
# Get exit status
|
|
# 0 means user hit [yes] button.
|
|
# 1 means user hit [no] button.
|
|
# 255 means user hit [Esc] key.
|
|
response=$?
|
|
case $response in
|
|
0) echo "Bestätigt"; break;;
|
|
1) echo "Neu wählen";;
|
|
255) echo "[ESC]"; exit 1;;
|
|
esac
|
|
|
|
|
|
done
|
|
|
|
# ------- eigentliche Aktion ---------
|
|
|
|
# Partitionen ermitteln und checken
|
|
echo "Habe folgende Partitionen entdeckt:"
|
|
|
|
# Typen,fstyp und pfad auf normale partitionen beschränkt ermitteln
|
|
DSK=$(lsblk -l -oPATH,FSTYPE,TYPE -p "$dev" |grep 'part')
|
|
Pp=()
|
|
Pt=()
|
|
IFS=$'\n' #newline ist separator (=ws wird mitgenommen)
|
|
pat='^([^ ]*) +([^ ]+) +.*$' # Bash regex mit Leerzeichen nutzen = Variable nehmen
|
|
for line in $DSK; do
|
|
echo $line
|
|
if [[ $line =~ $pat ]]; then
|
|
#li=${BASH_REMATCH[1]}${BASH_REMATCH[2]};
|
|
pp=${BASH_REMATCH[1]}
|
|
fs=${BASH_REMATCH[2]}
|
|
#echo " pp $pp - fs $fs"
|
|
Pp+=($pp)
|
|
Pt+=($fs)
|
|
# Pp+=("")
|
|
fi
|
|
done
|
|
|
|
# jetzt sind in den arrays Pt und Pp die Partitionstypen und Pfade drin
|
|
|
|
echo "Prüfe layout, ob es unserem Modus passt"
|
|
if [ "${Pt[0]}" != "vfat" ]; then
|
|
echo "Erwarte bei ${Pp[0]} eine EFI-Partition mit vfat. Nicht gefunden"
|
|
exit 1
|
|
fi
|
|
|
|
if [ "${Pt[1]}" != "swap" ]; then
|
|
echo "Erwarte bei ${Pp[1]} eine Swap-Partition. Nicht gefunden"
|
|
exit 1
|
|
fi
|
|
|
|
if [ "${Pt[2]}" != "btrfs" ]; then
|
|
echo "Erwarte bei ${Pp[2]} eine root/home Partition mit BTRFS. Nicht gefunden"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Layout passt so. Beginne den Einlesevorgang"
|
|
|
|
DIRECTORY="$FILENM"
|
|
if [ -d "$DIRECTORY" ]; then
|
|
echo "$DIRECTORY existiert bereits. Beende."
|
|
exit 2
|
|
fi
|
|
|
|
mkdir "$DIRECTORY"
|
|
|
|
echo "Bearbeite jetzt ${Pt[2]}"
|
|
partclone.vfat -c -s "${Pt[0]}" -o "$DIRECTORY/p0"
|
|
partclone.btrfs -c -s "${Pt[2]}" -o "$DIRECTORY/p2"
|
|
|
|
echo "Fertig. In $DIRECTORY befinden sich nun die Abbilder der Partitionen"
|