GNU/Linux >> Znalost Linux >  >> Linux

Můj proces byl zabit, ale nerozumím oznámení jádra

SAK v tomto případě skutečně znamená Secure Attention Key . Zpráva, kterou vidíte, je zpráva jádra definovaná v drivers/tty/tty_io.c. SAK je kombinace kláves, která zajišťuje bezpečné přihlášení uživatele na konzoli. V Linuxu to SAK zajišťuje zabitím všech procesů připojených k terminálu, na kterém je SAK vyvolán. Očekává se, že init poté restartuje proces důvěryhodného přihlášení jako getty následuje login nebo X server pomocí správce zobrazení .

Uvedené PID jsou skutečně PID vláken vaší aplikace CX_SC3 které byly zabity SAK.

fd#n opened to the tty znamená, že proces/vlákno, které bylo zabito, mělo deskriptor souboru n otevřen na terminálu, na kterém byl vyvolán SAK.

V Linuxu existují dva způsoby, jak vyvolat SAK:

  1. Prostřednictvím magického klíče SysRq - obvykle Alt +SysRq +K (virtuální terminál) nebo Break K (sériová konzole). Toto není váš případ, protože jste se již pokusili deaktivovat magické SysRq od echo 0 > /proc/sys/kernel/sysrq a odeslání Přestávky K náhodná sekvence je nepravděpodobná.

  2. Prostřednictvím definované sekvence kláves (virtuální terminál) nebo signálu přerušení (sériová konzole). Dostupnost SAK na sériové konzoli je řízena setserial .

Signál přerušení na sériové lince je nepřetržité odesílání hodnot mezer po dobu delší, než je doba odesílání znaků (včetně start, stop a paritních bitů). Ve vašem případě je vysoce pravděpodobné, že se stav signálu Break objeví během vypínání vašeho hostitelského počítače. Zkuste prosím vypnout SAK na vašem sériovém portu na cílovém zařízení o setserial :

setserial /dev/ttyS0 ^sak

Stav funkčnosti SAK na sériovém portu můžete zkontrolovat pomocí setserial -g /dev/ttyS0 . Po zapnutí se zobrazí SAK po Flags: . Pro automatické nastavení volby po startu viz spouštěcí skripty, které jsou na systémech BusyBox obvykle /etc/init.d/rcS a /etc/rc.d/S* nebo zaškrtněte /etc/inittab pro další možnosti.


Problém se mi podařilo vyřešit pomocí paboukovy odpovědi. Řešení založené na kódu, které jsem nakonec objevil a které umožňuje SAK příznak, který má být nastaven/deaktivován na sériovém portu při otevírání pomocí uživatelského rozhraní API lze nalézt na stackoverflow zde Jak mohu deaktivovat možnost SAK sériového portu na Linuxu pomocí uživatelského rozhraní API?


Linux
  1. Všechno nejlepší k narozeninám linuxovému jádru:Jaké je vaše oblíbené vydání?

  2. Životní cyklus testování linuxového jádra

  3. Maximální hodnota ID procesu?

  1. Linux – Co by se stalo, kdyby pevný disk selhal, zatímco linuxové jádro běželo?

  2. Jaký je rozdíl mezi Nepreemptivním, Preemptivním a Selektivním Preemptivním jádrem?

  3. Používá jádro Linuxu 3.x plánovač procesů CFS?

  1. Analyzujte linuxové jádro pomocí ftrace

  2. Řešení problému roku 2038 v linuxovém jádře

  3. Jak si Linux zachovává kontrolu nad CPU na jednojádrovém stroji?