mirror of
https://github.com/dockur/windows.git
synced 2026-06-09 22:17:22 +01:00
64 lines
1.5 KiB
Bash
64 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
: "${APP:="Windows"}"
|
|
: "${PLATFORM:="x64"}"
|
|
: "${BOOT_MODE:="windows"}"
|
|
: "${SUPPORT:="https://github.com/dockur/windows"}"
|
|
|
|
cd /run
|
|
|
|
. start.sh # Startup hook
|
|
. utils.sh # Load functions
|
|
. reset.sh # Initialize system
|
|
. server.sh # Start webserver
|
|
. define.sh # Define versions
|
|
. mido.sh # Download Windows
|
|
. install.sh # Run installation
|
|
. disk.sh # Initialize disks
|
|
. display.sh # Initialize graphics
|
|
. network.sh # Initialize network
|
|
. samba.sh # Configure samba
|
|
. boot.sh # Configure boot
|
|
. proc.sh # Initialize processor
|
|
. power.sh # Configure shutdown
|
|
. memory.sh # Check available memory
|
|
. balloon.sh # Initialize ballooning
|
|
. config.sh # Configure arguments
|
|
. finish.sh # Finish initialization
|
|
|
|
trap - ERR
|
|
|
|
cmd=(qemu-system-x86_64)
|
|
version=$("${cmd[@]}" --version | awk 'NR==1 { print $4 }')
|
|
info "Booting ${APP}${BOOT_DESC} using QEMU v$version..."
|
|
|
|
pipe="$QEMU_DIR/qemu.pipe"
|
|
rm -f "$pipe" && mkfifo "$pipe"
|
|
|
|
tee "$QEMU_PTY" <"$pipe" |
|
|
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/0): Not Found/0)/g' &
|
|
|
|
if [[ "$SHUTDOWN" != [Yy1]* ]]; then
|
|
exec "${cmd[@]}" ${ARGS:+ $ARGS} >"$pipe"
|
|
fi
|
|
|
|
"${cmd[@]}" ${ARGS:+ $ARGS} >"$pipe" &
|
|
|
|
pid=$!
|
|
( sleep 30; boot ) &
|
|
|
|
rc=0
|
|
wait "$pid" || rc=$?
|
|
[ -f "$QEMU_END" ] && exit "$rc"
|
|
|
|
sleep 1 & wait $!
|
|
finish "$rc"
|