In this week’s latest release of Fedora Atomic Host, you might notice something
different when you boot the new image. There is now a
Developer Mode entry in
the GRUB boot menu. This blog post will describe why this new feature was added
and what it does.
One of the confusing things that newcomers encounter when they want to try out Atomic Host is setting up cloud-init. Currently, it is impossible to use an Atomic Host image without providing cloud-init with a data source. In the absence of a source, cloud-init will try connecting to various known metadata URLs for about four minutes and then give up.
For most first-timers, the easiest way to get started has been to follow the Quick Start Guide, which takes them through the process of creating the meta-data and user-data files, generating the cloud-init ISO, and attaching it to a virtual machine.
The new Atomic Developer Mode addresses this by adding a new entry in the GRUB boot menu. Because a picture is worth a thousand words, here’s a screenshot of what the menu will now look like on the first boot:
A word of caution: the GRUB menu timeout has a timeout of one second. Though
increasing it would make it easier for people to select a different boot entry,
it would also increase the boot up time for every other regular use case. If you
miss it the first time, simply restart and try again! If you’re using
Enable boot menu in the machine’s boot options will
give you a couple of extra seconds.
When booted in Developer Mode, cloud-init will be provided with a local data source that will automatically:
- Generate a random root password
- Autologin as root into a tmux session
- Pull and start a cockpit/ws container
- Print out all the useful info on the terminal
The benefit of using tmux is its scriptability. A custom tmux configuration file is used to provide some easier navigation hotkeys. Here is a screenshot of the tmux environment once it is fully booted up:
One of the great strengths of Atomic Developer Mode is that its functionality is baked into the image. Thus, it does not assume any special setup of the host environment/OS, as long as it is capable of booting the image.
If you already have an Atomic Host installation, you can still get the boot menu added by upgrading to the new tree and running:
bash /usr/libexec/atomic-devmode/bootentry add