Мне кажется, что я нашел недоработку в systemd.
Факты:
- grub-mkconfig формирует строчки kernel с флагом ro
(да, это можно поменять черезGRUB_CMDLINE_LINUX_DEFAULT="rw"
, но там была мысль - сначала смонтировать в ro, затем позапускать fsck, затем перемонтировать в rw) - существует сервис /lib/systemd/system/systemd-remount-fs.service
который запускает программу
ExecStart=/lib/systemd/systemd-remount-fs
которая
# file /lib/systemd/systemd-remount-fs
/lib/systemd/systemd-remount-fs: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, stripped
- использовать fstab это вчерашний день, надо пользоваться функциональностью для монтирования из состава systemd
в каталоге /etc/systemd/system/
создаём директорию -.mount.d
и в ней файл override.conf с содержимым
[Mount]
Options=rw
ну или просто один только файл /etc/systemd/system/-.mount
[Unit]
Description=Root Mount
Documentation=man:systemd.mount(5)
DefaultDependencies=no
Before=local-fs.target
After=systemd-fsck@dev-disk-by\x2duuid-XXXXXXXX.service
[Mount]
What=/
Where=/
Type=none
Options=bind
[Install]
WantedBy=local-fs.target
- сервис
systemd-fsck@.service
задокументирован
но я не понимаю, как формируется то длинное имя с UUID
# ls -1 /dev/disk/by-uuid/
5614097b-ac18-4ee9-b87d-4fe05641332b
# blkid
/dev/vda2: LABEL="ROOT" UUID="5614097b-ac18-4ee9-b87d-4fe05641332b" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="ROOT"
# readlink /dev/disk/by-uuid/5614097b-ac18-4ee9-b87d-4fe05641332b
../../vda2
Пара команд на память:
journalctl -b -u systemd-remount-fs.service
systemctl status -- -.mount
Моя проблема в том, что у меня это всё не срабатывает. Корень в rw не перемонтируется, так в ro и остаётся.