Spaces:
Paused
Paused
| # --- 1. SET UP STORAGE PATHS --- | |
| # We work in /tmp or current dir to ensure we have write access | |
| cd /app | |
| # --- 2. DOWNLOAD ANDROID ISO (443 MB) --- | |
| ISO_FILE="android-x86-4.4-r5.iso" | |
| ISO_URL="https://sourceforge.net/projects/android-x86/files/Release%204.4/android-x86-4.4-r5.iso/download" | |
| if [ ! -f "$ISO_FILE" ]; then | |
| echo "Disk space is tight. Downloading Android KitKat..." | |
| # -q for quiet (saves log space), --show-progress for visual | |
| wget -q --show-progress -O "$ISO_FILE" "$ISO_URL" | |
| else | |
| echo "Android ISO found. Skipping download." | |
| fi | |
| # --- 3. DOWNLOAD & SETUP NOVNC (Web Viewer) --- | |
| # We download the UI directly from GitHub to save space compared to installing a package | |
| if [ ! -d "noVNC-1.4.0" ]; then | |
| echo "Downloading noVNC Interface..." | |
| wget -q -O novnc.zip https://github.com/novnc/noVNC/archive/refs/tags/v1.4.0.zip | |
| unzip -q novnc.zip | |
| rm novnc.zip # Delete zip to save space immediately | |
| # Download Websockify (The bridge between QEMU and Browser) | |
| echo "Downloading Websockify..." | |
| wget -q -O websockify.zip https://github.com/novnc/websockify/archive/refs/tags/v0.11.0.zip | |
| unzip -q websockify.zip | |
| rm websockify.zip | |
| # Link websockify into noVNC | |
| mv websockify-0.11.0 noVNC-1.4.0/utils/websockify | |
| fi | |
| # --- 4. START THE SYSTEM --- | |
| echo "Starting Web Server on port 7860..." | |
| # Start the noVNC web server in the background | |
| ./noVNC-1.4.0/utils/novnc_proxy --vnc localhost:5900 --listen 7860 & | |
| echo "Booting Android (Touch Mode Enabled)..." | |
| # FLAGS EXPLAINED FOR 1GB LIMIT & MOBILE: | |
| # -m 1024: Reduced RAM to 1GB (Leaving 1GB for ISO storage on disk) | |
| # -device usb-tablet: Absolute touch input for mobile users | |
| # -vga std: Standard graphics | |
| # -snapshot: Write temporary data to RAM, not Disk (Saves storage!) | |
| qemu-system-i386 \ | |
| -m 1024 \ | |
| -smp 2 \ | |
| -cpu qemu64 \ | |
| -vga std \ | |
| -net nic,model=virtio -net user \ | |
| -cdrom "$ISO_FILE" \ | |
| -device usb-tablet \ | |
| -vnc :0 \ | |
| -snapshot | |