mirror of
				https://github.com/dockur/windows.git
				synced 2025-11-04 14:16:26 +00:00 
			
		
		
		
	Compare commits
	
		
			11 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					1a6a2dbad0 | ||
| 
						 | 
					11a19f6a9d | ||
| 
						 | 
					544501107a | ||
| 
						 | 
					122d1ff98e | ||
| 
						 | 
					c1c44c4da7 | ||
| 
						 | 
					f661df3abc | ||
| 
						 | 
					a0bcd719be | ||
| 
						 | 
					9236127a86 | ||
| 
						 | 
					fa606aec53 | ||
| 
						 | 
					8790b4ec7c | ||
| 
						 | 
					e3cf3ccf3d | 
							
								
								
									
										66
									
								
								.github/workflows/review.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								.github/workflows/review.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					on:
 | 
				
			||||||
 | 
					  pull_request:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					name: "Review"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					permissions:
 | 
				
			||||||
 | 
					  contents: read
 | 
				
			||||||
 | 
					  pull-requests: write
 | 
				
			||||||
 | 
					  checks: write
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  review:
 | 
				
			||||||
 | 
					    name: review
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      -
 | 
				
			||||||
 | 
					        name: Checkout
 | 
				
			||||||
 | 
					        uses: actions/checkout@v5
 | 
				
			||||||
 | 
					      -
 | 
				
			||||||
 | 
					        name: Spelling
 | 
				
			||||||
 | 
					        uses: reviewdog/action-misspell@v1
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          locale: "US"
 | 
				
			||||||
 | 
					          level: warning
 | 
				
			||||||
 | 
					          pattern: |
 | 
				
			||||||
 | 
					            *.md
 | 
				
			||||||
 | 
					            *.sh
 | 
				
			||||||
 | 
					          reporter: github-pr-review
 | 
				
			||||||
 | 
					          github_token: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
 | 
					      -
 | 
				
			||||||
 | 
					        name: Hadolint
 | 
				
			||||||
 | 
					        uses: reviewdog/action-hadolint@v1
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          level: warning
 | 
				
			||||||
 | 
					          reporter: github-pr-review
 | 
				
			||||||
 | 
					          hadolint_ignore: DL3006 DL3008
 | 
				
			||||||
 | 
					          github_token: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
 | 
					      -
 | 
				
			||||||
 | 
					        name: YamlLint
 | 
				
			||||||
 | 
					        uses: reviewdog/action-yamllint@v1
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          level: warning
 | 
				
			||||||
 | 
					          reporter: github-pr-review
 | 
				
			||||||
 | 
					          github_token: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
 | 
					      -
 | 
				
			||||||
 | 
					        name: ActionLint
 | 
				
			||||||
 | 
					        uses: reviewdog/action-actionlint@v1
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          level: warning
 | 
				
			||||||
 | 
					          reporter: github-pr-review
 | 
				
			||||||
 | 
					          github_token: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
 | 
					      -
 | 
				
			||||||
 | 
					        name: Shellformat
 | 
				
			||||||
 | 
					        uses: reviewdog/action-shfmt@v1
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          level: warning
 | 
				
			||||||
 | 
					          shfmt_flags: "-i 2 -ci -bn"
 | 
				
			||||||
 | 
					          github_token: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
 | 
					      -
 | 
				
			||||||
 | 
					        name: Shellcheck
 | 
				
			||||||
 | 
					        uses: reviewdog/action-shellcheck@v1
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          level: warning
 | 
				
			||||||
 | 
					          reporter: github-pr-review
 | 
				
			||||||
 | 
					          shellcheck_flags: -x -e SC1091 -e SC2001 -e SC2002 -e SC2034 -e SC2064 -e SC2153 -e SC2317 -e SC2028
 | 
				
			||||||
 | 
					          github_token: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
ARG VERSION_ARG="latest"
 | 
					ARG VERSION_ARG="latest"
 | 
				
			||||||
FROM scratch AS build-amd64
 | 
					FROM scratch AS build-amd64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPY --from=qemux/qemu:7.26 / /
 | 
					COPY --from=qemux/qemu:7.27 / /
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ARG TARGETARCH
 | 
					ARG TARGETARCH
 | 
				
			||||||
ARG DEBCONF_NOWARNINGS="yes"
 | 
					ARG DEBCONF_NOWARNINGS="yes"
 | 
				
			||||||
@ -19,7 +19,7 @@ RUN set -eu && \
 | 
				
			|||||||
        cabextract \
 | 
					        cabextract \
 | 
				
			||||||
        libxml2-utils \
 | 
					        libxml2-utils \
 | 
				
			||||||
        libarchive-tools && \
 | 
					        libarchive-tools && \
 | 
				
			||||||
    wget "https://github.com/gershnik/wsdd-native/releases/download/v1.21/wsddn_1.21_${TARGETARCH}.deb" -O /tmp/wsddn.deb -q && \
 | 
					    wget "https://github.com/gershnik/wsdd-native/releases/download/v1.22/wsddn_1.22_${TARGETARCH}.deb" -O /tmp/wsddn.deb -q && \
 | 
				
			||||||
    dpkg -i /tmp/wsddn.deb && \
 | 
					    dpkg -i /tmp/wsddn.deb && \
 | 
				
			||||||
    apt-get clean && \
 | 
					    apt-get clean && \
 | 
				
			||||||
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
 | 
					    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
 | 
				
			||||||
 | 
				
			|||||||
@ -53,7 +53,7 @@ services:
 | 
				
			|||||||
##### Via Docker CLI:
 | 
					##### Via Docker CLI:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
docker run -it --rm --name windows -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD:-.}/windows:/storage" --stop-timeout 120 dockurr/windows
 | 
					docker run -it --rm --name windows -e "VERSION=11" -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD:-.}/windows:/storage" --stop-timeout 120 docker.io/dockurr/windows
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
##### Via Kubernetes:
 | 
					##### Via Kubernetes:
 | 
				
			||||||
 | 
				
			|||||||
@ -39,6 +39,8 @@ terminal
 | 
				
			|||||||
tail -fn +0 "$QEMU_LOG" --pid=$$ 2>/dev/null &
 | 
					tail -fn +0 "$QEMU_LOG" --pid=$$ 2>/dev/null &
 | 
				
			||||||
cat "$QEMU_TERM" 2> /dev/null | tee "$QEMU_PTY" | \
 | 
					cat "$QEMU_TERM" 2> /dev/null | tee "$QEMU_PTY" | \
 | 
				
			||||||
sed -u -e 's/\x1B\[[=0-9;]*[a-z]//gi' \
 | 
					sed -u -e 's/\x1B\[[=0-9;]*[a-z]//gi' \
 | 
				
			||||||
 | 
					-e 's/\x1B\x63//g' -e 's/\x1B\[[=?]7l//g' \
 | 
				
			||||||
 | 
					-e '/^$/d' -e 's/\x44\x53\x73//g' \
 | 
				
			||||||
-e 's/failed to load Boot/skipped Boot/g' \
 | 
					-e 's/failed to load Boot/skipped Boot/g' \
 | 
				
			||||||
-e 's/0): Not Found/0)/g' & wait $! || :
 | 
					-e 's/0): Not Found/0)/g' & wait $! || :
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -22,7 +22,11 @@ backup () {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  mkdir -p "$root"
 | 
					  if ! makeDir "$root"; then
 | 
				
			||||||
 | 
					    error "Failed to create directory \"$root\" !"
 | 
				
			||||||
 | 
					    return 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  local folder="$name"
 | 
					  local folder="$name"
 | 
				
			||||||
  local dir="$root/$folder"
 | 
					  local dir="$root/$folder"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -34,7 +38,11 @@ backup () {
 | 
				
			|||||||
  done
 | 
					  done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  rm -rf "$dir"
 | 
					  rm -rf "$dir"
 | 
				
			||||||
  mkdir -p "$dir"
 | 
					
 | 
				
			||||||
 | 
					  if ! makeDir "$dir"; then
 | 
				
			||||||
 | 
					    error "Failed to create directory \"$dir\" !"
 | 
				
			||||||
 | 
					    return 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  [ -f "$iso" ] && mv -f "$iso" "$dir/"
 | 
					  [ -f "$iso" ] && mv -f "$iso" "$dir/"
 | 
				
			||||||
  find "$STORAGE" -maxdepth 1 -type f -iname 'data.*' -not -iname '*.iso' -exec mv -n {} "$dir/" \;
 | 
					  find "$STORAGE" -maxdepth 1 -type f -iname 'data.*' -not -iname '*.iso' -exec mv -n {} "$dir/" \;
 | 
				
			||||||
@ -127,7 +135,6 @@ startInstall() {
 | 
				
			|||||||
    if [[ "${VERSION,,}" == "http"* ]]; then
 | 
					    if [[ "${VERSION,,}" == "http"* ]]; then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      file=$(basename "${VERSION%%\?*}")
 | 
					      file=$(basename "${VERSION%%\?*}")
 | 
				
			||||||
      file="${file//+/ }"
 | 
					 | 
				
			||||||
      printf -v file '%b' "${file//%/\\x}"
 | 
					      printf -v file '%b' "${file//%/\\x}"
 | 
				
			||||||
      file="${file//[!A-Za-z0-9._-]/_}"
 | 
					      file="${file//[!A-Za-z0-9._-]/_}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -156,7 +163,9 @@ startInstall() {
 | 
				
			|||||||
    ! backup "" && error "Backup failed!"
 | 
					    ! backup "" && error "Backup failed!"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  mkdir -p "$TMP"
 | 
					  if ! makeDir "$TMP"; then
 | 
				
			||||||
 | 
					    error "Failed to create directory \"$TMP\" !"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [ -z "$CUSTOM" ]; then
 | 
					  if [ -z "$CUSTOM" ]; then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -178,6 +187,20 @@ startInstall() {
 | 
				
			|||||||
  return 0
 | 
					  return 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					writeFile() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  local txt="$1"
 | 
				
			||||||
 | 
					  local path="$2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  echo "$txt" >"$path"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ! setOwner "$path"; then
 | 
				
			||||||
 | 
					    error "Failed to set the owner for \"$path\" !"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
finishInstall() {
 | 
					finishInstall() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  local iso="$1"
 | 
					  local iso="$1"
 | 
				
			||||||
@ -188,6 +211,10 @@ finishInstall() {
 | 
				
			|||||||
    error "Failed to find ISO file: $iso" && return 1
 | 
					    error "Failed to find ISO file: $iso" && return 1
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [[ "$iso" == "$STORAGE/"* ]]; then
 | 
				
			||||||
 | 
					    ! setOwner "$iso" && error "Failed to set the owner for \"$iso\" !"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [[ "$aborted" != [Yy1]* ]]; then
 | 
					  if [[ "$aborted" != [Yy1]* ]]; then
 | 
				
			||||||
    # Mark ISO as prepared via magic byte
 | 
					    # Mark ISO as prepared via magic byte
 | 
				
			||||||
    byte="16" && [[ "$MANUAL" == [Yy1]* ]] && byte="17"
 | 
					    byte="16" && [[ "$MANUAL" == [Yy1]* ]] && byte="17"
 | 
				
			||||||
@ -196,56 +223,68 @@ finishInstall() {
 | 
				
			|||||||
    fi
 | 
					    fi
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  cp -f /run/version "$STORAGE/windows.ver"
 | 
					  local file="$STORAGE/windows.ver"
 | 
				
			||||||
 | 
					  cp -f /run/version "$file"
 | 
				
			||||||
 | 
					  ! setOwner "$file" && error "Failed to set the owner for \"$file\" !"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [[ "$iso" == "$STORAGE/"* ]]; then
 | 
					  if [[ "$iso" == "$STORAGE/"* ]]; then
 | 
				
			||||||
    if [[ "$aborted" != [Yy1]* ]] || [ -z "$CUSTOM" ]; then
 | 
					    if [[ "$aborted" != [Yy1]* ]] || [ -z "$CUSTOM" ]; then
 | 
				
			||||||
      base=$(basename "$iso")
 | 
					      base=$(basename "$iso")
 | 
				
			||||||
      echo "$base" > "$STORAGE/windows.base"
 | 
					      file="$STORAGE/windows.base"
 | 
				
			||||||
 | 
					      writeFile "$base" "$file"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [[ "${PLATFORM,,}" == "x64" ]]; then
 | 
					  if [[ "${PLATFORM,,}" == "x64" ]]; then
 | 
				
			||||||
    if [[ "${BOOT_MODE,,}" == "windows_legacy" ]]; then
 | 
					    if [[ "${BOOT_MODE,,}" == "windows_legacy" ]]; then
 | 
				
			||||||
      echo "$BOOT_MODE" > "$STORAGE/windows.mode"
 | 
					      file="$STORAGE/windows.mode"
 | 
				
			||||||
 | 
					      writeFile "$BOOT_MODE" "$file"
 | 
				
			||||||
      if [[ "${MACHINE,,}" != "q35" ]]; then
 | 
					      if [[ "${MACHINE,,}" != "q35" ]]; then
 | 
				
			||||||
        echo "$MACHINE" > "$STORAGE/windows.old"
 | 
					        file="$STORAGE/windows.old"
 | 
				
			||||||
 | 
					        writeFile "$MACHINE" "$file"
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      # Enable secure boot + TPM on manual installs as Win11 requires
 | 
					      # Enable secure boot + TPM on manual installs as Win11 requires
 | 
				
			||||||
      if [[ "$MANUAL" == [Yy1]* || "$aborted" == [Yy1]* ]]; then
 | 
					      if [[ "$MANUAL" == [Yy1]* || "$aborted" == [Yy1]* ]]; then
 | 
				
			||||||
        if [[ "${DETECTED,,}" == "win11"* ]]; then
 | 
					        if [[ "${DETECTED,,}" == "win11"* ]]; then
 | 
				
			||||||
          BOOT_MODE="windows_secure"
 | 
					          BOOT_MODE="windows_secure"
 | 
				
			||||||
          echo "$BOOT_MODE" > "$STORAGE/windows.mode"
 | 
					          file="$STORAGE/windows.mode"
 | 
				
			||||||
 | 
					          writeFile "$BOOT_MODE" "$file"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
      # Enable secure boot on multi-socket systems to workaround freeze
 | 
					      # Enable secure boot on multi-socket systems to workaround freeze
 | 
				
			||||||
      if [ -n "$SOCKETS" ] && [[ "$SOCKETS" != "1" ]]; then
 | 
					      if [ -n "$SOCKETS" ] && [[ "$SOCKETS" != "1" ]]; then
 | 
				
			||||||
        BOOT_MODE="windows_secure"
 | 
					        BOOT_MODE="windows_secure"
 | 
				
			||||||
        echo "$BOOT_MODE" > "$STORAGE/windows.mode"
 | 
					        file="$STORAGE/windows.mode"
 | 
				
			||||||
 | 
					        writeFile "$BOOT_MODE" "$file"
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [ -n "${ARGS:-}" ]; then
 | 
					  if [ -n "${ARGS:-}" ]; then
 | 
				
			||||||
    ARGUMENTS="$ARGS ${ARGUMENTS:-}"
 | 
					    ARGUMENTS="$ARGS ${ARGUMENTS:-}"
 | 
				
			||||||
    echo "$ARGS" > "$STORAGE/windows.args"
 | 
					    file="$STORAGE/windows.args"
 | 
				
			||||||
 | 
					    writeFile "$ARGS" "$file"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [ -n "${VGA:-}" ] && [[ "${VGA:-}" != "virtio"* ]]; then
 | 
					  if [ -n "${VGA:-}" ] && [[ "${VGA:-}" != "virtio"* ]]; then
 | 
				
			||||||
    echo "$VGA" > "$STORAGE/windows.vga"
 | 
					    file="$STORAGE/windows.vga"
 | 
				
			||||||
 | 
					    writeFile "$VGA" "$file"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [ -n "${USB:-}" ] && [[ "${USB:-}" != "qemu-xhci"* ]]; then
 | 
					  if [ -n "${USB:-}" ] && [[ "${USB:-}" != "qemu-xhci"* ]]; then
 | 
				
			||||||
    echo "$USB" > "$STORAGE/windows.usb"
 | 
					    file="$STORAGE/windows.usb"
 | 
				
			||||||
 | 
					    writeFile "$USB" "$file"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [ -n "${DISK_TYPE:-}" ] && [[ "${DISK_TYPE:-}" != "scsi" ]]; then
 | 
					  if [ -n "${DISK_TYPE:-}" ] && [[ "${DISK_TYPE:-}" != "scsi" ]]; then
 | 
				
			||||||
    echo "$DISK_TYPE" > "$STORAGE/windows.type"
 | 
					    file="$STORAGE/windows.type"
 | 
				
			||||||
 | 
					    writeFile "$DISK_TYPE" "$file"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [ -n "${ADAPTER:-}" ] && [[ "${ADAPTER:-}" != "virtio-net-pci" ]]; then
 | 
					  if [ -n "${ADAPTER:-}" ] && [[ "${ADAPTER:-}" != "virtio-net-pci" ]]; then
 | 
				
			||||||
    echo "$ADAPTER" > "$STORAGE/windows.net"
 | 
					    file="$STORAGE/windows.net"
 | 
				
			||||||
 | 
					    writeFile "$ADAPTER" "$file"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  rm -rf "$TMP"
 | 
					  rm -rf "$TMP"
 | 
				
			||||||
@ -351,7 +390,10 @@ extractESD() {
 | 
				
			|||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  rm -rf "$dir"
 | 
					  rm -rf "$dir"
 | 
				
			||||||
  mkdir -p "$dir"
 | 
					
 | 
				
			||||||
 | 
					  if ! makeDir "$dir"; then
 | 
				
			||||||
 | 
					    error "Failed to create directory \"$dir\" !" && return 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  size=9606127360
 | 
					  size=9606127360
 | 
				
			||||||
  size_gb=$(formatBytes "$size")
 | 
					  size_gb=$(formatBytes "$size")
 | 
				
			||||||
@ -407,6 +449,8 @@ extractESD() {
 | 
				
			|||||||
    error "Adding WinPE failed ($retVal)" && return 1
 | 
					    error "Adding WinPE failed ($retVal)" && return 1
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  fKill "progress.sh"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  local msg="Extracting $desc setup"
 | 
					  local msg="Extracting $desc setup"
 | 
				
			||||||
  info "$msg..."
 | 
					  info "$msg..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -486,14 +530,17 @@ extractImage() {
 | 
				
			|||||||
  info "$msg..." && html "$msg..."
 | 
					  info "$msg..." && html "$msg..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  rm -rf "$dir"
 | 
					  rm -rf "$dir"
 | 
				
			||||||
  mkdir -p "$dir"
 | 
					
 | 
				
			||||||
 | 
					  if ! makeDir "$dir"; then
 | 
				
			||||||
 | 
					    error "Failed to create directory \"$dir\" !" && return 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  size=$(stat -c%s "$iso")
 | 
					  size=$(stat -c%s "$iso")
 | 
				
			||||||
  size_gb=$(formatBytes "$size")
 | 
					  size_gb=$(formatBytes "$size")
 | 
				
			||||||
  space=$(df --output=avail -B 1 "$dir" | tail -n 1)
 | 
					  space=$(df --output=avail -B 1 "$dir" | tail -n 1)
 | 
				
			||||||
  space_gb=$(formatBytes "$space")
 | 
					  space_gb=$(formatBytes "$space")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ((size<100000000)); then
 | 
					  if (( size < 100000000 )); then
 | 
				
			||||||
    error "Invalid ISO file: Size is smaller than 100 MB" && return 1
 | 
					    error "Invalid ISO file: Size is smaller than 100 MB" && return 1
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1177,6 +1224,8 @@ buildImage() {
 | 
				
			|||||||
  [[ "$error" != "$hide" ]] && echo "$error"
 | 
					  [[ "$error" != "$hide" ]] && echo "$error"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  mv -f "$out" "$BOOT" || return 1
 | 
					  mv -f "$out" "$BOOT" || return 1
 | 
				
			||||||
 | 
					  ! setOwner "$BOOT" && error "Failed to set the owner for \"$BOOT\" !"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return 0
 | 
					  return 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -487,7 +487,10 @@ getESD() {
 | 
				
			|||||||
  info "$msg" && html "$msg"
 | 
					  info "$msg" && html "$msg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  rm -rf "$dir"
 | 
					  rm -rf "$dir"
 | 
				
			||||||
  mkdir -p "$dir"
 | 
					
 | 
				
			||||||
 | 
					  if ! makeDir "$dir"; then
 | 
				
			||||||
 | 
					    error "Failed to create directory \"$dir\" !" && return 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  local xFile="products.xml"
 | 
					  local xFile="products.xml"
 | 
				
			||||||
  local eFile="esd_edition.xml"
 | 
					  local eFile="esd_edition.xml"
 | 
				
			||||||
 | 
				
			|||||||
@ -105,7 +105,9 @@ finish() {
 | 
				
			|||||||
  if [ ! -f "$STORAGE/windows.boot" ] && [ -f "$BOOT" ]; then
 | 
					  if [ ! -f "$STORAGE/windows.boot" ] && [ -f "$BOOT" ]; then
 | 
				
			||||||
    # Remove CD-ROM ISO after install
 | 
					    # Remove CD-ROM ISO after install
 | 
				
			||||||
    if ready; then
 | 
					    if ready; then
 | 
				
			||||||
      touch "$STORAGE/windows.boot"
 | 
					      local file="$STORAGE/windows.boot"
 | 
				
			||||||
 | 
					      touch "$file"
 | 
				
			||||||
 | 
					      ! setOwner "$file" && error "Failed to set the owner for \"$file\" !"
 | 
				
			||||||
      if [[ "$REMOVE" != [Nn]* ]]; then
 | 
					      if [[ "$REMOVE" != [Nn]* ]]; then
 | 
				
			||||||
        rm -f "$BOOT" 2>/dev/null || true
 | 
					        rm -f "$BOOT" 2>/dev/null || true
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										30
									
								
								src/samba.sh
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								src/samba.sh
									
									
									
									
									
								
							@ -46,10 +46,21 @@ addShare() {
 | 
				
			|||||||
  local cfg="$5"
 | 
					  local cfg="$5"
 | 
				
			||||||
  local owner=""
 | 
					  local owner=""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  mkdir -p "$dir" || return 1
 | 
					  if [ ! -d "$dir" ]; then
 | 
				
			||||||
 | 
					    if ! mkdir -p "$dir"; then
 | 
				
			||||||
 | 
					      error "Failed to create shared folder ($dir)." && return 1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ! ls -A "$dir" >/dev/null 2>&1; then
 | 
					  if ! ls -A "$dir" >/dev/null 2>&1; then
 | 
				
			||||||
    error "Failed to access directory $dir" && return 1
 | 
					    msg="No permission to access shared folder ($dir)."
 | 
				
			||||||
 | 
					    msg+=" If SELinux is active, you need to add the \":Z\" flag to the bind mount."
 | 
				
			||||||
 | 
					    error "$msg" && return 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [ ! -w "$dir" ]; then
 | 
				
			||||||
 | 
					    msg="shared folder ($dir) is not writeable!"
 | 
				
			||||||
 | 
					    warn "$msg"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [ -z "$(ls -A "$dir")" ]; then
 | 
					  if [ -z "$(ls -A "$dir")" ]; then
 | 
				
			||||||
@ -136,26 +147,21 @@ share="/shared"
 | 
				
			|||||||
[ ! -d "$share" ] && [ -d "$STORAGE/data" ] && share="$STORAGE/data"
 | 
					[ ! -d "$share" ] && [ -d "$STORAGE/data" ] && share="$STORAGE/data"
 | 
				
			||||||
[ ! -d "$share" ] && share="$tmp"
 | 
					[ ! -d "$share" ] && share="$tmp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
m1="Failed to add shared folder"
 | 
					! addShare "$share" "/shared" "Data" "Shared" "$SAMBA_CONFIG" && return 0
 | 
				
			||||||
m2="Please check its permissions."
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if ! addShare "$share" "/shared" "Data" "Shared" "$SAMBA_CONFIG"; then
 | 
					 | 
				
			||||||
  error "$m1 '$share'. $m2" && return 0
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -d "/shared2" ]; then
 | 
					if [ -d "/shared2" ]; then
 | 
				
			||||||
  addShare "/shared2" "/shared2" "Data2" "Shared" "$SAMBA_CONFIG" || error "$m1 '/shared2'. $m2"
 | 
					  addShare "/shared2" "/shared2" "Data2" "Shared" "$SAMBA_CONFIG" || :
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
  if [ -d "/data2" ]; then
 | 
					  if [ -d "/data2" ]; then
 | 
				
			||||||
    addShare "/data2" "/shared2" "Data2" "Shared" "$SAMBA_CONFIG" || error "$m1 '/data2'. $m2."
 | 
					    addShare "/data2" "/shared2" "Data2" "Shared" "$SAMBA_CONFIG" || :
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -d "/shared3" ]; then
 | 
					if [ -d "/shared3" ]; then
 | 
				
			||||||
  addShare "/shared3" "/shared3" "Data3" "Shared" "$SAMBA_CONFIG" || error "$m1 '/shared3'. $m2"
 | 
					  addShare "/shared3" "/shared3" "Data3" "Shared" "$SAMBA_CONFIG" || :
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
  if [ -d "/data3" ]; then
 | 
					  if [ -d "/data3" ]; then
 | 
				
			||||||
    addShare "/data3" "/shared3" "Data3" "Shared" "$SAMBA_CONFIG" || error "$m1 '/data3'. $m2"
 | 
					    addShare "/data3" "/shared3" "Data3" "Shared" "$SAMBA_CONFIG" || :
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user