Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
3f7eaa8
[docs] Switch from PySpelling to Vale for spellchecking (take 2) (#4277)
geoffreynyaga Jan 21, 2026
a4c2001
Docs: workaround for upload speed bug in Hyper-V (#4290)
geoffreynyaga Aug 14, 2025
6e9c0b3
docs: revise and clarify build instructions in README (#4203)
sharder996 Aug 14, 2025
d844a5e
[doc] Recover links and formatting in contribution guidelines (#4323)
sharder996 Aug 26, 2025
a0b188a
Updated internal cross-references to use recommended MyST targets (#4…
sharder996 Aug 28, 2025
b907c47
[docs] Fix linux build instructions (#4348)
sharder996 Sep 9, 2025
dadcfc0
Fix Windows installer logs path (#4359)
sharder996 Sep 12, 2025
2090717
[docs] Fix 404 and sitemap url (#4374)
geoffreynyaga Sep 19, 2025
0f77f32
[fix] Cross-references for `customise-multipass/` (#4355)
sharder996 Oct 2, 2025
45bbb54
docs: Standardize landing page format (#4170)
geoffreynyaga Oct 2, 2025
a2057f4
Docs/fix windows build instructions (#4354)
tobe2098 Oct 7, 2025
f3b2cc5
[docs] Clarify home directory in ext. storage docs (#4423)
geoffreynyaga Oct 16, 2025
87b3c10
[docs] Fix cross-references in how-to guides (#4399)
sharder996 Oct 23, 2025
8fec0f1
[docs] Add instructions for windows build to run the GUI (#4505)
sharder996 Nov 19, 2025
fed3083
[contributing] Add guidelines regarding AI (#4512)
developerseb Nov 20, 2025
c9fcb2f
[contributing] Add guidelines regarding AI (#4512)
geoffreynyaga Jan 21, 2026
c250fb8
Merge branch 'stable-cherry-picks' of https://github.com/canonical/mu…
geoffreynyaga Jan 21, 2026
f437b8c
`[docs]:` replace word clients with users in authenticate clients wit…
ricab Dec 3, 2025
e2f1190
[docs] Reference architecture (#4430)
xmkg Dec 4, 2025
e72af9e
[docs] Add release notes to RTD (#4544)
geoffreynyaga Dec 11, 2025
8634e3d
[contributing] Add guidelines for feature flags (#4564)
jimporter Dec 17, 2025
151c247
[docs] Pin myst-parser~=4.0 (#4626)
geoffreynyaga Jan 21, 2026
8c57a03
[docs] Migrate sphinx_tabs to sphinx-design tabs (#4620)
geoffreynyaga Jan 21, 2026
3ef58aa
[docs] Update prerequisites for ubuntu-desktop (#4565)
geoffreynyaga Jan 23, 2026
6ea6c2d
[docs] Update Canonical URLs in page builds (#4605)
sharder996 Feb 2, 2026
5050c8d
[docs] Update Explanation landing page to required standard (#4606)
sharder996 Feb 5, 2026
3e10abe
[docs] Implement the new home page pattern (#4646)
ricab Feb 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion BUILD.linux.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ Copy the desktop file that Multipass clients expect to find in your home:

```
mkdir -p ~/.local/share/multipass/
cp <multipass>/data/multipass.gui.autostart.desktop ~/.local/share/multipass/
cp <multipass>/src/client/gui/assets/multipass.gui.autostart.desktop ~/.local/share/multipass/
```

Optionally, enable auto-complete in Bash:
Expand All @@ -93,6 +93,12 @@ Optionally, enable auto-complete in Bash:
source <multipass>/completions/bash/multipass
```

To be able to use the binaries without specifying their path:

```
export PATH=<multipass>/build/bin
```

Now you can use the `multipass` command from your terminal (for example
`<multipass>/build/bin/multipass launch --name foo`) or launch the GUI client with the command
`<multipass>/build/bin/multipass.gui`.
199 changes: 131 additions & 68 deletions BUILD.windows.md
Original file line number Diff line number Diff line change
@@ -1,43 +1,63 @@
Build instructions for Windows 10
=================================
# Build instructions for Windows 10/11 Pro

Environment Setup
-----------------
## Environment Setup

### Chocolatey

Install chocolatey, a package manager, to download the rest of the dependencies: <https://chocolatey.org/>
Install chocolatey, a package manager, to download the rest of the dependencies: <https://chocolatey.org/>.

Press Windows Key+X and Run Windows PowerShell(Admin) then follow the chocolatey instructions to "Install with
Powershell.exe"
Press Windows Key+X and Run Windows PowerShell(Admin) or Terminal(Admin) then follow the chocolatey
instructions to "Install with Powershell.exe".

After chocolatey is installed you can now install the rest of the dependencies:
### Dependencies

choco install visualstudio2019buildtools visualstudio2019-workload-vctools cmake ninja cmder qemu-img openssl -yfd
After chocolatey is installed you can now install the rest of the dependencies from the
Powershell(Admin). To get the best results, in the following order:

You may have to disable Windows Defender Real-time protection if you want the packages to install quicker. Search for
Windows Defender Security Center, go to Virus & threat protection, then Virus and thread protection settings, disable
Real-time protection.
```[pwsh]
choco install cmake ninja qemu-img openssl git wget unzip -yfd
```

```[pwsh]
choco install visualstudio2019buildtools visualstudio2019-workload-vctools -yfd
```

NOTE: visualcpp-build-tools is only the installer package. For this reason, choco cannot detect any
new compiler tool updates so choco upgrade will report no new updates available. To update the
compiler and related tooling or fix a broken `visualstudio2019buildtools` installation do the following:

NOTE: visualcpp-build-tools is only the installer package. For this reason, choco cannot detect any new compiler tool
updates so choco upgrade will report no new updates available. To update the compiler and related tooling, you will need
to search for "Add or remove programs", find "Microsoft Visual Studio Installer" and click "Modify".
1. Go to "Add or remove programs"
2. Search for the Microsoft Visual Studio Installer
3. Click Modify
4. Click Modify in the Installer interface
5. For Windows 11, add "C++/CLI support for v142 build tools" in the "Desktop development with C++" kit
6. Complete the installation

### Git

You need to enable symlinks in Windows Git, have a look at
[the git-for-windows docs](https://github.com/git-for-windows/git/wiki/Symbolic-Links).

For Windows 11:

1. Go to "Developer Settings"
2. Enable "Developer mode"

### Qt6

Install the latest stable version of Qt6 (6.2.4 at the moment): <https://www.qt.io/download-thank-you?os=windows/>.
To install Qt6, use `aqt`. First install it with chocolatey:

```[pwsh]
choco install aqt -yfd
```

In the online installer, under Qt, select MSVC 2019 64-bit.
Then specify the following options in the installation command:

If you already have Qt installed, run the MaintenanceTool included in the Qt directory to update to the latest version.
```[pwsh]
aqt install-qt windows desktop 6.2.4 win64_msvc2019_64 -O C:/Qt
```

Alternatively, download the
[qtbase archive](https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt6_624/qt.qt6.624.win64_msvc2019_64/6.2.4-0-202203140926qtbase-Windows-Windows_10_21H2-MSVC2019-Windows-Windows_10_21H2-X86_64.7z)
Alternatively, download the [qtbase archive](https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt6_624/qt.qt6.624.win64_msvc2019_64/6.2.4-0-202203140926qtbase-Windows-Windows_10_21H2-MSVC2019-Windows-Windows_10_21H2-X86_64.7z)
and extract it to `C:\Qt` (so it ends up in `C:\Qt\6.2.4`).

### Path setup
Expand All @@ -49,46 +69,52 @@ Search for "Edit environment variables for your account" then edit your Path var
- `C:\Program Files\CMake\bin`
- `C:\Qt\6.2.4\msvc2019_64\bin`

### Cmder setup
### Console setup

#### Cmder

Cmder is a sane terminal emulator for windows, which includes git and SSH support among other things.

The following will setup a task that you can use to build things with the VS2019 compiler toolchain.
Install with chocolatey:

```[pwsh]
choco install cmder -yfd
```

Run cmder which should be installed by default on C:\tools\cmder\Cmder.exe
Click on the green "+" sign on the right lower corner of cmder
Select "Setup tasks..."
Click the "+" button to add a new task
In the task parameters box add (basically copying from cmd:Cmder task):
``/icon "%CMDER_ROOT%\icons\cmder.ico"``
In the commands box, add:
``cmd /k ""%ConEmuDir%\..\init.bat" && "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64" -new_console:d:%USERPROFILE%``
The following will setup a task that you can use to build things with the VS2019 compiler toolchain.

Give the task a name (first box), such as vs2019 and click Save Settings.
1. Run cmder which should be installed by default on C:\tools\cmder\Cmder.exe
2. Click the dropdown arrow next to the green "+" sign in the lower right corner of cmder
3. Select "Setup tasks..."
4. Click the "+" button to add a new task
5. In the task parameters box add (basically copying from cmd:Cmder task):
``/icon "%CMDER_ROOT%\icons\cmder.ico"``
6. In the commands box, add:

Building
---------------------------------------
```[]
cmd /k ""%ConEmuDir%\..\init.bat" && "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64" -new_console:d:%USERPROFILE%
```

Run cmder, click on the green "+" and click on the vs2019 task
7. Give the task a name (first box), such as vs2019 and click Save Settings.
8. Now run cmder, click on the green "+" and click on the vs2019 task
This will open a new terminal tab and run the VS2019 setup. CMake can now find the VS compiler.
Go to the [Building](./BUILD.windows.md#building) section.

cd <multipass>
git submodule update --init --recursive
mkdir build
cd build
cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo ../
ninja
#### x64 Native Tools Command Prompt

This builds multipass and multipassd.
To create an installer, run `ninja package`
x64 Native Tools Command Prompt is the native console from the MVSC installation. On startup it
updates its environment variables to include all tools installed via MSVC for 64-bit. If you are
using 32-bit, use the x86 Native Tools Command Prompt.

Building (alternative, PowerShell only)
---------------------------------------
If you want to use the environment variables in a different console, look at:
[Use the Microsoft C++ toolset from the command line](https://learn.microsoft.com/nb-no/cpp/build/building-on-the-command-line?view=msvc-170).

#### Powershell only

Using a Visual-Studio command-prompt-enabled PowerShell to build the project is also possible.
Open a new PowerShell terminal, then invoke the following commands:

```pwsh
```[pwsh]
# Try to determine the Visual Studio install path
$VSPath = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -products Microsoft.VisualStudio.Product.BuildTools -latest -property installationPath

Expand All @@ -99,40 +125,77 @@ Import-Module "$VSPath\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
Enter-VsDevShell -VsInstallPath "$VSPath" -DevCmdArguments '-arch=x64'
```

Then, follow the steps in the previous "Building" step to build the project.
## Building

Running multipass
---------------------------------------
```[batch]
cd <multipass>
git submodule update --init --recursive
mkdir build
cd build
```

```[batch]
cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_TOOLCHAIN_FILE=..\3rd-party\vcpkg\scripts\buildsystems\vcpkg.cmake -DCMAKE_PREFIX_PATH=C:\Qt\6.2.4\msvc2019_64\ ../
```

```[batch]
cmake --build .
```

This builds `multipass` and `multipassd`.
To create an installer, run `cmake --build . --target package`.

## Running `multipass`

### Enable Hyper-V

Before starting multipassd, you'll have to enable the Hyper-V functionality in Windows 10 Pro.
See: https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v
Before starting `multipassd`, you'll have to enable the Hyper-V functionality in Windows 10/11 Pro.
See: [Install Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v)

Press Windows Key + X, Select Windows PowerShell (Admin)
Run "Enable-WindowsOptionalFeature -Online -FeatureName:Microsoft-Hyper-V -All"
Press Windows Key + X, Select Windows PowerShell (Admin) or Terminal(Admin) and run:

```[pwsh]
Enable-WindowsOptionalFeature -Online -FeatureName:Microsoft-Hyper-V -All
```

### Start the daemon (multipassd)
### Start the daemon (`multipassd`)

Press Windows Key + X, Select Windows PowerShell (Admin)
Run multipassd (for example: multipassd --logger=stderr)
Alternatively, you can install multipassd as a Windows Service (Run "multipassd /install")
To stop and uninstall the Windows service, Run "multipassd /uninstall"
1. Press Windows Key + X, Select Windows PowerShell (Admin) or Terminal(Admin)
2. Run `multipassd` (for example: `multipassd --logger=stderr`)
3. Alternatively, you can install `multipassd` as a Windows Service (Run `multipassd /install` in a
Powershell(Admin)). Installing `multipassd` as a Windows Service is a must for Windows 11
4. To stop and uninstall the Windows service, Run `multipassd /uninstall`

### Run multipass
### Run `multipass`

With the multipassd daemon now running on another shell (or as a windows service) you can now run multipass.
Press Windows Key + X, Select Windows PowerShell, or alternatively run cmd.exe on the search bar
Try "multipass help"
With the `multipassd` daemon now running on another shell (or as a windows service) you can now run `multipass`.

### Permissions/privileges for multipassd
1. Press Windows Key + X, Select Windows PowerShell, or Terminal.
2. [Extend the Path variable](./BUILD.windows.md#Extend the Path variable).
3. Then, try `multipass help`.

multipassd needs Administrator privileges in order to create symlinks when using mounts and to manage Hyper-V instances.
### Permissions/privileges for `multipassd`

If you don't need symlink support you can run multipassd on a less privileged shell but your user account
`multipassd` needs Administrator privileges in order to create symlinks when using mounts and to
manage Hyper-V instances.

If you don't need symlink support you can run `multipassd` on a less privileged shell but your user account
needs to be part of the Hyper-V Administrators group:

Press Windows key + X, Select "Computer Management"
Under System Tools->Local Users and Groups->Groups
Select on Hyper-V Administrators, add your account
Sign out or reboot for changes to take effect
1. Press Windows key + X, Select "Computer Management"
2. Under System Tools->Local Users and Groups->Groups
3. Select on Hyper-V Administrators, add your account
4. Sign out or reboot for changes to take effect

### Run `multipass.gui`

1. [Extend the Path variable](./BUILD.windows.md#Extend the Path variable).
2. Now you can run `multipass.gui`.

### Extend the Path variable

To avoid conflict with a multipass installation, include the necessary paths to the Path variable in your current session only:
```
$env:Path += ";<multipass>\build\bin"
$env:Path += ";<multipass>\build\bin\windows\x64\runner\Release"
```
Loading
Loading