mkosi
mkosi stands for Make Operating System Image, and is a tool for generating an OS tree or image that can be booted.
Contents
Installation
Install mkosiAUR or mkosi-gitAUR. Depending on what Distribution you want to build install further packages:
Distribution | Package |
---|---|
Arch | arch-install-scripts |
Debian | debootstrap, debian-archive-keyring |
Ubuntu | debootstrap, ubuntu-keyring |
Fedora | dnfAUR |
OpenSUSE | zypper-gitAUR |
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 latest debian-version and the package openssh-clients installed:
$ mkosi -d debian -t gpt_ext4 -b --checksum --password password --package openssh-clients,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 an usb-drive and use it to boot you computer.
2. Example: Using Config-files
The same image can be created by creating a config-file:
mkosi.default
[Files] [Distribution] Distribution=debian Release=stretch [Output] Format=gpt_ext4 Bootable=yes Output=image.raw [Packages] Packages= openssh-client vim [Validation] Password=password
Configurations
Basic options can be specified as commandline argument or in a file called mkosi.default in your current folder. Most important Options:
Argument | Option in mkosi.default | Description |
---|---|---|
-d | [Distribution]
Distribution= |
Wich 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-filesystem |
-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 |