Skip to content

GRUB

Booting Obarun with GRUB works exactly as the Arch Wiki describes. The only thing worth a page of its own is the ro / rw question, which people get told about wrongly.

ro or rw on the kernel command line

66 boots either way. Neither value stops the machine from coming up, and there is nothing to fix if your entry says one rather than the other.

What changes is the root filesystem check:

Kernel command line What happens
ro The root arrives read-only. The boot sequence can run fsck on it, then the mount-rw service remounts it read-write.
rw The root is already writable. fsck does not check a filesystem mounted read-write, so the root is not checked. mount-rw becomes a no-op.

That is the whole difference. Everything else in the boot sequence is identical.

So a GRUB entry can legitimately read either:

linux /boot/vmlinuz-linux root=UUID=... ro net.ifnames=0 quiet
linux /boot/vmlinuz-linux root=UUID=... rw net.ifnames=0 quiet

The defaults on Obarun

They are not the same from one bootloader to the next, and that is not a bug:

Bootloader Default
GRUB, through grub-mkconfig rw
Syslinux ro
EFISTUB, as written by the installer ro

grub-mkconfig produces rw because that is Arch's default and Obarun does not override it.

When you want rw

Pick rw when the root filesystem does its own integrity work, or when something in your setup refuses a read-only root.

ZFS is both, and it is the case you are most likely to meet: a ZFS root passed ro stays read-only, and there is no boot-time check to gain, fsck.zfs being a dummy and zpool scrub the real equivalent.

linux /boot/vmlinuz-linux root=ZFS=zpool/ROOT/obarun rw loglevel=3 quiet

When you want ro

Pick ro on a classic ext4 or xfs root if you want the boot sequence to check it before it is written to. Whether the check actually runs then depends on the boot module: see FORCECHCK and the system-fsck service in The boot module.

Editing entries

Edit /etc/default/grub and the scripts in /etc/grub.d/ rather than grub.cfg, then regenerate:

# grub-mkconfig -o /boot/grub/grub.cfg

Kernel command line and 66

Any key=value pair valid in /etc/66/init.conf can also be passed on the kernel command line, which is handy for a one-off debug boot:

linux /boot/vmlinuz-linux root=UUID=... rw VERBOSITY=4 CATCHLOG=0

For a single boot, press E on the GRUB menu entry, append what you need to the linux line, and boot with Ctrl+X. Nothing is written to disk. To make it permanent, add it to GRUB_CMDLINE_LINUX in /etc/default/grub and regenerate.

See Boot output.

Multi-boot

os-prober can detect other systems, but it is unreliable enough that it is not recommended here. Look up the boot entry each system actually wants, and write it into /boot/grub/custom.cfg yourself. For Windows installations os-prober is usually good enough.

See the Arch Wiki on boot menu entry examples.

Other bootloaders

For anything not GRUB or Syslinux, follow the Arch Wiki on the Arch boot process. The ro / rw choice above applies whatever the bootloader.