[systemd-devel] "bootctl install" on mdadm raid 1 fails
Bjørn Forsman
bjorn.forsman at gmail.com
Sun Dec 10 12:16:33 UTC 2017
On 9 December 2017 at 06:56, Andrei Borzenkov <arvidjaar at gmail.com> wrote:
> [...]
> Firmware is unaware of MD RAID and each partition is individually and
> independently writable by firmware.
1. "Firmware is unaware of MD RAID". I agree.
2. "... independently writable by firmware". I don't expect firmware
to _write_ to the ESP (does it?!). As long as it only reads, nothing
will get out of sync.
> Pretending that you can mirror them
> on OS level is simply wrong.
I think that statement is correct for all md raid setups _except_
read-only access to raid 1 and with metadata 0.90 or 1.0 (superblock
at the end of device). Because in that case, a filesystem written on
the md array aligns with the underlying block device. So when the
system boots, EFI firmware can read /dev/sda1 and see the very same
filesystem that the OS put on /dev/md127.
Having ESP on an mdadm raid 1 array really works. (I now have a setup
of this myself.) But due to
$ bootctl --path=/mnt/boot install
Failed to probe partition scheme "/mnt/boot": Input/output error
, which my OS installer runs, it requires jumping through a few hoops
to get it running.
The hoops are:
1. Install OS with /dev/sda1 on /boot (no raid).
2. Setup /dev/md127 raid 1 on /dev/sdb1 with the 2nd device missing.
(May have to copy filesystem uuid from /dev/sda1 to /dev/md127.)
3. rsync filesystem contents from /dev/sda1 to /dev/md127.
5. Repurpose /dev/sda1 as the missing device in the /dev/md127 array
6. Use efibootmgr to create the 2nd boot entry, for /dev/sdb1.
I think these steps could be simplified/eliminated if "bootctl"
learned about mdadm (level 1) arrays.
Best regards,
Bjørn Forsman
More information about the systemd-devel
mailing list