-.mount [Решено]

собственно сабж.
Есть герои взлетевшие без генератора fstab? поделитесь опытом.
Ну нивкакую оно не хочет.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
Все таки вспомнил я костыль над которым долго бился…

юнит можно скопировать сгенерированный

/run/systemd/generator/-.mount -> /etc/systemd/system/-.mount

потом отключить монтирование корня в fstab-е

А вот как эта гадость подключается
/etc/systemd/system/systemd-remount-fs.service
.include /usr/lib/systemd/system/systemd-remount-fs.service
[Unit]
ConditionPathExists=
[Service]
ExecStart=/usr/bin/systemctl reload -- -.mount
#ExecStart=/usr/bin/systemctl reload usr.mount
[Install]
WantedBy=local-fs.target
systemctl enable systemd-remount-fs.service

Родной юнит systemd-remount-fs.service в принципе отвечает за перемонтирование / и /usr
но работает только с fstab, даже не знаю специально или случайно он не доделан…
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
шняга какаято с этими зависимостями, вроде для простых вещей все просто , но когда чуть сложнее полный абзац. В оригинальном который мы инклудим стоит до local-pre, а мы инсталлим в localfs, которая вроде идет позже…. ну ладно, все равно там все очень рядом и способ рабочий,(т.е. даже если мы где то не допоменяли , ошибок это вызвать не должно), причем можно даже юнит сгенерированный не изменять , а просто скопировать в /etc/… так как в таком способе в установке(Install) он не нуждается, также работают и остальные юниты usr,swap,home и т.д.
За неимением другого, голосую за вариант, как первый рабочий.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
sleepycat
За неимением другого, голосую за вариант, как первый рабочий.
Он единственный идейно правильный. Пока не доделают бинарник systemd-remount-fs который будет обрабатывать юниты по правилам старшинства самого systemd, а не читать нужное из fstab, это единственно верное решение… (Для Потеринга это на 10 минут работы )
Хотя можно написать спец юниты на подобии systemd-remount-fs.service с легкой корректировкой, но вот правила старшинства в юнит прото так не засунуть.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
sleepycat
В оригинальном который мы инклудим стоит до local-pre, а мы инсталлим в localfs, которая вроде идет позже….
Фишка в том что сначала читаются все юниты с ветвлениями и зависимостями, потом пересчитывается порядок старта в памяти, а уж потом дается старт. поэтому не важно куда инсталить… главное что бы юнит попал в ветку (задачу, target) которая загрузится или был бы в явной зависимости.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
Подводя не большой итог.
1. Загужаюсь с фстабом.
2. Забираем сгенерированные им юниты из /run/systemd/generator ( в моем примере это -.mount (root), tmp.mount (времянка), dev-sda2.swap (своп юнит) )
3. Копируем это дело в /etc/systemd/system
4. Создаем юнит предоставленный выше nafanja. И активируем его.
5. Чтобы экономить время (есть мнение что все равно в итоге я верну фстаб) далее делаем зависимости руками , так как сгенерированные юниты не будут включаться без секции Install
5.1 mkdir /etc/systemd/system/swap.target.wants
5.2 ln -s /etc/systemd/system/dev-sda2.swap /etc/systemd/system/swap.target.wants
5.3 ln -s /etc/systemd/system/tmp.mount /etc/systemd/system/local-fs.target.wants
и т.д.
Вот что имею после перезагрузки.
cat /etc/fstab
# 
# /etc/fstab: static file system information
#
# <file system> <dir>   <type>  <options>       <dump>  <pass>
#tmpfs          /tmp    tmpfs   nodev,nosuid    0       0
#/dev/sda1 / ext4 defaults 0 1
#/dev/sda2 swap swap defaults 0 0
#smb shares
...
ls -la /etc/systemd/system/swap.target.wants/
итого 8
drwxr-xr-x 2 root root 4096 сент.  4 13:23 .
drwxr-xr-x 9 root root 4096 сент.  4 13:25 ..
lrwxrwxrwx 1 root root   33 сент.  4 13:23 dev-sda2.swap -> /etc/systemd/system/dev-sda2.swap
ls -la /etc/systemd/system/local-fs.target.wants/
итого 8
drwxr-xr-x 2 root root 4096 сент.  4 13:26 .
drwxr-xr-x 9 root root 4096 сент.  4 13:25 ..
lrwxrwxrwx 1 root root   46 сент.  4 12:11 systemd-remount-fs.service -> /etc/systemd/system/systemd-remount-fs.service
lrwxrwxrwx 1 root root   29 сент.  4 13:26 tmp.mount -> /etc/systemd/system/tmp.mount
mount | grep -iE ".*/ "
/dev/sda1 on / type ext4 (rw,relatime,data=ordered)
mount | grep -iE tmp
dev on /dev type devtmpfs (rw,nosuid,relatime,size=997832k,nr_inodes=219541,mode=755)
run on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,mode=755)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime)
swapon -s
Filename				Type		Size	Used	Priority
/dev/sda2                               partition	3903788	0	-1
PS
Чегото после всего этого уже не хочеться экспериментировать с системд XD. Откипел.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
кроме юнита -.mount и usr.mount (если /usr не не корне находится) нужно во все сгенерированные юниты прописать правильный инстал и включить.
корень и /usr подключаются еще в инитрамфс, а так как они уже смонтированны системд считает что их юниты уже отработали и ничего не делает, поэтому требуют явного перемонтирования.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
sleepycat
В оригинальном который мы инклудим стоит до local-pre, а мы инсталлим в localfs, которая вроде идет позже….
Фишка в том что сначала читаются все юниты с ветвлениями и зависимостями, потом пересчитывается порядок старта в памяти, а уж потом дается старт. поэтому не важно куда инсталить… главное что бы юнит попал в ветку (задачу, target) которая загрузится или был бы в явной зависимости.
спасибо, я сомневался, теперь думаю что напрасно, я слишком строго отнесся к процессу, оказалось что авторы уже придумали правило “пихай как монжно больше записей, а машина сама разберется не переживай”. Думаю что просвятился…
кроме юнита -.mount и usr.mount (если /usr не не корне находится) нужно во все юниты прописать правильный инстал и включить.
корень и /usr подключаются еще в инитрамфс, а так как они уже смонтированны системд считает что их юниты уже отработали и ничего не делает, поэтому требуют явного перемонтирования.
не спорю, я просто забил. С утра не ел не пил, занимался вопросом, вот чувствуя что уже близок итог, просто быстренько руками “слинковал”, есть уж больно хочется.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
не авария но просто интереса ради
dmesg | grep remount
[    6.045535] systemd[1]: [/etc/systemd/system/systemd-remount-fs.service:4] Path in condition not absolute, ignoring:
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
Я вот забил на переделывание все в юниты когда разобрался что бинарник systemd-remount-fs не доделан!
А так же есть некоторые нюансы в которых fstаb нужен. Решил что не пришло еще время для 100% главенствования системд над монтированием…
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
 
Зарегистрироваться или войдите чтобы оставить сообщение.