Zusatzfunktion Raspberry und verschieben der win Scripte
This commit is contained in:
@@ -1,115 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# (c) Christopher Münzer DB InfraGo Betriebszentrale Duisburg
|
|
||||||
|
|
||||||
USB_DEVICE="/dev/sda" # Ändern Sie dies zu Ihrem USB-Stick
|
|
||||||
OUTPUT_ISO="windows_isbpn_$(date +%Y%m%d).iso"
|
|
||||||
LOG="/tmp/log.txt"
|
|
||||||
|
|
||||||
touch $LOG
|
|
||||||
|
|
||||||
echo "1. Analysiere USB-Stick..." >> $LOG
|
|
||||||
sudo fdisk -l "$USB_DEVICE"
|
|
||||||
|
|
||||||
echo "2. Erstelle temporäre Verzeichnisse..." >> $LOG
|
|
||||||
TEMP_DIR=$(mktemp -d)
|
|
||||||
mkdir -p "$TEMP_DIR"/{mount1,mount2,iso}
|
|
||||||
|
|
||||||
echo "3. Identifiziere Bootloader-Dateien..." >> $LOG
|
|
||||||
|
|
||||||
# Boot-Sektor sichern (für BIOS-Boot)
|
|
||||||
sudo dd if="$USB_DEVICE" of="$TEMP_DIR/bootsect.bin" bs=512 count=1 2>/dev/null
|
|
||||||
|
|
||||||
echo "4. Mounte und kopiere Partitionen..." >> $LOG
|
|
||||||
|
|
||||||
# Erste Partition mounten (normalerweise FAT32/EFI)
|
|
||||||
PARTITION_COUNT=$(sudo fdisk -l "$USB_DEVICE" | grep "^/dev" | wc -l)
|
|
||||||
|
|
||||||
if [ $PARTITION_COUNT -ge 1 ]; then
|
|
||||||
echo " - Kopiere Partition 1..." >> $LOG
|
|
||||||
sudo mount "${USB_DEVICE}1" "$TEMP_DIR/mount1" 2>/dev/null
|
|
||||||
if mountpoint -q "$TEMP_DIR/mount1"; then
|
|
||||||
sudo cp -r "$TEMP_DIR"/mount1/* "$TEMP_DIR/iso/" 2>/dev/null
|
|
||||||
sudo umount "$TEMP_DIR/mount1" 2>/dev/null
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $PARTITION_COUNT -ge 2 ]; then
|
|
||||||
echo " - Kopiere Partition 2..." >> $LOG
|
|
||||||
sudo mount "${USB_DEVICE}2" "$TEMP_DIR/mount2" 2>/dev/null
|
|
||||||
if mountpoint -q "$TEMP_DIR/mount2"; then
|
|
||||||
sudo cp -r "$TEMP_DIR"/mount2/* "$TEMP_DIR/iso/" 2>/dev/null
|
|
||||||
sudo umount "$TEMP_DIR/mount2" 2>/dev/null
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "5. Suche nach Bootloader-Dateien..." >> $LOG
|
|
||||||
# Typische Windows-Boot-Dateien
|
|
||||||
BOOT_FILES=(
|
|
||||||
"bootmgr"
|
|
||||||
"bootmgr.efi"
|
|
||||||
"efi/boot/bootx64.efi"
|
|
||||||
"efi/boot/bootia32.efi"
|
|
||||||
"efi/microsoft/boot/bootmgfw.efi"
|
|
||||||
"boot/bcd"
|
|
||||||
"boot/boot.sdi"
|
|
||||||
)
|
|
||||||
|
|
||||||
BOOT_IMAGE=""
|
|
||||||
for file in "${BOOT_FILES[@]}"; do
|
|
||||||
if [ -f "$TEMP_DIR/iso/$file" ]; then
|
|
||||||
echo " Gefunden: $file"
|
|
||||||
if [[ "$file" == *.efi ]] || [[ "$file" == *.bin ]]; then
|
|
||||||
BOOT_IMAGE="$file"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "6. Erstelle bootfähige ISO..." >> $LOG
|
|
||||||
|
|
||||||
if [ -n "$BOOT_IMAGE" ]; then
|
|
||||||
echo " Verwende Boot-Image: $BOOT_IMAGE" >> $LOG
|
|
||||||
sudo genisoimage \
|
|
||||||
-b "$BOOT_IMAGE" \
|
|
||||||
-no-emul-boot \
|
|
||||||
-boot-load-size 8 \
|
|
||||||
-iso-level 3 \
|
|
||||||
-udf \
|
|
||||||
-allow-limited-size \
|
|
||||||
-J -l -D -N \
|
|
||||||
-joliet-long \
|
|
||||||
-relaxed-filenames \
|
|
||||||
-o "$OUTPUT_ISO" \
|
|
||||||
"$TEMP_DIR/iso"
|
|
||||||
else
|
|
||||||
echo " Kein Boot-Image gefunden, erstelle nicht-bootfähige ISO..." >> $LOG
|
|
||||||
sudo genisoimage \
|
|
||||||
-iso-level 3 \
|
|
||||||
-udf \
|
|
||||||
-allow-limited-size \
|
|
||||||
-J -l -D -N \
|
|
||||||
-joliet-lo ng \
|
|
||||||
-relaxed-filenames \
|
|
||||||
-o "$OUTPUT_ISO" \
|
|
||||||
"$TEMP_DIR/iso"
|
|
||||||
|
|
||||||
echo " Hinweis: ISO ist nicht bootfähig. Für bootfähige ISO müssen Sie:"
|
|
||||||
echo " 1. Windows ADK auf einem Windows-System verwenden"
|
|
||||||
echo " 2. Oder die originale Windows ISO mit Ihren Dateien neu erstellen"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "7. Aufräumen..." >> $LOG
|
|
||||||
sudo rm -rf "$TEMP_DIR"
|
|
||||||
|
|
||||||
echo "8. Prüfe ISO..." >> $LOG
|
|
||||||
if [ -f "$OUTPUT_ISO" ]; then
|
|
||||||
echo "Fertig! ISO erstellt: $OUTPUT_ISO" >> $LOG
|
|
||||||
echo "Größe: $(ls -lh "$OUTPUT_ISO" | awk '{print $5}')"
|
|
||||||
|
|
||||||
# Teste ISO-Struktur
|
|
||||||
echo "ISO-Struktur:"
|
|
||||||
isoinfo -i "$OUTPUT_ISO" -l 2>/dev/null | head -20 || \
|
|
||||||
xorriso -indev "$OUTPUT_ISO" -toc 2>/dev/null | head -20 || \
|
|
||||||
echo "Kann ISO nicht lesen, aber Datei wurde erstellt." >> $LOG
|
|
||||||
else
|
|
||||||
echo "FEHLER: ISO wurde nicht erstellt!" >> $LOG
|
|
||||||
fi
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# (c) Christopher Münzer DB InfraGo Betriebszentrale Duisburg
|
|
||||||
|
|
||||||
USB_DEVICE="/dev/sda"
|
|
||||||
OUTPUT_ISO="windows_$(date +%Y%m%d).iso"
|
|
||||||
|
|
||||||
echo "1. Analysiere USB-Stick..."
|
|
||||||
sudo fdisk -l "$USB_DEVICE"
|
|
||||||
|
|
||||||
echo "2. Erstelle temporäre Verzeichnisse..."
|
|
||||||
TEMP_DIR=$(mktemp -d)
|
|
||||||
mkdir -p "$TEMP_DIR"/{mount1,mount2,iso}
|
|
||||||
|
|
||||||
echo "3. Kopiere Boot-Sektion..."
|
|
||||||
sudo dd if="$USB_DEVICE" of="$TEMP_DIR/bootsect.bin" bs=512 count=1
|
|
||||||
|
|
||||||
echo "4. Mounte und kopiere Partitionen..."
|
|
||||||
# Erste Partition (normalerweise FAT32/EFI)
|
|
||||||
sudo mount "${USB_DEVICE}1" "$TEMP_DIR/mount1" 2>/dev/null
|
|
||||||
sudo cp -r "$TEMP_DIR"/mount1/* "$TEMP_DIR/iso/" 2>/dev/null
|
|
||||||
|
|
||||||
# Zweite Partition (normalerweise NTFS/Installation)
|
|
||||||
sudo mount "${USB_DEVICE}2" "$TEMP_DIR/mount2" 2>/dev/null
|
|
||||||
sudo cp -r "$TEMP_DIR"/mount2/* "$TEMP_DIR/iso/" 2>/dev/null
|
|
||||||
|
|
||||||
echo "5. Erstelle bootfähige ISO..."
|
|
||||||
sudo genisoimage \
|
|
||||||
-b efi/microsoft/boot/efisys.bin \
|
|
||||||
-no-emul-boot \
|
|
||||||
-boot-load-size 8 \
|
|
||||||
-iso-level 3 \
|
|
||||||
-udf \
|
|
||||||
-allow-limited-size \
|
|
||||||
-J -l -D -N \
|
|
||||||
-joliet-long \
|
|
||||||
-relaxed-filenames \
|
|
||||||
-o "$OUTPUT_ISO" \
|
|
||||||
"$TEMP_DIR/iso"
|
|
||||||
|
|
||||||
echo "6. Aufräumen..."
|
|
||||||
sudo umount "$TEMP_DIR"/mount* 2>/dev/null
|
|
||||||
sudo rm -rf "$TEMP_DIR"
|
|
||||||
|
|
||||||
echo "Fertig! ISO erstellt: $OUTPUT_ISO"
|
|
||||||
Reference in New Issue
Block a user