Don't freeze system when /etc/mtab is not a symlink
log_error("/etc/mtab is not a symlink or not pointing to /proc/self/mounts. "
"This is not supported anymore. "
"Please replace /etc/mtab with a symlink to /proc/self/mounts.");
freeze_or_reboot();
A jináč bych k tomu ještě podotknul, že před 10+ lety v dobách toho hrozně fuj nemoderního rozbitého initu se věci řešily takhle - přičemž ten systém samozřejmě normálně nabootoval a vyflusnul návod, jak to opravit.
Za dob tzv. moderních Lennartovin se věci řeší tak, že čůráčí hlava zcela bezdůvodně rozbije boot, bez jakékoliv možnosti rescue shellu nebo čehokoliv podobného, a vydává to za přednost. To kdyby tehdy někoho napadlo, tak druhý den už byl od CVS odříznut, protože takový magor bez mozku tam prostě nemá co dělat.
To je tedy pokrok, přátelé.
Četl jsi tu diskusi pod tím? Je tam vysvětlené, proč to systemd dělalo. util-linux v určitých verzích bez symlikového /etc/mtab shodí systemd ve chvíli, kdy se pokusí systemd něco mountovat. Takže asi těžko umožní systemd opravovat /etc, když v té době je /etc read-only. Jakmile tohle bylo opravené v util-linux, tak to systemd už nedělá.
Je to tam vysvětleno. Já jsem si to vysvětlení nevyvěštil z křišťálové koule.
Robustní návrhy čeho? Když nejde udělat remount, tak stejně nic neuděláte.
Samozřejmě, proto nahlásil chybu v util-linux, a dokud to nebylo opravené, tak tam přidal tohle, což vám alespoň řekne, co se děje.
A proč by to do <|> měl někdo remountovat? Stačí ten soubor prostě ignorovat, tak, jako ho již léta ignoruje všechno ostatní. Co mi to jako řekne? Že LP je pyjus čůrus maximus? To už vím dávno. Jinak mě ta informace vůbec nezajímá, mě zajímá to, aby ten systém nabootoval, coz jaksi kdyby bylo hlavním úkolem initu, než z toho ten patlal udělal zblemcaninu s půl milionem řádků.
Už jsem na to jednou odpovídal. Pokud se ta sračka nechá shodit takovou hovadinou, tak je prostě rozbitá. Opět, znova a pomilionté - NIC tam pořádně nefunguje. Žádný fallback, žádné rozumné priority, nic. A mimochodem, tohle celé je úplný nesmysl. On se ve skutečnosti žádný pád nekoná. Ono když si ten bug člověk přečtě, tak tam dotyčný vývojář z Debianu jasně píše, že tam již drahnou dobu mají unit, který to v případě opravuje na symlink. Nic se neshazovalo, nic se nedělo. Rozbilo se to poté, co tam ta vypatlaná hlava Poettering v nové verzi přidala tu kontrolu, která zavolala výtečnou funkci zamrzni().
Ta utilita, která to opravuje na symlink, je v systemd ;-) Jenže ta utilita jaksi nemůže změnit soubor na read-only mountu, a remount na read-write nejde, protože mtab není symlink. A rozbité to bylo všude, kde to nebyl symlink, se systemd to mělo společného jen to, že systemd nahlásilo, o jaký problém jde.
Přečti si ten bug ještě desekrát. A ne, není v systemd. Debian si na to napsal vlastní. Která se spustila POTÉ, co už nic read-only nebylo. Systém normálně bootoval, nic se nehroutilo, nerozbíjelo, nekolabovalo, data nemizela.
Pak přidala kokotí hlava do early bootu v systemd check, který ve fázi, kdy nic opravit nejde, začal toto prodce inteligentně kontrolovat a navrch místo toho, aby aspoň hodil uživatele do rescue shellu, tak místo toho volá funkci zamrzni. Do té doby nikde žádný problém nebyl.
Už mě to tvoje blití z hladu nebaví.
To jistě. Ale nebudu chybu zhoršovat tím, že implementuju funkci "vyfakuj uživatele a zamrzni". Pokud trpím hodně velkým mesiášským syndromem, tak ho můžu dumpnout do rescue shellu. Ale NIKDY žádný soudný člověk kvůli takové krávovině neřešitelným způsobem nerozbije boot systému. To udělá jenom úplný magor. Ta celá funkce reboot_or_freeze() je úplně chorá, to je prostě diagnóza. To můžu udělat, když mám totálně rozbitý filesystém a nechci zlikvidovat zbytky dat. Ano, tam to teoreticky může mít smysl, pokud není jiné řešení. Ale NIKDY ne kvůli tomu, že se mi nelíbí symlink.
Objektivne neexistuje duvod, proc kvuli takove prkotine nenabootovat cely system... to je jeden z cele rady problemu, ktere systemd doprovazi. Ten symlink muze byt (teoreticky) prepsan cimkoliv - takze muzou vznikat akorat nemila prekvapeni. Je vazne rozdil mezi stavem, kdy to funguje "podivne" a kdy to nenabootuje (kvuli kravine) vubec.
To vůbec nemluvím o tom, jak někoho může napadnou vymyslet funkci "zamrzni". Naco bych toho uživatele aspoň dropnul do rescue shellu, že. To je zbytečné, koho by to trápilo, že dotyčný je totálně v řiti. Prostě smůla, nelíbí se mi soubor, tak zamrznu. Skutečně designed by magor.
Computer Hung by Attempt to Turn-on Non-Existent KBD Light
Summer day, summer day, summer day see wheats! Ta dam, ta dam, tadada týdadam...
No to teda. Člověk aby se bál připojit myš - to bude totiž určitě řešeno stejně genitálně.
Prosil se ho o to ten, kdo to tam do distribuce přidal. Mě třeba dost vyhovuje, když po bootu nemusím nastavovat půlku HW znovu. Na Debianu to sysvinit AFAIK dělal taky. Pokud se ti to nelíbí, je tam jeden jasně dokumentovaný parametr, jak to vypnout:
systemd.restore_state=0
Mimochodem fakt pokládáš za chyba Potteringa, že vytuhne dokumentované volání jádra? A po něm chceš, aby jeho software fungoval bezchybně?
Za chybu LP pokládám, že kvůli tomu vytuhne boot. Když to neumí udělat tak, aby se to nestalo, tak ať se do toho prostě nesere. Ať nenastavuje podsvícení, DPI myši, jas displeje, a nechá to nadále utilitám, co to umí dělat lépe a nerozbijí přitom boot.
A to je celé. Tečka. Konec.
Ale on ten systém je normálně funkční i bez posvícení klávesnice. To není problém, kvůli kterému by se měl přestat bootovat. Pokud něco volám tak debilně, že kvůli tomu bootovat přestanu, tak jsem prostě debil, no. Jinak normální člověk, pokud není schopen poznat, jestli ta klávesnice podsvícení má nebo ne, tak se to nesnaží "inteligentně" zapínat.
systemd spouští služby paralelně. Ten backlight má ale nastavené, že to musí skončit před sysinit.target, a tak na něj systemd čeká.
Mimochodem, opravdu to úplně vytuhne? V nastavení té služby vidím TimeoutSec=90s, takže pokud vytuhne, tak po 90 sekundách na ní systemd přestane čekat a pokračuje.
Wow, uzasne! Takze ono to startuje veci paralelne, aby mi to usetrilo tri vteriny pri bootu (sporne, kdyz nemam SSD) a pak to boot natahne o 90 vterin timeoutu kvuli nejake blbe naprogramovane picovine, ktera je z jakehosi uplne neznameho duvodu implementovana v initu a ne spoustena napriklad z bashrc. Tedy v optimalnim pripade, kdy to nezavola mrazici funkci.
Kecy! Takže místo toho aby dodělali do systemd patřičné kontroly aby to nespadlo při nevhodném použití klientem (util-linux v tomto případě) tak udělají takovou megaprasárnu? Navíc neúčinnou v případě že dojde ke změně /etc/mtab mezi tou agresivní kontrolou (=megaprasárnou) při bootu a skutečným použitím? To se snad nedá brát vůbec nijak jinak než jako další důkaz že systemd je vyvíjený bandou nekompetentních debilů!
Aha. NIC. Takže při bootu je hrozně důležité hlídat něco, co když po bootu následně změním, tak se nestane NIC. Je to tak důležité, že je naprosto kritické vytuhnout a udělat na uživatele middle finger salute. Ono totiž soubor, co nedělá NIC, je tak kriticky škodlivý, že to uživatel prostě NESMÍ ani opravit přes rescue shell. Designed by magor.
Ano, četl. Správce systemd je jako diagnóza a vysvětlení zcela postačující. Úvaha je asi stejně hodnotná, jako kdyby lékař kontroloval funkčnost přístrojů tím, že se uvidí, jestli to pacienta zabije nebo ne, pokud ano, tak je přístroj vadný a opravíme ho.