Browse Source

feat: Extract drivers to temporary folder (#803)

Kroese 9 months ago
parent
commit
3cab3d1c7b
2 changed files with 38 additions and 58 deletions
  1. 34 30
      src/define.sh
  2. 4 28
      src/install.sh

+ 34 - 30
src/define.sh

@@ -1637,6 +1637,31 @@ validVersion() {
   return 1
   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() {
 migrateFiles() {
 
 
   local base="$1"
   local base="$1"
@@ -1665,7 +1690,7 @@ prepareInstall() {
   local arch="$4"
   local arch="$4"
   local key="$5"
   local key="$5"
   local driver="$6"
   local driver="$6"
-  local drivers="/run/shm/drivers"
+  local drivers="/tmp/drivers"
 
 
   rm -rf "$drivers"
   rm -rf "$drivers"
   mkdir -p "$drivers"
   mkdir -p "$drivers"
@@ -1723,8 +1748,8 @@ prepareInstall() {
   fi
   fi
 
 
   mkdir -p "$dir/\$OEM\$/\$1/Drivers/sata"
   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 '/^\[SCSI.Load\]/s/$/\niaStor=iaStor.sys,4/' "$target/TXTSETUP.SIF"
   sed -i '/^\[FileFlags\]/s/$/\niaStor.sys = 16/' "$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."
     warn "this version of $desc requires a volume license key (VLK), it will ask for one during installation."
   fi
   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
   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 "$YRES" ] && YRES="720"
   [ -z "$XRES" ] && XRES="1280"
   [ -z "$XRES" ] && XRES="1280"
 
 
@@ -1958,18 +1974,6 @@ prepareInstall() {
           echo ""
           echo ""
   } | unix2dos > "$dir/\$OEM\$/cmdlines.txt"
   } | 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
   return 0
 }
 }
 
 

+ 4 - 28
src/install.sh

@@ -704,8 +704,9 @@ addDriver() {
   esac
   esac
 
 
   local dest="$path/$target/$driver"
   local dest="$path/$target/$driver"
-  mv "$path/$driver/$folder" "$dest"
+  mkdir -p "$dest"
 
 
+  cp -Lr "$path/$driver/$folder/." "$dest"
   return 0
   return 0
 }
 }
 
 
@@ -756,7 +757,7 @@ addDrivers() {
       # Workaround Virtio GPU driver bug
       # Workaround Virtio GPU driver bug
       local dst="$src/\$OEM\$/\$\$/Drivers"
       local dst="$src/\$OEM\$/\$\$/Drivers"
       mkdir -p "$dst"
       mkdir -p "$dst"
-      ! cp -a "$dest/." "$dst" && return 1
+      ! cp -Lr "$dest/." "$dst" && return 1
       rm -rf "$dest/viogpudo"
       rm -rf "$dest/viogpudo"
       ;;
       ;;
   esac
   esac
@@ -769,37 +770,12 @@ addDrivers() {
   return 0
   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() {
 updateImage() {
 
 
   local dir="$1"
   local dir="$1"
   local asset="$2"
   local asset="$2"
   local language="$3"
   local language="$3"
-  local tmp="/run/shm/img"
+  local tmp="/tmp/install"
   local file="autounattend.xml"
   local file="autounattend.xml"
   local org="${file//.xml/.org}"
   local org="${file//.xml/.org}"
   local dat="${file//.xml/.dat}"
   local dat="${file//.xml/.dat}"