27.3. Terminals

Bijgedragen door Sean Kelly.

WaarschuwingVanaf FreeBSD 8.0 zijn de seriële poorten hernoemd van /dev/cuadN naar /dev/cuauN en van /dev/ttydN naar /dev/ttyuN. FreeBSD 7.X gebruikers moeten de documentatie aanpassen naar deze wijzigingen.

Terminals bieden een handige en goedkope manier om een FreeBSD systeem te benaderen als de console van of een netwerk naar een computer niet beschikbaar is. Deze sectie beschrijft hoe terminals met FreeBSD te gebruiken.

27.3.1. Types terminals en ze gebruiken

De originele UNIX®-systemen hadden geen consoles. In plaats daarvan werd er aangemeld en werden programma's via terminals gedraaid die verbonden waren met de seriële poorten van een computer. Het is goed vergelijkbaar met het gebruik van een modem en terminalsoftware om op een systeem op afstand in te bellen en werk te doen wat alleen uit tekst bestaat.

De consoles van hedendaagse PC's kunnen grafische uitvoer van hoge kwaliteit produceren, maar de mogelijkheid om een aanmeldsessie op een seriële poort tot stand te brengen bestaat nog steeds op bijna elk hedendaags UNIX-achtig systeem. FreeBSD is geen uitzondering. Door gebruik te maken van een terminal die aangesloten is op een ongebruikte seriële poort, kan er aangemeld worden en kan bijna elk tekstprogramma gedraaid worden dat normaalgesproken op de console of in een xterm-venster in het X Window-systeem gedraaid wordt.

Een zakelijke gebruiker kan vele terminals aan een FreeBSD-systeem koppelen en deze op de bureaus van medewerkers neerzetten. Een thuisgebruiker kan een reservecomputer, zoals een oudere IBM PC of een Macintosh®, met de terminal verbinden met een krachtigere computer die FreeBSD draait. Op deze manier kan wat anders een computer voor een enkele gebruiker zou zijn, worden veranderd in een krachtig systeem voor meerdere gebruikers.

Er zijn drie soorten terminals voor FreeBSD:

De overige subsecties beschrijven elk van deze soorten.

27.3.1.1. Domme terminals

Domme terminals zijn gespecialiseerde stukken hardware die computers door seriële kabels kunnen verbinden. Ze worden “dom” genoemd omdat ze alleen maar tekst kunnen weergeven, verzenden en ontvangen. Het is niet mogelijk om programma's op deze terminals te draaien. De computer waar ze op zijn aangesloten heeft de benodigde kracht om tekstverwerkers, compilers, e-mail, spellen, enzovoort te draaien.

Er zijn honderden soorten domme terminals gemaakt door vele fabrikanten, inclusief de VT-100 van Digital Equipment Corporation en de WY-75 van Wyse. Bijna elke soort werkt met FreeBSD. Sommige terminals uit de hoogste klasse kunnen zelfs grafisch weergeven, maar slechts bepaalde softwarepakketten kunnen gebruik maken van deze geavanceerde mogelijkheden.

Domme terminals zijn ook populair in werkomgevingen waarin gebruikers geen toegang tot grafische applicaties nodig hebben, zoals die door het X Window systeem worden geleverd.

27.3.1.2. PC's die als terminal dienen

Indien een domme terminal net genoeg mogelijkheden heeft om tekst weer te geven, te verzenden en te ontvangen, dan kan zeker elke reserve-PC een domme terminal zijn. De enige benodigdheden zijn de juiste kabel en wat terminal-emulatie software om op de computer te draaien.

Zo'n opstelling is populair in thuissituaties. Indien bijvoorbeeld persoon A werkt op de console van een FreeBSD-systeem, kan persoon B wat alleen-tekst-werk verrichten op een minder krachtige PC die als terminal met het FreeBSD-systeem verbonden is.

Er zijn minstens twee applicaties beschikbaar in het basissysteem van FreeBSD welke gebruikt kunnen worden om te communiceren door een seriële connectie: cu(1) en tip(1).

Om een connectie op te zetten vanaf een systeem dat FreeBSD draait naar een seriële connectie van een andere machine kan het volgende gedaan worden:

# cu -l serial-port-device

Hierbij is “serial-port-device” de naam is van de speciale apparaatnode die gebruikt wordt voor de seriële poort op het systeem. Deze bestanden heten /dev/cuauN.

Het “N” gedeelte van de apparaatnaam is het nummer van de seriële poort.

Opmerking: Let op, de apparaatnummers beginnen in FreeBSD bij nul en niet bij één (zoals ze bijvoorbeeld wel doen bij MS-DOS® gebaseerde systemen). Dit betekend dat wat MS-DOS gebaseerde systemen COM1 noemt bij FreeBSD meestal /dev/cuau0 genoemd wordt.

Opmerking: Sommige mensen preferen andere programma's die beschikbaar zijn via de Ports Collectie. De ports bevatten een aantal programma's die hetzelfde kunnen werken als cu(1) en tip(1), zoals comms/minicom.

27.3.1.3. X-terminals

X-terminals behoren tot de meest geavanceerde terminalsoort die beschikbaar is. In plaats van dat ze verbinding maken met een seriële poort, maken ze meestal verbinding met een netwerk zoals Ethernet. In plaats van dat ze alleen tekstapplicaties weergeven, kunnen ze elke X-applicatie weergeven.

X-terminals worden slechts voor de compleetheid geïntroduceerd. Dit hoofdstuk behandelt echter niet de installatie, het instellen of het gebruik van X-terminals.

27.3.2. Instellen

Deze sectie beschrijft wat in te stellen op een os;-systeem om een aanmeldsessie op een terminal mogelijk te maken. De sectie gaat ervan uit dat er al een kernel is ingesteld met ondersteuning voor een seriële poort waar de terminal op is aangesloten en dat deze verbonden is.

In Hoofdstuk 13 staat beschreven dat het proces init verantwoordelijk is voor het beheer van alle processen en voor de initialisatie tijdens het opstarten van een systeem. Eén van de taken die door init wordt uitgevoerd is het lezen van het bestand /etc/ttys en het starten van een proces getty op de beschikbare terminals. Het proces getty is verantwoordelijk voor het lezen van een aanmeldnaam en het starten van het programma login.

Voer volgende stappen als root uit om terminals voor een FreeBSD-systeem in te stellen:

  1. Voeg een regel aan /etc/ttys toe voor de ingang in de map /dev voor een seriële poort als deze er nog niet is;

  2. Specificeer dat /usr/libexec/getty uitgevoerd moet worden op de poort en het juiste type getty van het bestand /etc/gettytab;

  3. Specificeer het standaard terminaltype;

  4. Stel de poort in op “on”;

  5. Specificeer of de poort “secure” dient te zijn;

  6. init dient /etc/ttys opnieuw te lezen.

Als optionele stap kan het wenselijk zijn om een eigen type getty aan te maken voor stap 2 door een ingang in /etc/gettytab te maken. Dit wordt hier niet beschreven. Meer informatie staat in de hulppagina's gettytab(5) en getty(8).

27.3.2.1. Een regel aan /etc/ttys toevoegen

Het bestand /etc/ttys bevat alle poorten op een FreeBSD-systeem waar aanmelden is toegestaan. De eerste virtuele console ttyv0 staat bijvoorbeeld in dit bestand vermeld. Met deze vermelding kan er op de console worden aangemeld. Dit bestand bevat ook vermeldingen voor de andere virtuele consoles, seriële poorten en pseudo-tty's. Vermeld voor een vast aangesloten terminal de /dev-regel van de seriële poort zonder het /dev-gedeelte (/dev/ttyv0 wordt bijvoorbeeld ttyv0).

Een standaard FreeBSD installatie bevat een bestand /etc/ttys met ondersteuning voor de eerste vier seriële poorten: ttyu0 tot en met ttyu3. Indien er aan een van deze poorten een terminal wordt gekoppeld is het niet nodig om een regel toe te voegen.

Voorbeeld 27-1. Terminalregels aan /etc/ttys toevoegen

Stel dat er twee terminals verbonden moeten worden met een systeem: een Wyse-50 en een oude 286 IBM-PC waarop Procomm terminalsoftware draait dat een VT-100 terminal emuleert. De Wyse wordt met de tweede seriële poort verbonden en de 286 met de zesde seriële poort (een poort op een meerpoortige seriële kaart). De overeenkomstige regels in /etc/ttys zien er als volgt uit:

ttyu1(1)  "/usr/libexec getty std.38400"(2)  wy50(3)  on(4)  insecure(5)
ttyu5   "/usr/libexec/getty std.19200"  vt100  on  insecure
(1)
Het eerste veld specificeert normaalgesproken de naam van het speciale terminalbestand zoals dat in /dev staat.
(2)
Het tweede veld bevat het commando dat voor deze regel uitgevoerd moet worden, meestal is dit getty(8). getty initialiseert en opent een lijn, stelt een snelheid in, vraagt om een gebruikersnaam en draait daarna het programma login(1).

Het programma getty accepteert één (optionele) parameter op de opdrachtregel, het type getty. Een type getty stelt karakteristieken op een terminallijn in, zoals de bps-snelheid en de pariteit. Het programma getty leest deze karakteristieken uit het bestand /etc/gettytab.

Het bestand /etc/gettytab bevat een hoop regels voor zowel oude als nieuwe terminallijnen. In bijna alle gevallen werken de regels die met de tekst std beginnen voor vast aangesloten terminals. Deze regels negeren pariteit. Er is een std-regel voor elke bps-snelheid van 110 tot en met 115200. Uiteraard kunnen eigen regels aan dit bestand worden toegevoegd. De hulppagina gettytab(5) biedt meer informatie.

Zorg er tijdens het instellen van het type getty in het bestand /etc/ttys voor dat de communicatie-instellingen op de terminal ermee over komen.

In bovenstaand voorbeeld gebruikt de Wyse-50 geen pariteit en maakt deze verbinding met 38400 bps. De 286 PC gebruikt geen pariteit en maakt verbinding met 19200 bps.

(3)
Het derde veld bevat het type terminal dat normaalgesproken is verbonden met de tty-lijn. Voor inbelpoorten wordt voor dit veld normaalgesproken unknown of dialup gebruikt omdat gebruikers bijna elk type terminal of software gebruiken om in te bellen. Voor terminals met een vaste aansluiting verandert het type terminal niet, dus kan in dit veld een echt terminaltype uit het databasebestand termcap(5) worden gebruikt.

In bovenstaand voorbeeld gebruikt de Wyse-50 het echte terminaltype, terwijl de 286 PC die Procomm draait zo ingesteld wordt dat deze een VT-100 emuleert.

(4)
Het vierde veld geeft aan of de poort aan moet staan. Indien hier on staat, start init het programma in het tweede veld, getty, op. Indien hier off staat wordt getty niet uitgevoerd en kan er daarom niet op de poort worden aangemeld.
(5)
Het laatste veld geeft aan of de poort veilig is. Indien deze poort als veilig is aangemerkt betekent dit dat er genoeg vertrouwen is om de gebruiker root (of iedere andere account met een gebruikers-id 0) aan te laten melden via deze poort. Onveilige poorten staan aanmelden door root niet toe. Meld op onveilige poorten eerst aan een account zonder rechten en gebruik daarna su(1) of een soortgelijk mechanisme om rootrechten te verkrijgen.

Het wordt sterk aangeraden om “insecure” zelfs voor terminals achter gesloten deuren te gebruiken. Het is vrij gemakkelijk om aan te melden en su te gebruiken indien rootrechten nodig zijn.

27.3.2.2. init forceren om /etc/ttys opnieuw te lezen

Stuur na het maken van de benodigde veranderingen aan het bestand /etc/ttys een SIGHUP-signaal (ophangen) naar het proces init om het te dwingen het instellingenbestand opnieuw te lezen:

# kill -HUP 1

Opmerking: init is altijd het eerste proces dat op een systeem gedraaid wordt, daarom heeft het altijd PID 1.

Indien alles juist is ingesteld, alle kabels juist zijn aangesloten en alle terminals aanstaan, draait er op elke terminal een proces getty en is er een aanmeldprompt zichtbaar op de terminals.

27.3.3. Problemen met een verbinding oplossen

Zelfs met de grootste aandacht voor details kan er nog steeds iets mis gaan met het instellen van een terminal. Hier is een lijst van symptomen en mogelijke oplossingen.

27.3.3.1. Er verschijnt geen aanmeldprompt

Controleer of de terminal is aangesloten en aan staat. Indien het een PC is die als terminal fungeert, controleer of de terminalemulatiesoftware op de juiste seriële poort draait.

Controleer of de kabel stevig verbonden is met zowel de terminal als de FreeBSD computer en dat de kabel van het juiste soort is.

Controleer of de terminal en FreeBSD dezelfde bps-snelheid en pariteit gebruiken. Indien de terminal een beeldscherm is, controleer dan of de video- en helderheidsniveaus zijn ingesteld. Indien de terminal een printer is, controleer of er voldoende papier en inkt aanwezig zijn.

Controleer of er een proces getty draait dat de terminal bedient. Om bijvoorbeeld een lijst van draaiende getty-processen te krijgen:

# ps -axww|grep getty

Er zou een regel voor de terminal zichtbaar moeten zijn. Het volgende scherm geeft bijvoorbeeld weer dat getty op de tweede seriële poort ttyu1 draait en de regel std.38400 in /etc/gettytab gebruikt:

22189  d1  Is+   0:00.03 /usr/libexec/getty std.38400 ttyu1

Indien er geen proces getty draait, controleer dan of de poort in /etc/ttys aan staat. Draai kill -HUP 1 nadat het bestand ttys is gewijzigd.

Indien het proces getty draait maar de terminal nog steeds geen aanmeldprompt weergeeft of als het een prompt weergeeft maar er niet getypt kan worden, kan het zijn dat de terminal of de kabel hardwarematige handshaking niet ondersteunt. Probeer om de regel in /etc/ttys van std.38400 in 3wire.38400 te veranderen (draai na het wijzigen van /etc/ttys kill -HUP 1). De regel 3wire is vergelijkbaar met de regel std, maar negeert hardwarematige handshaking. Het kan nodig zijn om de baudsnelheid te verlagen of om softwarematig doorvoerbeheer aan te zetten als 3wire gebruikt wordt, om overspoelde buffers te voorkomen.

27.3.3.2. Als er rommel in plaats van een aanmeldprompt verschijnt

Controleer of de terminal en FreeBSD dezelfde bps-snelheid en pariteit gebruiken. Controleer de getty-processen op het gebruik van het juiste type getty. Indien dit niet het geval is, wijzig dan /etc/ttys en draai kill -HUP 1.

27.3.3.3. Tekens verschijnen dubbel en/of het wachtwoord verschijnt tijdens de invoer

Wijzig de terminal (of de terminalemulatiesoftware) van “half duplex” of “local echo” naar “full duplex”.