LINUX.ORG.RU

grub2 + systemd + / ≠ rw

 


0

1

Мне кажется, что я нашел недоработку в systemd.

Факты:

  1. grub-mkconfig формирует строчки kernel с флагом ro
    (да, это можно поменять через GRUB_CMDLINE_LINUX_DEFAULT="rw", но там была мысль - сначала смонтировать в ro, затем позапускать fsck, затем перемонтировать в rw)
  2. существует сервис /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
  1. использовать 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
  1. сервис 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 и остаётся.

★★★★

Последнее исправление: Shushundr (всего исправлений: 5)

Генератор в параметре What= пишет путь до блочного устройства.

daemon-reload и enable для юнита делал?

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

Генератор

мне слово «генератор» непонятно, что писать в командной строке?

# systemd-mount --options=rw /dev/disk/by-uuid/5614097b-ac18-4ee9-b87d-4fe05641332b /
Refusing to operate on root directory.
Shushundr ★★★★
() автор топика

Какой дистрибутив? У меня такое ощущение, что ты пытаешься сделать то, что за тебя уже реализовали maintainers твоего дистрибутива. Сомневаюсь, что у тебя LFS, иначе ты ты бы таких вопросов не задавал.

zimniy
()
Ответ на: комментарий от zimniy

Почему у тебя такое ощущение?

Как известно, systemd запускается два раза: первый раз из initramfs (файла, который создаётся программой dracut, а загружается инструкцией initrd конфигурационного файла /efi/grub/grub.cfg программы grub) второй раз уже с основного загрузочного раздела на дисковой системе На странице: https://www.freedesktop.org/software/systemd/man/latest/systemd-fsck@.service.html Есть упоминание о том, что сервисы работают по-разному в этих двух случаях: «systemd-fsck-root.service and systemd-fsck-usr.service are responsible for file system checks on the root and /usr file system, respectively, but only if the root filesystem was not checked in the initrd.» Как они эти два сценария различают? systemd-fsck@.service is used for all other file systems and for the root file system in the initrd. Вот это как происходит?

а дистрибутив у меня gentoo

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Shushundr

что писать в командной строке?

Поищи патч Бармина, он исправит твою проблему.

firkax ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.