From 3cab3d1c7bd7de8d7347b61c884e970a51b6d661 Mon Sep 17 00:00:00 2001 From: Kroese Date: Sun, 13 Oct 2024 11:28:21 +0200 Subject: [PATCH] feat: Extract drivers to temporary folder (#803) --- src/define.sh | 64 +++++++++++++++++++++++++++----------------------- src/install.sh | 32 ++++--------------------- 2 files changed, 38 insertions(+), 58 deletions(-) diff --git a/src/define.sh b/src/define.sh index cd214df..1b4bd77 100644 --- a/src/define.sh +++ b/src/define.sh @@ -1637,6 +1637,31 @@ validVersion() { return 1 } +addFolder() { + + local src="$1" + local folder="/oem" + + [ ! -d "$folder" ] && folder="/OEM" + [ ! -d "$folder" ] && folder="$STORAGE/oem" + [ ! -d "$folder" ] && folder="$STORAGE/OEM" + [ ! -d "$folder" ] && return 0 + + local msg="Adding OEM folder to image..." + info "$msg" && html "$msg" + + local dest="$src/\$OEM\$/\$1/OEM" + mkdir -p "$dest" + + ! cp -Lr "$folder/." "$dest" && return 1 + + local file + file=$(find "$dest" -maxdepth 1 -type f -iname install.bat | head -n 1) + [ -f "$file" ] && unix2dos -q "$file" + + return 0 +} + migrateFiles() { local base="$1" @@ -1665,7 +1690,7 @@ prepareInstall() { local arch="$4" local key="$5" local driver="$6" - local drivers="/run/shm/drivers" + local drivers="/tmp/drivers" rm -rf "$drivers" mkdir -p "$drivers" @@ -1723,8 +1748,8 @@ prepareInstall() { fi mkdir -p "$dir/\$OEM\$/\$1/Drivers/sata" - cp -a "$drivers/sata/xp/$arch/." "$dir/\$OEM\$/\$1/Drivers/sata" - cp -a "$drivers/sata/xp/$arch/." "$target" + cp -Lr "$drivers/sata/xp/$arch/." "$dir/\$OEM\$/\$1/Drivers/sata" + cp -Lr "$drivers/sata/xp/$arch/." "$target" sed -i '/^\[SCSI.Load\]/s/$/\niaStor=iaStor.sys,4/' "$target/TXTSETUP.SIF" sed -i '/^\[FileFlags\]/s/$/\niaStor.sys = 16/' "$target/TXTSETUP.SIF" @@ -1749,23 +1774,14 @@ prepareInstall() { warn "this version of $desc requires a volume license key (VLK), it will ask for one during installation." fi - local oem="" - local folder="/oem" - - [ ! -d "$folder" ] && folder="/OEM" - [ ! -d "$folder" ] && folder="$STORAGE/oem" - [ ! -d "$folder" ] && folder="$STORAGE/OEM" - - if [ -d "$folder" ]; then - - file=$(find "$folder" -maxdepth 1 -type f -iname install.bat | head -n 1) - - if [ -f "$file" ]; then - unix2dos -q "$file" - oem="\"Script\"=\"cmd /C start \\\"Install\\\" \\\"cmd /C C:\\\\OEM\\\\install.bat\\\"\"" - fi + if ! addFolder "$dir"; then + error "Failed to add OEM folder to image!" && return 1 fi + local oem="" + local install="$dir/\$OEM\$/\$1/OEM/install.bat" + [ -f "$install" ] && oem="\"Script\"=\"cmd /C start \\\"Install\\\" \\\"cmd /C C:\\\\OEM\\\\install.bat\\\"\"" + [ -z "$YRES" ] && YRES="720" [ -z "$XRES" ] && XRES="1280" @@ -1958,18 +1974,6 @@ prepareInstall() { echo "" } | unix2dos > "$dir/\$OEM\$/cmdlines.txt" - [ ! -d "$folder" ] && return 0 - - msg="Adding OEM folder to image..." - info "$msg" && html "$msg" - - local dest="$dir/\$OEM\$/\$1/" - mkdir -p "$dest" - - if ! cp -r "$folder" "$dest"; then - error "Failed to copy OEM folder!" && return 1 - fi - return 0 } diff --git a/src/install.sh b/src/install.sh index 32f2f68..f6cad16 100644 --- a/src/install.sh +++ b/src/install.sh @@ -704,8 +704,9 @@ addDriver() { esac local dest="$path/$target/$driver" - mv "$path/$driver/$folder" "$dest" + mkdir -p "$dest" + cp -Lr "$path/$driver/$folder/." "$dest" return 0 } @@ -756,7 +757,7 @@ addDrivers() { # Workaround Virtio GPU driver bug local dst="$src/\$OEM\$/\$\$/Drivers" mkdir -p "$dst" - ! cp -a "$dest/." "$dst" && return 1 + ! cp -Lr "$dest/." "$dst" && return 1 rm -rf "$dest/viogpudo" ;; esac @@ -769,37 +770,12 @@ addDrivers() { return 0 } -addFolder() { - - local src="$1" - local folder="/oem" - - [ ! -d "$folder" ] && folder="/OEM" - [ ! -d "$folder" ] && folder="$STORAGE/oem" - [ ! -d "$folder" ] && folder="$STORAGE/OEM" - [ ! -d "$folder" ] && return 0 - - local msg="Adding OEM folder to image..." - info "$msg" && html "$msg" - - local dest="$src/\$OEM\$/\$1/OEM" - mkdir -p "$dest" - - ! cp -a "$folder/." "$dest" && return 1 - - local file - file=$(find "$dest" -maxdepth 1 -type f -iname install.bat | head -n 1) - [ -f "$file" ] && unix2dos -q "$file" - - return 0 -} - updateImage() { local dir="$1" local asset="$2" local language="$3" - local tmp="/run/shm/img" + local tmp="/tmp/install" local file="autounattend.xml" local org="${file//.xml/.org}" local dat="${file//.xml/.dat}"