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 | dnfAUR |
| OpenSUSE | zypper-gitAUR |
| CentOS | dnf-legacy-utilsAUR |
Basic usage
You can create an image by calling mkosi as root
# mkosi
You can specify option as arguments or by editing files in the current folder.
Example: 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
you can boot it with systemd-nspawn:
# systemd-nspawn -b -i image.raw
or boot it virtualized with QEMU and
$ 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.
2. Example: Using Config-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 |