mirror of
https://github.com/dockur/windows.git
synced 2026-08-03 12:37:20 +01:00
Update image.sh
This commit is contained in:
+30
-31
@@ -1,6 +1,30 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -Eeuo pipefail
|
set -Eeuo pipefail
|
||||||
|
|
||||||
|
checkPlatform() {
|
||||||
|
|
||||||
|
local xml="$1"
|
||||||
|
local platform compat
|
||||||
|
|
||||||
|
platform=$(getPlatform "$xml")
|
||||||
|
|
||||||
|
case "${platform,,}" in
|
||||||
|
"x86" ) compat="x64" ;;
|
||||||
|
"x64" ) compat="$platform" ;;
|
||||||
|
"arm64" ) compat="$platform" ;;
|
||||||
|
"mixed" )
|
||||||
|
error "Windows images with mixed architectures are not supported!"
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
* ) compat="${PLATFORM,,}" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
[[ "${compat,,}" == "${PLATFORM,,}" ]] && return 0
|
||||||
|
|
||||||
|
error "You cannot boot ${platform^^} images on a $PLATFORM CPU!"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
getPlatform() {
|
getPlatform() {
|
||||||
|
|
||||||
local xml="$1"
|
local xml="$1"
|
||||||
@@ -32,30 +56,6 @@ getPlatform() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
checkPlatform() {
|
|
||||||
|
|
||||||
local xml="$1"
|
|
||||||
local platform compat
|
|
||||||
|
|
||||||
platform=$(getPlatform "$xml")
|
|
||||||
|
|
||||||
case "${platform,,}" in
|
|
||||||
"x86" ) compat="x64" ;;
|
|
||||||
"x64" ) compat="$platform" ;;
|
|
||||||
"arm64" ) compat="$platform" ;;
|
|
||||||
"mixed" )
|
|
||||||
error "Windows images with mixed architectures are not supported!"
|
|
||||||
return 1
|
|
||||||
;;
|
|
||||||
* ) compat="${PLATFORM,,}" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
[[ "${compat,,}" == "${PLATFORM,,}" ]] && return 0
|
|
||||||
|
|
||||||
error "You cannot boot ${platform^^} images on a $PLATFORM CPU!"
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
hasVersion() {
|
hasVersion() {
|
||||||
|
|
||||||
local wanted="$1"
|
local wanted="$1"
|
||||||
@@ -275,13 +275,12 @@ selectVersion() {
|
|||||||
local preferred_name="$3"
|
local preferred_name="$3"
|
||||||
local result_name="$4"
|
local result_name="$4"
|
||||||
local index_name="$5"
|
local index_name="$5"
|
||||||
|
local wanted candidate match
|
||||||
local -n version_list="$versions_name"
|
local -n version_list="$versions_name"
|
||||||
local -n index_map="$indexes_name"
|
local -n index_map="$indexes_name"
|
||||||
local -n preference_list="$preferred_name"
|
local -n preference_list="$preferred_name"
|
||||||
local -n selected_version="$result_name"
|
local -n selected_version="$result_name"
|
||||||
local -n selected_image_index="$index_name"
|
local -n selected_image_index="$index_name"
|
||||||
|
|
||||||
local wanted candidate match
|
|
||||||
local -a candidates=()
|
local -a candidates=()
|
||||||
|
|
||||||
for wanted in "${preference_list[@]}"; do
|
for wanted in "${preference_list[@]}"; do
|
||||||
@@ -317,11 +316,11 @@ selectEdition() {
|
|||||||
local index_name="$7"
|
local index_name="$7"
|
||||||
local normalize_name="$8"
|
local normalize_name="$8"
|
||||||
local order_name="$9"
|
local order_name="$9"
|
||||||
|
|
||||||
local -n edition_versions="$versions_name"
|
local -n edition_versions="$versions_name"
|
||||||
local -n edition_bases="$bases_name"
|
local -n edition_bases="$bases_name"
|
||||||
local -n edition_groups="$groups_name"
|
local -n edition_groups="$groups_name"
|
||||||
local -n edition_order="$order_name"
|
local -n edition_order="$order_name"
|
||||||
|
|
||||||
local base edition entry suffix priority i
|
local base edition entry suffix priority i
|
||||||
local -a preferred=()
|
local -a preferred=()
|
||||||
local -A seen=()
|
local -A seen=()
|
||||||
@@ -415,13 +414,12 @@ detectVersion() {
|
|||||||
local result_name="$3"
|
local result_name="$3"
|
||||||
local index_name="$4"
|
local index_name="$4"
|
||||||
|
|
||||||
local normalize_name="normalizeEditionID"
|
|
||||||
|
|
||||||
local -a bases=()
|
local -a bases=()
|
||||||
local -a groups=()
|
local -a groups=()
|
||||||
local -a versions=()
|
local -a versions=()
|
||||||
local -a selection_order=()
|
local -a selection_order=()
|
||||||
local -A image_indexes=()
|
local -A image_indexes=()
|
||||||
|
local normalize_name="normalizeEditionID"
|
||||||
|
|
||||||
printf -v "$result_name" '%s' ""
|
printf -v "$result_name" '%s' ""
|
||||||
printf -v "$index_name" '%s' ""
|
printf -v "$index_name" '%s' ""
|
||||||
@@ -598,6 +596,7 @@ createSetupImage() {
|
|||||||
|
|
||||||
local stage="$1"
|
local stage="$1"
|
||||||
local image="$2"
|
local image="$2"
|
||||||
|
|
||||||
local tmp="${image}.tmp"
|
local tmp="${image}.tmp"
|
||||||
local target="::/\$OEM\$/\$1/OEM"
|
local target="::/\$OEM\$/\$1/OEM"
|
||||||
local install="$stage/.overlay-install.bat"
|
local install="$stage/.overlay-install.bat"
|
||||||
@@ -949,8 +948,8 @@ readWimHeader() {
|
|||||||
local image="$2"
|
local image="$2"
|
||||||
local result_name="$3"
|
local result_name="$3"
|
||||||
|
|
||||||
local header="$TMP/wim-header.bin"
|
|
||||||
local size signature
|
local size signature
|
||||||
|
local header="$TMP/wim-header.bin"
|
||||||
|
|
||||||
printf -v "$result_name" '%s' ""
|
printf -v "$result_name" '%s' ""
|
||||||
|
|
||||||
@@ -1189,13 +1188,13 @@ parseWimHeader() {
|
|||||||
local -n original_ref="$original_name"
|
local -n original_ref="$original_name"
|
||||||
local -n flags_ref="$flags_name"
|
local -n flags_ref="$flags_name"
|
||||||
|
|
||||||
local details image_size raw
|
|
||||||
local header_size=0
|
local header_size=0
|
||||||
local parsed_size=0
|
local parsed_size=0
|
||||||
local parsed_offset=0
|
local parsed_offset=0
|
||||||
local parsed_original=0
|
local parsed_original=0
|
||||||
local parsed_flags=0
|
local parsed_flags=0
|
||||||
local -a bytes=()
|
local -a bytes=()
|
||||||
|
local details image_size raw
|
||||||
|
|
||||||
offset_ref=""
|
offset_ref=""
|
||||||
size_ref=""
|
size_ref=""
|
||||||
|
|||||||
Reference in New Issue
Block a user