Unverified Commit 968602f9 authored by Kroese's avatar Kroese Committed by GitHub
Browse files

feat: Improved compatibility with old CPU's (#397)

parent 4f575ebf
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
FROM scratch
COPY --from=qemux/qemu-docker:4.22 / /
COPY --from=qemux/qemu-docker:4.23 / /

ARG DEBCONF_NOWARNINGS "yes"
ARG DEBIAN_FRONTEND "noninteractive"
+1 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ fi

terminal
tail -fn +0 "$QEMU_LOG" 2>/dev/null &
( sleep 6; [ ! -f "$QEMU_END" ] && info "Windows started succesfully, visit http://localhost:8006/ to view the screen..." ) &
cat "$QEMU_TERM" 2> /dev/null | tee "$QEMU_PTY" &
wait $! || :

+25 −18
Original line number Diff line number Diff line
@@ -95,7 +95,9 @@ CUSTOM=$(find "$STORAGE" -maxdepth 1 -type f -iname custom.iso -printf "%f\n" |
[ -z "$CUSTOM" ] && CUSTOM=$(find "$STORAGE" -maxdepth 1 -type f -iname custom.img -printf "%f\n" | head -n 1)

if [ -z "$CUSTOM" ] && [[ "${VERSION,,}" != "http"* ]]; then
  CUSTOM=$(find "$STORAGE" -maxdepth 1 -type f -iname "${VERSION/\/storage\//}" -printf "%f\n" | head -n 1)
  FN="${VERSION/\/storage\//}"
  [[ "$FN" == "."* ]] && FN="${FN:1}"
  CUSTOM=$(find "$STORAGE" -maxdepth 1 -type f -iname "$FN" -printf "%f\n" | head -n 1)
fi

ESD_URL=""
@@ -234,6 +236,7 @@ skipInstall() {
finishInstall() {

  local iso="$1"
  local aborted="$2"

  # Mark ISO as prepared via magic byte
  printf '\x16' | dd of="$iso" bs=1 seek=0 count=1 conv=notrunc status=none
@@ -247,6 +250,10 @@ finishInstall() {
    rm -f "$STORAGE/windows.old"
  fi

  if [[ "$MANUAL" == [Yy1]* ]] || [[ "$aborted" == [Yy1]* ]]; then
    [[ "${DETECTED,,}" == "win11"* ]] && TPM="Y"
  fi

  rm -rf "$TMP"
  return 0
}
@@ -259,7 +266,7 @@ abortInstall() {
    mv -f "$iso" "$STORAGE/$BASE"
  fi

  finishInstall "$STORAGE/$BASE"
  finishInstall "$STORAGE/$BASE" "Y"
  return 0
}

@@ -310,7 +317,7 @@ startInstall() {

    if [[ "$magic" == "16" ]]; then

      if hasDisk || [[ "$MANUAL" = [Yy1]* ]]; then
      if hasDisk || [[ "$MANUAL" == [Yy1]* ]]; then
        return 1
      fi

@@ -447,7 +454,7 @@ downloadImage() {

    if (( rc == 0 )); then

      [ ! -s "$iso" ] && return 1
      [ ! -s "$iso" ] || [ ! -f "$iso" ] && return 1

      html "Download finished successfully..."
      return 0
@@ -490,7 +497,7 @@ downloadImage() {
  fKill "progress.sh"
  (( rc != 0 )) && error "Failed to download $url , reason: $rc" && exit 60

  [ ! -s "$iso" ] && return 1
  [ ! -s "$iso" ] || [ ! -f "$iso" ] && return 1

  html "Download finished successfully..."
  return 0
@@ -645,7 +652,7 @@ detectImage() {

  if [ -n "$DETECTED" ]; then

    if [ -s "/run/assets/$DETECTED.xml" ]; then
    if [ -f "/run/assets/$DETECTED.xml" ]; then
      [[ "$MANUAL" != [Yy1]* ]] && XML="$DETECTED.xml"
      return 0
    fi
@@ -664,7 +671,7 @@ detectImage() {

  info "Detecting Windows version from ISO image..."

  if [ -s "$dir/WIN51" ] || [ -s "$dir/SETUPXP.HTM" ]; then
  if [ -f "$dir/WIN51" ] || [ -f "$dir/SETUPXP.HTM" ]; then
    DETECTED="winxpx86"
    info "Detected: Windows XP"
    return 0
@@ -680,9 +687,9 @@ detectImage() {
  fi

  loc=$(find "$src" -maxdepth 1 -type f -iname install.wim | head -n 1)
  [ ! -s "$loc" ] && loc=$(find "$src" -maxdepth 1 -type f -iname install.esd | head -n 1)
  [ ! -f "$loc" ] && loc=$(find "$src" -maxdepth 1 -type f -iname install.esd | head -n 1)

  if [ ! -s "$loc" ]; then
  if [ ! -f "$loc" ]; then
    warn "failed to locate 'install.wim' or 'install.esd' in ISO image, $FB"
    BOOT_MODE="windows_legacy"
    return 1
@@ -710,7 +717,7 @@ detectImage() {
  desc=$(printVersion "$DETECTED")
  [ -z "$desc" ] && desc="$DETECTED"

  if [ -s "/run/assets/$DETECTED.xml" ]; then
  if [ -f "/run/assets/$DETECTED.xml" ]; then
    [[ "$MANUAL" != [Yy1]* ]] && XML="$DETECTED.xml"
    info "Detected: $desc"
  else
@@ -930,7 +937,7 @@ prepareImage() {
    if [[ "${DETECTED,,}" != "winxp"* ]] && [[ "${DETECTED,,}" != "win2008"* ]]; then
      if [[ "${DETECTED,,}" != "winvista"* ]] && [[ "${DETECTED,,}" != "win7"* ]]; then

        if [ -s "$dir/$ETFS" ] && [ -s "$dir/$EFISYS" ]; then
        if [ -f "$dir/$ETFS" ] && [ -f "$dir/$EFISYS" ]; then
          return 0
        fi

@@ -966,7 +973,7 @@ updateImage() {
  local asset="/run/assets/$3"
  local path src loc index result

  [ ! -s "$asset" ] && return 0
  [ ! -s "$asset" ] || [ ! -f "$asset" ] && return 0

  path=$(find "$dir" -maxdepth 1 -type f -iname autounattend.xml | head -n 1)
  [ -n "$path" ] && cp "$asset" "$path"
@@ -980,9 +987,9 @@ updateImage() {
  fi

  loc=$(find "$src" -maxdepth 1 -type f -iname boot.wim | head -n 1)
  [ ! -s "$loc" ] && loc=$(find "$src" -maxdepth 1 -type f -iname boot.esd | head -n 1)
  [ ! -f "$loc" ] && loc=$(find "$src" -maxdepth 1 -type f -iname boot.esd | head -n 1)

  if [ ! -s "$loc" ]; then
  if [ ! -f "$loc" ]; then
    warn "failed to locate 'boot.wim' or 'boot.esd' in ISO image, $FB"
    BOOT_MODE="windows_legacy"
    return 1
@@ -1091,7 +1098,7 @@ if ! startInstall; then
  return 0
fi

if [ ! -s "$ISO" ]; then
if [ ! -s "$ISO" ] || [ ! -f "$ISO" ]; then
  rm -f "$ISO"
  if ! downloadImage "$ISO" "$VERSION"; then
    error "Failed to download $VERSION"
@@ -1126,7 +1133,7 @@ if ! buildImage "$DIR"; then
  exit 65
fi

finishInstall "$STORAGE/$BASE"
finishInstall "$STORAGE/$BASE" "N"

html "Successfully prepared image for installation..."
return 0