Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions user-docs/modules/ROOT/pages/bootc-setup.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
= Getting Started with IoT Bootable Containers (bootc)

Since the launch of Fedora 41, Fedora IoT has supported bootable containers (bootc).
Bootable containers are similar in function to other containers (like Podman), but allow the user to boot into the container as an immutable system.
Any updates or package installs are then layered on top of the base bootc image, allowing rollbacks in the event of an issue.
Each bootc image ships with a kernel, bootloader, drivers, etc, rendering them fully bootable and not requiring a container manager (Podman, Kubernetes, etc).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a bit weird, you would/could still use a container manager such as podman to maintain applications, the container in the bootc case is mechanism for maintaining the base OS.


For more information about bootable containers and how the Fedora Project plans to integrate them into the larger Fedora ecosystem, check out the https://docs.fedoraproject.org/en-US/bootc/getting-started/#_what_is_a_bootable_container[offical Fedora docs page] on bootc.

== Booting into a Bootable Container from an Existing IoT System

On an existing Fedora IoT install, a user can download and boot into a containerized image via the following:

At the Fedora IoT command line, the following will download, setup, and configure the bootloader to boot into the latest bootc image on next boot:

----
sudo bootc switch quay.io/fedora/fedora-iot:latest
----

You can also use the Fedora Project registry to install a bootable container:

----
sudo bootc switch registry.fedoraproject.com/fedora-iot:latest
----

The following can be used to ensure the image has been downloaded and set for boot.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please put an example output here rather than saying "Look for XXX"

Look for the `image:` and `version:` fields under `rollback:`.
These will show where the image was downloaded from and the version.
Also, check that the `rollbackQueued:` field shows `true`.

----
sudo bootc status
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, put sample output.

----

Then, reboot into the image:

----
sudo reboot
----

When the system reboots, it will automatically reboot into the newly installed bootable container.
You can still manually choose to boot into the original ostree image by selecting the image with the arrow keys at the grub menu.
Once the bootable container image is booted, you will have to change into the terminal window using Ctrl-Alt-F2.
At the login, enter your username and password.
From here, you can again run `sudo bootc status` to ensure that the system is now booted into the bootable container.

== Updating the Bootable Container Image

You can update the current bootable container to the latest by running the following:

----
sudo bootc upgrade
----

== Rolling Back to a Previous Bootable Container
In the event of an issue with a bootable container, you can easily rollback to a previously installed image.

----
sudo bootc rollback
----

The system will now automatically boot into the previous bootable conatiner on next boot.

== Installing/Layering Packages onto the Bootable Container

Installing packages is the same as on an ostree Fedora IoT image and retains the same rpm-ostree functionality:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is incorrect, you use dnf.


----
sudo rpm-ostree install htop
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs to be updated.

----