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= |
Which distribution should be installed: fedora,debian,ubuntu,arch,opensuse |
-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=test |
Set the initial root password |