Update readme.md

This commit is contained in:
Kroese 2025-03-15 09:42:09 +01:00 committed by GitHub
parent 6027fa0fc2
commit 3323d0dfac
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

131
readme.md
View file

@ -32,7 +32,7 @@ services:
container_name: qemu container_name: qemu
image: qemux/qemu-arm image: qemux/qemu-arm
environment: environment:
BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/aarch64/alpine-virt-3.19.1-aarch64.iso" BOOT: "mint"
devices: devices:
- /dev/kvm - /dev/kvm
- /dev/net/tun - /dev/net/tun
@ -49,7 +49,7 @@ services:
Via Docker CLI: Via Docker CLI:
```bash ```bash
docker run -it --rm --name qemu -e "BOOT=http://example.com/image.iso" -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v ${PWD:-.}/qemu:/storage --stop-timeout 120 qemux/qemu-arm docker run -it --rm --name qemu -e "BOOT=mint" -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v ${PWD:-.}/qemu:/storage --stop-timeout 120 qemux/qemu-arm
``` ```
Via Kubernetes: Via Kubernetes:
@ -72,7 +72,7 @@ kubectl apply -f https://raw.githubusercontent.com/qemus/qemu-arm/refs/heads/mas
Very simple! These are the steps: Very simple! These are the steps:
- Set the `BOOT` environment variable to the URL of any [disk image](#what-image-formats-are-supported) you want to install. - Set the `BOOT` variable to the [operating system](#how-do-i-select-the-operating-system) you want to install.
- Start the container and connect to [port 8006](http://localhost:8006) using your web browser. - Start the container and connect to [port 8006](http://localhost:8006) using your web browser.
@ -80,23 +80,74 @@ kubectl apply -f https://raw.githubusercontent.com/qemus/qemu-arm/refs/heads/mas
Enjoy your brand new machine, and don't forget to star this repo! Enjoy your brand new machine, and don't forget to star this repo!
### What image formats are supported? ### How do I select the operating system?
You can use the `BOOT` environment variable in order to specify the operating system to be installed:
```yaml
environment:
BOOT: "mint"
```
Select from the values below:
| **Value** | **Operating System** | **Size** |
|---|---|---|
| `alma` | Alma Linux | x GB |
| `alpine` | Alpine Linux | x MB |
| `arch` | Arch Linux | x GB |
| `cachy` | CachyOS | x GB |
| `centos` | CentOS Stream | x GB |
| `debian` | Debian | x GB |
| `endeavour`| EndeavourOS | x GB |
| `fedora` | Fedora | x GB |
| `gentoo` | Gentoo | x GB |
| `kali` | Kali Linux | x GB |
| `kubuntu` | Kubuntu | x GB |
| `mint` | Linux Mint | x GB |
| `manjaro` | Manjaro | x GB |
| `mx` | MX Linux | x GB |
| `nixos` | NixOS | x GB |
| `opensuse` | OpenSUSE | x GB |
| `oracle` | Oracle Linux | x GB |
| `rocky` | Rocky Linux | x GB |
| `slack` | Slackware | x GB |
| `tails` | Tails | x GB |
| `ubuntu` | Ubuntu Desktop | x GB |
| `ubuntus` | Ubuntu Server | x GB |
| `xubuntu` | Xubuntu | x GB |
### How can I use my own image?
If you want to boot an operating system that is not in the list, you can set the `BOOT` variable to the URL of the image:
```yaml
environment:
BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/aarch64/alpine-virt-3.19.1-aarch64.iso"
```
The `BOOT` URL accepts files in any of the following formats: The `BOOT` URL accepts files in any of the following formats:
| **Extension** | **Format** | | **Extension** | **Format** |
|---|---| |---|---|
| `.img` | Raw | | `.img` | Raw |
| `.raw` | Raw | | `.raw` | Raw |
| `.iso` | Optical | | `.iso` | Optical |
| `.qcow2` | QEMU | | `.qcow2` | QEMU |
| `.vmdk` | VMware | | `.vmdk` | VMware |
| `.vhd` | VirtualPC | | `.vhd` | VirtualPC |
| `.vhdx` | Hyper-V | | `.vhdx` | Hyper-V |
| `.vdi` | VirtualBox | | `.vdi` | VirtualBox |
> [!TIP] It will also accept `.img.gz`, `.qcow2.xz`, `.iso.zip` and many more, as it automaticly extracts compressed files.
> It will also accept `.img.gz`, `.qcow2.xz`, `.iso.zip` and many more, as it automaticly extracts compressed files.
You can also use a local image file directly, and skip the download altogether, by binding it in your compose file like this:
```yaml
volumes:
- ./example.iso:/boot.iso
```
This way you can supply a `/boot.iso`, `/boot.img` or a `/boot.qcow2` file. The value of `BOOT` will be ignored in this case.
### How do I change the storage location? ### How do I change the storage location?
@ -121,6 +172,18 @@ kubectl apply -f https://raw.githubusercontent.com/qemus/qemu-arm/refs/heads/mas
> [!TIP] > [!TIP]
> This can also be used to resize the existing disk to a larger capacity without any data loss. > This can also be used to resize the existing disk to a larger capacity without any data loss.
### How do I change the amount of CPU or RAM?
By default, the container will be allowed to use a maximum of 1 CPU core and 1 GB of RAM.
If you want to adjust this, you can specify the desired amount using the following environment variables:
```yaml
environment:
RAM_SIZE: "4G"
CPU_CORES: "4"
```
### How do I increase the display resolution? ### How do I increase the display resolution?
For maximum compatibility, the display output will be a simple framebuffer by default. While this isn't the most optimal, it doesn't require any drivers. For maximum compatibility, the display output will be a simple framebuffer by default. While this isn't the most optimal, it doesn't require any drivers.
@ -137,50 +200,14 @@ kubectl apply -f https://raw.githubusercontent.com/qemus/qemu-arm/refs/heads/mas
> [!NOTE] > [!NOTE]
> Using this method your screen will stay black during the boot process, until the point where the driver is actually loaded. > Using this method your screen will stay black during the boot process, until the point where the driver is actually loaded.
### How do I boot a local image?
You can use a local image file directly, and skip the download altogether, by binding it in your compose file:
```yaml
volumes:
- ./example.iso:/boot.iso
```
You can supply a `boot.iso`, `boot.img` or `boot.qcow2` file by replacing the example path `./example.iso` with the filename of your desired image. The value of `BOOT` will be ignored in this case.
### How do I boot Windows? ### How do I boot Windows?
Use [dockur/windows-arm](https://github.com/dockur/windows-arm) instead, as it includes all the drivers required during installation, amongst many other features. Use [dockur/windows-arm](https://github.com/dockur/windows-arm) instead, as it includes all the drivers required during installation, amongst many other features.
### How do I boot a x86 image? ### How do I boot x86/x64 images?
You can use the [qemu](https://github.com/qemus/qemu/) container to run x86 and x64 images on ARM. You can use the [qemu](https://github.com/qemus/qemu/) container to run x86 and x64 images on ARM.
### How do I boot without SCSI drivers?
By default, the machine makes use of `virtio-scsi` drives for performance reasons, and even though most Linux kernels bundle the necessary driver for this device, that may not always be the case for other operating systems.
If your machine fails to detect the hard drive, you can modify your compose file to use `virtio-blk` instead:
```yaml
environment:
DISK_TYPE: "blk"
```
If it still fails to boot, you can set the value to `usb` to emulate a USB drive, which is slower but requires no drivers and is compatible with almost every system.
### How do I change the amount of CPU or RAM?
By default, the container will be allowed to use a maximum of 1 CPU core and 1 GB of RAM.
If you want to adjust this, you can specify the desired amount using the following environment variables:
```yaml
environment:
RAM_SIZE: "4G"
CPU_CORES: "4"
```
### How do I verify if my system supports KVM? ### How do I verify if my system supports KVM?
Only Linux and Windows 11 support KVM virtualization, macOS and Windows 10 do not unfortunately. Only Linux and Windows 11 support KVM virtualization, macOS and Windows 10 do not unfortunately.