systemd игнорирует fstab
От: aik Австралия  
Дата: 15.03.23 11:28
Оценка:
Есть orangepi c sd картой, armbian/ubuntu2210 и usb диском.

aik@hass:~$ cat /etc/fstab 
UUID=ecc7fb6d-12ab-41b9-b11a-c2c9b78e3bd1 / ext4 defaults,noatime 0 1
/dev/sda2 none swap defaults 0 0
/dev/sda3 /mnt/sda ext4 defaults,sync 0 0
/dev/sda4 /tmp ext4 defaults,sync 0 0
aik@hass:~$ sudo dmesg | egrep '(only|read|\<ro\>)'
[    2.529631] mmc0: host does not support reading read-only switch, assuming write-enable
[    5.450769] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[   39.334103] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready


Однако, после перезагрузки /tmp не смонтирован, а "/" — "/dev/mmcblk0p1 / ext4 ro,relatime 0 0", спасибо чудо-сервису systemd. Как его заставить уважать fstab, откуда он эту дичь берёт?

Своп смонтирован нормально. overlayfs выключен.
Отредактировано 15.03.2023 11:52 aik . Предыдущая версия .
Re: systemd игнорирует fstab
От: cppguard  
Дата: 15.03.23 21:07
Оценка:
Здравствуйте, aik, Вы писали:

aik>Однако, после перезагрузки /tmp не смонтирован, а "/" — "/dev/mmcblk0p1 / ext4 ro,relatime 0 0", спасибо чудо-сервису systemd. Как его заставить уважать fstab, откуда он эту дичь берёт?


aik>Своп смонтирован нормально. overlayfs выключен.


systemd берёт под контроль и точки монтирования, и создание временных директорий, поэтому fstab обрабатывается иначе, чем на системах с SysV init.

https://www.freedesktop.org/software/systemd/man/systemd-fstab-generator.html
https://man.archlinux.org/man/systemd-tmpfiles.8
https://man.archlinux.org/man/tmpfiles.d.5.en
Re[2]: systemd игнорирует fstab
От: aik Австралия  
Дата: 16.03.23 00:15
Оценка:
Здравствуйте, cppguard, Вы писали:

aik>>Однако, после перезагрузки /tmp не смонтирован, а "/" — "/dev/mmcblk0p1 / ext4 ro,relatime 0 0", спасибо чудо-сервису systemd. Как его заставить уважать fstab, откуда он эту дичь берёт?

aik>>Своп смонтирован нормально. overlayfs выключен.
C>systemd берёт под контроль и точки монтирования, и создание временных директорий, поэтому fstab обрабатывается иначе, чем на системах с SysV init.

Я заметил. Решительно всё, к чему они прикасаются, работает хуже чем до того.

C>https://www.freedesktop.org/software/systemd/man/systemd-fstab-generator.html


Ключей не принимает, ничего не выводит, ничего не меняет. strace говорит, что он проверяет несколько файлов в /tmp и на этом всё. SYSTEMD_LOG_LEVEL=debug не добавляет никакой осмысленности.

root@hass:/tmp# tail -n 9 /var/log/syslog 
Mar 16 11:11:58 hass systemd-fstab-generator[4734]: Found container virtualization none.
Mar 16 11:11:58 hass systemd-fstab-generator[4734]: Parsing /etc/fstab...
Mar 16 11:11:58 hass systemd-fstab-generator[4734]: Found entry what=/dev/disk/by-uuid/ecc7fb6d-12ab-41b9-b11a-c2c9b78e3bd1 where=/ type=ext4 makefs=no growfs=no noauto=no nofail=no
Mar 16 11:11:58 hass systemd-fstab-generator[4734]: Failed to create symlink /tmp/local-fs.target.wants/systemd-fsck-root.service: File exists
Mar 16 11:11:58 hass systemd-fstab-generator[4734]: Found entry what=/dev/sda2 where=none type=swap makefs=no growfs=no noauto=no nofail=no
Mar 16 11:11:58 hass systemd-fstab-generator[4734]: SELinux enabled state cached to: disabled
Mar 16 11:11:58 hass systemd-fstab-generator[4734]: Found entry what=/dev/sda3 where=/mnt/sda type=ext4 makefs=no growfs=no noauto=no nofail=no
Mar 16 11:11:58 hass systemd-fstab-generator[4734]: Found entry what=/dev/sda4 where=/tmp type=ext4 makefs=no growfs=no noauto=no nofail=no
Mar 16 11:12:14 hass hass[1633]: 2023-03-16 11:12:14.340 ERROR (MainThread) [homeassistant.components.xiaomi_miio] Timeout fetching Mi Air Purifier 3/3H data
aik@hass:~$ ls /tmp/
armbian-hardware-optimization.Y1wcWo  dev-sda2.swap  local-fs.target.requires  local-fs.target.wants  mnt-sda.mount  -.mount  swap.target.requires  tmp.mount  tmux-1000


C>https://man.archlinux.org/man/systemd-tmpfiles.8


Запрещено и остановлено.

C>https://man.archlinux.org/man/tmpfiles.d.5.en


Там ничего, что объясняло бы немонтирование /tmp и почему root — read-only.

Пойду к ним на гитхаб ругаться.
Re[3]: systemd игнорирует fstab
От: cppguard  
Дата: 16.03.23 07:02
Оценка: +1
Здравствуйте, aik, Вы писали:

aik>
aik>root@hass:/tmp# tail -n 9 /var/log/syslog 
aik>Mar 16 11:11:58 hass systemd-fstab-generator[4734]: Found container virtualization none.
aik>Mar 16 11:11:58 hass systemd-fstab-generator[4734]: Parsing /etc/fstab...
aik>Mar 16 11:11:58 hass systemd-fstab-generator[4734]: Found entry what=/dev/disk/by-uuid/ecc7fb6d-12ab-41b9-b11a-c2c9b78e3bd1 where=/ type=ext4 makefs=no growfs=no noauto=no nofail=no
aik>Mar 16 11:11:58 hass systemd-fstab-generator[4734]: Failed to create symlink /tmp/local-fs.target.wants/systemd-fsck-root.service: File exists
aik>Mar 16 11:11:58 hass systemd-fstab-generator[4734]: Found entry what=/dev/sda2 where=none type=swap makefs=no growfs=no noauto=no nofail=no
aik>Mar 16 11:11:58 hass systemd-fstab-generator[4734]: SELinux enabled state cached to: disabled
aik>Mar 16 11:11:58 hass systemd-fstab-generator[4734]: Found entry what=/dev/sda3 where=/mnt/sda type=ext4 makefs=no growfs=no noauto=no nofail=no
aik>Mar 16 11:11:58 hass systemd-fstab-generator[4734]: Found entry what=/dev/sda4 where=/tmp type=ext4 makefs=no growfs=no noauto=no nofail=no
aik>Mar 16 11:12:14 hass hass[1633]: 2023-03-16 11:12:14.340 ERROR (MainThread) [homeassistant.components.xiaomi_miio] Timeout fetching Mi Air Purifier 3/3H data
aik>aik@hass:~$ ls /tmp/
aik>armbian-hardware-optimization.Y1wcWo  dev-sda2.swap  local-fs.target.requires  local-fs.target.wants  mnt-sda.mount  -.mount  swap.target.requires  tmp.mount  tmux-1000
aik>


Лог systemd units лучше смотреть через journalctl -xeu <название>.

C>>https://man.archlinux.org/man/systemd-tmpfiles.8

aik>Запрещено и остановлено.

C systemd лучше не конфликтовать, потому что куча всяких неявных правил и установок. Проще или поправить соответствующий конфиг, или полностью отказаться от systemd.

aik>Там ничего, что объясняло бы немонтирование /tmp и почему root — read-only.


read-only root это действительно странно. Обычно, / монтируется в read-only, когда инициализация системы не прошла успешно.

aik>Я заметил. Решительно всё, к чему они прикасаются, работает хуже чем до того.


Я раньше тоже недолюбливал systemd, но по большей части из-за множественных косяков ранних версий и на волне всеобщего порицания от фанатов Столлмана. Но к тому времени я не успел потратить много времени в обнимку с init scripts, поэтому синдрома утёнка не заполучил, и, разобравшись, мне systemd стал нравится. Тем более, что man pages у проекта отличные и всеобъемлющие.
Отредактировано 16.03.2023 7:08 cppguard . Предыдущая версия .
Re[3]: systemd игнорирует fstab
От: Sheridan Россия  
Дата: 16.03.23 08:28
Оценка: +1 -1 :)
Здравствуйте, aik, Вы писали:

C>>systemd берёт под контроль и точки монтирования, и создание временных директорий, поэтому fstab обрабатывается иначе, чем на системах с SysV init.

aik>Я заметил. Решительно всё, к чему они прикасаются, работает хуже чем до того.

Я улыбаюсь всегда в таких случаях.
Вы, друзья, либо трусы одевайте, либо крестик снимайте.
Не нравится системды — выкидывайте нахрен из системы и по проторенной десятками лет дороге идите.
Либо пользуйтесь возможностями этого самого systemd.
Я лично просто использую и не испытываю каких либо чувств ни к системдэ, ни к сисв.

Тем не менее, если ближе к сабжу, то /tmp никакого отношения к systemd-tmpfiles иметь не должно, ибо отвечает немного за другое, а именно гарантирует что в ФС будут присутствовать определённые каталоги.
Например, взять /run, где хранятся пиды, сокеты и прочее вспомогательное для взаимодействия "система-процесс" и "процесс-процесс". /run (как, кстати и сабжевый /tmp)сейчас принято держать в tmpfs, чтобы было побыстрее и поменьше мусора. Так вот, если процесс сам не умеет себе окружение подготовить в /run (банально, создать себе каталог) или там по правам прижато, то сие делается как раз об systemd-tmpfiles. Выключать его по соображениям "деды и так справлялись" — ну такое себе.

Опять же, часто бывает удобно монтировать об systemd.mount, особенно в каких нибудь динамичных средах, особенно если учесть, что написать парсер-врайтер /etc/fstab будет посложнее, чем создать пару (.mount + .automount) простых ini-подобных файла.
Matrix has you...
Re: systemd игнорирует fstab
От: Sheridan Россия  
Дата: 16.03.23 08:31
Оценка:
Здравствуйте, aik, Вы писали:

aik>Однако, после перезагрузки /tmp не смонтирован, а "/" — "/dev/mmcblk0p1 / ext4 ro,relatime 0 0", спасибо чудо-сервису systemd. Как его заставить уважать fstab, откуда он эту дичь берёт?

У тебя чтото идёт не так. Во время загрузки чтото случилось такое, что система решила на всякий случай корень вообще в rw не монтировать. Попробуй логи повнимательнее почитать и не только dmesg, но и journalctl
Matrix has you...
Re[4]: systemd игнорирует fstab
От: aik Австралия  
Дата: 16.03.23 09:41
Оценка:
Здравствуйте, cppguard, Вы писали:

C>Лог systemd units лучше смотреть через journalctl -xeu <название>.


Что писать в <название>?

C>C systemd лучше не конфликтовать, потому что куча всяких неявных правил и установок. Проще или поправить соответствующий конфиг, или полностью отказаться от systemd.


Типа его выпилить проще, чем починить fstab?

C>read-only root это действительно странно. Обычно, / монтируется в read-only, когда инициализация системы не прошла успешно.


Я уверен что не поэтому, а потому что по умолчанию в этих армбианах /tmp и своп живут в оперативной памяти, и когда я вырезал это щастье — мог что то недоснести.

[upd] рут всегда сначала монтируется ro, а только потом, когда все счастливы — перемонтируется в rw. Но не у меня.
[upd#2] походу в тот момент когда на здоровом пае происходит перемонтирование в rw — на больном пае ещё не обнаружен /dev/sda системой и всё ломается. час от часу не легче.

Ну и journalctl -b ничего о проблемах не говорит, куда ещё смотреть?

И ничего не объясняет почему /tmp не монтируется. Ведь генератор даже не ругается, типа, всё делает как надо, только оно потом не работает. Хотя, это я запускал на загруженной системе, а, судя по ману, оно запускается при каждой загрузке и вот хер знает что оно видит в тот момент и что генерит.

C>Я раньше тоже недолюбливал systemd, но по большей части из-за множественных косяков ранних версий и на волне всеобщего порицания от фанатов Столлмана. Но к тому времени я не успел потратить много времени в обнимку с init scripts, поэтому синдрома утёнка не заполучил, и, разобравшись, мне systemd стал нравится. Тем более, что man pages у проекта отличные и всеобъемлющие.


Я его не люблю из-за этой самой "кучи всяких неявных правил и установок". Какая то винда вырисовывается на горизонте. И на каждый второй чих своя, неповторимая тулза, типа hostnamectl. resolv вырезаю уже на автомате. И их маны не помогают в случае проблем вообще.
Отредактировано 16.03.2023 12:04 aik . Предыдущая версия . Еще …
Отредактировано 16.03.2023 10:34 aik . Предыдущая версия .
Re[2]: systemd игнорирует fstab
От: aik Австралия  
Дата: 17.03.23 01:01
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>У тебя чтото идёт не так. Во время загрузки чтото случилось такое, что система решила на всякий случай корень вообще в rw не монтировать. Попробуй логи повнимательнее почитать и не только dmesg, но и journalctl


Логи бесполезны оказались. Добавил в fstab для рута "rw" и внезапно рут стал монтироваться сразу как надо, но это же костыль — оно само должно было понять, но хз почему не поняло — сервис remount отработал, но ничего не сделал. Или это баг, в их гите есть намёки. fsck и так был всегда доволен. Для /tmp надо было "sudo systemctl unmask tmp.mount", это результат моих кривых зачисток фичи "/tmp в оперативе".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.