Terminál přes sériový port na Linux a GRUB

#287

V tomto příkladu uvažujeme, že nastavení provádíme pro sériový port /dev/ttyS0 s rychlostí přenosu 115200 Bd, délka slova 8 bitů, bez parity a s jedním stop bitem.

Seznam dostupných sériových portů:

dmesg | grep ttyS

Vše děláme jako root:

sudo -i

Upravit soubor /etc/default/grub:

GRUB_DEFAULT=0
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR=\`lsb_release -i -s 2> /dev/null || echo Debian\`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200"
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

--unit=0 v nastavení GRUB_SERIAL_COMMAND může mít hodnoty 0 až 3, s tím, že tato hodnota má ovlivňovat pořadí sériového portu. Většinou funguje vše s hodnotou 0.

Uděláme update /boot/grub/grub.cfg:

update-grub

nebo

grub-mkconfig -o /boot/grub/grub.cfg

a

reboot

Pokud je vše správně nastaveno, tak po restartu počítače by se měl zobrazovat průběh bootování Linuxu…

Možné komplikace:

  1. Pokud se v terminálu nezobrazuje menu zavaděče GRUB (stejně jako na monitoru), tak je možné že to blokuje nastavení BIOS počítače. Jedná se o nastavení s názvem Secure Boot. Po vypnutí Secure Boot v BIOS počítače by se mělo v terminálu po startu počítače objevovat i menu zavaděče GRUB.
  2. Pokud se po naběhnutí Linuxu v terminálu neobjeví login uživatele, potom neběží služba getty pro sériový port. Toto nastavíte příkazem:
sudo systemctl enable serial-getty@ttyS0.service

a

sudo reboot

Upozornění: V případě, že máte nastaven přístup na Linux pomocí sériového portu a ten se fyzicky z počítače odstraní (např. změnou nastavení v BIOS), tak to pravděpodobně způsobí zatuhnutí bootování Linuxu. Pokud taková situace nastane, tak je možnost upravit parametry spuštění Linuxu v GRUB.