|
||
---|---|---|
blocks-live | ||
flat | ||
img | ||
leaves | ||
post | ||
Code-of-Conduct.md | ||
LICENSE.md | ||
README.md |
Phyllome OS
Virtualization for the rest of us
What
This repository contains the basic building blocks required for deploying Phyllome OS bare-metal or in a virtual machine, using kickstart files.
Note: This is the alpha version of Phyllome OS. Expect bugs and disappointment
Note: External contributions for Phyllome OS are welcome. Have a look here for some ideas on what to do next. To get the bigger picture, you could skim through the white paper.
Note: The Phyllome OS Project is looking for core contributors, able to spend some a few hours on the project each week. If you are interested about making cutting-edge open-source virtualization more accessible, please send an email to contact@phyllo.me.
Structure of the repository
leaves
: this directory contains the basic buildings blocks for assembling Phyllome OS versions- For instance, the Phyllome OS Desktop version optimized for Intel(tm) CPUs and Intel(tm) graphic cards, refered internally as
dhi
, can be found there (d for desktop; h for hypervisor; i for intel) - Eventually, there will be three generic editions : server; desktop and live, with their own platform-dependant optimizations
- For instance, the Phyllome OS Desktop version optimized for Intel(tm) CPUs and Intel(tm) graphic cards, refered internally as
flat
: this directory contains the end products in the form of stand-alone and ready-to-use kickstart filespost
: this directory contains scripts that are meant to be run after a successful installation
How to hack Phyllome OS
Hacking kickstart files is the main way to assemble and configure Phyllome OS, which is RPM-based. Kickstart files are snippets of code which automate the installation of RPM-based Linux distributions.
Note : The steps to deploy Phyllome OS bare-metal are available on the external wiki.
Requirements
- A x86_64 platform with hardware-assisted virtualization enabled
- A recent Linux Kernel (> 5.X)
- The
virt-install
andvirt-manager
tools libvirt
andqemu-kvm
up and running- Nested-virtualization enabled
The prerequisites
AMD-based systems only, enable nested-virtualization, then reboot:
sudo echo "options kvm_amd nested=1" >> /etc/modprobe.d/kvm.conf
Intel-based systems only, enable nested-virtualization, then reboot:
sudo echo "options kvm_intel nested=1" >> /etc/modprobe.d/kvm.conf`
Install the prerequisites on Fedora 34
sudo dnf install -y qemu-kvm libvirt libvirt-daemon-config-network libvirt-daemon-kvm virt-install virt-top virt-manager libguestfs-tools python3-libguestfs guestfs-tools
Install the prerequisites on Ubuntu 20.4 or Debian 11
To be done
Hack
From within your favorite terminal:
git clone https://github.com/PhyllomeOS/PhyllomeOS.git
Hack files inside the leaves
directory.
When you are done, move to the flat
directory:
cd ./PhyllomeOS/flat/
Then, merge the kickstart leaves into a single file, a process known as flattening. Here, we take the Phyllome OS Desktop edition optimized for Intel(tm) CPUs and Intel(tm) graphic cards, also known as dhi
, as an example :
ksflatten -c ../leaves/dhi.cfg -o flat-dhi.cfg
Fire it up!
For testing and development purposes, Phyllome OS can be deployed inside a virtual machine, as a guest hypervisor.
Note: it may eventually switch to container-based development.
Note: the following script relies on a network-accessible kickstart file tuned for Intel CPUs and GPUs.
This script will automatically deploy the alpha version of Phyllome OS, on a Q35 virtual motherboard, a UEFI-based firmware, virtio-devices accross the board, 2 vCPUs, 4 GB of RAM and a disk of 5 GB.
Adjust it according to your need. When ready, copy and paste it to your terminal and fire it up!
virt-install \
--connect qemu:///system \
--virt-type kvm \
--arch x86_64 \
--machine q35 \
--name phyllome-alpha \
--boot uefi \
--cpu host-model,topology.sockets=1,topology.cores=2,topology.threads=1 \
--vcpus 2 \
--memory 4096 \
--video virtio \
--channel spicevmc \
--autoconsole none \
--sound none \
--controller type=virtio-serial \
--controller type=usb,model=none \
--controller type=scsi,model=virtio-scsi \
--network network=default,model=virtio \
--input type=keyboard,bus=virtio \
--input type=tablet,bus=virtio \
--rng /dev/urandom,model=virtio \
--disk path=/var/lib/libvirt/images/flat-dhi.img,format=raw,bus=virtio,cache=writeback,size=5 \
--location=https://download.fedoraproject.org/pub/fedora/linux/releases/35/Everything/x86_64/os/ \
--initrd-inject flat-dhi.cfg --extra-args "inst.ks=file:flat-dhi.cfg"
Starting install...
Retrieving file vmlinuz... | 10 MB 00:00
Retrieving file initrd.img... | 79 MB 00:02
Allocating 'virtinst-inlu7cmw-vmlinuz' | 10 MB 00:00
Transferring virtinst-inlu7cmw-vmlinuz | 10 MB 00:00
Allocating 'virtinst-2dd8ghse-initrd.img' | 79 MB 00:00
Transferring virtinst-2dd8ghse-initrd.img | 79 MB 00:01
Allocating 'flat-dhi.img' | 5.0 GB 00:00
Domain is still running. Installation may be in progress.
You can reconnect to the console to complete the installation process.
The process will be launched behind the scene. You can open virt-manager
and connect to the virtual machine to follow the process. Eventually, you will be greated with this screen:
After you are done setting your user account, virt-manager
will automatically start:
Phyllome OS
Phyllome OS is a Fedora Remix based on Fedora Server 35 designed to leverage hardware-assisted virtualization and VirtIO-based paravirtualization to run modern UEFI-compatible guest operating systems locally.
The goal is to maximize ease-of-use and compatibility. As such, Phyllome OS intends to become the easiest way to virtualize modern operating systems, by integrating pertinent open-source software such as libvirt
, qemu-kvm
(and then the Cloud Hypervisor
) and virt-manager
.
A user should not have to manage Phyllome OS: it should be able to pick its favorite operating system and Phyllome OS should run it, no question asked.
Do you want to know more about Phyllome OS design and context ? If so, please have a look at the white paper.
Note : at the exception of open-source Darwin derivatives, Phyllome OS won't offer support running macOS on non-Apple hardware.
The Phyllome OS Project
The Phyllome OS Project relies on multiple tools, including the following front-facing tools:
- The wiki: Have a look at the wiki repository for more information on how you can contribute to improve the documentation.
- Issues tracker: public, read-only issue tracking is available online
- The website: the website repository is available here
- Code repository: GitHub is being used to host the code, with a mirror pointing to https://git.phyllo.me
Licence
Acknowledgement
Thanks to the main contributors of the official Fedora kickstart files repository, and related tools:
Adam Miller, Bastien Nocera, Bruno Wolff III, Bryan Kearney, Chitlesh Goorah, Christoph Wickert, Colin Walters, Fabian Affolter, Igor Pires Soares, Jens Petersen, Jeremy Katz, Jeroen van Meeuwen Jesse Keating, Luya Tshimbalanga, Matthias Clasen, Pedro Silva, Rahul Sundaram, Sebastian Dziallas Sebastian Vahl, wart. More information here : https://pagure.io/fedora-kickstarts