Skip to content

Commit

Permalink
Clean up windows.md
Browse files Browse the repository at this point in the history
  • Loading branch information
antonym committed Feb 9, 2025
1 parent 18d0ee2 commit e478a11
Showing 1 changed file with 47 additions and 24 deletions.
71 changes: 47 additions & 24 deletions docs/kb/pxe/windows.md
Original file line number Diff line number Diff line change
@@ -1,43 +1,66 @@
---
id: windows
title: "Windows"
description: "Installing Windows 10 with netboot.xyz"
description: "Installing Windows using netboot.xyz and the Docker container."
hide_table_of_contents: true
---

This is one of the most frequently asked questions, so this deserves its own page.
This guide will assume that you're using the linuxserver.io Docker container.
# Installing Windows with netboot.xyz

#### Requirements
This guide will walk you through installing Windows 11 using netboot.xyz using the netboot.xyz Docker container.

- Samba (SMB,CIFS) share with Windows 10 ISO extracted
- Windows PE image as an ISO, instructions on how to build it can be found [here](https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/winpe-create-usb-bootable-drive#create-a-winpe-iso-dvd-or-cd)
## Requirements

Step 1. Download WindowsPE/generate the image and download Windows 10 ISO.
Step 2. Setup an SMB share with Windows 10 ISO extracted to a directory there.
Step 3. Upload Windows PE to Linuxserver.io's netboot.xyz container's /assets/WinPE/x64/ folder.
Step 4. Boot the menu, go to Windows.
Step 5. Set the base URL to point to the container's IP address, the correct Nginx port for hosting assets and right directory (eg. http://192.168.2.46:8000/WinPE).
Step 6. Load the installer.
Step 7. You should be prompted with a terminal.
Step 8. Type `wpeinit` to load networking support.
Step 9. Mount the Windows ISO share, with `net use F: \\<server-ip-address>\<share-name> /user:<server-ip-address>\<username-if-needed> <password-if-needed>`
Before you begin, ensure you have the following:

- A Samba (SMB, CIFS) share with the Windows 11 ISO extracted.
- A Windows PE image as an ISO. Instructions on how to build it can be found [here](https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/winpe-create-usb-bootable-drive#create-a-winpe-iso-dvd-or-cd).
- The netboot.xyz Docker container set up and running. Follow the instructions [here](../../docker/usage.md) to set up the container.

:::note
WinPE is used so you can preload any drivers you may need for the equipment being installed. You may need to slipstream drivers like VirtIO if using Proxmox or other types of virtualization.
:::

## Installation Process

The terminal uses US keyboard layout by default.
To start, download the Windows PE image and the Windows 11 ISO. Once you have these files, set up an SMB share and extract the Windows 11 ISO to a directory on this share.

Next, upload the Windows PE image to the netboot.xyz container's `/assets/WinPE/x64/` folder. With the files in place, boot the netboot.xyz menu and navigate to the Windows section.

You'll need to set the base URL to point to the container's IP address, the correct Nginx port for hosting assets, and the right directory. For example:
```bash
http://192.168.2.46:8000/WinPE
```

Load the installer, and you should be prompted with a terminal. In the terminal, type `wpeinit` to load networking support. Then, mount the Windows ISO share using the following command:
```bash
net use F: \\<server-ip-address>\<share-name> /user:<server-ip-address>\<username-if-needed> <password-if-needed>
```

:::note
The terminal uses the US keyboard layout by default.
:::
Step 10. Change into the mounted share (`F:`), and execute setup.exe or start it with `F:\setup.exe`
Step 11. You should be greeted with the normal setup and be able to install it.

### Persistent url for Windows with the docker container
Change into the mounted share (`F:`) and execute `setup.exe`:
```bash
F:\setup.exe
```

You should now see the normal Windows setup interface and be able to proceed with the installation.

Step 1. Go to the container's configurator (Netboot.xyz Configuration), the place where you can manage local assets and menus.
Step 2. Go to Menus -> boot.cfg.
Step 3. Set win_base_url to to point to the container's IP address, the correct Nginx port for hosting assets and right directory, for example:
## Persistent URL for Windows with Docker Container

To avoid entering the URL each time you boot Windows, you can use the `local-vars.ipxe` file to set the `win_base_url`. This file is checked early during the boot process and allows you to set overrides for variables.

Edit the `local-vars.ipxe` file within the web configuration interface and add the following line:
```bash
set win_base_url http://192.168.2.46:8000/WinPE
set win_base_url http://192.168.2.46:8080/WinPE
```
Step 4. You shouldn't need to input the URL anymore when booting Windows so enjoy.

With this configuration, you won't need to input the URL anymore when booting Windows.

:::note

If you don't currently have a [local-vars.ipxe](https://github.com/netbootxyz/netboot.xyz/blob/development/roles/netbootxyz/templates/local-vars.ipxe.j2) file, you can create on in the root of the tftp directory.

:::

0 comments on commit e478a11

Please sign in to comment.