Hoe regel ik een serial console in een Debian-distro? 1. Vind je tty Gebruik dmesg: Voor USB PL2303 en consorten: dmesg | grep ttyUSB* Voor ingebouwde poorten: dmesg | grep ttyS* Het resultaat lijkt op: [ 0.304971] 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A [ 0.433061] 00:04: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A Onthoud het tty-nummer voor stap 3. 2. Configureer serial-getty@.service Open het service-bestand met VIM (sudo) /lib/systemd/system/serial-getty@.service Zoek de regel die begint met ExecStart en voeg vooraan een hekje (#) toe. Vervang de regel door onderstaande: ExecStart=-/sbin/agetty -L --long-hostname 9600 %I vt100 Wil je een eigen login banner gebruiken? Type dan het volgende: ExecStart=-/sbin/agetty -L --long-hostname --issue-file (pad naar issue file) 9600 %I vt100 Vergeet niet de wijzigingen op te slaan. N.B.: - De baud-rate (9600) is wat werkt met de DEC VT102 en Apple IIe en IIc. De VT102 zou 19200 moeten kunnen halen, maar werkt dan niet stabiel. - VT100 of VT102 is om het even, in de praktijk maakt het geen verschil. MODEM.MGR voor de Apple 2 ondersteunt de VT220 middels een extra module. De VT220 is volledig backwards compatible met de VT100/VT102. In alle documentatie die ik kan vinden staat alleen $TERM, ook dat zou moeten werken. - Issue file beperking tot twee of drie regels 3. Registreer de service Laad de daemon opnieuw om wijzigingen te detecteren (sudo): systemctl daemon-reload Bij gebruik van een PL2303 USB naar serieel, registreer (sudo): systemctl enable serial-getty@ttyUSB0.service Bij gebruik van een fysieke poort: systemctl enable serial-getty@ttyS0.service (en voor ttyUSB1/ttyS1 bij de volgende etc.) 4. Start de service en test login Start de service als volgt (sudo): service start serial-getty@ttyUSB0.service De inlogprompt moet nu verschijnen op het scherm van de aangesloten terminal. Crasht de sessie, dan kun je de service herstarten met (sudo): service restart serial-getty@ttyUSB0.service 5. XON/XOFF voor SSH-verbindingen Maak je vanaf de host waaraan je terminal is verbonden, een verbinding naar een andere host via ssh, dan wordt XON/XOFF uitgeschakeld (raw mode). Om overflow op de terminal te voorkomen, moet dit weer ingeschakeld worden. Op de remote host, maak het bestand ~/.ssh/config aan met VIM (wellicht moet je de map .ssh zelf aanmaken): touch ~/.ssh/config Open het in VIM en voeg onderstaande in: PermitLocalCommand yes LocalCommand sleep 5 && stty ixon -F /dev/tty & Sla de wijzigingen op. De ssh client zal het commando uitvoeren zodra de sessie verbonden is. Vanwege de 'sleep' kan het zijn dat het inlogscherm er verfomfaaid uit ziet. Nadat de 5 seconden zijn verlopen, mogen er geen fouten of overflows meer voorkomen (test dit met een ls -la op een map met veel bestanden). 6. XON/XOFF en VIm Sinds recent (sinds in ieder geval maart 2024) is er een wijziging doorgevoerd in VIm. waardoor bij het openen van VIm de terminal in 'raw mode' wordt gezet. Hierdoor komt de fysieke terminal in de problemen, omdat de inkomende bitstream een bufferoverloop veroorzaakt. De enige methode die ik heb gevonden die werkt is de volgende: 1. Open VIm zonder document (VIm gaat direct naar Visual Block modus) 2. Verlaat Visual met ESC 3. Type commando ':! stty ixon -F /dev/tty &' 4. Type commando ':e bestandsnaam' waarbij bestandsnaam de naam van het bestand is dat je wilt bewerken Deze workaround werkt alleen 100% correct wanneer je VIm gebruikt op de Linux-machine waarop de terminal direct is aangesloten. Via telnet of ssh neemt de betrouwbaarheid aanzienlijk af. EDIT 30-10-2025: Op het moment van schrijven gedraagt VIM op de remote machine zich zoals het hoort, mits de workaround onder punt 5 (XON/XOFF voor SSH-verbindingen) is uitgevoerd. Dit geldt ook voor TELNET, waarvoor geen workaround bestaat. Lokaal (op de host waar de terminal mee verbonden is) is deze workaround nog steeds vereist. Wat er tussentijds is gewijzigd, is mij niet bekend. VIm-versie is 9.1.697 op het moment van schrijven. Bronnen: https://www.rogerirwin.co.nz/linux-open-source/enabling-a-serial-port-console https://unix.stackexchange.com/questions/655592/does-xo-xoff-flow-control-transmit-through-multiple-terminal-session-hops https://www.reddit.com/r/sysadmin/comments/1b8yt7l/vim_on_debian_via_dec_vt102_serial_terminal