Установил я через debootstrap Debian jessie. Только ядро и systemd взял из бэкпортов: 4.8.0-0.bpo2-amd64, systemd 230.
Всё замечательно, только система факапится на монтировании корня: Failed to mount /.
ОС у меня установлена на LVM.
В процессе дебага выяснил, что всё монтируется великолепно ещё в initramfs. Далее успешно происходит чек диска и ремаунт юнитом systemd-remount-fs.
Но юнит local-fs.target не запускается из-за фейла зависимости -.mount:
[ 4.801773] systemd[1]: -.mount: Directory / to mount over is not empty, mounting anyway.
[ 4.802659] systemd[1]: -.mount: About to execute: /bin/mount /dev/mapper/os-root / -t ext4 -o errors=remount-ro
[ 4.803013] systemd[1]: -.mount: Forked /bin/mount as 767
[ 4.803234] systemd[1]: -.mount: Changed dead -> mounting
[ 4.804544] systemd[767]: -.mount: Executing: /bin/mount /dev/mapper/os-root / -t ext4 -o errors=remount-ro
[ 4.809787] systemd[1]: Received SIGCHLD from PID 767 (mount).
[ 4.809862] systemd[1]: Child 767 (mount) died (code=exited, status=32/n/a)
[ 4.809972] systemd[1]: -.mount: Child 767 belongs to -.mount
[ 4.809990] systemd[1]: -.mount: Mount process exited, code=exited status=32
[ 4.810005] systemd[1]: -.mount: Changed mounting -> failed
[ 4.810290] systemd[1]: -.mount: Job -.mount/start finished, result=failed
[ 4.810315] systemd[1]: Failed to mount /.
Утешительный вывод: Systemd пытается на кой-то хрен смонтировать корень в тот момент, когда он уже отлично смонтирован и хорошо себя чувствует. Если я перехожу в debug shell, вижу в что всё смонтировано отлично. Но на буте команда mount ожидаемо отдаёт ненулевой код, чем ломает local-fs.target и все зависимости далее.
Если убрать рут из fstab, то всё запускается замечательно, но тогда systemd-remount-fs не сработает (по исходникам он читает /etc/fstab хардкодно).
Вот мой /etc/fstab:
/dev/mapper/os-root / ext4 errors=remount-ro 0 1
/dev/mapper/data-storage /var/lib/storage/ ext4 noatime,relatime,nodev,nosuid,noexec 0 0
UUID=fa1c680a-13d2-48c2-808d-bec1966ed483 none swap sw 0 0
UUID=2CB2-3E54 /boot/efi/ vfat defaults 0 1
Если ставить не на lvm, а на раздел, то ничего не меняется.
Параметры загрузки ядра:
root=/dev/mapper/os-root ro rootfstype=ext4 systemd.debug-shell=1 systemd.log_level=debug systemd.log_target=kmsg log_buf_len=100M printk.devkmsg=on quiet splash
Очень помог ман по дебагу, но что-то я уже бессилен. https://freedesktop.org/wiki/Software/systemd/Debugging/
Как мне в итоге сказать systemd игнорировать уже смонтированный раздел? Что вообще творится? Да, параметр nofail игнорируется для рутовых разделов, о чём радостно рапортует systemd-fstab-generator.
Заранее отвечу на кой хрен мне systemd из бэкпортов — нужен networkctl.