[Баг починен] systemd, virtualbox и dhcp

Я предлагал поменять
Wants=network.target
Before=network.target
After=systemd-logind.service
Requires=systemd-udev-settle.service
на
Before=network.target
After=systemd-udev-settle.service
Я так себе подумал, что раз есть before и after, то зачем ещё что-то? Но это и правда не важно, я сам разберусь, когда время придёт. Просто решил спросить, может кто сразу расскажет.

просто одна из них запустит юнит даже если требуемый юнит дал сбой, а др. в таком случае забракует юнит и он даже не будет пытаться взлетать.
Вот это интересная штука, по-моему, это различия между wants и requires (в ман я тоже смотрел, но пока одним глазом).
Я именно так поменял. И стало гораздо лучше. Хорошая пища для размышлений. ))
Arch awesome @各行其道@
Короче говоря, надо просто изучить http://www.freedesktop.org/software/sys … .unit.html и всё должно разъясниться :)
Вот бы ещё на русском языке это найти…
lampslave
Короче говоря, надо просто изучить http://www.freedesktop.org/software/sys … .unit.html и всё должно разъясниться :)
Вот бы ещё на русском языке это найти…
Да, надо почитать. Ох уж эта новая systemd,- по мне, так очень интересно!
А у lampslave следующее сообщение будет 1000-ым! ))
Arch awesome @各行其道@
бефо и афтэ работают только в том случае, если перечисленные в нем юниты и юнит в котором оно перечислено запускаются логически одновременно. Для того чтобы явно объявить очередь юнита следовать после какого то, юзают связки after+wants/require. Как я делаю в таких случаях, сначала меняю require на want , чтобы юнит запустился наверняка, если он заработал так и оставляю, если чтото не так, то или он запускается, но не тогда когда нужно, или проблема не в юните, а в совте. Для отладки достаточно внимательно смотреть на загрузку системы и уловить свой юнит, чтобы понять приблизительно, где он вылетает, а systemctl status даст Вам остальные детали, происходившие с процессами юнита.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
Ага, значит они только порядок помогают разруливать, а не зависимости. Ок, буду знать, спасибо.

сначала меняю require на want , чтобы юнит запустился наверняка
Наверное, наоборот, ибо
Wants=
A weaker version of Requires=

deniolp
В общем, на всякий случай лучше, наверное, как-то так прописать:
Wants=network.target
Before=network.target
After=systemd-udev-settle.service
Requires=systemd-udev-settle.service
systemd-logind.service я вроде как предлагал как крайний случай, пригодный только для отладки, потому что это не обнаружение девайсов, а логин юзера в систему, он значительно позже остальных работает.
Хорошо, спасибо! Я еще почитаю внимательно и поэкспериментирую с записями этими. Потом напишу о результатах. =)
Arch awesome @各行其道@
такое чувство, что я с lampslave говорим одновременно , но о разном))) .
Давайте я смысл передам моим словам более точнее.
[Unit]
After=unit2.service
Want=unit2.service
Мой юнит будет добавлен в пуск после того как будет запущен unit2, независимо от того, как он завершится.
[Unit]
After=unit2.service
Мой юнит будет пущен в любое время, которое выберет механизм systemd, и только в том случае, если это время совпадает со временем пуска unit2.service , механизм вызывет задержку, чтобы пропустить “вперед” unit2.service
[Unit]
After=unit2.service
Requires=unit2.service
Мой юнит будет пущен только после того, как будет запущен unit2.service и только в том случае, если код выхода у него будет успешным иначе игнорировать мой юнит.
===========
Моя (видимо неправильная) цепь рассуждений: они убрали requires и оно заработало, вывод - какойто процесс неотработал должным образом, что повлияло на работу юнита dhcp. Странно, но такое возможно.(а значит изменять юнит под ситуацию, дело правое и даже нужное)
Вот на что я акцентировал внимание, если есть подозрения, я бы сначала посмотрел бы что из списка зависимостей юнита не отработало(еслт конечно оно есть), может проблема в том месте, а не в дефолтном юните.
Наверное, наоборот, ибо
Wants=
A weaker version of Requires=
Все правильно, wants как вы указали, слабая версия requires, но именно это нам и нужно, чтобы соблюсти порядок пуска(см. мысли выше), который не так просто был прописан через директиву requires, если мы просто удалим requires порядок исчезнет(грубо говоря) и тогда причин “не заработать” у юнита только прибавится, что усложнит диагностику проблемы… Извините если я подсказывал, что называется не по смыслу, если оно так есть. Просто кажется со стороны чтото подобное “Да, спасибо Вы правы, но Вы не правы” xD
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
Спасибо за подробное разъяснение :)

сначала меняю require на want , чтобы юнит запустился наверняка
А, ну вот теперь-то я понял, почему так, а не наоборот :) Она, получается, не “слабая”, а “менее строгая”, раз позволяет своему юниту стартовать вне зависимости от того, нормально отработал другой или нет.

только в том случае, если это время совпадает со временем пуска unit2.service , механизм вызывет задержку, чтобы пропустить “вперед” unit2.service
Это как раз и есть моё “значит они только порядок помогают разруливать, а не зависимости”.

если мы просто удалим requires порядок исчезнет(грубо говоря) и тогда причин “не заработать” у юнита только прибавится, что усложнит диагностику проблемы
Проблема как раз в том, что никакого requires там изначально не было, и нам надо было просто правильно прописать, чтобы dhcpcd запускался после того, как udev найдёт все железки.
а пардон, я подумал что вы его удалили, поэтому и поинтересовались правильно ли это, косяк, надо топы с начала читать,а не с последней страницы)))
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
 
Зарегистрироваться или войдите чтобы оставить сообщение.