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:
-
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á. -
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?