From 5489fafc1f4e90125c5e07a84765e53c94dd3b0c Mon Sep 17 00:00:00 2001 From: Robert K Date: Thu, 8 Sep 2022 00:28:26 +0200 Subject: [PATCH 1/3] Erste version der dialog-Skripte. --- installstick/dlg_platte_bespielen_btrfs.sh | 70 +++++++++++++++++ installstick/dlg_platte_einlesen.sh | 91 ++++++++++++++++++++++ 2 files changed, 161 insertions(+) create mode 100755 installstick/dlg_platte_bespielen_btrfs.sh create mode 100755 installstick/dlg_platte_einlesen.sh diff --git a/installstick/dlg_platte_bespielen_btrfs.sh b/installstick/dlg_platte_bespielen_btrfs.sh new file mode 100755 index 0000000..fce2fa8 --- /dev/null +++ b/installstick/dlg_platte_bespielen_btrfs.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +while true; +do +dialog --clear +# select filename using dialog +IMG=$(dialog --title "Datei mit < > wählen. Image aussuchen" --stdout --fselect ./ 14 88) + +GG=`lsblk -r -p -n -oNAME` +echo $GG +Devs=() +for dev in $GG; do + Devs+=($dev) + Devs+=("") +done + + DEV=`dialog --menu "Festplattengerät wählen" 0 0 0 \ + "${Devs[@]}" 3>&1 1>&2 2>&3` + dialog --clear + + dialog --yesno "Bestätigen Sie Ihre Auswahl: $DEV <- $IMG" 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 "Sicherheitshalber beendet"; exit 1;; + 255) echo "[ESC], Sicherheitshalber beendet"; exit 1;; + esac +done + + +#--------- + +if [ -z "$(command -v growpart)" ]; then + echo "growpart fehlt! Installiere cloud-guest-utils..." + sudo apt update + sudo apt install -y cloud-guest-utils +fi + +if [ -z "$IMG" ] ; then +echo "Image-File angeben!" +exit 1 +fi + +if [ -z "$DEV" ] ; then +echo "HDD dev angeben! z. B. /dev/hdc" +exit 1 +fi + +echo "Warte 5 Sekunden vor dem löschen, abbrechen mit strg + c..." +sleep 5 +echo "Achtung - vorbei, ich mache jetzt alles platt auf" "${DEV}" + +case "$IMG" in + *.bz2) + sudo dd if="$IMG" bs=1M status=progress | bzip2 -d > "$DEV" + ;; + *) + sudo dd if="$IMG" of=$DEV bs=1M status=progress + ;; +esac +sync +sudo growpart $DEV 3 +sudo mount ${DEV}3 /mnt +sudo btrfs filesystem resize max /mnt +sudo umount /mnt +sync diff --git a/installstick/dlg_platte_einlesen.sh b/installstick/dlg_platte_einlesen.sh new file mode 100755 index 0000000..aec32ec --- /dev/null +++ b/installstick/dlg_platte_einlesen.sh @@ -0,0 +1,91 @@ +#!/bin/bash + +GG=`lsblk -r -p -n -oNAME` +echo $GG +Devs=() +for dev in $GG; do + Devs+=($dev) + Devs+=("") +done + + +echo ${Devs[@]} + +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 + + + + +while true +do + dialog --clear + # show an inputbox + FILENM=$(dialog --title "Imagedatei" --inputbox "Dateiname \*.img " 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ählte Datei: $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 + +echo "Ermittle letzten Sektor von Quelldevice $dev" +LASTSECT=$(sudo fdisk -x "$dev" | tail -1 | awk '{print $3}' ) + + dialog --clear + dialog --yesno "Letzter Sektor von letzter Partition auf $dev ist $LASTSECT . OK?" 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";; + 1) echo "Sicherheitshalber beendet"; exit 1;; + 255) echo "[ESC]"; exit 1;; + esac + + + +echo "Bereit $dev bis $LASTSECT in $FILENM zu schreiben" + + + + +dd if=$dev of="$FILENM" bs=512 count=$LASTSECT status=progress From 026d09fd6f2415d9888ea05783e40a64eb751691 Mon Sep 17 00:00:00 2001 From: Robert K Date: Thu, 8 Sep 2022 00:42:42 +0200 Subject: [PATCH 2/3] liesmich hinzu --- installstick/liesmich.txt | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 installstick/liesmich.txt diff --git a/installstick/liesmich.txt b/installstick/liesmich.txt new file mode 100644 index 0000000..54a96ed --- /dev/null +++ b/installstick/liesmich.txt @@ -0,0 +1,26 @@ +Dialogbasierte Imager-Skripte + +Einfaches Zeug mit dd. + +Einlesen: +Bereite die Platte vor. Die dritte Partition sollte / sein und btrfs haben +Verkleinere die Partition mit kparted so weit wie möglich. +Wähle die betreffende Platte aus. Nutze dabei das gesamt-Device +z.B. /dev/sdc. +Wähle dann einen Dateinamen. + +Das Skript ermittelt den Endsektor der letzten Partition (z.B. /dev/sdc3) und erstellt ein +Image indem es dd verwendet. + + +Ausschreiben: +dlg_platte_beschreiben.sh + +einfach aufrufen, sudo-Rechte werden bei Bedarf erfragt. +Der erste Dialog fragt nach dem Device auf das geschrieben werden soll. +Wähle die angeschlossene SSD aus, raw. Nicht die Partition. Also /dev/sde z.B. +Der nächste Dialog lässt das Image auswählen. +Wähle es aus und bestätige. Achtung: 'dialog' möchte die Selektion mit . +Nach einer Sicherheisfrage geht es los. +Es dauert eine weile und die Platte ist bespielt. +Zum Schluss wird die letzte Partition auf die Plattengröße expandiert. From 4e04d8835c6f2a122787f9ddcb372576911ee542 Mon Sep 17 00:00:00 2001 From: Robert Date: Fri, 9 Sep 2022 12:41:49 +0200 Subject: [PATCH 3/3] Nach gestrigem Test, kleine verbesserungen --- installstick/dlg_platte_bespielen_btrfs.sh | 27 ++++++++++++++-------- installstick/dlg_platte_einlesen.sh | 13 +++++++---- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/installstick/dlg_platte_bespielen_btrfs.sh b/installstick/dlg_platte_bespielen_btrfs.sh index fce2fa8..6e7887d 100755 --- a/installstick/dlg_platte_bespielen_btrfs.sh +++ b/installstick/dlg_platte_bespielen_btrfs.sh @@ -1,18 +1,25 @@ #!/bin/bash +if [ -z "$(command -v dialog)" ]; then + echo "dialog fehlt! Installiere dialog..." + sudo apt update + sudo apt install -y dialog +fi + + while true; do -dialog --clear -# select filename using dialog -IMG=$(dialog --title "Datei mit < > wählen. Image aussuchen" --stdout --fselect ./ 14 88) + dialog --clear + # select filename using dialog + IMG=$(dialog --title "Image-Datei wählen. Mit *Leertaste* selektieren" --stdout --fselect ./ 14 88) -GG=`lsblk -r -p -n -oNAME` -echo $GG -Devs=() -for dev in $GG; do + 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 + done DEV=`dialog --menu "Festplattengerät wählen" 0 0 0 \ "${Devs[@]}" 3>&1 1>&2 2>&3` @@ -50,8 +57,8 @@ echo "HDD dev angeben! z. B. /dev/hdc" exit 1 fi -echo "Warte 5 Sekunden vor dem löschen, abbrechen mit strg + c..." -sleep 5 +echo "Warte 2 Sekunden vor dem löschen, abbrechen mit strg + c..." +sleep 2 echo "Achtung - vorbei, ich mache jetzt alles platt auf" "${DEV}" case "$IMG" in diff --git a/installstick/dlg_platte_einlesen.sh b/installstick/dlg_platte_einlesen.sh index aec32ec..a3b3166 100755 --- a/installstick/dlg_platte_einlesen.sh +++ b/installstick/dlg_platte_einlesen.sh @@ -1,6 +1,13 @@ #!/bin/bash -GG=`lsblk -r -p -n -oNAME` +if [ -z "$(command -v dialog)" ]; then + echo "dialog fehlt! Installiere dialog..." + sudo apt update + sudo apt install -y dialog +fi + + +GG=$(lsblk -r -p -n -o NAME,TYPE |grep disk | cut -f1 -d' ') echo $GG Devs=() for dev in $GG; do @@ -9,8 +16,6 @@ for dev in $GG; do done -echo ${Devs[@]} - while true do @@ -88,4 +93,4 @@ echo "Bereit $dev bis $LASTSECT in $FILENM zu schreiben" -dd if=$dev of="$FILENM" bs=512 count=$LASTSECT status=progress +sudo dd if=$dev of="$FILENM" bs=512 count=$LASTSECT status=progress