kexec používám od dob jader 2.6.x, ale funguje mi to dobře jenom někde. Obecně je problém s tím, že na rozdíl od zavedení jádra po POST, kdy jsou periferie v definovaném stavu, jsou u zavedení nového jádra přes kexec ve stavu, v jakém je ponechaly jejich ovladače. Na první pohled to bývá rozpadlá grafika, ale v dmesg se pak člověk kolikrát dozví další překvápka a třeba taková síťovka (myslím, že to byl nějaký starší Broadcom) s nemožností zavést její firmware, sice je vidět, ale už nejde nahodit do stavu up, takže to pak člověka stejně donutí projít plným restartem.
Tezko rici hlavne u zařízení které musí fungovat už před bootem OS je to složité. Po bootu se jeste treba nahrazuje aktualni firmware. Musi se prevzit hodnoty jinam. Dnesni hw je nechutně složitý proti tomu pred 20ti lety.Třeba ta grafika nebo řadiče. I ty hloupe stovky mají dneska svůj nezávislý management
který funguje třeba i po vypnutí.
Nedivil se že spousta hw to nemá odladene. Je to další test který někdo musí udělat.
25. 11. 2020, 14:11 editováno autorem komentáře
Jo, souhlas, ale narazil jsem kdysi na nějaké I/O karty (asi SDLC, už fakt nevím), které už jednou zinicializované nešly softwarově zinicializovat znovu - prostě potřebovaly pro inicializaci "šťouch" ze sběrnice v podobě signálu RESET. Byla to docela pakárna, protože některé základní desky posílaly kartám aktivní RESET i při warm restartu (Ctrl+Alt+Del), ale jiné to dělaly jen po zapnutí nebo zmáčknutí resetu na bedně.
Inicializovat zařízení vždy do počátečního stavu je snadné, ale ne vždy žádoucí. Třeba problikávání obrazovky při přepínání grafických módů už dnes není považováno za normální součást bootu počítače. Stejně tak nepotěší reset USB sběrnice – při bootu si rozsvítím klávesnici, zapnu Num Lock, načež se resetuje USB a vše zase zhasne.
@Filip Jirsák
Nikdo neříká, že to musíte inicializovat hloupě - tedy resetovat vše "na nulu" a bez ohledu na aktuální stav. Sdělení je o tom, že na konci postupu by mělo být zařízení v souladu se stavem, o kterém ví systém a může s tím dál pracovat. Inicializace klidně může přeskočit kroky vedoucí k problikávání obrazovky - když ovšem víc co dělá.
Já jsem nepsal nic proti uvedení zařízení do definovaného stavu, psal jsem právě o inicializaci.
Proto jsem na to upozornil, protože inicializace nutně neznamená vše resetovat na nulu a z nuly do kýženého stavu. Pokud to ten ovladač umí, může klidně převzít stavy, o kterých si je jistý, že jsou správně. Ono i to nepřeblikávání v moderních OS je "inicializace", jen je inteligentní.
Já si pod inicializací představuju uvedení do výchozího stavu.
Hardware je ve výchozím stavu po spuštění. To je dáno výrobcem, firmwarem, jeho revizí, ... Nebo taky je ve výchozím (nějakém) stavu při kexec.
Incializace zajišťuje naopak cílový stav - tedy stav, na který dokáže navázat operační systém svojí další prací.
Chyba je, pokud se ovladač spoléhá na to, jaký výchozí stav je před inicializací.
Ale jasně, je to slovíčkaření, myslím, že si v jádru rozumíme.