mirror of
https://github.com/PhyllomeOS/wiki.git
synced 2024-12-21 21:25:22 +00:00
clean-up
reorganize the wiki using only two-levels of directories
This commit is contained in:
parent
6988e58855
commit
676136cb05
23
deploy.md
23
deploy.md
@ -1,23 +0,0 @@
|
|||||||
---
|
|
||||||
title: On some ways to deploy Phyllome OS
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-01-18T08:24:13.577Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2021-11-13T11:19:53.459Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# Deployments
|
|
||||||
|
|
||||||
*This section is meant to help users install Phyllome OS*.
|
|
||||||
|
|
||||||
* [Is Phyllome OS right for you?](/deploy/rightforyou)
|
|
||||||
* [Prepare your computer](/deploy/prepare)
|
|
||||||
* [Create an installation medium](/deploy/medium)
|
|
||||||
* [Install from a USB flash drive](/deploy/install) (*default method*)
|
|
||||||
* [Deployment in a virtual machine](/deploy/vm)
|
|
||||||
* [From source](/deploy/source)
|
|
||||||
|
|
||||||
---
|
|
||||||
*Already have a working medium or installation? Then go to the [**Get started section**](/getstarted)*
|
|
@ -145,7 +145,7 @@ One needs to alter the GRUB instructions before the USB flash drive can load the
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*Please go to the [Get Started section](https://wiki.phyllo.me/getstarted/disk) to learn what to do next.*
|
*Please go to the [Get Started section](/wiki/getstarted/) to learn what to do next.*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -102,4 +102,4 @@ Follow the normal procedure to install an application on your computer.
|
|||||||
---
|
---
|
||||||
|
|
||||||
*If you have followed the procedure using the Fedora Server ISO, with the intent of installing Phyllome OS permanently, please go to the [Install Phyllome OS page](https://wiki.phyllo.me/deploy/install).*
|
*If you have followed the procedure using the Fedora Server ISO, with the intent of installing Phyllome OS permanently, please go to the [Install Phyllome OS page](https://wiki.phyllo.me/deploy/install).*
|
||||||
*If you have followed the procedure using the Phyllome OS ISO, go to the section [Get started with the live system](/getstarted/live).*
|
*If you have followed the procedure using the Phyllome OS ISO, go to the section [Get started with the live system](/gofurther/live).*
|
||||||
|
@ -15,6 +15,121 @@ After Phyllome OS [has been successfully installed](/deploy/install) and [its fi
|
|||||||
> As Phyllome OS evolves, the following post-installation configuration will, hopefully, be made obsolete
|
> As Phyllome OS evolves, the following post-installation configuration will, hopefully, be made obsolete
|
||||||
{.is-info}
|
{.is-info}
|
||||||
|
|
||||||
|
## Perform a global checkup
|
||||||
|
|
||||||
|
Before creating your first virtual machine, it is a good idea to check if everything is correctly set up.
|
||||||
|
|
||||||
|
|
||||||
|
The command-line tool `virt-host-validate` allows you to check whether virtualization features are activated or not.
|
||||||
|
|
||||||
|
* Use the following command to check your system:
|
||||||
|
```
|
||||||
|
virt-host-validate
|
||||||
|
```
|
||||||
|
|
||||||
|
* Make sure the result look like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
[groot@phyllome ~]$ virt-host-validate
|
||||||
|
QEMU: Checking for hardware virtualization : PASS
|
||||||
|
QEMU: Checking if device /dev/kvm exists : PASS
|
||||||
|
QEMU: Checking if device /dev/kvm is accessible : PASS
|
||||||
|
QEMU: Checking if device /dev/vhost-net exists : PASS
|
||||||
|
QEMU: Checking if device /dev/net/tun exists : PASS
|
||||||
|
QEMU: Checking for cgroup 'cpu' controller support : PASS
|
||||||
|
QEMU: Checking for cgroup 'cpuacct' controller support : PASS
|
||||||
|
QEMU: Checking for cgroup 'cpuset' controller support : PASS
|
||||||
|
QEMU: Checking for cgroup 'memory' controller support : PASS
|
||||||
|
QEMU: Checking for cgroup 'devices' controller support : WARN[^1] (Enable 'devices' in kernel Kconfig file or mount/enable cgroup controller in your system)
|
||||||
|
QEMU: Checking for cgroup 'blkio' controller support : PASS
|
||||||
|
QEMU: Checking for device assignment IOMMU support : PASS
|
||||||
|
QEMU: Checking if IOMMU is enabled by kernel : PASS
|
||||||
|
```
|
||||||
|
|
||||||
|
[^1]: The warning message for *cgroup devices* can be disregarded, as it won't show up if the `virt-host-validate` command is executed as *root*. [Related discussion](https://gitlab.com/libvirt/libvirt/-/issues/94).
|
||||||
|
|
||||||
|
> *If `/dev/kvm` is not found, please ensure that your hardware [is indeed compatible](/deploy/prepare#meet-the-requirements) and that hardware-assisted virtualization [has been activated](/deploy/prepare#enable-hardware-assisted-virtualization) in the BIOS/EFI.*
|
||||||
|
{.is-info}
|
||||||
|
|
||||||
|
## Specific checkup
|
||||||
|
|
||||||
|
### Hardware-assisted virtualization (1st gen)
|
||||||
|
|
||||||
|
* For Intel CPUs, you can use the following more specific command to check whether *hardware virtualization* is activated:
|
||||||
|
|
||||||
|
```
|
||||||
|
cat /proc/cpuinfo | grep vmx
|
||||||
|
```
|
||||||
|
|
||||||
|
* For AMD CPUs, the following command can be used:
|
||||||
|
```
|
||||||
|
cat /proc/cpuinfo | grep svm
|
||||||
|
```
|
||||||
|
|
||||||
|
* Look for `svm` for AMD-based processors, or `vmx` for Intel-based processors.
|
||||||
|
|
||||||
|
```
|
||||||
|
[groot@phyllome ~]$ cat /proc/cpuinfo | grep svm
|
||||||
|
flags : fpu vme de [...] svm [...] sme sev sev_es
|
||||||
|
```
|
||||||
|
|
||||||
|
### Hardware-assisted virtualization (2st gen, IOMMU-based)
|
||||||
|
|
||||||
|
Your computer may be compatible with advanced hardware virtualization features (*AMD Vi* or Intel *VT-d*).
|
||||||
|
|
||||||
|
* Check the presence of IOMMU-based hardware-assisted virtualization using the following command [^2]:
|
||||||
|
|
||||||
|
[^2]: Courtesy of the [Archlinux wiki](https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF#Enabling_IOMMU).
|
||||||
|
|
||||||
|
```
|
||||||
|
dmesg | grep -i -e DMAR -e IOMMU
|
||||||
|
```
|
||||||
|
* Make sure the result looks like this:
|
||||||
|
```
|
||||||
|
[ 0.600228] iommu: Default domain type: Translated
|
||||||
|
[ 0.624416] pci 0000:00:00.2: AMD-Vi: IOMMU performance counters supported
|
||||||
|
[ 0.624444] pci 0000:00:01.0: Adding to iommu group 0
|
||||||
|
[...]
|
||||||
|
[ 0.624690] pci 0000:0b:00.4: Adding to iommu group 15
|
||||||
|
[ 0.627236] pci 0000:00:00.2: AMD-Vi: Found IOMMU cap 0x40
|
||||||
|
[ 0.627987] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks, 4 counters/bank).
|
||||||
|
```
|
||||||
|
* You may also want to learn how well isolated your devices are. To do so, copy and paste the following script[^1] in your terminal:
|
||||||
|
|
||||||
|
```
|
||||||
|
for g in `find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V`; do
|
||||||
|
echo "IOMMU Group ${g##*/}:"
|
||||||
|
for d in $g/devices/*; do
|
||||||
|
echo -e "\t$(lspci -nns ${d##*/})"
|
||||||
|
done;
|
||||||
|
done;
|
||||||
|
```
|
||||||
|
|
||||||
|
[^1]: Courtesy of the [Archlinux wiki](https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF#Ensuring_that_the_groups_are_valid)
|
||||||
|
|
||||||
|
* In the following case, devices are rather poorly isolated. The use of the ACS override patch may be warranted (more on that later...).
|
||||||
|
|
||||||
|
```
|
||||||
|
IOMMU Group 0:
|
||||||
|
[...]
|
||||||
|
01:00.0 Non-Volatile memory controller [0108]: Intel Corporation SSD 660P Series [8086:f1a8] (rev 03)
|
||||||
|
02:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Device [1022:43ee]
|
||||||
|
02:00.1 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] Device [1022:43eb]
|
||||||
|
[...]
|
||||||
|
04:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM107 [GeForce GTX 750] [10de:1381] (rev a2)
|
||||||
|
04:00.1 Audio device [0403]: NVIDIA Corporation GM107 High Definition Audio Controller [GeForce 940MX] [10de:0fbc] (rev a1)
|
||||||
|
07:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller [10ec:8125] (rev 05)
|
||||||
|
IOMMU Group 1:
|
||||||
|
[...]
|
||||||
|
09:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM204 [GeForce GTX 970] [10de:13c2] (rev a1)
|
||||||
|
09:00.1 Audio device [0403]: NVIDIA Corporation GM204 High Definition Audio Controller [10de:0fbb] (rev a1)
|
||||||
|
[...]
|
||||||
|
IOMMU Group 14:
|
||||||
|
0b:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller [1022:149c]
|
||||||
|
IOMMU Group 15:
|
||||||
|
0b:00.4 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse HD Audio Controller [1022:1487]
|
||||||
|
```
|
||||||
|
|
||||||
### Grant the current user the ability to manage system-based virtual machines
|
### Grant the current user the ability to manage system-based virtual machines
|
||||||
|
|
||||||
Any new user, including the one that has been created during the first-launch set up, won't be part of the `libvirt` group. It means that it won't be able to manage the *qemu:///system*, which runs `libvirt` as root.
|
Any new user, including the one that has been created during the first-launch set up, won't be part of the `libvirt` group. It means that it won't be able to manage the *qemu:///system*, which runs `libvirt` as root.
|
||||||
@ -28,7 +143,7 @@ sudo usermod -a -G libvirt $(whoami)
|
|||||||
> Phyllome OS will eventually switch to the *qemu:///session* URI, which doesn't require elevated privileges. Have a look at [this great blog post](https://blog.wikichoon.com/2016/01/qemusystem-vs-qemusession.html) to understand some of the differences between the *session* and the *system* URI.
|
> Phyllome OS will eventually switch to the *qemu:///session* URI, which doesn't require elevated privileges. Have a look at [this great blog post](https://blog.wikichoon.com/2016/01/qemusystem-vs-qemusession.html) to understand some of the differences between the *session* and the *system* URI.
|
||||||
{.is-info}
|
{.is-info}
|
||||||
|
|
||||||
### Update GRUB and reboot
|
## Update GRUB and reboot
|
||||||
|
|
||||||
Unfortunately, the GRUB config won't correctly update during the kickstart phase, so it has to be done manually.
|
Unfortunately, the GRUB config won't correctly update during the kickstart phase, so it has to be done manually.
|
||||||
|
|
||||||
@ -37,22 +152,6 @@ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
|
|||||||
```
|
```
|
||||||
When the is done, please reboot: `sudo reboot`
|
When the is done, please reboot: `sudo reboot`
|
||||||
|
|
||||||
### Modify the system allocated to the GPU in the BIOS/UEFI (vfio-mdev only)
|
|
||||||
|
|
||||||
> Some computers allow you to modify the system memory allocated or shared with the integrated GPU, which may allow you to create more vGPUs.
|
|
||||||
{.is-info}
|
|
||||||
|
|
||||||
> For Intel integrated graphics cards only; rarely available on laptops computers.
|
|
||||||
{.is-warning}
|
|
||||||
|
|
||||||
* Before the host operating system boots up, you need to enter the BIOS/UEFI and to look for a setting called *GPU aperture size*, or *GPU shared memory*.
|
|
||||||
|
|
||||||
* Use the highest possible value.
|
|
||||||
|
|
||||||
> System memory will be reserved for the GPU, so make sure you have enough system memory to accomodate both the GPU and your operating system.
|
|
||||||
{.is-warning}
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*Are you looking for tasks to do with your system? If so, have a look at doing some [suggested tasks](/gofurther)*
|
*Are you looking for tasks to do with your system? If so, have a look at doing some [suggested tasks](/gofurther)*
|
||||||
|
@ -152,4 +152,4 @@ This section will show you how to modify the boot order permanently, so you can
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*If the activation is successful, you can go to [**the next section**](https://wiki.phyllo.me/deploy/medium) to prepare an installation medium.*
|
*If the activation is successful, you can go to [**the next section**](/deploy/medium) to prepare an installation medium.*
|
@ -1,39 +0,0 @@
|
|||||||
---
|
|
||||||
title: Get started
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-07-30T00:24:13.572Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2021-11-13T11:37:12.103Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# Get started with Phyllome OS
|
|
||||||
|
|
||||||
*The section is meant to introduce how to use Phyllome OS in a general way.*
|
|
||||||
|
|
||||||
* [Use it as a live system](/getstarted/live) (*to test it*)
|
|
||||||
* [Use it as an installed system](/getstarted/disk) (*for daily use*)
|
|
||||||
|
|
||||||
## Guest operating system installations
|
|
||||||
|
|
||||||
A guest operating system can be installed in different ways, such as using the installer on an ISO image or automatically through Internet, using `virt-install`.
|
|
||||||
|
|
||||||
#### Unix-like
|
|
||||||
|
|
||||||
* [Install](/gofurther/install-guest) a Linux guest system using an ISO file
|
|
||||||
* [Automatically deploy](/gofurther/virt-install) an RPM-based guest system with `virt-install` and a kickstart file
|
|
||||||
|
|
||||||
#### Windows NT
|
|
||||||
|
|
||||||
* [Install ReactOS](/gofurther/reactos)
|
|
||||||
|
|
||||||
#### Darwin-based
|
|
||||||
|
|
||||||
* *To-do*
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*If you haven't deploy Phyllome OS, please go to the [**Deploy**](/deploy) section.*
|
|
||||||
|
|
||||||
*If you already have a working system installed and would like to explore what to do next, please go to the [**Next section**](/gofurther).*
|
|
@ -21,4 +21,8 @@ dateCreated: 2021-11-13T16:29:34.112Z
|
|||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
`to be done`
|
`to be done`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -1,66 +0,0 @@
|
|||||||
---
|
|
||||||
title: Get started with Phyllome OS
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-07-28T01:06:37.558Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2021-11-13T11:37:31.498Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# How to use Phyllome OS
|
|
||||||
|
|
||||||
*This section explains how to further configure Phyllome OS and how to use in a general sense.*
|
|
||||||
|
|
||||||
* TLDR: [Install a guest operating system](https://wiki.phyllo.me/gofurther#install-a-guest-operating-system)
|
|
||||||
|
|
||||||
## Post-installation configuration
|
|
||||||
|
|
||||||
After Phyllome OS [has been successfully installed](/deploy/install) and [its first-launch process completed](/deploy/install#first-launch), a few tasks are required before it can be used to its fullest potential.
|
|
||||||
|
|
||||||
> As Phyllome OS evolves, the following post-installation configuration will, hopefully, be made obsolete
|
|
||||||
{.is-info}
|
|
||||||
|
|
||||||
### Grant the current user the ability to manage system-based virtual machines
|
|
||||||
|
|
||||||
Any new user, including the one that has been created during the first-launch set up, won't be part of the `libvirt` group. It means that it won't be able to manage the *qemu:///system*, which runs `libvirt` as root.
|
|
||||||
|
|
||||||
To avoid a password prompt each time you connect to *qemu:///system*, you can add the current user to the `libvirt` by using the following command, in the terminal:
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo usermod -a -G libvirt $(whoami)
|
|
||||||
```
|
|
||||||
|
|
||||||
> Phyllome OS will eventually switch to the *qemu:///session* URI, which doesn't require elevated privileges. Have a look at [this great blog post](https://blog.wikichoon.com/2016/01/qemusystem-vs-qemusession.html) to understand some of the differences between the *session* and the *system* URI.
|
|
||||||
{.is-info}
|
|
||||||
|
|
||||||
### Update GRUB and reboot
|
|
||||||
|
|
||||||
Unfortunately, the GRUB config won't correctly update during the kickstart phase, so it has to be done manually.
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
|
|
||||||
```
|
|
||||||
When the is done, please reboot: `sudo reboot`
|
|
||||||
|
|
||||||
### Modify the system allocated to the GPU in the BIOS/UEFI (vfio-mdev only)
|
|
||||||
|
|
||||||
> Some computers allow you to modify the system memory allocated or shared with the integrated GPU, which may allow you to create more vGPUs.
|
|
||||||
{.is-info}
|
|
||||||
|
|
||||||
> For Intel integrated graphics cards only; rarely available on laptops computers.
|
|
||||||
{.is-warning}
|
|
||||||
|
|
||||||
* Before the host operating system boots up, you need to enter the BIOS/UEFI and to look for a setting called *GPU aperture size*, or *GPU shared memory*.
|
|
||||||
|
|
||||||
* Use the highest possible value.
|
|
||||||
|
|
||||||
> System memory will be reserved for the GPU, so make sure you have enough system memory to accomodate both the GPU and your operating system.
|
|
||||||
{.is-warning}
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*Are you looking for tasks to do with your system? If so, have a look at doing some [suggested tasks](/gofurther)*
|
|
||||||
|
|
||||||
[^1]: Although, we very much encourage you to [hack it](https://github.com/PhyllomeOS/phyllomeos#how-to-hack-phyllome-os).
|
|
@ -19,7 +19,6 @@ By default, `netboot.xyz.iso` should already be located under `var/lib/libvirt/i
|
|||||||
```
|
```
|
||||||
wget https://boot.netboot.xyz/ipxe/netboot.xyz.iso -P /var/lib/libvirt/iso/
|
wget https://boot.netboot.xyz/ipxe/netboot.xyz.iso -P /var/lib/libvirt/iso/
|
||||||
```
|
```
|
||||||
|
|
||||||
## Run the script
|
## Run the script
|
||||||
|
|
||||||
The following script, which also doesn't require root privileges, will create a virtual machine called `my-first-live-vm`. This virtual machine will be started automatically and added to `virt-manager`.
|
The following script, which also doesn't require root privileges, will create a virtual machine called `my-first-live-vm`. This virtual machine will be started automatically and added to `virt-manager`.
|
||||||
@ -88,5 +87,4 @@ sudo poweroff
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*Are you looking for other tasks to execute on your system? If so, go the [suggested tasks section](/gofurther)*
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
||||||
|
|
@ -16,10 +16,29 @@ In theory, it can run any software and work with any drivers developed for these
|
|||||||
|
|
||||||
In practice, it is still under heavy-development and may not work as expected.
|
In practice, it is still under heavy-development and may not work as expected.
|
||||||
|
|
||||||
> **Phyllome OS support**
|
## State of support
|
||||||
|
|
||||||
Support for the more modern PCI-Express-enabled Q35 chipset, UEFI or other virtio-devices, which Phyllome OS favors, is still lacking in ReactOS. Performance of the display won't be optimal, resulting in screen tearing. More information can be found [here](/virt/guest/reactos).
|
Support for the more modern PCI-Express-enabled Q35 chipset, UEFI or other virtio-devices, which Phyllome OS favors, is still lacking in ReactOS. Performance of the display won't be optimal, resulting in screen tearing. More information can be found [here](/virt/guest/reactos).
|
||||||
{.is-warning}
|
{.is-warning}
|
||||||
|
|
||||||
|
| **Hardware** | ReactOS 4.13 | ReactOS 4.14 |
|
||||||
|
| :- | :-: | :-: |
|
||||||
|
| *[Chipset](/virt/vm/chipset)* | i440fx | i440fx |
|
||||||
|
| *Firmware* | SeaBIOS [^1] | SeaBIOS |
|
||||||
|
| *virtio-gpu* | No | No |
|
||||||
|
| *virtio-video* | No | No |
|
||||||
|
| *virtio-snd* | No | No |
|
||||||
|
| *virtio-blk* | No | No |
|
||||||
|
| *virtio-scsi* | No | No |
|
||||||
|
| *virtio-fs* | No | No |
|
||||||
|
| *virtio-net* | No | **Yes** [^2] |
|
||||||
|
| *virtio-keyboard* | No | No |
|
||||||
|
| *virtio-tablet* | No | No |
|
||||||
|
|
||||||
|
|
||||||
|
> Porting new paravirtual devices to ReactOS would significantly improve the experience of running ReactOS inside Phyllome OS, and other virtualization solutions leveraging [paravirtual hardware](https://wiki.phyllo.me/e/en/virt/virtio). See [here](https://reactos.org/contributing/) on how you can contribute to ReactOS
|
||||||
|
{.is-info}
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
> ReactOS is currently in **Alpha stage** and not production ready.
|
> ReactOS is currently in **Alpha stage** and not production ready.
|
||||||
@ -191,6 +210,17 @@ mv reactos-bootcd-0.4.15-dev-3628-ga6bf77e-x86-gcc-lin-dbg /var/lib/libvirt/imag
|
|||||||
> Congratulations, you have successfully installed ReactOS!
|
> Congratulations, you have successfully installed ReactOS!
|
||||||
{.is-success}
|
{.is-success}
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
* [Official resource](https://reactos.org/wiki/QEMU) on running ReactOS with QEMU
|
||||||
|
* [Hardware support list](https://reactos.org/wiki/Supported_Hardware) for ReactOS
|
||||||
|
* [Git repository](https://github.com/hectorm/docker-qemu-reactos) providing a Docker image for the ReactOS operating system
|
||||||
|
* [Current effort](https://github.com/QubesOS/qubes-issues/issues/2809) to integrate ReactOS and QubesOS
|
||||||
|
* [GSoC 2018 project idea](https://reactos.org/wiki/Google_Summer_of_Code_2018_Ideas#Paravirtualization_Support) to port more paravirtualized devices to ReactOS
|
||||||
|
|
||||||
|
[^1]: Support for [UEFI](https://reactos.org/wiki/UEFI), and potentially OVMF, is under-way.
|
||||||
|
[^2]: See [here](https://doxygen.reactos.org/d1/dc8/virtio__types_8h.html#a5a27dcd221caab788e973f6964d84aa9) for the source code reference for `virtio-net`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
* *Are you ready to try out other operating systems or learn how to execute certain tasks? If so, please follow [the link](https://wiki.phyllo.me/e/en/gofurther/)*
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
25
gofurther.md
25
gofurther.md
@ -1,25 +0,0 @@
|
|||||||
---
|
|
||||||
title: Tasks
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2023-05-14T19:48:00.758Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2021-11-13T11:40:46.114Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# Go further
|
|
||||||
|
|
||||||
*The section is meant to introduce how to execute particular tasks on Phyllome OS.*
|
|
||||||
|
|
||||||
* [Perform a few checks](/gofurther/checks) on Phyllome OS
|
|
||||||
* [Resize](/gofurther/resize) an existing virtual disk
|
|
||||||
* [Encrypt](/gofurther/encrypt) a directory containing virtual disk images
|
|
||||||
* [Share a directory](/gofurther/virtiofs) with a guest using `virtiofs`
|
|
||||||
* [Share an input device](/gofurther/evdev) with a guest using `evdev`
|
|
||||||
* [Configure](/gofurther/vfio-mdev) `vfio-mdev`
|
|
||||||
* [Hack](/gofurther/hack) and develop Phyllome OS
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*[**Go back to homepage**](/)*
|
|
@ -1,130 +0,0 @@
|
|||||||
---
|
|
||||||
title: Performs a few checks on Phyllome OS
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-01-28T08:45:03.356Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2021-11-13T11:39:13.790Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# Checkup
|
|
||||||
|
|
||||||
Before creating your first virtual machine, it is a good idea to check if everything is correctly set up.
|
|
||||||
|
|
||||||
## Perform a global checkup
|
|
||||||
|
|
||||||
The command-line tool `virt-host-validate` allows you to check whether virtualization features are activated or not.
|
|
||||||
|
|
||||||
* Use the following command to check your system:
|
|
||||||
```
|
|
||||||
virt-host-validate
|
|
||||||
```
|
|
||||||
|
|
||||||
* Make sure the result look like this:
|
|
||||||
|
|
||||||
```
|
|
||||||
[groot@phyllome ~]$ virt-host-validate
|
|
||||||
QEMU: Checking for hardware virtualization : PASS
|
|
||||||
QEMU: Checking if device /dev/kvm exists : PASS
|
|
||||||
QEMU: Checking if device /dev/kvm is accessible : PASS
|
|
||||||
QEMU: Checking if device /dev/vhost-net exists : PASS
|
|
||||||
QEMU: Checking if device /dev/net/tun exists : PASS
|
|
||||||
QEMU: Checking for cgroup 'cpu' controller support : PASS
|
|
||||||
QEMU: Checking for cgroup 'cpuacct' controller support : PASS
|
|
||||||
QEMU: Checking for cgroup 'cpuset' controller support : PASS
|
|
||||||
QEMU: Checking for cgroup 'memory' controller support : PASS
|
|
||||||
QEMU: Checking for cgroup 'devices' controller support : WARN[^1] (Enable 'devices' in kernel Kconfig file or mount/enable cgroup controller in your system)
|
|
||||||
QEMU: Checking for cgroup 'blkio' controller support : PASS
|
|
||||||
QEMU: Checking for device assignment IOMMU support : PASS
|
|
||||||
QEMU: Checking if IOMMU is enabled by kernel : PASS
|
|
||||||
```
|
|
||||||
|
|
||||||
[^1]: The warning message for *cgroup devices* can be disregarded, as it won't show up if the `virt-host-validate` command is executed as *root*. [Related discussion](https://gitlab.com/libvirt/libvirt/-/issues/94).
|
|
||||||
|
|
||||||
> *If `/dev/kvm` is not found, please ensure that your hardware [is indeed compatible](/deploy/prepare#meet-the-requirements) and that hardware-assisted virtualization [has been activated](/deploy/prepare#enable-hardware-assisted-virtualization) in the BIOS/EFI.*
|
|
||||||
{.is-info}
|
|
||||||
|
|
||||||
|
|
||||||
## Specific checkup
|
|
||||||
|
|
||||||
### Hardware-assisted virtualization (1st gen)
|
|
||||||
|
|
||||||
* For Intel CPUs, you can use the following more specific command to check whether *hardware virtualization* is activated:
|
|
||||||
|
|
||||||
```
|
|
||||||
cat /proc/cpuinfo | grep vmx
|
|
||||||
```
|
|
||||||
|
|
||||||
* For AMD CPUs, the following command can be used:
|
|
||||||
```
|
|
||||||
cat /proc/cpuinfo | grep svm
|
|
||||||
```
|
|
||||||
|
|
||||||
* Look for `svm` for AMD-based processors, or `vmx` for Intel-based processors.
|
|
||||||
|
|
||||||
```
|
|
||||||
[groot@phyllome ~]$ cat /proc/cpuinfo | grep svm
|
|
||||||
flags : fpu vme de [...] svm [...] sme sev sev_es
|
|
||||||
```
|
|
||||||
|
|
||||||
### Hardware-assisted virtualization (2st gen, IOMMU-based)
|
|
||||||
|
|
||||||
Your computer may be compatible with advanced hardware virtualization features (*AMD Vi* or Intel *VT-d*).
|
|
||||||
|
|
||||||
* Check the presence of IOMMU-based hardware-assisted virtualization using the following command [^2]:
|
|
||||||
|
|
||||||
[^2]: Courtesy of the [Archlinux wiki](https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF#Enabling_IOMMU).
|
|
||||||
|
|
||||||
```
|
|
||||||
dmesg | grep -i -e DMAR -e IOMMU
|
|
||||||
```
|
|
||||||
* Make sure the result looks like this:
|
|
||||||
```
|
|
||||||
[ 0.600228] iommu: Default domain type: Translated
|
|
||||||
[ 0.624416] pci 0000:00:00.2: AMD-Vi: IOMMU performance counters supported
|
|
||||||
[ 0.624444] pci 0000:00:01.0: Adding to iommu group 0
|
|
||||||
[...]
|
|
||||||
[ 0.624690] pci 0000:0b:00.4: Adding to iommu group 15
|
|
||||||
[ 0.627236] pci 0000:00:00.2: AMD-Vi: Found IOMMU cap 0x40
|
|
||||||
[ 0.627987] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks, 4 counters/bank).
|
|
||||||
```
|
|
||||||
* You may also want to learn how well isolated your devices are. To do so, copy and paste the following script[^1] in your terminal:
|
|
||||||
|
|
||||||
```
|
|
||||||
for g in `find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V`; do
|
|
||||||
echo "IOMMU Group ${g##*/}:"
|
|
||||||
for d in $g/devices/*; do
|
|
||||||
echo -e "\t$(lspci -nns ${d##*/})"
|
|
||||||
done;
|
|
||||||
done;
|
|
||||||
```
|
|
||||||
|
|
||||||
[^1]: Courtesy of the [Archlinux wiki](https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF#Ensuring_that_the_groups_are_valid)
|
|
||||||
|
|
||||||
* In the following case, devices are rather poorly isolated. The use of the ACS override patch may be warranted (more on that later...).
|
|
||||||
|
|
||||||
```
|
|
||||||
IOMMU Group 0:
|
|
||||||
[...]
|
|
||||||
01:00.0 Non-Volatile memory controller [0108]: Intel Corporation SSD 660P Series [8086:f1a8] (rev 03)
|
|
||||||
02:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Device [1022:43ee]
|
|
||||||
02:00.1 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] Device [1022:43eb]
|
|
||||||
[...]
|
|
||||||
04:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM107 [GeForce GTX 750] [10de:1381] (rev a2)
|
|
||||||
04:00.1 Audio device [0403]: NVIDIA Corporation GM107 High Definition Audio Controller [GeForce 940MX] [10de:0fbc] (rev a1)
|
|
||||||
07:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller [10ec:8125] (rev 05)
|
|
||||||
IOMMU Group 1:
|
|
||||||
[...]
|
|
||||||
09:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM204 [GeForce GTX 970] [10de:13c2] (rev a1)
|
|
||||||
09:00.1 Audio device [0403]: NVIDIA Corporation GM204 High Definition Audio Controller [10de:0fbb] (rev a1)
|
|
||||||
[...]
|
|
||||||
IOMMU Group 14:
|
|
||||||
0b:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller [1022:149c]
|
|
||||||
IOMMU Group 15:
|
|
||||||
0b:00.4 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse HD Audio Controller [1022:1487]
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*[**Go to parent page**](/gofurther/)*
|
|
@ -407,4 +407,4 @@ Then reboot.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*[**Go to parent page**](/gofurther/)*
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -62,3 +62,6 @@ cat /dev/input/by-id/usb-Logitech_G513_RGB_MECHANICAL_GAMING_KEYBOARD_1569307831
|
|||||||
|
|
||||||
* https://libvirt.org/formatdomain.html#input-devices
|
* https://libvirt.org/formatdomain.html#input-devices
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -14,4 +14,4 @@ Current instructions on how to develop Phyllome OS and modify the system can be
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
***[Go to parent page](/gofurther)***
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -1,12 +0,0 @@
|
|||||||
---
|
|
||||||
title: Migrate an existing guest to a new host
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2021-11-13T11:42:58.575Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2021-11-13T11:42:58.575Z
|
|
||||||
---
|
|
||||||
|
|
||||||
> Section under construction
|
|
||||||
{.is-warning}
|
|
@ -94,4 +94,4 @@ On Fedora-related distributions, `virt-resize` is provided by the `guestfs-tools
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*[**Go to parent page**](/gofurther/)*
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -19,6 +19,21 @@ Then, these vGPUs can be assigned to virtual machines or containers.
|
|||||||
|
|
||||||
Contrary to paravirtualized GPUs (e.g. *virtio-gpu*), vGPUs can use the same driver as their parent GPU (e.g. a guest compatible with an Intel GPUs will be able to leverage an Intel-based vGPUs)
|
Contrary to paravirtualized GPUs (e.g. *virtio-gpu*), vGPUs can use the same driver as their parent GPU (e.g. a guest compatible with an Intel GPUs will be able to leverage an Intel-based vGPUs)
|
||||||
|
|
||||||
|
## Modify the system allocated to the GPU in the BIOS/UEFI
|
||||||
|
|
||||||
|
> Some computers allow you to modify the system memory allocated or shared with the integrated GPU, which may allow you to create more vGPUs.
|
||||||
|
{.is-info}
|
||||||
|
|
||||||
|
> For Intel integrated graphics cards only; rarely available on laptops computers.
|
||||||
|
{.is-warning}
|
||||||
|
|
||||||
|
* Before the host operating system boots up, you need to enter the BIOS/UEFI and to look for a setting called *GPU aperture size*, or *GPU shared memory*.
|
||||||
|
|
||||||
|
* Use the highest possible value.
|
||||||
|
|
||||||
|
> System memory will be reserved for the GPU, so make sure you have enough system memory to accomodate both the GPU and your operating system.
|
||||||
|
{.is-warning}
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
* Make sure the GRUB has been updated after [the first boot](https://wiki.phyllo.me/getstarted/disk#update-grub-and-reboot)
|
* Make sure the GRUB has been updated after [the first boot](https://wiki.phyllo.me/getstarted/disk#update-grub-and-reboot)
|
||||||
@ -165,3 +180,7 @@ Some computers allow you to modify the memory allocated or shared with the integ
|
|||||||
* Official page for vfio-mdev: https://www.kernel.org/doc/html/latest/driver-api/vfio-mediated-device.html
|
* Official page for vfio-mdev: https://www.kernel.org/doc/html/latest/driver-api/vfio-mediated-device.html
|
||||||
* Archlinux's *must-read entry* on Intel GVT-g: https://wiki.archlinux.org/title/Intel_GVT-g
|
* Archlinux's *must-read entry* on Intel GVT-g: https://wiki.archlinux.org/title/Intel_GVT-g
|
||||||
* DMA-BUF Linux documentation: https://www.kernel.org/doc/html/latest/driver-api/dma-buf.html
|
* DMA-BUF Linux documentation: https://www.kernel.org/doc/html/latest/driver-api/dma-buf.html
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -197,7 +197,6 @@ virt-install \
|
|||||||
--location=/tmp/Fedora-Everything-netinst-x86_64-35-1.2.iso \
|
--location=/tmp/Fedora-Everything-netinst-x86_64-35-1.2.iso \
|
||||||
--initrd-inject virtual-desktop-cdrom.cfg --extra-args "inst.ks=file:/virtual-phyllome-desktop-cdrom.cfg"
|
--initrd-inject virtual-desktop-cdrom.cfg --extra-args "inst.ks=file:/virtual-phyllome-desktop-cdrom.cfg"
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
***[Go to parent page](/gofurther)***
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -1,21 +0,0 @@
|
|||||||
---
|
|
||||||
title: The Virtual Machine Manager
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2021-11-13T17:33:45.018Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2021-11-13T11:40:06.083Z
|
|
||||||
---
|
|
||||||
|
|
||||||
> Section under construction
|
|
||||||
{.is-warning}
|
|
||||||
|
|
||||||
# Configure the Virtual Machine Manager
|
|
||||||
|
|
||||||
## Forewords
|
|
||||||
|
|
||||||
## Automatically
|
|
||||||
|
|
||||||
## Manually
|
|
||||||
|
|
@ -83,3 +83,6 @@ share /mnt/ virtiofs rw,noatime,_netdev 0 0
|
|||||||
* In the context of a Windows guest: https://github.com/virtio-win/kvm-guest-drivers-windows/wiki/VirtIO-FS:-Shared-file-system
|
* In the context of a Windows guest: https://github.com/virtio-win/kvm-guest-drivers-windows/wiki/VirtIO-FS:-Shared-file-system
|
||||||
* https://wiki.archlinux.org/title/Libvirt#Sharing_data_between_host_and_guest
|
* https://wiki.archlinux.org/title/Libvirt#Sharing_data_between_host_and_guest
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -1,12 +0,0 @@
|
|||||||
---
|
|
||||||
title: Windows
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2021-11-13T11:52:19.245Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2021-11-13T11:52:19.245Z
|
|
||||||
---
|
|
||||||
|
|
||||||
> Section under construction
|
|
||||||
{.is-warning}
|
|
119
home.md
119
home.md
@ -10,84 +10,101 @@ dateCreated: 2021-06-19T09:29:20.593Z
|
|||||||
|
|
||||||
# The Phyllome OS wiki
|
# The Phyllome OS wiki
|
||||||
|
|
||||||
*Phyllome[^1] OS is an operating system that makes it easier to run [various operating systems](/gofurther) locally using [off-the-shelf hardware](/deploy/prepare) and [virtualization](/virt/lexicon#virtualization) technologies.*
|
*Phyllome[^1] OS is an operating system that makes it easier to run [various operating systems](#go-further) locally using [off-the-shelf hardware](/deploy/prepare) and [virtualization](/virt/lexicon#virtualization) technologies.*
|
||||||
|
|
||||||
In this wiki, you will find guides about [how to install](/deploy/install), [use](/getstarted/disk) and [hack](/gofurther/hack) Phyllome OS. You will also find more generic information on the [underlying technologies](/virt), Phyllome OS [itself](/phyllomeos) and the surrounding [project](/project).
|
In this wiki, you will find guides about [how to install](#install) and [use](#get-started) Phyllome OS, as well as information on the [underlying technologies](#references), Phyllome OS [itself](#about-phyllome-os) and the surrounding [project](#about-the-project).
|
||||||
|
|
||||||
[^1]: According to [the Wiktionary](https://en.wiktionary.org/wiki/phyllome), Phyllome refers to the "foliar part of a plant; any organ homologous with a leaf, or [any organ] produced by metamorphosis of a leaf"
|
[^1]: According to [the Wiktionary](https://en.wiktionary.org/wiki/phyllome), Phyllome refers to the "foliar part of a plant; any organ homologous with a leaf, or [any organ] produced by metamorphosis of a leaf"
|
||||||
|
|
||||||
> If you would rather avoid JavaScript altogether, or wish to download the content of this wiki locally, feel free to clone [this repository](https://github.com/PhyllomeOS/wiki).
|
> If you wish to download the content of this wiki locally, feel free to clone [this repository](https://github.com/PhyllomeOS/wiki).
|
||||||
{.is-info}
|
{.is-info}
|
||||||
|
|
||||||
## Install Phyllome OS
|
## Install
|
||||||
|
|
||||||
*[This section](/deploy) illustrates how to install Phyllome OS on a computer*
|
*How to install Phyllome OS*
|
||||||
|
|
||||||
* [Is Phyllome OS right for you?](/deploy/rightforyou)
|
- [Is Phyllome OS right for you?](/deploy/rightforyou)
|
||||||
* [Prepare your computer](/deploy/prepare)
|
- [Prepare your computer](/deploy/prepare)
|
||||||
* [Create an installation medium](/deploy/medium)
|
- [Create an installation medium](/deploy/medium)
|
||||||
* [Install from the installation medium](/deploy/install) (*default method*)
|
- [Install from a USB flash drive](/deploy/install) *(recommended method)*
|
||||||
* [Post-installation configuration](/deploy/post-installation)
|
- [Deployment in a virtual machine](/deploy/vm)
|
||||||
|
|
||||||
* ...and [**more**](https://wiki.phyllo.me/en/deploy)
|
## Get started
|
||||||
|
|
||||||
## Deploy guests in Phyllome OS
|
*How to deploy common operating systems inside Phyllome OS*
|
||||||
|
|
||||||
*[This section](/getstarted) describes how to deploy common operating systems within Phyllome OS*
|
### Unix-like
|
||||||
|
|
||||||
|
- [Install](/gofurther/install-guest) a Linux guest system using an ISO file
|
||||||
|
- [Automatically deploy](/gofurther/virt-install) an RPM-based guest system with `virt-install` and a kickstart file
|
||||||
|
|
||||||
* **Unix-like**
|
### Windows NT
|
||||||
* [Install](/gofurther/install-guest) a Linux guest system over the internet
|
|
||||||
* [Automatically deploy](/gofurther/virt-install) an RPM-based guest system with `virt-install` and a kickstart file
|
|
||||||
|
|
||||||
* **Windows NT**
|
- [Install ReactOS](/gofurther/reactos)
|
||||||
* [Install React OS](/gofurther/reactos)
|
|
||||||
* [Install Windows 11 (*to be created*)](/gofurther/windows11)
|
|
||||||
|
|
||||||
* **Darwin-based**
|
|
||||||
* [Install macOS (*to be created*)](/gofurther/macos)
|
|
||||||
|
|
||||||
* ...and [**more**](https://wiki.phyllo.me/en/getstarted#guest-operating-system-installations)
|
|
||||||
|
|
||||||
## Go further
|
## Go further
|
||||||
|
|
||||||
*[This section](/gofurther#tasks_related_to_phyllome_os) illustrates specific tasks related to Phyllome OS.*
|
*Go further with Phyllome OS*
|
||||||
|
|
||||||
* [Use Phyllome as a live system](/getstarted/live) (*to test it*)
|
- [Use Phyllome OS as a live system](/gofurther/live) (*to test it*)
|
||||||
* [Perform a few checks](/gofurther/checks) on Phyllome OS
|
- [Perform a few checks](/gofurther/checks) on Phyllome OS
|
||||||
* [Resize an existing disk](/gofurther/resize)
|
- [Resize](/gofurther/resize) an existing virtual disk
|
||||||
* ...and [**more**](/gofurther)
|
- [Encrypt](/gofurther/encrypt) a directory containing virtual disk images
|
||||||
|
- [Share a directory](/gofurther/virtiofs) with a guest using `virtiofs`
|
||||||
|
- [Share an input device](/gofurther/evdev) with a guest using `evdev`
|
||||||
|
- [Configure](/gofurther/vfio-mdev) `vfio-mdev`
|
||||||
|
|
||||||
## References
|
## References
|
||||||
|
|
||||||
*[This section](/virt) provides information about technologies used by Phyllome OS.*
|
*Information about technologies used by Phyllome OS*
|
||||||
|
|
||||||
* [Guest support](/virt/guest)
|
- [A very short history](/virt/history) of virtualization
|
||||||
* [Linux Kernel modules](/virt/host/modules) related to virtualization
|
- [Lexicon](/virt/lexicon)
|
||||||
* [Paravirtualized hardware](/virt/vm/virtio) (`virtio`)
|
- [Related projects](/virt/projects)
|
||||||
* [Lexicon](/virt/lexicon)
|
- [External resources](/virt/resources)
|
||||||
* ...and [**more**](/virt)
|
|
||||||
|
### Guest operating systems
|
||||||
|
|
||||||
|
- [Running guest operating systems with KVM](/virt/guest.md)
|
||||||
|
|
||||||
|
### The host operating system
|
||||||
|
|
||||||
|
- [Linux Kernel modules](/virt/host/modules) related to virtualization
|
||||||
|
- [Virtualization-related paths](/virt/host/paths) on Phyllome OS
|
||||||
|
- [A libvirt XML](/virt/host/xml) commented
|
||||||
|
- [Virtual I/O Devices](/virt/vm/virtio) (`virtio`)
|
||||||
|
|
||||||
|
### (Virtual) hardware
|
||||||
|
|
||||||
|
- [Chipset](/virt/vm/chipset)
|
||||||
|
- [Firmware](/virt/vm/firmware)
|
||||||
|
- [Display](/virt/vm/display)
|
||||||
|
- [Input](/virt/vm/input)
|
||||||
|
- [Graphic cards](/virt/vm/graphic-card)
|
||||||
|
|
||||||
## About Phyllome OS
|
## About Phyllome OS
|
||||||
|
|
||||||
*[This section](/phyllomeos) describes the context around Phyllome OS and its design*.
|
- [Context](/phyllomeos/context)
|
||||||
|
- [Purpose](/phyllomeos/purpose)
|
||||||
|
- [Limitations and advantages](/phyllomeos/cons-and-pros)
|
||||||
|
- [Comparaison](/phyllomeos/comparaison)
|
||||||
|
- [Use cases](/phyllomeos/use-cases)
|
||||||
|
- [Design](/phyllomeos/design)
|
||||||
|
- [Features](/phyllomeos/features)
|
||||||
|
- [Software bill of materials](/phyllomeos/sbom)
|
||||||
|
- [Security](/phyllomeos/security)
|
||||||
|
- [FAQ](/phyllomeos/faq)
|
||||||
|
|
||||||
* [Context](/phyllomeos/context)
|
## About the project
|
||||||
* [Purpose](/phyllomeos/purpose)
|
|
||||||
* [Use cases](/phyllomeos/use-cases)
|
|
||||||
* ...and [**more**](https://wiki.phyllo.me/en/phyllomeos)
|
|
||||||
|
|
||||||
### About the project
|
- [How to contribute](/project/contribute)
|
||||||
|
- [How to join](/project/join)
|
||||||
*[This section](/project) describes the project around Phyllome OS*.
|
- [Current infrastructure](/project/infrastructure)
|
||||||
|
|
||||||
* [How to contribute](/project/contribute)
|
|
||||||
* [How to join](/project/join)
|
|
||||||
* [Current infrastructure](/project/infrastructure)
|
|
||||||
|
|
||||||
### Public presence
|
### Public presence
|
||||||
|
|
||||||
* **The website**: https://phyllo.me
|
- **The website**: https://phyllo.me
|
||||||
* **This wiki**: https://wiki.phyllo.me
|
- **This wiki**: https://wiki.phyllo.me
|
||||||
* **The issue board**: [https://kanboard.phyllo.me](https://kanboard.phyllo.me/b/CH7qd98J2v7egmodk/development)
|
- **The issue board**: [https://kanboard.phyllo.me](https://kanboard.phyllo.me/b/CH7qd98J2v7egmodk/development)
|
||||||
* **GitHub's repositories**: https://github.com/PhyllomeOS
|
- **GitHub's repositories**: https://github.com/PhyllomeOS
|
||||||
|
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
title: Phyllome OS
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-01-31T12:35:44.312Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2021-11-12T15:32:17.900Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# Phyllome OS
|
|
||||||
|
|
||||||
*In this section, the context around Phyllome OS is explained and its internals are described*
|
|
||||||
|
|
||||||
* [Context](/phyllomeos/context)
|
|
||||||
* [Purpose](/phyllomeos/purpose)
|
|
||||||
* [Limitations and advantages](/phyllomeos/cons-and-pros)
|
|
||||||
* [Comparaison](/phyllomeos/comparaison)
|
|
||||||
* [Use cases](/phyllomeos/use-cases)
|
|
||||||
* [Design](/phyllomeos/design)
|
|
||||||
* [Features](/phyllomeos/features)
|
|
||||||
* [Software bill of materials](/phyllomeos/sbom)
|
|
||||||
* [Security](/phyllomeos/security)
|
|
||||||
* [FAQ](/phyllomeos/faq)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*[**Go back to homepage**](/)*
|
|
@ -1,30 +0,0 @@
|
|||||||
---
|
|
||||||
title: Commandments
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-01-18T10:06:40.710Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2022-01-18T10:06:40.709Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# Commandments
|
|
||||||
|
|
||||||
Phyllome OS tries to stick to three generic rules or commandments, which can be summed up as follows : Phyllome OS should stay out of users’ way and allow them to run their current operating system well.
|
|
||||||
|
|
||||||
* **Stay out of my way**
|
|
||||||
* Users shouldn’t have to spend much time managing Phyllome OS.
|
|
||||||
|
|
||||||
* **Run my current operating system**[^1]
|
|
||||||
* Phyllome OS is designed to be the coziest home for a user’s favorite operating system36, not a replacement for it. Users should be able to continue to use their preferred operating system.
|
|
||||||
|
|
||||||
[^1]: Such compatible guests include Linux, Windows NT and Darwin-based OS.
|
|
||||||
|
|
||||||
* **Run it well**
|
|
||||||
* Most users will only want to run one, or at most a handful of, virtual machines concurrently [^2], just as most users only use one machine at a time. Phyllome OS should attempt to maximize the performance of the virtual machine it hosts, with the goal of matching its physical counterpart.
|
|
||||||
|
|
||||||
[^2]: Of course, power-users will be able to run as many systems as their hardware allows.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*[**Go to parent page**](/phyllomeos)*
|
|
@ -1,59 +0,0 @@
|
|||||||
---
|
|
||||||
title: Comparaison
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-01-20T11:16:31.940Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2022-01-07T10:39:15.878Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# Comparaison
|
|
||||||
|
|
||||||
Phyllome OS draws inspiration from numerous other projects, including desktop-oriented systems such as [Qubes OS](https://www.qubes-os.org/), [Tails](https://tails.boum.org/), and [Fedora Silverblue](https://silverblue.fedoraproject.org/), as well as others specialized in running container workloads, such as [Fedora CoreOS](https://silverblue.fedoraproject.org/) and [RancherOS](https://rancher.com/).
|
|
||||||
|
|
||||||
When it comes to virtualization-friendly, open-source, desktop-oriented operating systems, two projects stand out: Qubes OS and [Spectrum](https://spectrum-os.org/). How do they compare to Phyllome OS?
|
|
||||||
|
|
||||||
## Qubes OS
|
|
||||||
|
|
||||||
Like Phyllome OS, Qubes OS is based on Fedora but relies on Xen, the other popular open-source hypervisor for Linux.
|
|
||||||
|
|
||||||
Xen strongly isolates components of the hardware stack, including the USB and network controllers. By design, it works in parallel rather than alongside Linux, as KVM does. KVM’s more tight integration with the Linux Kernel can be considered an advantage or a disadvantage.
|
|
||||||
|
|
||||||
Out of security concerns, Qubes OS does not yet support 3D-accelerated virtual machines, even though its parent project Xen does support this functionality. Phyllome OS intends to support 3D acceleration inside virtual machines, even if it means increasing the attack surface.
|
|
||||||
|
|
||||||
## Spectrum
|
|
||||||
|
|
||||||
Just as with Qubes OS, Spectrum’s main focus is secure computing. Spectrum uses Nix, a declarative packet manager. It is built atop crosvm and thus doesn’t rely on QEMU, largely reducing the attack surface. Through a re-implementation of the virtio-wayland device, which is used in Chrome OS to securely run Linux apps alongside the main OS, Spectrum will eventually allow its guests’ virtual machines to have a GPU capable of efficiently accelerating 3D applications.
|
|
||||||
|
|
||||||
By design, Spectrum won't support operating systems that don't rely on the Wayland protocol.
|
|
||||||
|
|
||||||
| | Qubes OS | Spectrum | Phyllome OS 1.0 |
|
|
||||||
| :- | :-: | :-: | :-: |
|
|
||||||
| *Emulator* | QEMU[^1] | crosvm | Cloud Hypervisor |
|
|
||||||
| *Hypervisor* | Xen | KVM | KVM |
|
|
||||||
| *Virtual chipset* | i440fx? / Q35? | ? | virt |
|
|
||||||
| *Default filesystem* | Ext4? | Ext4? | F2F2 |
|
|
||||||
| *Non-Linux guests support* | Yes | No | Yes |
|
|
||||||
| *Based on* | Fedora | Chromium OS? | Fedora CoreOS |
|
|
||||||
| *Desktop Environment* | Xfce | Aura? | GNOME Shell/Headless|
|
|
||||||
| *Package management* | RPM | Nix | RPM-ostree |
|
|
||||||
| *Rolling release* | No | Yes? | Yes |
|
|
||||||
| *Live edition* | No | No | Yes |
|
|
||||||
| *OS as the center of the UX* | Yes | Yes | No |
|
|
||||||
| *Portability of VMs* | No | No | Yes |
|
|
||||||
| *Security-focused* | yes | yes | no |
|
|
||||||
| *Encryption* | [dm-crypt](https://www.kernel.org/doc/html/latest/admin-guide/device-mapper/dm-crypt.html) | [dm-crypt](https://www.kernel.org/doc/html/latest/admin-guide/device-mapper/dm-crypt.html) | [fscrypt](https://www.kernel.org/doc/html/v4.18/filesystems/fscrypt.html) |
|
|
||||||
|
|
||||||
|
|
||||||
[^1]: Since 2017, Xen, upon which Qubes OS relies, is also exploring the possibility to [avoid using QEMU](https://wiki.xenproject.org/wiki/Xen_Project_Software_Overview#Guest_Types) for guests using hardware-assisted virtualization. See the diagram on the “Guest Types” section:“Xen Project Software Official Overview.”.
|
|
||||||
|
|
||||||
From a design perspective, Qubes OS and Spectrum are end-to-end operating systems, whereas Phyllome OS is only a wrapper around the user’s preferred operating system. Thanks to nested-virtualization, it could even be used to host those operating systems, but in this configuration, the attack surface would be significantly increased, and the performance would take a significant hit, especially for nested guests.
|
|
||||||
|
|
||||||
In Phyllome OS, the main computing activity will happen inside the user’s virtual machine. In QubesOS, Dom0 (“domain zero”) is at the center of the user’s experience.
|
|
||||||
|
|
||||||
In summary, despite some shared characteristics, Phyllome OS is not meant to be a replacement for Qubes OS or Spectrum, but could become a test bed for these operating systems.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*[**Go to parent page**](/phyllomeos/)*
|
|
@ -1,50 +0,0 @@
|
|||||||
---
|
|
||||||
title: Limitations and advantages
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-01-17T15:33:39.501Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2022-01-07T10:28:18.542Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# Limitations and advantages
|
|
||||||
|
|
||||||
There are multiple reasons one would want to rely on virtual machines extensively, or even exclusively, an approach championed by Phyllome OS. Let's list some significant advantages of this approach, but also cover severe limitations.
|
|
||||||
|
|
||||||
### Advantages
|
|
||||||
|
|
||||||
A software-based/backed computer, or simply a virtual machine, has many advantages over a silicon-based computer:
|
|
||||||
|
|
||||||
* **Cost**: the cost of creating a virtual machine tends to zero. Virtual machines are made of computer code, and it is basically free to copy or to duplicate them.
|
|
||||||
* **Flexibility**: a software-backed computer, alongside its operating system, can be migrated to new physical hosts. In other words, when a user acquires a new physical computer, the entire computing environment may be copy/pasted to the new machine.
|
|
||||||
* **Compatibility**: contrary to silicon-based computers, which tend to be optimized to work at most with only a handful operating systems, a virtual machine can be designed to work with most operating systems.
|
|
||||||
* **Support**: Adding a layer of abstraction between the operating system and the virtualization-friendly hardware allows for support of newer operating systems, beyond what the physical hardware can support. Windows 11 requires a Trusted Platform Module (TPM) to be present. By using a virtual machine alongside a virtual TPM on unsupported hardware, one could still run Windows 11.
|
|
||||||
* **Flexibility**. Due to their software-based nature, virtual machines are extremely flexible, and can for instance emulate features that their physical host may lack (i.e.: a [TPM](https://en.wikipedia.org/wiki/Trusted_Platform_Module); an extra network card).
|
|
||||||
|
|
||||||
### Limitations
|
|
||||||
|
|
||||||
Relying on a virtual machine as its primarily personal environment comes with several limitations in comparison to using an operating system installed on the hardware (aka known as bare-metal computing). Some of these limitations will be tackled or greatly mitigate one day, others might not.
|
|
||||||
|
|
||||||
* **Performance overhead**. Phyllome OS requires resources to run, resources that will not be accessible to guest operating systems.
|
|
||||||
* *Running Phyllome OS, headless, without a desktop environment, might help to mitigate this issue at the price of usability.*
|
|
||||||
* *Further optimizations will be made to reduce the memory footprint of Phyllome OS, such as identifying unnecessary services and stopping them.*
|
|
||||||
|
|
||||||
* **Suboptimal guest performance**. In most cases, running a virtual machine instead of using the physical hardware directly will come with a performance penalty.
|
|
||||||
* *This penalty can be greatly reduced by using some techniques, such as letting the virtual machine access the underlying hardware directly. However, this particular solution is by definition not scalable to multiple virtual machines.*
|
|
||||||
|
|
||||||
* **Limited out-of-the box hardware support**: hardware-assisted virtualization is available on many computers, but rarely activated by default and not always correctly implemented. Users remain at the mercy of good platform firmware and may have to explicitly activate hardware-assisted virtualization in the BIOS/UEFI. Hardware components are often not correctly isolated in IOMMU groups.
|
|
||||||
* Offering first-class support for only a handful of curated computers might provide an answer, at the price of compatibility.
|
|
||||||
* When it comes to IOMMU groups, a workaround might have to be used for models that do not offer well-isolated IOMMU groups, a workaround that has security implications.
|
|
||||||
|
|
||||||
* **Limited features set**. Some operating systems are designed to leverage hardware features that may not be accessible to an operating system installed on a virtual machine, or that would require specific developments to be taken advantage of (i.e: a Bluetooth dongle; a [Near-field communication chip](https://en.wikipedia.org/wiki/Near-field_communication); etc.)
|
|
||||||
|
|
||||||
* **Increased general complexity**. Instead of running just an operating system on top of some physical hardware, any Phyllome OS user would need to manage it as well as their primarily guest operating system. As a result, it might be more difficult to troubleshoot an issue, and it will add a pile of code that the user has to trust.
|
|
||||||
|
|
||||||
* **Decreased general usability**. Any physical device attached to a computer won't automatically be made to a guest virtual machine. For some users, it might be considered a hindrance. Phyllome OS relies on Linux drivers. Not all hardware fully supports Linux well, which may force users to rely on device or controllers passthrough. Finally, the use of Phyllome OS will certainly greatly reduce a laptop's battery-life over running a single system.
|
|
||||||
|
|
||||||
* **Lack of guest systems' integration**. Phyllome OS provides an optimized virtual machine model tuned to host modern operating systems, but, at the exception of some RPM-based guests operating systems including Phyllome OS itself, does not intent to provide automated ways to deploy guest operating systems (at the moment, [Infrastructure as code solutions](https://en.wikipedia.org/wiki/Infrastructure_as_code) or instance initialization software like [cloud-init](https://github.com/canonical/cloud-init) do not seem generic enough to satisfy every modern desktop-based operating systems' idiosyncrasies). In other words, contrary to end-to-end operating systems like [Qubes OS](https://www.qubes-os.org/) or the upcoming [Spectrum](https://spectrum-os.org/), which are offering ready to use templates or/and applications isolated in virtual machines by default, Phyllome OS delegates to end-users the task to install their favorite operating system, while trying to provide the best possible underlying defaults for each operating system. In this regard, its model is closer to [Proxmox](https://www.proxmox.com/en/), which doesn't make assumptions about how a guest operating system will be deployed.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
***[Go to parent page](/phyllomeos)***
|
|
@ -69,6 +69,52 @@ Thanks to the rust-vmm umbrella project, assembling such an operating system is
|
|||||||
|
|
||||||
Phyllome OS intends to tap into some modern software- and hardware-related innovations used in the cloud and make them available to a wider audience locally: to bring some of the cloud back home, so to speak.
|
Phyllome OS intends to tap into some modern software- and hardware-related innovations used in the cloud and make them available to a wider audience locally: to bring some of the cloud back home, so to speak.
|
||||||
|
|
||||||
|
## Comparaison
|
||||||
|
|
||||||
|
Phyllome OS draws inspiration from numerous other projects, including desktop-oriented systems such as [Qubes OS](https://www.qubes-os.org/), [Tails](https://tails.boum.org/), and [Fedora Silverblue](https://silverblue.fedoraproject.org/), as well as others specialized in running container workloads, such as [Fedora CoreOS](https://silverblue.fedoraproject.org/) and [RancherOS](https://rancher.com/).
|
||||||
|
|
||||||
|
When it comes to virtualization-friendly, open-source, desktop-oriented operating systems, two projects stand out: Qubes OS and [Spectrum](https://spectrum-os.org/). How do they compare to Phyllome OS?
|
||||||
|
|
||||||
|
## Qubes OS
|
||||||
|
|
||||||
|
Like Phyllome OS, Qubes OS is based on Fedora but relies on Xen, the other popular open-source hypervisor for Linux.
|
||||||
|
|
||||||
|
Xen strongly isolates components of the hardware stack, including the USB and network controllers. By design, it works in parallel rather than alongside Linux, as KVM does. KVM’s more tight integration with the Linux Kernel can be considered an advantage or a disadvantage.
|
||||||
|
|
||||||
|
Out of security concerns, Qubes OS does not yet support 3D-accelerated virtual machines, even though its parent project Xen does support this functionality. Phyllome OS intends to support 3D acceleration inside virtual machines, even if it means increasing the attack surface.
|
||||||
|
|
||||||
|
## Spectrum
|
||||||
|
|
||||||
|
Just as with Qubes OS, Spectrum’s main focus is secure computing. Spectrum uses Nix, a declarative packet manager. It is built atop crosvm and thus doesn’t rely on QEMU, largely reducing the attack surface. Through a re-implementation of the virtio-wayland device, which is used in Chrome OS to securely run Linux apps alongside the main OS, Spectrum will eventually allow its guests’ virtual machines to have a GPU capable of efficiently accelerating 3D applications.
|
||||||
|
|
||||||
|
By design, Spectrum won't support operating systems that don't rely on the Wayland protocol.
|
||||||
|
|
||||||
|
| | Qubes OS | Spectrum | Phyllome OS 1.0 |
|
||||||
|
| :- | :-: | :-: | :-: |
|
||||||
|
| *Emulator* | QEMU[^1] | crosvm | Cloud Hypervisor |
|
||||||
|
| *Hypervisor* | Xen | KVM | KVM |
|
||||||
|
| *Virtual chipset* | i440fx? / Q35? | ? | virt |
|
||||||
|
| *Default filesystem* | Ext4? | Ext4? | F2F2 |
|
||||||
|
| *Non-Linux guests support* | Yes | No | Yes |
|
||||||
|
| *Based on* | Fedora | Chromium OS? | Fedora CoreOS |
|
||||||
|
| *Desktop Environment* | Xfce | Aura? | GNOME Shell/Headless|
|
||||||
|
| *Package management* | RPM | Nix | RPM-ostree |
|
||||||
|
| *Rolling release* | No | Yes? | Yes |
|
||||||
|
| *Live edition* | No | No | Yes |
|
||||||
|
| *OS as the center of the UX* | Yes | Yes | No |
|
||||||
|
| *Portability of VMs* | No | No | Yes |
|
||||||
|
| *Security-focused* | yes | yes | no |
|
||||||
|
| *Encryption* | [dm-crypt](https://www.kernel.org/doc/html/latest/admin-guide/device-mapper/dm-crypt.html) | [dm-crypt](https://www.kernel.org/doc/html/latest/admin-guide/device-mapper/dm-crypt.html) | [fscrypt](https://www.kernel.org/doc/html/v4.18/filesystems/fscrypt.html) |
|
||||||
|
|
||||||
|
|
||||||
|
[^1]: Since 2017, Xen, upon which Qubes OS relies, is also exploring the possibility to [avoid using QEMU](https://wiki.xenproject.org/wiki/Xen_Project_Software_Overview#Guest_Types) for guests using hardware-assisted virtualization. See the diagram on the “Guest Types” section:“Xen Project Software Official Overview.”.
|
||||||
|
|
||||||
|
From a design perspective, Qubes OS and Spectrum are end-to-end operating systems, whereas Phyllome OS is only a wrapper around the user’s preferred operating system. Thanks to nested-virtualization, it could even be used to host those operating systems, but in this configuration, the attack surface would be significantly increased, and the performance would take a significant hit, especially for nested guests.
|
||||||
|
|
||||||
|
In Phyllome OS, the main computing activity will happen inside the user’s virtual machine. In QubesOS, Dom0 (“domain zero”) is at the center of the user’s experience.
|
||||||
|
|
||||||
|
In summary, despite some shared characteristics, Phyllome OS is not meant to be a replacement for Qubes OS or Spectrum, but could become a test bed for these operating systems.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*[**Go back to parent page**](/phyllomeos)*
|
*[**Go back to parent page**](/phyllomeos)*
|
@ -1,37 +0,0 @@
|
|||||||
---
|
|
||||||
title: Design
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-01-20T11:16:54.755Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2022-01-18T10:28:26.221Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# Design decisions
|
|
||||||
|
|
||||||
* **Provide a user-friendly interface**
|
|
||||||
* The first iteration of Phyllome OS will ship with a stripped-down GNOME-based shell, `libvirt` – a powerful and almost ubiquitous virtualization API – and the virtual machine manager software. Having a full-feature desktop environment will allow users to switch more easily between virtual machines and to fall back to a friendly environment whenever they shut down their virtual machine. A headless version of Phyllome OS will eventually be released.
|
|
||||||
|
|
||||||
* **Just enough applications by default, only the necessary software**
|
|
||||||
* Phyllome OS is meant to be distraction-free, which means that it will only ship with applications required to satisfy its main purpose: run modern virtual machines.
|
|
||||||
|
|
||||||
* **Favor generic virtual hardware, use passthrough at a last resort**
|
|
||||||
* Phyllome OS is about making your personal computing environment less reliant on the hardware you currently use to host it. As a result, it will favor virtual hardware and especially paravirtualized hardware (virtio) over real hardware passthrough. Hardware passthrough is considered an anti-pattern, as it requires users to make sure that the operating system a device is being passthroughed to does actually support the device.
|
|
||||||
|
|
||||||
* **Read-only whenever possible**
|
|
||||||
* Phyllome OS is not made to be heavily modifiable on run-time.
|
|
||||||
* Two Phyllome OS hosts using the same version should barely differ, allowing a user to easily migrate their virtual machines to compatible hosts.
|
|
||||||
|
|
||||||
* **Encrypt virtual disks by default**
|
|
||||||
* Phyllome OS will rely on fscrypt to encrypt virtual disks at rest.
|
|
||||||
|
|
||||||
* **Minimize user generated-data storage**
|
|
||||||
* Phyllome OS should avoid touching user-generated data or storing it. In general, it is not meant as a place for the user to do computing.
|
|
||||||
|
|
||||||
* **Be compatible with proprietary operating systems**
|
|
||||||
* hyllome OS strongly favors virtual machines running free software and will support running Linux systems natively, with the widest number of features and virtual devices. Alas, on the desktop, the vast majority of users still rely on proprietary operating systems. Phyllome OS will do its best to take into account the needs of those users too, and to offer a good experience with virtualization.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*[**Go to parent page**](/phyllomeos/)*
|
|
@ -1,35 +0,0 @@
|
|||||||
---
|
|
||||||
title: Features
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-02-09T19:50:17.396Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2022-01-18T10:44:15.279Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# Roadmap
|
|
||||||
|
|
||||||
Below are the targeted features for the alpha version.
|
|
||||||
|
|
||||||
| | Phyllome OS alpha features |
|
|
||||||
| :- | :-: |
|
|
||||||
| *Nested-virtualization* | Yes |
|
|
||||||
| *Paravirtualization* | Full support on Linux guests |
|
|
||||||
| *IOMMU support* | Yes |
|
|
||||||
| *Migration* | Cold migration only |
|
|
||||||
| *Snapshots* | No |
|
|
||||||
| *Cloning* | Yes |
|
|
||||||
| *Virtual disks format* | RAW only |
|
|
||||||
| *PCI Passthrough* | Yes |
|
|
||||||
| *Sound* | PCI Passthrough |
|
|
||||||
| *Bluetooth* | PCI Passthrough |
|
|
||||||
| *USB* | PCI Passthrough |
|
|
||||||
| *Display modes* | Spice and VNC |
|
|
||||||
| *UEFI* | Yes |
|
|
||||||
| *Secure Boot* | Yes |
|
|
||||||
| *TPM* | Yes |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*[**Go to parent page**](/phyllomeos/)*
|
|
@ -1,12 +0,0 @@
|
|||||||
---
|
|
||||||
title: Guests support matrix
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2021-11-13T11:55:41.102Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2021-11-13T11:55:41.102Z
|
|
||||||
---
|
|
||||||
|
|
||||||
> Section under construction. Sources are missing.
|
|
||||||
{.is-warning}
|
|
@ -36,7 +36,98 @@ The idea behind Phyllome OS is to rely on Linux to provide drivers for specific
|
|||||||
|
|
||||||
Technically speaking, Phyllome OS is an operating system, a free and open source Linux distribution, a Fedora Remix based on Fedora Server designed to leverage hardware-assisted virtualization to run graphically-accelerated UNIX and non-UNIX-based operating systems locally, in a virtual machine, using off-the-shelf hardware and open source software.
|
Technically speaking, Phyllome OS is an operating system, a free and open source Linux distribution, a Fedora Remix based on Fedora Server designed to leverage hardware-assisted virtualization to run graphically-accelerated UNIX and non-UNIX-based operating systems locally, in a virtual machine, using off-the-shelf hardware and open source software.
|
||||||
|
|
||||||
|
## Commandments
|
||||||
|
|
||||||
|
Phyllome OS tries to stick to three generic rules or commandments, which can be summed up as follows : Phyllome OS should stay out of users’ way and allow them to run their current operating system well.
|
||||||
|
|
||||||
|
* **Stay out of my way**
|
||||||
|
* Users shouldn’t have to spend much time managing Phyllome OS.
|
||||||
|
|
||||||
|
* **Run my current operating system**[^1]
|
||||||
|
* Phyllome OS is designed to be the coziest home for a user’s favorite operating system36, not a replacement for it. Users should be able to continue to use their preferred operating system.
|
||||||
|
|
||||||
|
[^1]: Such compatible guests include Linux, Windows NT and Darwin-based OS.
|
||||||
|
|
||||||
|
* **Run it well**
|
||||||
|
* Most users will only want to run one, or at most a handful of, virtual machines concurrently [^2], just as most users only use one machine at a time. Phyllome OS should attempt to maximize the performance of the virtual machine it hosts, with the goal of matching its physical counterpart.
|
||||||
|
|
||||||
|
[^2]: Of course, power-users will be able to run as many systems as their hardware allows.
|
||||||
|
|
||||||
|
# Design decisions
|
||||||
|
|
||||||
|
* **Provide a user-friendly interface**
|
||||||
|
* The first iteration of Phyllome OS will ship with a stripped-down GNOME-based shell, `libvirt` – a powerful and almost ubiquitous virtualization API – and the virtual machine manager software. Having a full-feature desktop environment will allow users to switch more easily between virtual machines and to fall back to a friendly environment whenever they shut down their virtual machine. A headless version of Phyllome OS will eventually be released.
|
||||||
|
|
||||||
|
* **Just enough applications by default, only the necessary software**
|
||||||
|
* Phyllome OS is meant to be distraction-free, which means that it will only ship with applications required to satisfy its main purpose: run modern virtual machines.
|
||||||
|
|
||||||
|
* **Favor generic virtual hardware, use passthrough at a last resort**
|
||||||
|
* Phyllome OS is about making your personal computing environment less reliant on the hardware you currently use to host it. As a result, it will favor virtual hardware and especially paravirtualized hardware (virtio) over real hardware passthrough. Hardware passthrough is considered an anti-pattern, as it requires users to make sure that the operating system a device is being passthroughed to does actually support the device.
|
||||||
|
|
||||||
|
* **Read-only whenever possible**
|
||||||
|
* Phyllome OS is not made to be heavily modifiable on run-time.
|
||||||
|
* Two Phyllome OS hosts using the same version should barely differ, allowing a user to easily migrate their virtual machines to compatible hosts.
|
||||||
|
|
||||||
|
* **Encrypt virtual disks by default**
|
||||||
|
* Phyllome OS will rely on fscrypt to encrypt virtual disks at rest.
|
||||||
|
|
||||||
|
* **Minimize user generated-data storage**
|
||||||
|
* Phyllome OS should avoid touching user-generated data or storing it. In general, it is not meant as a place for the user to do computing.
|
||||||
|
|
||||||
|
* **Be compatible with proprietary operating systems**
|
||||||
|
* hyllome OS strongly favors virtual machines running free software and will support running Linux systems natively, with the widest number of features and virtual devices. Alas, on the desktop, the vast majority of users still rely on proprietary operating systems. Phyllome OS will do its best to take into account the needs of those users too, and to offer a good experience with virtualization.
|
||||||
|
|
||||||
|
## Limitations and advantages
|
||||||
|
|
||||||
|
There are multiple reasons one would want to rely on virtual machines extensively, or even exclusively, an approach championed by Phyllome OS. Let's list some significant advantages of this approach, but also cover severe limitations.
|
||||||
|
|
||||||
|
### Advantages
|
||||||
|
|
||||||
|
A software-based/backed computer, or simply a virtual machine, has many advantages over a silicon-based computer:
|
||||||
|
|
||||||
|
* **Cost**: the cost of creating a virtual machine tends to zero. Virtual machines are made of computer code, and it is basically free to copy or to duplicate them.
|
||||||
|
* **Flexibility**: a software-backed computer, alongside its operating system, can be migrated to new physical hosts. In other words, when a user acquires a new physical computer, the entire computing environment may be copy/pasted to the new machine.
|
||||||
|
* **Compatibility**: contrary to silicon-based computers, which tend to be optimized to work at most with only a handful operating systems, a virtual machine can be designed to work with most operating systems.
|
||||||
|
* **Support**: Adding a layer of abstraction between the operating system and the virtualization-friendly hardware allows for support of newer operating systems, beyond what the physical hardware can support. Windows 11 requires a Trusted Platform Module (TPM) to be present. By using a virtual machine alongside a virtual TPM on unsupported hardware, one could still run Windows 11.
|
||||||
|
* **Flexibility**. Due to their software-based nature, virtual machines are extremely flexible, and can for instance emulate features that their physical host may lack (i.e.: a [TPM](https://en.wikipedia.org/wiki/Trusted_Platform_Module); an extra network card).
|
||||||
|
|
||||||
|
### Limitations
|
||||||
|
|
||||||
|
Relying on a virtual machine as its primarily personal environment comes with several limitations in comparison to using an operating system installed on the hardware (aka known as bare-metal computing). Some of these limitations will be tackled or greatly mitigate one day, others might not.
|
||||||
|
|
||||||
|
* **Performance overhead**. Phyllome OS requires resources to run, resources that will not be accessible to guest operating systems.
|
||||||
|
* *Running Phyllome OS, headless, without a desktop environment, might help to mitigate this issue at the price of usability.*
|
||||||
|
* *Further optimizations will be made to reduce the memory footprint of Phyllome OS, such as identifying unnecessary services and stopping them.*
|
||||||
|
|
||||||
|
* **Suboptimal guest performance**. In most cases, running a virtual machine instead of using the physical hardware directly will come with a performance penalty.
|
||||||
|
* *This penalty can be greatly reduced by using some techniques, such as letting the virtual machine access the underlying hardware directly. However, this particular solution is by definition not scalable to multiple virtual machines.*
|
||||||
|
|
||||||
|
* **Limited out-of-the box hardware support**: hardware-assisted virtualization is available on many computers, but rarely activated by default and not always correctly implemented. Users remain at the mercy of good platform firmware and may have to explicitly activate hardware-assisted virtualization in the BIOS/UEFI. Hardware components are often not correctly isolated in IOMMU groups.
|
||||||
|
* Offering first-class support for only a handful of curated computers might provide an answer, at the price of compatibility.
|
||||||
|
* When it comes to IOMMU groups, a workaround might have to be used for models that do not offer well-isolated IOMMU groups, a workaround that has security implications.
|
||||||
|
|
||||||
|
* **Limited features set**. Some operating systems are designed to leverage hardware features that may not be accessible to an operating system installed on a virtual machine, or that would require specific developments to be taken advantage of (i.e: a Bluetooth dongle; a [Near-field communication chip](https://en.wikipedia.org/wiki/Near-field_communication); etc.)
|
||||||
|
|
||||||
|
* **Increased general complexity**. Instead of running just an operating system on top of some physical hardware, any Phyllome OS user would need to manage it as well as their primarily guest operating system. As a result, it might be more difficult to troubleshoot an issue, and it will add a pile of code that the user has to trust.
|
||||||
|
|
||||||
|
* **Decreased general usability**. Any physical device attached to a computer won't automatically be made to a guest virtual machine. For some users, it might be considered a hindrance. Phyllome OS relies on Linux drivers. Not all hardware fully supports Linux well, which may force users to rely on device or controllers passthrough. Finally, the use of Phyllome OS will certainly greatly reduce a laptop's battery-life over running a single system.
|
||||||
|
|
||||||
|
* **Lack of guest systems' integration**. Phyllome OS provides an optimized virtual machine model tuned to host modern operating systems, but, at the exception of some RPM-based guests operating systems including Phyllome OS itself, does not intent to provide automated ways to deploy guest operating systems (at the moment, [Infrastructure as code solutions](https://en.wikipedia.org/wiki/Infrastructure_as_code) or instance initialization software like [cloud-init](https://github.com/canonical/cloud-init) do not seem generic enough to satisfy every modern desktop-based operating systems' idiosyncrasies). In other words, contrary to end-to-end operating systems like [Qubes OS](https://www.qubes-os.org/) or the upcoming [Spectrum](https://spectrum-os.org/), which are offering ready to use templates or/and applications isolated in virtual machines by default, Phyllome OS delegates to end-users the task to install their favorite operating system, while trying to provide the best possible underlying defaults for each operating system. In this regard, its model is closer to [Proxmox](https://www.proxmox.com/en/), which doesn't make assumptions about how a guest operating system will be deployed.
|
||||||
|
|
||||||
|
## Use cases
|
||||||
|
|
||||||
|
* **Run multiple guest operating systems concurrently**
|
||||||
|
* Plug in two screens, two sets of keyboards, and two mice to the same PC and spawn two machines to do graphic intensive tasks such as gaming or 3D modeling. No need to buy another computer, just split the one you already have.
|
||||||
|
|
||||||
|
* **Painlessly move to new hardware**
|
||||||
|
* When virtualized, your operating system is just a file on Phyllome OS' disk. You can move and restore it on another computer, provided that the targeted host runs Phyllome OS.
|
||||||
|
|
||||||
|
* **Make your current hardware last longer**
|
||||||
|
* Most recent versions of modern operating systems require recent hardware to function, and may not work on otherwise perfectly functioning hardware. By providing modern virtual hardware, Phyllome OS allows users to receive operating system updates, despite the fact that their underlying may not officially be supported.
|
||||||
|
|
||||||
|
* **Go beyond what your physical hardware is capable of**
|
||||||
|
* A virtual display in a virtual machine can be set to a resolution that exceeds what the underling physical display is capable of, and such a virtual display may be accessible remotely, over the network.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*[**Go to parent page**](https://wiki.phyllo.me/phyllomeos)*
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -8,42 +8,45 @@ editor: markdown
|
|||||||
dateCreated: 2021-11-13T11:55:14.298Z
|
dateCreated: 2021-11-13T11:55:14.298Z
|
||||||
---
|
---
|
||||||
|
|
||||||
> Section under construction. Tables is broken. Would have to fix it.
|
Below are the targeted features for the alpha version.
|
||||||
{.is-warning}
|
|
||||||
|
|
||||||
Take this table as an example:
|
| | Phyllome OS alpha features |
|
||||||
|
| :- | :-: |
|
||||||
|
| *Nested-virtualization* | Yes |
|
||||||
|
| *Paravirtualization* | Full support on Linux guests |
|
||||||
|
| *IOMMU support* | Yes |
|
||||||
|
| *Migration* | Cold migration only |
|
||||||
|
| *Snapshots* | No |
|
||||||
|
| *Cloning* | Yes |
|
||||||
|
| *Virtual disks format* | RAW only |
|
||||||
|
| *PCI Passthrough* | Yes |
|
||||||
|
| *Sound* | PCI Passthrough |
|
||||||
|
| *Bluetooth* | PCI Passthrough |
|
||||||
|
| *USB* | PCI Passthrough |
|
||||||
|
| *Display modes* | Spice and VNC |
|
||||||
|
| *UEFI* | Yes |
|
||||||
|
| *Secure Boot* | Yes |
|
||||||
|
| *TPM* | Yes |
|
||||||
|
|
||||||
| Description | vfio-pci | vfio-mdev | vfio-gpu |
|
## Roadmap
|
||||||
|---|---|---|---|
|
|
||||||
| *Performance* | Near-native performance and full features set | Near-native performance and full features set | Degraded performance and limited features set |
|
|
||||||
| *Guests support* | UNIX and non-UNIX guests | UNIX and non-UNIX guests | Works only on selected UNIX guests |
|
|
||||||
| *Driver* | No special driver in the guest | No special driver in the guest | Requires a special driver in the guest |
|
|
||||||
| *Number of host GPUs* | Two GPUs in most situations | A single GPU | A single GPU |
|
|
||||||
| *GPU support* | Mostly GPU agnostic | Recent Intel integrated GPUs and some professional grade Nvidia GPUs | Mostly GPU agnostic |
|
|
||||||
|
|
||||||
# Roadmap
|
| Fedora 34 | Phyllome OS alpha | Phyllome OS beta | Phyllome OS 1.0 |
|
||||||
|
| :- | :-: | :-: | :-: |
|
||||||
|
|Out-of-the box support for virtualization | No | Yes | Yes | Yes |
|
||||||
|
| Emulator/virtualizer | QEMU | QEMU | QEMU, Cloud Hypervisor | Cloud Hypervisor |
|
||||||
|
| Virtual chipset | i440fx / Q35 | Q35 | Q35, virt | virt |
|
||||||
------------------------------------------- ----------------------- ------------------- ---------------------------------------------------- ----------------------------
|
| Firmware | OVMF, SeaBIOS | OVMF | OVMF | OVMF |
|
||||||
Fedora 34 Phyllome OS alpha Phyllome OS beta Phyllome OS 1.0
|
| Hypervisor | KVM | KVM | KVM | KVM |
|
||||||
Out-of-the box support for virtualization No Yes Yes Yes
|
| Based on | Itself | Fedora Server | Fedora Silverblue | Fedora Silverblue |
|
||||||
Emulator/virtualizer QEMU QEMU QEMU, Cloud Hypervisor (does CH support vfio-pci?) Cloud Hypervisor
|
| Desktop-oriented | Possible | Yes | Yes | Yes |
|
||||||
Virtual motherboard support i440fx / Q35 Q35 Q35, virt virt
|
| Package management | RPM | RPM | RPM-ostree | RPM-ostree |
|
||||||
Firmware OVMF, SeaBIOS OVMF OVMF OVMF
|
| Rolling release | No | No | Yes | Yes |
|
||||||
Hypervisor KVM KVM KVM KVM
|
| Live-edition | No | No | No | Yes |
|
||||||
Based on Itself Fedora Server Fedora Silverblue Fedora Silverblue
|
| Local-first | Possible | Yes | Yes | Yes |
|
||||||
Desktop-oriented (GNOME-shell) Possible Yes, GNOME-shell Yes Yes
|
| Default filesystem | Btrfs | Ext4 | Ext4 | F2FS|
|
||||||
Package management RPM RPM RPM-ostree RPM-ostree
|
| Host encryption | Possible | No | Filesystem-level encryption | Filesystem-level encryption |
|
||||||
Rolling release No No Yes Yes
|
| GPU support | Intel, AMD and Nvidia | Intel | Intel and AMD | Intel, AMD and Nvidia |
|
||||||
Live-edition No No No Yes
|
| Target release date | Released | 2021 | 2022| 2022 |
|
||||||
Local first Possible Yes Yes Yes
|
|
||||||
Default filesystem Btrfs Ext4 Ext4 F2FS
|
|
||||||
Host encryption Possible No Filesystem-level (fscrypt) Filesystem-level (fscrypt)
|
|
||||||
GPU support Intel, AMD and Nvidia Intel Intel and AMD Intel AMD and Nvidia
|
|
||||||
Target release date Released 2021 2022 2022
|
|
||||||
------------------------------------------- ----------------------- ------------------- ---------------------------------------------------- ----------------------------
|
|
||||||
|
|
||||||
### Beyond the first production-ready release
|
### Beyond the first production-ready release
|
||||||
|
|
||||||
@ -76,4 +79,8 @@ Here are some features that may be added later :
|
|||||||
* It would be great to optimize Phyllome OS to work on a recent, more open x86 motherboard that supports both openBMC and
|
* It would be great to optimize Phyllome OS to work on a recent, more open x86 motherboard that supports both openBMC and
|
||||||
Coreboot[^54].
|
Coreboot[^54].
|
||||||
* **Support beyond the x86 architecture**
|
* **Support beyond the x86 architecture**
|
||||||
* Support for hardware based on ARM and RISC-V architectures would be great.
|
* Support for hardware based on ARM and RISC-V architectures would be great.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -563,4 +563,8 @@ The following list is provided by the following command `dnf list --installed |
|
|||||||
* zlib.x86_64
|
* zlib.x86_64
|
||||||
* zram - "zram-generator - Systemd unit generator for zram swap devices"
|
* zram - "zram-generator - Systemd unit generator for zram swap devices"
|
||||||
* zram-generator.x86_64
|
* zram-generator.x86_64
|
||||||
* zram-generator-defaults.noarch
|
* zram-generator-defaults.noarch
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -43,4 +43,4 @@ Phyllome OS heavily relies on GPU or graphic virtualization, most notably throug
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*[**Go back to parent page**](/phyllomeos)*
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -1,27 +0,0 @@
|
|||||||
---
|
|
||||||
title: Illustrations or what you may do with Phyllome OS
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-01-20T11:16:45.952Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2021-11-11T19:07:41.722Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# Use cases
|
|
||||||
|
|
||||||
* **Run multiple guest operating systems concurrently**
|
|
||||||
* Plug in two screens, two sets of keyboards, and two mice to the same PC and spawn two machines to do graphic intensive tasks such as gaming or 3D modeling. No need to buy another computer, just split the one you already have.
|
|
||||||
|
|
||||||
* **Painlessly move to new hardware**
|
|
||||||
* When virtualized, your operating system is just a file on Phyllome OS' disk. You can move and restore it on another computer, provided that the targeted host runs Phyllome OS.
|
|
||||||
|
|
||||||
* **Make your current hardware last longer**
|
|
||||||
* Most recent versions of modern operating systems require recent hardware to function, and may not work on otherwise perfectly functioning hardware. By providing modern virtual hardware, Phyllome OS allows users to receive operating system updates, despite the fact that their underlying may not officially be supported.
|
|
||||||
|
|
||||||
* **Go beyond what your physical hardware is capable of**
|
|
||||||
* A virtual display in a virtual machine can be set to a resolution that exceeds what the underling physical display is capable of, and such a virtual display may be accessible remotely, over the network.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*[**Go to parent page**](/phyllomeos/)*
|
|
21
project.md
21
project.md
@ -1,21 +0,0 @@
|
|||||||
---
|
|
||||||
title: Information about the project
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-01-20T11:01:02.053Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2021-11-13T12:49:36.667Z
|
|
||||||
---
|
|
||||||
|
|
||||||
## The Phyllome OS Project
|
|
||||||
|
|
||||||
### Contribute
|
|
||||||
|
|
||||||
* [How to contribute](/project/contribute)
|
|
||||||
* [How to join](/project/join)
|
|
||||||
* [Current infrastructure](/project/infrastructure)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*[**Go back to homepage**](/)*
|
|
@ -22,3 +22,7 @@ At the moment, there are few ways to contribute:
|
|||||||
|
|
||||||
> You can have a look at [the ongoing issues](https://kanboard.phyllo.me/b/CH7qd98J2v7egmodk/development) to get an indication on what to do next.
|
> You can have a look at [the ongoing issues](https://kanboard.phyllo.me/b/CH7qd98J2v7egmodk/development) to get an indication on what to do next.
|
||||||
{.is-info}
|
{.is-info}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -120,4 +120,8 @@ Apps that were actively disabled post-installation:
|
|||||||
|
|
||||||
* **Description** : [Wiki.js](https://js.wiki/) is used to power the wiki
|
* **Description** : [Wiki.js](https://js.wiki/) is used to power the wiki
|
||||||
* **Location** : https://wiki.phyllo.me
|
* **Location** : https://wiki.phyllo.me
|
||||||
* **Maintainer** : lukas@phyllo.me
|
* **Maintainer** : lukas@phyllo.me
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -34,4 +34,8 @@ To receive an invitation, you need to possess an email address. Then, you should
|
|||||||
Please note that all contributions made to the project, through the official tools stated below, will be open-sourced.
|
Please note that all contributions made to the project, through the official tools stated below, will be open-sourced.
|
||||||
|
|
||||||
> As a contributor, you waive your rights to profit from Phyllome OS. You will be added to the list of contributors.
|
> As a contributor, you waive your rights to profit from Phyllome OS. You will be added to the list of contributors.
|
||||||
{.is-warning}
|
{.is-warning}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
49
virt.md
49
virt.md
@ -1,49 +0,0 @@
|
|||||||
---
|
|
||||||
title: Virtualization for the rest of us
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-07-31T09:07:16.354Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2021-11-13T12:08:53.048Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# On KVM virtualization
|
|
||||||
|
|
||||||
*In this section, the focus is on KVM virtualization, and its associated tools, including QEMU, the Linux Kernel, `libvirt`, etc., mostly in the context of Phyllome OS.*
|
|
||||||
|
|
||||||
## Guest operating systems
|
|
||||||
|
|
||||||
*[This sub-section](/virt/guest) provides a reference for guest operating systems used in KVM-powered virtual machines, and their current support.*
|
|
||||||
|
|
||||||
* [ReactOS](/virt/guest/reactos)
|
|
||||||
* ...and [**more**](/virt/guest)
|
|
||||||
|
|
||||||
## The host operating system
|
|
||||||
|
|
||||||
*[This sub-section](/virt/host) provides a reference for the host operating system.*
|
|
||||||
|
|
||||||
* [Linux Kernel modules](/virt/host/modules) related to virtualization
|
|
||||||
* [Virtualization-related paths](/virt/host/paths) on Phyllome OS
|
|
||||||
* [XML](/virt/host/xml) commented
|
|
||||||
* [Virtual I/O Devices](/virt/vm/virtio) (`virtio`)
|
|
||||||
|
|
||||||
## Virtual hardware
|
|
||||||
|
|
||||||
*[This sub-section](/virt/vm) provides a reference for the virtual hardware.*
|
|
||||||
|
|
||||||
* [Chipset](/virt/vm/chipset)
|
|
||||||
* [Firmware](/virt/vm/firmware)
|
|
||||||
* [Display](/virt/vm/display)
|
|
||||||
* [Input](/virt/vm/input)
|
|
||||||
|
|
||||||
## Resources
|
|
||||||
|
|
||||||
* [A very short history](/virt/history) of virtualization
|
|
||||||
* [Lexicon](/virt/lexicon)
|
|
||||||
* [Related projects](/virt/projects)
|
|
||||||
* [External resources](/virt/resources)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*[**Go back to homepage**](/)*
|
|
@ -74,4 +74,4 @@ When it comes to its longevity and number of variants, the UNIX family is by far
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*[**Go to parent page**](/virt/)*
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -1,52 +0,0 @@
|
|||||||
---
|
|
||||||
title: ReactOS reference
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-01-20T13:26:56.588Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2022-01-06T21:53:31.225Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# ReactOS reference
|
|
||||||
|
|
||||||
## State of support
|
|
||||||
|
|
||||||
> *Support for ReactOS in Phyllome OS is very limited.*
|
|
||||||
{.is-warning}
|
|
||||||
|
|
||||||
| **Hardware** | ReactOS 4.13 | ReactOS 4.14 |
|
|
||||||
| :- | :-: | :-: |
|
|
||||||
| *[Chipset](/virt/vm/chipset)* | i440fx | i440fx |
|
|
||||||
| *Firmware* | SeaBIOS [^1] | SeaBIOS |
|
|
||||||
| *virtio-gpu* | No | No |
|
|
||||||
| *virtio-video* | No | No |
|
|
||||||
| *virtio-snd* | No | No |
|
|
||||||
| *virtio-blk* | No | No |
|
|
||||||
| *virtio-scsi* | No | No |
|
|
||||||
| *virtio-fs* | No | No |
|
|
||||||
| *virtio-net* | No | **Yes** [^2] |
|
|
||||||
| *virtio-keyboard* | No | No |
|
|
||||||
| *virtio-tablet* | No | No |
|
|
||||||
|
|
||||||
|
|
||||||
> Porting new paravirtual devices to ReactOS would significantly improve the experience of running ReactOS inside Phyllome OS, and other virtualization solutions leveraging [paravirtual hardware](https://wiki.phyllo.me/e/en/virt/virtio). See [here](https://reactos.org/contributing/) on how you can contribute to ReactOS
|
|
||||||
{.is-info}
|
|
||||||
|
|
||||||
## Resources
|
|
||||||
|
|
||||||
* [Official resource](https://reactos.org/wiki/QEMU) on running ReactOS with QEMU
|
|
||||||
* [Hardware support list](https://reactos.org/wiki/Supported_Hardware) for ReactOS
|
|
||||||
* [Git repository](https://github.com/hectorm/docker-qemu-reactos) providing a Docker image for the ReactOS operating system
|
|
||||||
* [Current effort](https://github.com/QubesOS/qubes-issues/issues/2809) to integrate ReactOS and QubesOS
|
|
||||||
* [GSoC 2018 project idea](https://reactos.org/wiki/Google_Summer_of_Code_2018_Ideas#Paravirtualization_Support) to port more paravirtualized devices to ReactOS
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
***[Go back to parent page](/virt)***
|
|
||||||
|
|
||||||
---
|
|
||||||
#### Footnotes
|
|
||||||
|
|
||||||
[^1]: Support for [UEFI](https://reactos.org/wiki/UEFI), and potentially OVMF, is under-way.
|
|
||||||
[^2]: See [here](https://doxygen.reactos.org/d1/dc8/virtio__types_8h.html#a5a27dcd221caab788e973f6964d84aa9) for the source code reference for `virtio-net`
|
|
@ -75,4 +75,4 @@ With this software stack deployed on virtualization-friendly hardware, an operat
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*[**Go back to parent page**](/virt)*
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
14
virt/host.md
14
virt/host.md
@ -1,14 +0,0 @@
|
|||||||
---
|
|
||||||
title: Host operating system
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-01-20T10:16:29.183Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2022-01-20T10:16:29.183Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# Host operating system
|
|
||||||
|
|
||||||
> *Under construction*
|
|
||||||
{.is-warning}
|
|
@ -129,4 +129,8 @@ failover # "Generic failover infrastructure/interface"
|
|||||||
|
|
||||||
## Ressources
|
## Ressources
|
||||||
|
|
||||||
* https://storpool.com/blog/nested-virtualization-with-kvm-and-opennebula/
|
* https://storpool.com/blog/nested-virtualization-with-kvm-and-opennebula/
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -34,4 +34,8 @@ The Nvram contains the saved state of the UEFI configuration.
|
|||||||
|
|
||||||
* Any new virtual machines will be saved there :
|
* Any new virtual machines will be saved there :
|
||||||
|
|
||||||
`/var/lib/libvirt/images`
|
`/var/lib/libvirt/images`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -245,3 +245,7 @@ This is the description of an XML file associated to a virtio-based virtual mach
|
|||||||
## Reference
|
## Reference
|
||||||
|
|
||||||
For a more thorough description, see https://libvirt.org/formatdomain.html
|
For a more thorough description, see https://libvirt.org/formatdomain.html
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -115,4 +115,4 @@ Virtualization is used to better isolate resources on a physical computer and to
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*[**Go back to parent page**](/virt)*
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -457,3 +457,7 @@ https://specs.openstack.org/openstack/nova-specs/specs/train/approved/allow-secu
|
|||||||
* Linux System Programming 2ed
|
* Linux System Programming 2ed
|
||||||
* The Linux Programming Interface: A Linux and UNIX System Programming Handbook (English Edition)
|
* The Linux Programming Interface: A Linux and UNIX System Programming Handbook (English Edition)
|
||||||
* Linux-insides : https://0xax.gitbooks.io/linux-insides/content/
|
* Linux-insides : https://0xax.gitbooks.io/linux-insides/content/
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
16
virt/vm.md
16
virt/vm.md
@ -1,16 +0,0 @@
|
|||||||
---
|
|
||||||
title: Anatomy of a virtual machine
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2022-01-25T16:19:33.102Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2021-11-13T11:56:31.018Z
|
|
||||||
---
|
|
||||||
|
|
||||||
> *Section under construction*
|
|
||||||
{.is-warning}
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
***[Go back to parent page](/virt/)***
|
|
@ -58,4 +58,4 @@ The `virt` virtual chipset is the most modern chipset, compatible with PCI-Expre
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*[**Go back to parent page**](/virt/vm)*
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -128,3 +128,7 @@ It will look like that when launched:
|
|||||||
* [Official resource](https://libvirt.org/formatdomain.html#graphical-framebuffers) for libvirt-compatible displays, including various XML examples
|
* [Official resource](https://libvirt.org/formatdomain.html#graphical-framebuffers) for libvirt-compatible displays, including various XML examples
|
||||||
* [Libmks](https://gitlab.gnome.org/chergert/libmks) provides a "Mouse, Keyboard, and Screen" to QEMU using the D-Bus device support in QEMU and GTK 4.
|
* [Libmks](https://gitlab.gnome.org/chergert/libmks) provides a "Mouse, Keyboard, and Screen" to QEMU using the D-Bus device support in QEMU and GTK 4.
|
||||||
* [QEMU D-Bus display experiment](https://gitlab.com/marcandre.lureau/qemu-display/) is a WIP Rust crates to interact with a -display dbus QEMU
|
* [QEMU D-Bus display experiment](https://gitlab.com/marcandre.lureau/qemu-display/) is a WIP Rust crates to interact with a -display dbus QEMU
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -42,4 +42,4 @@ The [Rust Hypervisor Firmware](https://github.com/cloud-hypervisor/rust-hypervis
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*[**Go back to parent page**](/virt/vm)*
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -8,10 +8,7 @@ editor: markdown
|
|||||||
dateCreated: 2021-11-13T17:52:22.554Z
|
dateCreated: 2021-11-13T17:52:22.554Z
|
||||||
---
|
---
|
||||||
|
|
||||||
> Section under construction.
|
# Graphic cards
|
||||||
{.is-warning}
|
|
||||||
|
|
||||||
# Graphics cards
|
|
||||||
|
|
||||||
Phyllome leverages 3D acceleration within guest operating systems extensively, in three different modes depending on the situation.
|
Phyllome leverages 3D acceleration within guest operating systems extensively, in three different modes depending on the situation.
|
||||||
|
|
||||||
@ -26,3 +23,7 @@ Phyllome leverages 3D acceleration within guest operating systems extensively, i
|
|||||||
| *Driver* | No special driver in the guest | No special driver in the guest | Requires a special driver in the guest |
|
| *Driver* | No special driver in the guest | No special driver in the guest | Requires a special driver in the guest |
|
||||||
| *Number of host GPUs* | Two GPUs in most situations | A single GPU | A single GPU |
|
| *Number of host GPUs* | Two GPUs in most situations | A single GPU | A single GPU |
|
||||||
| *GPU support* | Mostly GPU agnostic | Recent Intel integrated GPUs and some professional grade Nvidia GPUs | Mostly GPU agnostic |
|
| *GPU support* | Mostly GPU agnostic | Recent Intel integrated GPUs and some professional grade Nvidia GPUs | Mostly GPU agnostic |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
@ -64,5 +64,6 @@ Edit the virtual machine's definition and replace `MOUSE_NAME` and `KEYBOARD_NAM
|
|||||||
|
|
||||||
* In-depth [Passthrough Post article](https://passthroughpo.st/using-evdev-passthrough-seamless-vm-input/) about evdev.
|
* In-depth [Passthrough Post article](https://passthroughpo.st/using-evdev-passthrough-seamless-vm-input/) about evdev.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
||||||
|
@ -87,4 +87,4 @@ In this section, the focus is oriented towards Virtual I/O Devices (VIRTIO), bet
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*[**Go back to parent page**](/virt/vm)*
|
*[**Go to parent page**](https://wiki.phyllo.me/)*
|
Loading…
Reference in New Issue
Block a user