Однако, после перезагрузки /tmp не смонтирован, а "/" — "/dev/mmcblk0p1 / ext4 ro,relatime 0 0", спасибо чудо-сервису systemd. Как его заставить уважать fstab, откуда он эту дичь берёт?
Здравствуйте, aik, Вы писали:
aik>Однако, после перезагрузки /tmp не смонтирован, а "/" — "/dev/mmcblk0p1 / ext4 ro,relatime 0 0", спасибо чудо-сервису systemd. Как его заставить уважать fstab, откуда он эту дичь берёт?
aik>Своп смонтирован нормально. overlayfs выключен.
systemd берёт под контроль и точки монтирования, и создание временных директорий, поэтому fstab обрабатывается иначе, чем на системах с SysV init.
Здравствуйте, cppguard, Вы писали:
aik>>Однако, после перезагрузки /tmp не смонтирован, а "/" — "/dev/mmcblk0p1 / ext4 ro,relatime 0 0", спасибо чудо-сервису systemd. Как его заставить уважать fstab, откуда он эту дичь берёт? aik>>Своп смонтирован нормально. overlayfs выключен. C>systemd берёт под контроль и точки монтирования, и создание временных директорий, поэтому fstab обрабатывается иначе, чем на системах с SysV init.
Ключей не принимает, ничего не выводит, ничего не меняет. 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 systemd лучше не конфликтовать, потому что куча всяких неявных правил и установок. Проще или поправить соответствующий конфиг, или полностью отказаться от systemd.
aik>Там ничего, что объясняло бы немонтирование /tmp и почему root — read-only.
read-only root это действительно странно. Обычно, / монтируется в read-only, когда инициализация системы не прошла успешно.
aik>Я заметил. Решительно всё, к чему они прикасаются, работает хуже чем до того.
Я раньше тоже недолюбливал systemd, но по большей части из-за множественных косяков ранних версий и на волне всеобщего порицания от фанатов Столлмана. Но к тому времени я не успел потратить много времени в обнимку с init scripts, поэтому синдрома утёнка не заполучил, и, разобравшись, мне systemd стал нравится. Тем более, что man pages у проекта отличные и всеобъемлющие.
Здравствуйте, 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-подобных файла.
Здравствуйте, aik, Вы писали:
aik>Однако, после перезагрузки /tmp не смонтирован, а "/" — "/dev/mmcblk0p1 / ext4 ro,relatime 0 0", спасибо чудо-сервису systemd. Как его заставить уважать fstab, откуда он эту дичь берёт?
У тебя чтото идёт не так. Во время загрузки чтото случилось такое, что система решила на всякий случай корень вообще в rw не монтировать. Попробуй логи повнимательнее почитать и не только dmesg, но и journalctl
Здравствуйте, 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 вырезаю уже на автомате. И их маны не помогают в случае проблем вообще.
Здравствуйте, Sheridan, Вы писали:
S>У тебя чтото идёт не так. Во время загрузки чтото случилось такое, что система решила на всякий случай корень вообще в rw не монтировать. Попробуй логи повнимательнее почитать и не только dmesg, но и journalctl
Логи бесполезны оказались. Добавил в fstab для рута "rw" и внезапно рут стал монтироваться сразу как надо, но это же костыль — оно само должно было понять, но хз почему не поняло — сервис remount отработал, но ничего не сделал. Или это баг, в их гите есть намёки. fsck и так был всегда доволен. Для /tmp надо было "sudo systemctl unmask tmp.mount", это результат моих кривых зачисток фичи "/tmp в оперативе".