Install windows 10 directly to a target disk / virtual disk from a running Linux system, without booting from an installation ISO.
- Python 90%
- Shell 10%
|
|
||
|---|---|---|
| postproc | debloat: deprovision preinstalled appx apps | |
| BCD | Initial commit | |
| BCD-efi | universal BCD for EFI (testing) | |
| COPYING | Add license | |
| ntfs_acl.py | Authenticated Users SID | |
| README.md | README: also works with w11 | |
| reg_import.sh | debloat: deprovision preinstalled appx apps | |
| setup_win10.py | universal BCD for EFI (testing) | |
| unattend.xml.example | Initial commit | |
Deploy Windows 10 from Linux
This is a simple Python script that installs Windows 10 to a target disk from a running Linux system (i.e., without booting from Windows installation ISO and without using Windows PE).
Update 2025年01月12日: Also works with Windows 11. (And currently, it seems to bypass TMP requirements by default. Can be even installed on non-EFI BIOS.)
Use cases
- Mass-install Windows workstations from a PXE-booted Linux environment. (Here it may be useful to convert install.wim to a pipable WIM file and then you can stream it e.g. using HTTP from a server).
- Provision VMs with Windows 10 with a single command, without any intermediate steps with mounting ISOs, changing boot order and the like.
Limitations
- Only limited partitioning options -- it can just erase whole disk and create a single partition.
Additional resources
- Create a windows system from scratch using Linux -- forum thread at reboot.pro that discusses attempts to achieve exactly this
- NTDEV YouTube channel -- videos from crazy Windows experiments and hacks
Windows boot process
- Windows Vista-10 Startup Process summarized on Wikipedia
- Windows 7-10 Master Boot Record -- disassembly and analysis
- Windows 8-10 NTFS Volume Boot Record -- disassembly and analysis
BCD database
- libbcd0 -- Python library for reading/writing BCD databases
- BCD notes, observations, experiments
- BCD elements
- toolsnt -- A Rust library and CLI tool for manipulating BCD from Linux