mirror of
https://github.com/jamesstringer90/appsandbox.git
synced 2026-10-21 18:43:07 -05:00
Run Windows 11 ARM64 guests on macOS over QEMU+HVF, with an ivshmem shared-memory transport carrying every guest channel (agent control, display/VDD, input, audio, clipboard, SSH, 9P) - no guest networking required. - tools/transport: one guest transport API, two backends (PC AF_HYPERV, Mac ivshmem); SPSC ring with an acquire-barrier fix for SSH integrity - tools/ivshmem: our own KMDF ivshmem BAR-mapping driver (no third party) - src/backend_mac: Mac-host ivshmem transport, QEMU VM lifecycle, IDD display consumer, agent/SSH proxies, ISO->disk patcher, Windows create - tools/agent + channel EXEs + tools/vdd: wired to asb_transport - tools/agent_win: staged guest payload (interim, pending JIT pull) - vendor/qemu-ivshmem: vendored QEMU 11.0.1 fork (ivshmem-plain) + LGPL source mirror for the self-contained app bundle - tools/sign/make-release.ps1: use the host-native ARM64 MSBuild so the WDK driver ApiValidator runs (the x86 validator fails on ARM64)
42 lines
1.6 KiB
C
42 lines
1.6 KiB
C
/*
|
|
* win_disk.h -- callable entry point for the from-scratch Windows-disk builder.
|
|
*
|
|
* Builds a UEFI-bootable Windows 11 ARM64 raw disk from a generalized install.wim:
|
|
* GPT (ESP+MSR+NTFS) -> apply WIM image -> inject answer file -> stage the AppSandbox guest
|
|
* payload -> FAT32 ESP + boot files + patched BCD.
|
|
*
|
|
* Linked into the iso-patch-mac Xcode target (the standalone main is behind WIN_DISK_STANDALONE).
|
|
*/
|
|
#ifndef ASB_WIN_DISK_H
|
|
#define ASB_WIN_DISK_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Build the disk. Returns 0 on success.
|
|
* wim_path : path to the install.wim (located on the mounted ISO at sources/install.wim)
|
|
* out_path : output raw disk image path
|
|
* image_idx : WIM image index (usually 1)
|
|
* disk_gib : disk size in GiB
|
|
* manifest_path: a "<host-src>\t<guest-dest>" TSV (same layout as the Windows generate_vhdx_manifest:
|
|
* unattend.xml, agent EXEs, drivers, setup.cmd, SetupComplete.cmd at their real guest
|
|
* paths). Each dest's parents are created via mkdir -p over the apply-built dir map.
|
|
* NULL -> inject only the built-in answer file (standalone smoke test).
|
|
* progress : optional callback(pct 0-100, message) for STATUS/PROGRESS reporting, or NULL
|
|
*/
|
|
int win_disk_build(const char *wim_path,
|
|
const char *out_path,
|
|
uint32_t image_idx,
|
|
uint64_t disk_gib,
|
|
const char *manifest_path,
|
|
void (*progress)(int pct, const char *msg));
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* ASB_WIN_DISK_H */
|