2021-07-18 17:35:19 +00:00
# Mass Storage Drive
2021-10-12 18:45:00 +00:00
2023-08-19 09:25:47 +00:00
This powerful feature that is available on all PiKVM V2+ devices.
It allows PiKVM to emulate a virtual CD-ROM or Flash Drive for the target host
which will be available even in BIOS/UEFI when you need live disk to revive the OS
or even reinstall it.
2023-08-19 23:09:25 +00:00
!!! warning "Legacy note"
This document is relevant for `KVMD >= 3.249` . If you are using an older version, please update the PiKVM OS.
2023-08-19 09:25:47 +00:00
| Take a look at the `Drive` menu in the Web UI |
|-----------------------------------------------|
2023-08-19 09:31:08 +00:00
| < img src = "drive_menu.png" width = "400" / > |
2023-08-19 09:25:47 +00:00
The following actions are available here:
* Uploading an image to the internal storage of PiKVM.
* Selecting an image to connect to the target host.
* Changing the media type and write availability mode.
* Downloading an image from the PiKVM storage.
* Drive connection management and much more.
2023-08-19 23:09:25 +00:00
!!! warning
Never turn off the power of the PiKVM while the image is being uploaded
or while the image is connected to the target host in write mode.
This may cause file corruption.
The rest of the time, power off is safe because the PiKVM filesystem
will be in read-only mode.
2023-08-19 09:03:22 +00:00
!!! info "The max CD-ROM image size is 2.2 GB"
2023-08-20 01:24:34 +00:00
This is a [Linux kernel limitation ](https://github.com/pikvm/pikvm/issues/322 ) on PiKVM,
2023-08-19 03:55:15 +00:00
which currently cannot emulate a DVD drive.
To use a larger boot image, please use a Flash Drive emulation.
If this is not possible (the image does not support Flash, for example, for Windows),
you can try [this recipe ](#create-a-windows-based-flash-disk-image ).
2021-10-12 18:45:00 +00:00
!!! info "Changing the media type between CD-ROM and Flash is possible only when the device is reconnected"
2023-08-19 09:25:47 +00:00
On PiKVM V3 and V4, this can be done using the `System -> Connect main USB` switch in the Web UI.
2021-10-12 18:45:00 +00:00
2023-08-19 03:55:15 +00:00
In this case, the **media type is determined at the time of connecting the image, and not by clicking on the switch** .
The switch affects the settings of the future connection. For non-V3/V4 devices,
you need to either reboot your target host or otherwise reinitialize the drive.
2023-03-05 15:47:20 +00:00
2021-10-12 18:45:00 +00:00
2023-08-19 03:55:15 +00:00
-----
2023-08-20 01:24:34 +00:00
## Manual images uploading
2023-08-19 09:29:55 +00:00
2023-08-20 01:24:34 +00:00
PiKVM stores images in a special memory card partition mounted in `/var/lib/kvmd/msd` .
2023-08-19 10:07:15 +00:00
Most of the time, the partition is read-only, and is remounted for writing automatically
if the appropriate drive emulation mode is enabled, or to upload a new image.
This protects the data from damage in the event of a sudden loss of power.
2023-08-19 09:29:55 +00:00
??? example "Step by step: Manual image uploading using SCP or rsync"
2023-08-19 10:07:15 +00:00
1. Remount internal storage to read-write mode manually:
2021-10-12 18:45:00 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-08-19 09:29:55 +00:00
[root@pikvm ~]# kvmd-helper-otgmsd-remount rw
```
2021-10-12 18:45:00 +00:00
2023-08-19 09:29:55 +00:00
2. Upload the image(s) to `/var/lib/kvmd/msd` using `scp` or some other tool.
2021-10-12 18:45:00 +00:00
2023-08-19 09:29:55 +00:00
3. Remount internal storage back to safe read-only mode:
2023-08-19 03:55:15 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-08-19 09:29:55 +00:00
[root@pikvm ~]# kvmd-helper-otgmsd-remount ro
```
2021-10-12 18:45:00 +00:00
2023-08-19 09:29:55 +00:00
!!! tip
An HTTP API for Mass Storage management is also [available ](api.md#mass-storage-drive ) for advanced use.
2021-07-18 17:16:48 +00:00
2021-10-12 18:45:00 +00:00
2023-08-19 23:09:25 +00:00
-----
## Writable Flash Drive
When emulating Flash Drive on PiKVM, you can allow the target host to write files to the image.
After stopping the drive, this image can be downloaded and opened on the local host.
This is useful if you need to get some files from the target host.
The file system image for the virtual Flash Drive must be prepared in advance.
This can be done either on the local host or in the PiKVM console.
Here some options:
??? example "Step by step: Creating simple FAT32 image on PiKVM"
1. Remount internal storage to read-write mode manually:
2023-08-20 04:43:09 +00:00
```console
2023-08-19 23:09:25 +00:00
[root@pikvm ~]# kvmd-helper-otgmsd-remount rw
```
2. Create an empty image file in `/var/lib/kvmd/msd` (this is the internal storage of PiKVM images)
of desired size (512MB in this example) and format it to FAT32:
2023-08-20 04:43:09 +00:00
```console
2023-09-02 00:34:33 +00:00
[root@pikvm ~]# dd if=/dev/zero of=/var/lib/kvmd/msd/flash.img bs=1M count=512 status=progress
2023-08-19 23:09:25 +00:00
[root@pikvm ~]# loop=$(losetup -f)
2023-09-02 00:34:33 +00:00
[root@pikvm ~]# echo -e 'o\nn\np\n1\n\n\nt\nc\nw\n' | fdisk /var/lib/kvmd/msd/flash.img
[root@pikvm ~]# losetup -P $loop /var/lib/kvmd/msd/flash.img
2023-08-19 23:09:25 +00:00
[root@pikvm ~]# mkfs.vfat ${loop}p1
[root@pikvm ~]# losetup -d $loop
2023-10-08 22:54:04 +00:00
[root@pikvm ~]# chmod 666 /var/lib/kvmd/msd/flash.img
2023-08-19 23:09:25 +00:00
```
2023-10-08 22:54:04 +00:00
2023-08-19 23:09:25 +00:00
3. Remount internal storage back to safe read-only mode:
2023-08-20 04:43:09 +00:00
```console
2023-08-19 23:09:25 +00:00
[root@pikvm ~]# kvmd-helper-otgmsd-remount ro
```
2023-10-08 22:50:40 +00:00
!!! note
2023-10-08 22:54:04 +00:00
* For PiKVM V3+ you'll need to toggle the USB connection using the Web UI: Switch `System -> Connect Main USB` to off, then on.
* For V2 you'l need to reboot the target host.
2023-10-08 22:50:40 +00:00
2023-08-20 00:18:20 +00:00
??? example "Step by step: Creating an image on a local macOS"
2023-08-19 23:09:25 +00:00
1. Open `Disk Utility` .
2. Click menu `File -> New Image -> Blank Image` .
3. Set some options:
| `Format` and `Partitions` are very important |
|----------------------------------------------|
| < img src = "macos_flash_dmg.png" width = "400" > |
4. Click `Save` . The drive will automatically be mounted.
5. Copy files (such as BIOS updates) onto the new image (via terminal or drag and drop in Finder).
6. Eject image.
7. Rename the image file from `.dmg` to `.img` .
8. Upload the image to PiKVM.
The image `flash.img` now should be available in the `Drive` menu in Web UI.
Change drive mode to the `Flash` position and enable `Writable` switch.
Connect the image, do whatever is necessary, with files, and disconnect it.
The modified image containing your files can be downloaded to a local host
by selecting it from the menu and clicking the floppy disk icon.
2023-03-21 04:34:21 +00:00
-----
## NFS storage
It is possible to create a shared image storage for an entire fleet of PiKVMs using [NFS ](https://en.wikipedia.org/wiki/Network_File_System ).
If you have some shares, you can easily connect them to PiKVM by creating mount points and adding relevant records to `/etc/fstab` .
At the same time, you will be able to upload images via PiKVM Web UI to NFS, and still use local storage.
2023-08-19 08:55:45 +00:00
??? example "Step by step: Connecting NFS storage"
2023-03-21 04:34:21 +00:00
2023-08-19 08:47:11 +00:00
1. Make some preparations:
2023-03-23 23:09:04 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-08-19 08:47:11 +00:00
[root@pikvm ~]# rw
[root@pikvm ~]# pacman -Syu
[root@pikvm ~]# pacman -S nfs-utils
[root@pikvm ~]# kvmd-helper-otgmsd-remount rw
[root@pikvm ~]# mkdir -p /var/lib/kvmd/msd/NFS_Primary
[root@pikvm ~]# mkdir -p /var/lib/kvmd/msd/NFS_Secondary
[root@pikvm ~]# kvmd-helper-otgmsd-remount ro
```
2023-08-19 03:55:15 +00:00
2023-08-19 08:47:11 +00:00
2. Add NFS shares to `/etc/fstab` :
```fstab
server:/srv/nfs/NFS_Primary /var/lib/kvmd/msd/NFS_Primary nfs vers=3,timeo=1,retrans=1,soft,nolock 0 0
server:/srv/nfs/NFS_Secondary /var/lib/kvmd/msd/NFS_Secondary nfs vers=3,timeo=1,retrans=1,soft,nolock 0 0
```
2023-03-21 04:34:21 +00:00
2023-08-19 08:47:11 +00:00
3. Perform `reboot` to apply all changes.
2023-03-23 23:09:04 +00:00
2023-08-19 03:55:15 +00:00
Make sure that the `kvmd` user has the *read* access from these directories. You can also give the *write* access if needed.
2023-03-21 04:34:21 +00:00
For the best performance, it is required to ensure reliable connectivity with NFS server and use minimum `timeo` and `retrans` values.
2023-03-23 23:09:04 +00:00
**Using the `soft` option is mandatory, `nolock` is recommended.**
Note if an image is added to the NFS storage from the outside, PiKVM will not be able to track this event, so it is required to use
`Drive -> Reset` in the Web UI to update the list of images.
2023-03-21 04:34:21 +00:00
2023-08-19 09:33:31 +00:00
Configuring an NFS server is beyond the scope of this guide.
2023-03-21 04:34:21 +00:00
2021-10-12 18:45:00 +00:00
-----
2023-08-19 08:47:11 +00:00
## Multiple drives
2021-10-12 18:45:00 +00:00
2023-08-19 08:47:11 +00:00
By default, PiKVM creates one virtual drive for Mass Storage emulation.
However, if necessary, you can create additional ones and manage them using console utility.
This is useful if there is a need to boot the target host from the first drive,
and then connect the second to exchange files.
2021-07-18 17:16:48 +00:00
2023-08-19 08:47:11 +00:00
!!! note
2023-08-19 09:03:22 +00:00
The first virtual drive is available for management both in the Web UI (the `Drive` menu)
and using [the console utility ](#second-writable-flash-drive ). Extra drives are controlled only from console.
2023-08-19 08:47:11 +00:00
The issue of additional drives concerns compatibility.
There is an assumption that multiple drives on the same USB may confuse some BIOS/UEFI.
So for paranoid reasons, this feature requires manual activation.
It is recommended setting up the drives in advance, making sure that booting from ISO CD or Flash is still working
with your specific target host, and then using the drives as planned.
Also additional drives consumes extra endpoints, read more under the spoiler:
2021-10-12 18:45:00 +00:00
2023-03-26 17:47:28 +00:00
{!_usb_limits.md!}
2023-08-19 08:47:11 +00:00
So, to add a second virtual drive, follow this:
2021-10-12 18:45:00 +00:00
2023-08-19 10:07:15 +00:00
??? example "Step by step: Enabling an additional drive"
2021-10-12 18:45:00 +00:00
2023-08-19 08:55:45 +00:00
1. Switch the filesystem to read-write mode:
2021-10-12 18:45:00 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-08-19 08:55:45 +00:00
[root@pikvm ~]# rw
```
2023-08-19 08:47:11 +00:00
2023-08-19 08:55:45 +00:00
2. Edit `/etc/kvmd/override.yaml` and add the extra drive config section:
```yaml
otg:
devices:
drives:
enabled: true # Set it to true to enable
count: 1 # +1 drive, default value
default: # Default configuration for the all extra drives
cdrom: false # Default value (false for the generic flash drive)
rw: false # Read-only by default
```
2021-10-12 18:45:00 +00:00
2023-08-19 08:55:45 +00:00
The `count` parameter determines the number of additional drives (remember the limit on endpoints).
Each of the drives will be created with the same initial parameters described in the `default` section.
2021-07-18 17:16:48 +00:00
2023-08-19 08:55:45 +00:00
3. Perform reboot:
2021-10-12 18:45:00 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-08-19 08:55:45 +00:00
[root@pikvm ~]# reboot
```
2021-10-12 18:45:00 +00:00
2023-08-19 08:47:11 +00:00
-----
2023-08-19 23:09:25 +00:00
## Manual drives management
2023-08-19 08:47:11 +00:00
The `kvmd-otgmsd` console utility is used to manage additional (and the first main one) drives.
The full list of options can be found by running `kvmd-otgmsd --help` .
2023-08-19 08:55:45 +00:00
??? example "Step by step: Creating the flash drive image to get some files from the target host"
2023-08-19 08:47:11 +00:00
2023-08-19 08:55:45 +00:00
1. Switch the filesystem to read-write mode:
2021-10-12 18:45:00 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-08-19 08:55:45 +00:00
[root@pikvm ~]# rw
```
2021-10-12 18:45:00 +00:00
2023-08-19 08:55:45 +00:00
2. Create an empty image file with desired size (1GB in this example):
2021-10-12 18:45:00 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-08-19 08:55:45 +00:00
[root@pikvm ~]# dd if=/dev/zero of=/root/flash.img bs=1M count=1000 status=progress
```
2021-10-12 18:45:00 +00:00
2023-08-19 08:55:45 +00:00
3. Connect it to the drive `1` (the creation process is described in the previous section):
2021-10-12 18:45:00 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-08-19 08:55:45 +00:00
[root@pikvm ~]# kvmd-otgmsd -i 1 --set-rw=1 --set-cdrom=0 --set-image=/root/flash.img
```
2021-10-12 18:45:00 +00:00
2023-08-19 08:55:45 +00:00
!!! note
2023-08-19 09:03:22 +00:00
Index `0` represents the main drive that is controlled via the Web UI and API.
2021-10-12 18:45:00 +00:00
2023-08-19 23:09:25 +00:00
4. On this step, you will be able to access the flash drive from the target host
and format the it in the usual way.
2023-08-19 08:55:45 +00:00
5. View the drive state:
2021-10-12 18:45:00 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-08-19 08:55:45 +00:00
[root@pikvm ~]# kvmd-otgmsd -i 1
Image file: /root/flash.img
CD-ROM flag: no
RW flag: yes
```
2021-10-12 18:45:00 +00:00
2023-08-19 08:55:45 +00:00
6. To disable the flash drive and view the files on it from the PiKVM, run:
2021-10-12 18:45:00 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-08-19 08:55:45 +00:00
[root@pikvm ~]# kvmd-otgmsd -i 1 --unlock --eject
```
2021-10-12 18:45:00 +00:00
2023-08-19 08:55:45 +00:00
7. Don't forget to remount the root filesystem to read-only mode:
2021-10-12 18:45:00 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-08-19 08:55:45 +00:00
[root@pikvm ~]# ro
```
2023-08-19 08:47:11 +00:00
2023-08-19 08:55:45 +00:00
8. You can download the resulting image via SCP or mount it as a loop device on the PiKVM:
2021-10-12 18:45:00 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-08-19 08:55:45 +00:00
[root@pikvm ~]# mount -o loop /root/flash.img /mnt
[root@pikvm ~]# ls /mnt
[root@pikvm ~]# umount /mnt
```
2021-10-12 18:45:00 +00:00
2023-08-19 08:47:11 +00:00
!!! tip
2023-08-19 09:03:22 +00:00
The main drive can also be switched to read-write mode, this can be done from the Web UI.
2023-08-19 08:47:11 +00:00
2023-08-19 08:55:45 +00:00
In this case, the image will have to be prepared outside of PiKVM, and upload it to use,
2023-08-19 08:47:11 +00:00
then download it back to your local host for files extraction.
2021-07-18 17:16:48 +00:00
2021-10-12 18:45:00 +00:00
2023-03-21 04:34:21 +00:00
-----
2023-08-19 08:55:45 +00:00
## Disabling Mass Storage
2023-03-21 04:34:21 +00:00
2023-08-19 08:47:11 +00:00
In rare cases, it may be necessary to disable Mass Storage emulation if the BIOS/UEFI
does not recognize it correctly and even refuses to work with USB keyboard and mouse.
2023-08-19 09:03:22 +00:00
??? example "Step by step: Permanent disabling Mass Storage"
2023-03-21 04:34:21 +00:00
2023-08-19 08:55:45 +00:00
1. Switch the filesystem to read-write mode:
2023-08-19 08:47:11 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-08-19 08:55:45 +00:00
[root@pikvm ~]# rw
```
2. Edit `/etc/kvmd/override.yaml` and add the extra drive config section:
```yaml
kvmd:
msd:
type: disabled
```
3. Perform reboot:
2023-08-20 04:43:09 +00:00
```console
2023-08-19 08:55:45 +00:00
[root@pikvm ~]# reboot
```
!!! tip
2023-08-19 09:03:22 +00:00
As an alternative method may be to use the [dynamic USB configuration ](usb_dynamic.md ),
2023-08-19 08:55:45 +00:00
which allows you to temporarily disable any of the emulated devices, including Mass Storage Drive.
2023-03-21 04:34:21 +00:00
2021-10-12 18:45:00 +00:00
-----
2023-08-20 00:18:20 +00:00
## Making Windows Boot Flash Image
2021-09-04 16:59:05 +00:00
2021-09-04 20:35:24 +00:00
An alternative version of this can be found below that does not require a physical usb flash
2021-09-04 16:59:05 +00:00
2023-08-20 00:18:20 +00:00
This procedure will create a disk image of a USB stick.
This is mostly required for Windows based images since they are larger than the CDROM based limit of 2.2GB.
2021-07-18 17:16:48 +00:00
You can create a bootable USB stick with the normal Microsoft tools, e.g. Media Creation Tool.
2023-08-20 00:18:20 +00:00
Creating a bootable USB stick can also be made from an ISO file with other tools like [Rufus ](https://rufus.ie ).
2021-07-18 17:16:48 +00:00
2023-08-20 00:18:20 +00:00
Without resizing, the full size of the USB stick will be used, so keep the stick as small as possible (e.g. 4GB or 8GB)
but still large enough for all Windows files. The Media Creation tool will tell you what the minimum size is.
2021-07-18 17:16:48 +00:00
2023-08-20 00:18:20 +00:00
Before creating the image file, you can use a tool like
[EaseUS Partition Master Free ](https://www.easeus.com/partition-manager/epm-free.html ) or [GParted ](https://gparted.org )
to resize the main FAT32 partition on the USB stick. This will save space on PiKVM.
2021-07-18 17:16:48 +00:00
2023-08-20 00:18:20 +00:00
You can also perform these steps on a separate UNIX machine and transfer the image over to PiKVM.
Or, on Windows you could use a program like PassMark ImageUSB (only for full USB size images)
or `dd` for Windows to create the image.
2021-07-18 17:16:48 +00:00
Once you have the desired USB stick perform the following on the RPi to create the image directly to the PiKVM image storage folder.
1. Insert Windows based USB stick into Pi4, generated with Microsoft USB creation tool. SSH to PiKVM as root.
2021-10-12 18:45:00 +00:00
2023-08-20 04:43:09 +00:00
```console
2021-07-18 17:16:48 +00:00
# dmesg
[ 3025.025401] usb-storage 2-1:1.0: USB Mass Storage device detected
[ 3025.038911] scsi host0: usb-storage 2-1:1.0
[ 3026.132248] scsi 0:0:0:0: Direct-Access Kingston DataTraveler 3.0 PMAP PQ: 0 ANSI: 6
[ 3026.771425] sd 0:0:0:0: [sda] 15360000 512-byte logical blocks: (7.86 GB/7.32 GiB)
[ 3026.790276] sd 0:0:0:0: [sda] Write Protect is off
[ 3026.802530] sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00
[ 3026.804450] sd 0:0:0:0: [sda] No Caching mode page found
[ 3026.814082] sd 0:0:0:0: [sda] Assuming drive cache: write through
[ 3026.908712] sda: sda1
[ 3026.922794] sd 0:0:0:0: [sda] Attached SCSI removable disk
[root@pikvm ~]#
```
2021-10-12 18:45:00 +00:00
USB devices shows as `sda` . We will use `sda1` as the Windows partition.
2021-07-18 17:16:48 +00:00
2. mount msd folder as read/write
2021-10-12 18:45:00 +00:00
2023-08-20 04:43:09 +00:00
```console
2021-07-18 17:16:48 +00:00
# kvmd-helper-otgmsd-remount rw
```
2021-10-12 18:45:00 +00:00
2021-07-18 17:16:48 +00:00
3. Create image of USB data PARTITION to an image file, this will take some time, in this case about 12 minutes (RPi4).
2021-10-12 18:45:00 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-03-05 15:47:20 +00:00
# dd if=/dev/sda1 of=/var/lib/kvmd/msd/windows10-2004.bin bs=8M status=progress
2021-07-18 17:16:48 +00:00
4458545152 bytes (4.5 GB, 4.2 GiB) copied, 736 s, 6.1 MB/s
531+1 records in
531+1 records out
4458545152 bytes (4.5 GB, 4.2 GiB) copied, 736.213 s, 6.1 MB/s
2021-10-12 18:45:00 +00:00
```
2023-08-19 03:55:15 +00:00
4. Correct ownership of new image and make sure the website reports the file as complete.
2021-10-12 18:45:00 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-03-05 15:47:20 +00:00
# chown kvmd:kvmd /var/lib/kvmd/msd/windows10-2004.bin
2021-07-18 17:16:48 +00:00
```
2021-10-12 18:45:00 +00:00
2021-07-18 17:16:48 +00:00
5. Remount msd folder as read only
2021-10-12 18:45:00 +00:00
2023-08-20 04:43:09 +00:00
```console
2021-07-18 17:16:48 +00:00
# kvmd-helper-otgmsd-remount ro
2021-10-12 18:45:00 +00:00
```
2021-07-18 17:16:48 +00:00
6. On PiKVM webpage, under Storage select the new image and connect it in Drive Mode: Flash to the server.
2021-10-12 18:45:00 +00:00
Boot the server and select boot device like you normally would.
E.g. in a AMI BIOS the boot device is called "Linux File-CD Gadget 0504".
-----
## An alternative to making a Windows boot image that does not require a physical usb flash drive
* Physical USB is not needed but external system is mandatory.
* Create Ventoy image (on Ubuntu x86 machine) (Unaware of a windows version).
2022-02-09 01:10:47 +00:00
* There is an assumption that you know basic linux to understand that not all dev devices are named exactly like the below
2021-09-04 20:35:24 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-03-21 04:34:21 +00:00
# dd if=/dev/zero of=ventoy.img bs=1M count=4700 status=progress
2021-09-04 20:35:24 +00:00
```
2021-10-12 18:45:00 +00:00
* This makes a ventoy.img file, I would name this what it is EG: `ventoy_win10.img`
* At the same time, download Media Creation Tool and select iso
2021-09-04 20:35:24 +00:00
2021-10-12 18:45:00 +00:00
* On the Ubuntu machine
* At the time of this, it was 1.0.51, change to latest version
2021-09-04 20:35:24 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-03-21 04:34:21 +00:00
# wget https://github.com/ventoy/Ventoy/releases/download/v1.0.51/ventoy-1.0.51-linux.tar.gz
# tar zxvf ventoy-1.0.51-linux.tar.gz
# sudo losetup -f ventoy.img
# sudo losetup -l | grep ventoy (To locate which loop device was used)
# sudo sh ~/ventoy-1.0.51/Ventoy2Disk.sh -i /dev/loopXX (This will make a loopXXp1 and a loopXXp2 and will format both partitions
# cd /media/XXX (Usually your login)
# mkdir ventoy
# sudo mount /dev/loopXXp1 /media/XXX/ventoy
2021-09-04 20:35:24 +00:00
```
2021-10-12 18:45:00 +00:00
* Either cp/scp over the .iso you downloaded from the Media tool or use a NFS mount
2021-09-04 20:35:24 +00:00
2023-08-20 04:43:09 +00:00
```console
2021-09-04 20:35:24 +00:00
sudo cp windows.iso /media/XXX/ventoy
2022-02-09 01:10:47 +00:00
sudo umount /dev/loopXX
# This is going to be different for everyone, please choose the same one you mounted earlier
sudo losetup -d /dev/loopXX
# This may or may not work for everyone, if it doesnt work, skip and move forward#
2021-09-04 20:35:24 +00:00
```
ssh into the Ubuntu system (Or whatever OS you are using)
2021-10-12 18:45:00 +00:00
* On PiKVM
2021-09-04 20:35:24 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-03-21 04:34:21 +00:00
# cd /var/lib/kvmd/msd
# mount -o remount,rw .
2021-09-04 20:35:24 +00:00
```
2021-10-12 18:45:00 +00:00
* On Ubuntu
2021-09-04 20:35:24 +00:00
2023-08-20 04:43:09 +00:00
```console
2023-03-21 04:34:21 +00:00
# scp ventoy.img root@pikvm:/var/lib/kvmd/msd
2021-09-04 20:35:24 +00:00
```
2021-10-12 18:45:00 +00:00
* Mount `ventoy.img` as normal flash and select the PiKVM boot device, it should popup with the VenToy logo with the window.iso as a selection
2024-02-16 02:42:16 +00:00
-----
## An alternative to making a Windows boot image that does not require a physical usb flash drive on a single windows machine
* Physical USB is not needed
* Requires Administrator rights on the windows machine
* Testing was done on a Windows 11 machine with a Windows 11 23H2 ISO
* Requires a windows ISO (can be downloaded from the microsoft website), Rufus (To write the ISO to the VHD) and VirtualBox (Uses VBoxManage to convert VHD to IMG)
1. Create a VHD in Windows, This can be done in two ways that i know of.
Method 1:
Open up the windows settings, go to storage, press advanced storage settings and press Disks & Volumes
Press the Create VHD button, Give the disk a name, set a storage location and set the Virtual hard disk size (for 23H2 i used 6300MB). Set the Virtual hard disk format to VHD and set it to Fixed Size.
Press Create and then you will get a menu to initialize the disk, press cancel
Method 2:
Open up the windows partition manager, make sure you don't have any partitions or disks selected by pressing on empty space, Go to Action and select Create VHD.
Select a location for the VHD file, set the VHD size (for 23H2 i used 6300MB), Set the Virtual hard disk format to VHD and set it to Fixed Size.
Press OK
2.
Download the Windows ISO and Rufus (i use the portable version), open rufus select the NO_LABEL disk that should roughly match size selected when creating the VHD (MiB vs MB).
Select the ISO you downloaded and press start
Once it is done close rufus (optionally delete rufus)
3. Unmount the VHD by either opening up windows explorer, right clicking on the windows installer drive and pressing eject or opening up the windows partition manager, right clicking on the virtual disk and detaching the VHD
4.
Download and install Virtualbox
Open up a command prompt in the location where you stored the VHD
```console
VBoxManage clonehd input.vhd output.img --format raw
```
Or if virtualbox didn't get added to the system environment variables
```console
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" clonehd input.vhd output.img --format raw
```
This will convert the VHD to the IMG ready to be uploaded to the pikvm
* using vboxmanage does have a slight quirk where it writes every conversion to < username > \.VirtualBox\VirtualBox.xml so if you make changes to the vhd and try to convert it again it throws and error that the uuid doesn't match the stored value in VirtualBox.xml and you need to either throw away VirtualBox.xml or edit it and delete the line that matches the error
* this method has also been tested using the windows installer for ventoy (needs enabling show all devices in the windows installer)