mkosi - ArchWiki

# mkosi

From ArchWiki
Jump to navigation Jump to search

Related articles

- systemd
- systemd-nspawn
- Linux Containers
- Docker

mkosi stands for Make Operating System Image, and is a tool for generating an OS tree or image that can be booted.

## 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

Tip: If you create a folder mkosi.cache in current working dir, mkosi will save all downloaded packages there, so you can recreate images faster.

### 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: gpt_ext4: Imagefile with GPT-Partiontable and ext4-Filesystem gpt_btrfs: Imagefile with GPT-Partiontable and btrfs-Filesystem gpt_squashfs: Imagefile with GPT-Partiontable and squashfs-Filesystem directory: A plain directory subvolume: A btrfs subvolume tar: A tar-ball of a plain directory
-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

## See also

- Mkosi on Github
- Longer introduction

Category:

- Virtualization