mkosi
mkosi stands for Make Operating System Image, and is a tool for generating an OS tree or image that can be booted.
Installation
Install mkosi or mkosi-gitAUR. Depending on what distribution you want to build install the following packages:
Distribution | Package |
---|---|
Arch | arch-install-scripts |
Debian | debootstrap, debian-archive-keyring |
Ubuntu | debootstrap, ubuntu-keyring |
Fedora | dnf |
OpenSUSE | zypper-gitAUR |
CentOS | dnf-legacy-utilsAUR |
Basic usage
You can create an image by just running it without any arguments:
# mkosi
You can specify option as arguments or by editing files in the current folder.
Create and boot a Debian image
The following command will create a bootable image with the latest Debian version and the package openssh-client installed:
$ mkosi -d debian -t gpt_ext4 -b --checksum --password password --package openssh-client,vim -o image.raw
systemd-nspawn can boot the resulting image:
# systemd-nspawn -b -i image.raw
It can also be virtualized with QEMU/KVM:
$ qemu-system-x86_64 -m 512 -smp 2 -bios /usr/share/ovmf/x64/OVMF_CODE.fd -drive format=raw,file=image.raw
You can also write this image to a USB drive and use it to boot your computer.
Using configuration files
The same image can be created by creating a configuration file:
mkosi.default
[Distribution] Distribution=debian Release=stretch [Output] Format=gpt_ext4 Bootable=yes Output=image.raw [Packages] Packages= openssh-client vim [Validation] Password=password
mkosi.cache
in current working directory, mkosi will save all downloaded packages there, so you can recreate images faster.Configurations
Basic options can be specified as command-line arguments or in a file called mkosi.default
in your current directory.
Most important options:
Argument | Option in mkosi.default | Description |
---|---|---|
-d
|
[Distribution] Distribution= |
The name of the distribution to install, e.g arch .
|
-r
|
[Distribution] Release= |
The version of the distribution: jessie, 21, … |
-t
|
[Output] Format= |
Format of the image to create:
|
-b
|
[Output] Bootable=yes |
Make the image bootable |
--root-size
|
[Output] RootSize= |
Size of the root file system |
-p
|
[Packages] Packages= |
List of packages to be installed into the image |
-o
|
[Output] Output= |
File/directory-Name |
--password
|
[Validation] Password=password |
Set the initial root password |