26.3. Terminals
Terug | Hoofdstuk 26. Seriële communicatie | Volgende

## 26.3. Terminals

Bijgedragen door Sean Kelly.

### Waarschuwing:

Vanaf 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.

### 26.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:

- Domme terminals;

- PC's die als terminals dienen;

- X-terminals.

De overige subsecties beschrijven elk van deze soorten.

#### 26.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.

#### 26.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.

#### 26.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.

### 26.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, Het FreeBSD opstartproces 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).

#### 26.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 26.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  "/usr/libexec getty std.38400"  wy50  on  insecure
    ttyu5   "/usr/libexec/getty std.19200"  vt100  on  insecure

| Het eerste veld specificeert normaalgesproken de naam van het speciale terminalbestand zoals dat in `/dev` staat.
| 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.
| 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.
| 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.
| 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.

#### 26.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.

### 26.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.

#### 26.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.

#### 26.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`.

#### 26.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”.

Terug | Omhoog | Volgende
26.2. Inleiding | Begin | 26.4. Inbeldienst