Hoofdstuk 26. Seriële communicatie

26.1. Overzicht

UNIX® heeft altijd ondersteuning geboden voor seriële communicatie. Het is een feit dat de allereerste UNIX®-machines afhankelijk waren van seriële kabels voor gebruikersinvoer en -uitvoer. De dingen zijn flink veranderd sinds de tijd dat de gemiddelde "terminal" uit een 10-tekens-per-seconde seriële printer en een toetsenbord bestond. Dit hoofdstuk beschrijft enkele manieren waarop FreeBSD gebruik maakt van seriële communicatie.

Na het lezen van dit hoofdstuk weet de lezer:

  • Hoe terminals met een FreeBSD-systeem te verbinden;

  • Hoe een modem te gebruiken om naar computers op afstand te bellen;

  • Hoe het mogelijk te maken voor gebruikers op afstand om met een modem op een systeem aan te melden;

  • Hoe een systeem van een seriële console op te starten.

Veronderstelde voorkennis:

  • Weten hoe een nieuwe kernel ingesteld en geïnstalleerd wordt (De FreeBSD-kernel instellen);

  • Begrijpen hoe rechten en processen in UNIX® werken (UNIX® beginselen);

  • De beschikking hebben over het technische handboek voor de hardware (modem of meerpoortige kaart) die gebruikt wordt met FreeBSD.

26.2. Inleiding

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.

26.2.1. Terminologie

bps

Bits per seconde: de snelheid waarmee gegevens verstuurd worden

DTE

Data Terminal Equipment (apparatuur voor gegevensterminal): bijvoorbeeld een computer

DCE

Data Communications Equipment (apparatuur voor gegevenscommunicatie): een modem

RS-232

EIA standaard voor hardwarematige seriële communicatie

Deze sectie gebruikt niet de term "baud" als er over snelheden van gegevenscommunicatie gesproken wordt. Baud verwijst naar het aantal elektrische toestandsovergangen dat binnen een tijdsperiode gemaakt mag worden, "bps" (bits per seconde) is de correcte term om te gebruiken (de oude mopperkonten schijnen zich er niet erg druk over te maken).

26.2.2. Kabels en poorten

Om een modem of terminal met een FreeBSD-systeem te verbinden, dienen een seriële poort op een computer en een kabel om verbinding te maken met een serieel apparaat aanwezig te zijn. Indien kennis over hardware en de benodigde kabel reeds aanwezig is, kan deze sectie veilig worden overgeslagen.

26.2.2.1. Kabels

Er zijn verschillende soorten seriële kabels. De twee meest voorkomende types in deze context zijn nulmodem-kabels en standaard ("rechte") RS-232-kabels. De documentatie van de hardware beschrijft het type kabel dat nodig is.

26.2.2.1.1. Nulmodem-kabels

Een nulmodem-kabel geeft sommige signalen, zoals "Aardesignaal" recht door, maar kruist andere signalen. Bijvoorbeeld, de "Verzonden Gegevens"-pin aan de ene kant gaat naar de "Ontvangen Gegevens"-pin aan de andere kant.

Een nulmodem-kabel voor het gebruik met terminals kan ook zelf worden gemaakt (bijvoorbeeld voor kwaliteitsdoeleinden). Deze tabel toont de RS-232C signalen en de pinnummers op een DB-25-aansluiting. De standaard vereist ook een Aardebescherming rechte lijn van pin 1 naar pin 1, maar deze wordt vaak weggelaten. Sommige terminals werken goed met slechts pin 2, 3 en 7, terwijl andere instellingen eisen die afwijken van die in de onderstaande voorbeelden.

Tabel 1. DB-25 naar DB-25 nulmodem-kabel
SignaalPin #Pin #Signaal

SG

7

verbonden met

7

SG

TD

2

verbonden met

3

RD

RD

3

verbonden met

2

TD

RTS

4

verbonden met

5

CTS

CTS

5

verbonden met

4

RTS

DTR

20

verbonden met

6

DSR

DTR

20

verbonden met

8

DCD

In de onderstaande tabellen volgen twee schema’s die momenteel meer gebruikelijk zijn:

Tabel 2. DB-9 naar DB-9 nulmodem-kabel
SignaalPin #Pin #Signaal

RD

2

verbonden met

3

TD

TD

3

verbonden met

2

RD

DTR

4

verbonden met

6

DSR

DTR

4

verbonden met

1

DCD

SG

5

verbonden met

5

SG

DSR

6

verbonden met

4

DTR

DCD

1

verbonden met

4

DTR

RTS

7

verbonden met

8

CTS

CTS

8

verbonden met

7

RTS

Tabel 3. DB-9 naar DB-25 nulmodem-kabel
SignaalPin #Pin #Signaal

RD

2

verbonden met

2

TD

TD

3

verbonden met

3

RD

DTR

4

verbonden met

6

DSR

DTR

4

verbonden met

8

DCD

SG

5

verbonden met

7

SG

DSR

6

verbonden met

20

DTR

DCD

1

verbonden met

20

DTR

RTS

7

verbonden met

5

CTS

CTS

8

verbonden met

4

RTS

Als een pin aan het ene eind verbonden is met een pinnenpaar aan het andere eind, is dit meestal geïmplementeerd met een korte draad tussen het pinnenpaar in de stekker en een lange draad naar de andere, enkele pin.

Bovenstaande ontwerpen lijken het populairst. In een andere variatie (uitgelegd in het boek RS-232 Made Easy) worden de volgende verbindingen gemaakt: SG met SG, TD met RD, RTS en CTS met DCD, DTR met DSR en vice-versa.

26.2.2.1.2. Standaard RS-232C-kabels

Een standaard seriële kabel laat alle RS-232C-signalen recht door. Dit betekent dat de "Verzonden Gegevens"-pin aan de ene kant naar de "Verzonden Gegevens"-pin aan de andere kant gaat. Dit type kabel wordt gebruikt om een modem met een FreeBSD-systeem te verbinden en is ook geschikt voor sommige terminals.

26.2.2.2. Poorten

Seriële poorten zijn apparaten die gebruikt worden om gegevens te versturen tussen een FreeBSD gastcomputer en een terminal. Deze sectie beschrijft de bestaande soorten poorten en hoe deze aangesproken worden in FreeBSD.

26.2.2.2.1. Soorten poorten

Er bestaan verschillende soorten seriële poorten. Controleer of een kabel past op de poorten van een terminal en een FreeBSD-systeem alvorens deze te kopen of te maken.

De meeste terminals hebben DB-25-poorten. PC’s, inclusief PC’s die FreeBSD draaien, hebben DB-25- of DB-9-poorten. Indien een meerpoortige seriële kaart voor een PC beschikbaar is, kan het zijn dat er RJ-12- of RJ-45-poorten aanwezig zijn.

In documentatie die bij hardware zit, staan specificaties over het soort poort dat gebruikt wordt. Vaak volstaat ook een visuele inspectie van een poort.

26.2.2.2.2. Poortnamen

In FreeBSD wordt elke seriële poort benaderd door een ingang in de map /dev. Er zijn twee verschillende soorten ingangen:

  • Inbelpoorten heten /dev/ttyuN waarbij N het poortnummer is, beginnend met nul. In het algemeen kunnen inbelpoorten voor terminals gebruikt worden. Inbelpoorten stellen de eis dat een seriële kabel ervoor zorgt dat het data carrier detect (DCD) signaal correct werkt.

  • Uitbelpoorten heten /dev/cuauN. In het algemeen worden uitbelpoorten niet voor terminals maar voor modems gebruikt. Gebruik een uitbelpoort als een seriële kabel of terminal het carrier detect-signaal niet ondersteunt.

Als er een terminal met de eerste seriële poort (COM1 in MS-DOS®) verbonden is, wordt /dev/ttyu0 gebruikt om naar de terminal te verwijzen. Als een terminal op de tweede seriële poort is aangesloten (ook bekend als COM2), dient /dev/ttyu1 gebruikt te worden, enzovoort.

26.2.3. Kernelinstellingen

FreeBSD ondersteunt standaard vier seriële poorten. In de wereld van MS-DOS® staan ze bekend als COM1, COM2, COM3 en COM4. FreeBSD ondersteunt momenteel "domme" meerpoortige seriële interfacekaarten, zoals de BocaBoard 1008 en 2016, alsook intelligentere meerpoortige kaarten van fabrikanten als Digiboard en Stallion Technologies. De kernel kijkt echter alleen naar de standaard COM-poorten.

Bekijk de boodschappen tijdens het opstarten van de kernel om te zien of de kernel seriële poorten herkent of gebruik het commando /sbin/dmesg om de opstartboodschappen van de kernel te herhalen. Kijk in het bijzonder naar boodschappen die met de tekens uart beginnen als u FreeBSD 8.0 of nieuwer gebruikt, of sio voor FreeBSD 7.4 of ouder.

Gebruik het volgende commando om alleen de boodschappen die het woord sio bevatten te zien:

# /sbin/dmesg | grep 'uart'
# /sbin/dmesg | grep 'sio'

Voor bijvoorbeeld een FreeBSD 7.X systeem met vier seriële poorten zijn dit de opstartboodschappen van de kernel die specifiek zijn voor de seriële poorten:

sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
sio2 at 0x3e8-0x3ef irq 5 on isa
sio2: type 16550A
sio3 at 0x2e8-0x2ef irq 9 on isa
sio3: type 16550A

Als een kernel niet alle seriële poorten herkent, dan dient waarschijnlijk de kernel aangepast te worden in het bestand /boot/device.hints. Het is ook mogelijk regels uit te schakelen of volledig te verwijderen voor apparaten die niet aanwezig zijn.

Zie de hulppagina sio(4) voor meer informatie over het instellen van seriële poorten en meerpoortige kaarten. Bij gebruik van een instellingenbestand dat eerder voor een andere versie van FreeBSD werd gebruikt is voorzichtigheid geboden omdat de apparaatvlaggen en de syntaxis tussen de versies veranderd zijn.

port IO_COM1 is een substitutie voor port 0x3f8, IO_COM2 is 0x2f8, IO_COM3 is 0x3e8 en IO_COM4 is 0x2e8, welke redelijk algemene poortadressen zijn voor hun overeenkomstige seriële poorten. Interrupts 4, 3, 5 en 9 zijn redelijk algemene interruptlijnen. Reguliere seriële poorten kunnen geen interrupts delen op ISA-bus-PC’s (meerpoortige kaarten hebben elektronica die alle 16550A’s op een kaart in staat stellen om één of twee interruptlijnen te delen).

26.2.4. Speciale apparaatbestanden

De meeste apparaten in de kernel worden benaderd met "speciale apparaatbestanden" die in de map /dev staan. De apparaten sio worden benaderd met de apparaten /dev/ttyuN (inbellen) en /dev/cuauN (uitbellen). FreeBSD biedt ook initialisatie-apparaten (/dev/ttyuN.init en /dev/cuauN.init) en slotapparaten (/dev/ttyuN.lock en /dev/cuadN.lock). De initialisatie-apparaten worden gebruikt om telkens als een poort wordt geopend de parameters van de communicatiepoorten te initialiseren, zoals crtscts voor modems die gebruik maken van RTS/CTS-signalering voor gegevensstroombeheer. De slotapparaten worden gebruikt om vlaggen op poorten op slot te zetten om te voorkomen dat gebruikers of programma’s bepaalde parameters veranderen. In de hulppagina’s termios(4), sio(4) en stty(1) staat informatie over respectievelijk terminalinstellingen, apparaten op slot zetten en initialiseren en terminalopties instellen.

26.2.5. De seriële poort instellen

Het apparaat ttyuN (of cuauN) is het gebruikelijke apparaat dat geopend dient te worden voor de applicaties. Wanneer een proces het apparaat opent, heeft het een standaardverzameling aan terminal I/O-instellingen. Bekijk deze instellingen met het volgende commando:

# stty -a -f /dev/ttyu1

Als de instellingen van dit apparaat veranderd worden, blijven de instellingen geldig totdat het apparaat gesloten wordt. Als het heropend wordt, gaat het terug naar de standaardverzameling. Om de standaardverzameling te veranderen, dient het apparaat voor de "initiële toestand" geopend te worden en die instellingen veranderd te worden. Om bijvoorbeeld de CLOCAL-modus, 8-bits-communicatie en XON/XOFF-gegevensstroombeheer voor apparaat ttyu5 standaard aan te zetten:

# stty -f /dev/ttyu5.init clocal cs8 ixon ixoff

De systeembrede initialisatie van de seriële apparaten wordt beheerd in /etc/rc.d/serial. Dit bestand heeft invloed op de standaardinstellingen van seriële apparaten.

Om te voorkomen dat bepaalde instellingen door een applicatie worden veranderd, dienen wijzigingen aan het "slottoestand"-apparaat te worden aangebracht. Om bijvoorbeeld de snelheid van ttyu5 vast te zetten op 57600 bps:

# stty -f /dev/ttyu5.lock 57600

Nu blijft een applicatie die ttyu5 en de snelheid van de poort probeert te veranderen zitten op 57600 bps.

Uiteraard dienen de apparaten voor de initiële toestand en de slottoestand alleen voor het account root schrijfbaar te zijn.

26.3. Terminals

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:

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.

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.

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

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/ttyskill -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".

26.4. Inbeldienst

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.

Het instellen van het FreeBSD-systeem voor inbeldiensten is vrijwel gelijk aan het verbinden van terminals, behalve dat er met modems in plaats van terminals wordt gewerkt.

26.4.1. Externe en interne modems

Externe modems lijken gemakkelijker voor het inbellen, omdat externe modems vaak semi-permanent ingesteld kunnen worden via parameters die in een niet-vluchtig RAM worden opgeslagen en ze hebben gewoonlijk LED’s die de toestand van belangrijke RS-232-signalen weergeven. Knipperende LED’s maken indruk op bezoekers, maar LED’s zijn ook zeer nuttig om te zien of een modem goed functioneert.

Interne modems hebben vaak geen niet-vluchtig RAM en het kan dus voorkomen dat de instelmogelijkheden beperkt zijn tot het instellen van DIP-schakelaars. Als een intern modem al indicatie-LED’s voor signalen heeft, zijn ze moeilijk te zien in de behuizing van een systeem.

26.4.1.1. Modems en kabels

Bij gebruik van een extern modem is uiteraard een juiste kabel nodig. Een standaard RS-232C seriële kabel moet voldoen zolang alle normale signalen zijn aangesloten.

Tabel 4. Signaalnamen
AcroniemenNamen

RD

Received Data (ontvangen gegevens)

TD

Transmitted Data (verzonden gegevens)

DTR

Data Terminal Ready (gegevensterminal gereed)

DSR

Data Set Ready (gegevensverzameling gereed)

DCD

Data Carrier Detect (RS-232’s detector voor signaal lijn-ontvangen)

SG

Signal Ground (signaalaarde)

RTS

Request to Send (verzoek om te zenden)

CTS

Clear to Send (gereed om te zenden)

FreeBSD heeft de signalen RTS en CTS nodig voor doorstroombeheer bij snelheden van meer dan 2400 bps, het signaal CD om te bepalen wanneer een oproep beantwoord of geannuleerd is, en het signaal DTR om een modem opnieuw in te stellen nadat een sessie voltooid is. Op sommige kabels ontbreken sommige benodigde signalen. Dus als zich problemen voordoen, zoals een aanmeldsessie die niet weggaat nadat de verbinding verbroken is, kan dit aan de kabel liggen.

Net als andere UNIX®-achtige besturingssystemen gebruikt FreeBSD hardwaresignalen om te bepalen of een oproep beantwoord of weggedrukt is en om met het modem op te hangen en dit opnieuw in te stellen na een oproep. FreeBSD vermijdt het versturen van commando’s naar een modem en het bekijken van de toestand van een modem. Dit kan vreemd lijken als bekend is hoe modems met PC-gebaseerde prikbordsystemen (BBS) verbinden.

26.4.2. Overwegingen voor de seriële interface

FreeBSD ondersteunt EIA RS-232C (CCITT V.24) communicatie-interfaces gebaseerd op NS8250, NS1645, NS16550 en NS16550A. De 8250- en 16450-apparaten hebben buffers van een enkel karakter. Het 16550-apparaat biedt een buffer van 16 karakters, wat betere systeemprestaties toestaat. Door fouten in platte 16550’s is het niet mogelijk de buffer van 16 karakters te gebruiken, dus gebruik indien mogelijk 16550A’s. Omdat apparaten met een buffer van een enkel karakter meer werk door het besturingssysteem vereisen dan apparaten met een buffer van 16 karakters, ligt de voorkeur bij seriële interfacekaarten gebaseerd op de 16550A. Indien een systeem veel actieve seriële poorten heeft of zwaar belast wordt, zijn kaarten gebaseerd op de 16550A beter voor communicatie met een lage foutenratio.

26.4.3. Snel overzicht

Net als met terminals zet init een getty-proces op voor elke seriële poort die voor inbelverbindingen is ingesteld. Indien bijvoorbeeld een modem aan /dev/ttyu0 is gekoppeld, kan het commando ps ax het volgende weergeven:

4850 ??  I     0:00.09 /usr/libexec/getty V19200 ttyu0

Wanneer een gebruiker naar de modemlijn belt en de modems verbinding maken, wordt de CD-lijn (Carrier Detect) door het modem gerapporteerd. De kernel merkt op dat een draaggolf is gesignaleerd en laat getty het openen van de poort voltooien. getty stuurt een prompt login: met de initieel gespecificeerde lijnsnelheid. getty bekijkt of er geldige karakters zijn ontvangen en probeert, in een typische opstelling, indien het rommel aantreft (waarschijnlijk omdat de snelheid waarmee het modem verbindt afwijkt van de snelheid van getty) de lijnsnelheden aan te passen totdat het redelijke karakters ontvangt.

Nadat een gebruikersnaam is opgegeven voert getty/usr/bin/login uit, die het aanmelden voltooit door te vragen naar het wachtwoord van een gebruiker en daarna de shell van een gebruiker op te starten.

26.4.4. Instellingenbestanden

Er zijn drie systeeminstellingenbestanden in de map /etc die waarschijnlijk gewijzigd moeten worden om inbellen op een FreeBSD-systeem toe te staan. Het eerste bestand, /etc/gettytab, bevat informatie om de daemon /usr/libexec/getty in te stellen. Het tweede bestand, /etc/ttys bevat informatie voor /sbin/init dat vertelt op welke tty apparaten een proces getty moet draaien. Als laatste kunnen in het script /etc/rc.d/serial commando’s geplaatst worden om poorten te initialiseren.

Er bestaan twee stromingen met betrekking tot inbelmodems op UNIX®. De ene houdt ervan om modems en systemen in te stellen zodat de lokale computer-naar-modem RS-232-interface met een vaste snelheid werkt, ongeacht de snelheid waarmee een gebruiker-op-afstand inbelt. Het voordeel van deze instelling is dat een gebruiker-op-afstand altijd meteen een aanmeldprompt van een systeem ziet. Het nadeel is dat een systeem niet weet wat de werkelijke gegevenssnelheid van een gebruiker is en dus passen programma’s die met een volledig scherm werken, zoals Emacs, hun methode om het scherm te tekenen niet aan om hun reactie beter te maken voor langzame verbindingen.

De andere stroming stelt de RS-232-interface van een modem zo in dat de snelheid ervan varieert met de verbindingssnelheid van een gebruiker-op-afstand. Zo zorgen V.32bis-verbindingen (14,4 kbps) met een modem ervoor dat een modem de RS-232-interface op 19,2 kbps laat draaien, terwijl verbindingen op 2400 bps ervoor zorgen dat de RS-232-interface van een modem op 2400 bps draait. Omdat getty meldingen over de verbindingssnelheid van een gegeven modem niet begrijpt, geeft getty een bericht login: op een initiële snelheid en kijkt het naar de karakters die als antwoord terugkomen. Als een gebruiker rommel ziet, wordt ervan uitgegaan dat deze weet dat de Enter toets ingedrukt moet worden totdat een herkenbaar prompt zichtbaar is. Indien de gegevenssnelheden niet overeenkomen, ziet getty alles wat een gebruiker intypt als "rommel", probeert het op de volgende snelheid over te gaan en het geeft opnieuw het prompt login:. Deze procedure kan ad nauseam doorgaan, maar normaal gesproken zijn er slechts een stuk of twee toetsaanslagen nodig voordat een gebruiker een juist prompt ziet. Het is duidelijk dat deze aanmeldprocedure er niet zo mooi uitziet als de methode "vaste-snelheid", maar een gebruiker met een langzame verbinding zou betere interactiviteit moeten beleven met programma’s die met een volledig scherm werken.

Deze sectie poogt om neutrale informatie over instellingen te geven, maar is geneigd om de gegevenssnelheid van het modem af te laten hangen van de verbindingssnelheid.

26.4.4.1. /etc/gettytab

/etc/gettytab is een bestand met informatie over instellingen voor getty(8) in de stijl van termcap(5). In de hulppagina van gettytab(5) staat de volledige informatie over het formaat van het bestand en de lijst met mogelijkheden.

26.4.4.1.1. Vaste snelheid instellen

Indien de snelheid van een modem om gegevens te communiceren op een bepaalde waarde wordt vastgezet, is het waarschijnlijk niet nodig om wijzigingen aan te brengen in /etc/gettytab.

26.4.4.1.2. Overeenkomstige snelheid instellen

In /etc/gettytab dient een regel ingesteld te worden om getty informatie te geven over de snelheden die voor het modem gewenst zijn. Indien een 2400 bps modem aanwezig is, kan waarschijnlijk de bestaande regel D2400 gebruikt worden.

#
# Voor snelle inbelterminals, 2400/1200/300 roterend (er kan met beide kanten begonnen worden)
#
D2400|d2400|Fast-Dial-2400:\
	:nx=D1200:tc=2400-baud:
3|D1200|Fast-Dial-1200:\
	:nx=D300:tc=1200-baud:
5|D300|Fast-Dial-300:\
	:nx=D2400:tc=300-baud:

Indien er een modem voor hogere snelheden aanwezig is, dient er waarschijnlijk een regel aan /etc/gettytab toegevoegd te worden. Hieronder staat een regel die gebruikt kan worden voor een 14,4 kbps modem met een maximale interface-snelheid van 19,2 kbps:

#
# Toevoegingen voor een V.32bis modem
#
um|V300|High Speed Modem at 300,8-bit:\
	:nx=V19200:tc=std.300:
un|V1200|High Speed Modem at 1200,8-bit:\
	:nx=V300:tc=std.1200:
uo|V2400|High Speed Modem at 2400,8-bit:\
	:nx=V1200:tc=std.2400:
up|V9600|High Speed Modem at 9600,8-bit:\
	:nx=V2400:tc=std.9600:
uq|V19200|High Speed Modem at 19200,8-bit:\
	:nx=V9600:tc=std.19200:

Dit resulteert in 8-bits verbindingen zonder pariteit.

Het bovenstaande voorbeeld begint met een communicatiesnelheid van 19,2 kbps (voor een V.32bis-verbinding), daarna doorloopt het 9600 bps (voor V.32), 2400 bps, 1200 bps, 300 bps en daarna weer 19,2 kbps. Het doorlopen van de communicatiesnelheid is met de mogelijkheid nx= ("volgende tabel") geïmplementeerd. Elk van deze regels gebruikt een regel tc= ("tabel continuëren") om de rest van de "standaard"-instellingen voor een bepaalde gegevenssnelheid op te pikken.

Indien er een 28,8 kbps modem aanwezig is en/of het gewenst is om voordeel uit de compressie met een 14,4 kbps te halen, is het nodig om hogere communicatiesnelheden dan 19,2 kbps te gebruiken. Hieronder staat een voorbeeld van een regel voor gettytab die begint met 57,6 kbps.

#
# Toevoegingen voor een V.32bis of V.34 modem
# beginnend bij 57,6 kbps
#
vm|VH300|Very High Speed Modem at 300,8-bit:\
	:nx=VH57600:tc=std.300:
vn|VH1200|Very High Speed Modem at 1200,8-bit:\
	:nx=VH300:tc=std.1200:
vo|VH2400|Very High Speed Modem at 2400,8-bit:\
	:nx=VH1200:tc=std.2400:
vp|VH9600|Very High Speed Modem at 9600,8-bit:\
	:nx=VH2400:tc=std.9600:
vq|VH57600|Very High Speed Modem at 57600,8-bit:\
	:nx=VH9600:tc=std.57600:

Indien een CPU langzaam of een systeem zwaar belast is en er geen seriële poorten gebaseerd op 16550A aanwezig zijn, kunnen er sio "silo"-fouten optreden bij 57,6 kbps.

26.4.4.2. /etc/ttys

Het instellen van het bestand /etc/ttys staat beschreven in Terminalregels aan /etc/ttys toevoegen. Het instellen van modems is vergelijkbaar maar er moet een ander argument aan getty doorgegeven worden en er moet een ander type terminal doorgegeven te worden. Het algemene formaat voor zowel vaste snelheid als overeenkomstige snelheid is:

ttyu0   "/usr/libexec/getty xxx"   dialup on

Het eerste item op bovenstaande regel is het speciale apparaatbestand. ttyu0 betekent dat /dev/ttyu0 het bestand is dat door getty in de gaten wordt gehouden. Het tweede item, "/usr/libexec/gettyxxx" (xxx wordt vervangen door de initiële mogelijkheden van gettytab) is het proces dat door init op het apparaat gedraaid wordt. Het derde item, dialup, is het standaard terminaltype. De vierde parameter, on, geeft aan init aan dat de lijn operationeel is. Er kan een vijfde parameter zijn, secure, maar gebruik deze alleen voor terminals die fysiek veilig zijn (zoals de systeemconsole).

Het standaard terminaltype (dialup in bovenstaand voorbeeld) mag afhangen van lokale voorkeuren. Het traditionele standaard terminaltype voor inbellijnen is dialup, zodat gebruikers hun aanmeldscripts kunnen aanpassen om op te merken wanneer het terminal dialup is en automatisch hun terminaltype kunnen aanpassen. Wellicht is het makkelijker om vt102 als het standaard terminaltype te specificeren, aangezien gebruikers gewoon VT102-emulatie op hun systemen-op-afstand gebruiken.

Nadat /etc/ttys gewijzigd is, kan aan het proces init een signaal HUP gestuurd worden om het bestand opnieuw te laten lezen. Gebruik volgende opdracht om het signaal te versturen:

# kill -HUP 1

Indien een systeem voor de eerste keer wordt geïnstalleerd, is het verstandig te wachten totdat een modem juist ingesteld en verbonden is voordat het signaal aan init verstuurd wordt.

26.4.4.2.1. Vaste snelheid instellen

Voor het instellen van een vaste snelheid dient de regel in ttys een vaste snelheid door te geven aan getty. Voor een modem met een vaste poortsnelheid van 19,2 kbps kan de regel in ttys er als volgt uitzien:

ttyu0   "/usr/libexec/getty std.19200"   dialup on

Indien een modem op een andere gegevenssnelheid is ingesteld, dient de juiste waarde voor std.snelheid in plaats van std.19200 ingesteld te worden. Gebruik een geldig type dat in /etc/gettytab vermeld staat.

26.4.4.2.2. Overeenkomstige snelheid instellen

Voor het instellen van een overeenkomstige snelheid dient de regel in ttys te verwijzen naar regel met de juiste begin-"auto-baud" (sic). Indien bijvoorbeeld de boven voorgestelde regel voor een modem met een overeenkomstige snelheid die begint met 19,2 kbps wordt toegevoegd (de regel in gettytab die het beginpunt V19200), kan de regel in ttys er als volgt uitzien:

ttyu0   "/usr/libexec/getty V19200"   dialup on

26.4.4.3. /etc/rc.d/serial

Hogesnelheidsmodems, zoals V.32, V.32bis, en V.34 modems, moeten gebruik maken van hardwarematig (RTS/CTS) gegevensstroombeheer. Er kunnen stty-opdrachten aan /etc/rc.d/serial toegevoegd worden om de vlag voor hardwarematig gegevensstroombeheer in de kernel van FreeBSD voor modempoorten in te stellen.

Om bijvoorbeeld de termios-vlag crtscts op de apparaten die de in- en uitbelapparaten initialiseren op de eerste seriële poort (COM2) in te stellen, kunnen de volgende regels aan /etc/rc.d/serial worden toegevoegd:

# Seriële poort initieel instellen
stty -f /dev/ttyu1.init crtscts
stty -f /dev/cuau1.init crtscts

26.4.5. Modeminstellingen

Bij gebruik van een modem waarvan de parameters permanent in niet-vluchtig RAM ingesteld kunnen worden, is er een terminalprogramma (zoals Telix onder MS-DOS® of tip onder FreeBSD) nodig om parameters in te stellen. Maak een verbinding met een modem met dezelfde communicatiesnelheid als de initiële snelheid die door getty gebruikt wordt en stel het niet-vluchtige RAM van een modem in zodat aan deze voorwaarden voldaan wordt:

  • CD geldt tijdens verbindingen;

  • DTR geldt tijdens gebruik; het loslaten van DTR hangt de verbinding op en stelt het modem opnieuw in;

  • gegevensstroombeheer door CTS verzonden;

  • gegevensstroombeheer met XON/XOFF uitgezet;

  • gegevensstroombeheer door RTS ontvangen;

  • Stille modus (geen resultaatcodes);

  • Geen opdrachtecho.

Kijk in de documentatie van een modem voor de benodigde opdrachten en/of instellingen van DIP-schakelaars.

Om de bovenstaande parameters bijvoorbeeld op een U.S. Robotics® Sportster® 14.400 extern modem in te stellen, kunnen de volgende opdrachten aan het modem gegeven worden:

ATZ
AT&C1;&D2&H1&I0&R2&W

In deze fase kunnen ook andere modeminstellingen aangepast worden, zoals of het V.42bis en/of MNP5 compressie wordt gebruiken.

Een U.S. Robotics®Sportster® 14.400 externe modem heeft ook enkele DIP-schakelaars die ingesteld moeten worden. Voor andere modems kunnen deze instellingen wellicht als voorbeeld dienen:

  • Schakelaar 1: UP: DTR Normal

  • Schakelaar 2: N/A (Verbal Result Codes/Numeric Result Codes)

  • Schakelaar 3: UP: Suppress Result Codes

  • Schakelaar 4: DOWN: Geen echo, offline opdrachten

  • Schakelaar 5: UP: Auto Answer

  • Schakelaar 6: UP: Carrier Detect Normal

  • Schakelaar 7: UP: Load NVRAM Defaults

  • Schakelaar 8: N/A (Smart Mode/Dumb Mode)

Schakel resultaatcodes voor alle inbelmodems uit of onderdruk ze om problemen te voorkomen die kunnen optreden als getty abusievelijk een prompt login: geeft aan een modem dat in opdrachtmodus staat en het modem de opdracht echoot of een resultaatcode teruggeeft. Deze sequentie kan tot een uitgebreide, onnozele discussie tussen getty en het modem leiden.

26.4.5.1. Vaste snelheid instellen

Stel voor een vaste snelheid een modem zodanig in dat die een constante gegevenssnelheid naar de computer, onafhankelijk van de communicatiesnelheid, behoudt. Op een U.S. Robotics® Sportster® 14.400 extern modem zetten de volgende opdrachten de gegevenssnelheid naar de computer vast op de snelheid die gebruikt werd om de opdrachten te geven:

ATZ
AT&B1&W

26.4.5.2. Overeenkomstige snelheid instellen

Stel voor een variabele snelheid een modem zodanig in dat het de gegevenssnelheid van zijn seriële poort aanpast aan de snelheid van een binnenkomende oproep. Op een U.S. Robotics® Sportster® 14.400 extern modem zetten de volgende opdrachten de gegevenssnelheid van het modem, die op fouten gecorrigeerd wordt, vast op de snelheid die gebruikt werd om de opdrachten te geven, maar staan ze toe dat de snelheid van de seriële poort varieert voor verbindingen die niet op fouten gecorrigeerd worden:

ATZ
AT&B2&W

26.4.5.3. De modeminstellingen controleren

De meeste modems die op hoge snelheid werken, bieden opdrachten om de huidige werkparameters van een modem in een min of meer voor mensen leesbare vorm te bekijken. Op het U.S. Robotics® Sportster® 14.400 extern modem beeldt de opdracht ATI5 de instellingen af die in het niet-vluchtige RAM zijn opgeslagen. Gebruik om de werkelijke werkparameters van een modem te zien (zoals beïnvloed door de stand van de DIP-schakelaars van een modem) de opdrachten ATZ gevolgd door ATI4.

Kijk in de handleiding van een modem als er met een ander merk modem gewerkt wordt voor het controleren van de parameters voor het instellen van dat modem.

26.4.6. Problemen oplossen

Hier volgen wat stappen die gevolgd kunnen worden om een inbelmodem op een systeem te controleren.

26.4.6.1. Een FreeBSD-systeem controleren

Verbind een modem met een FreeBSD-systeem, start het systeem op en kijk, indien het modem lampjes bevat die de toestand aangeven, of de DTR-indicator oplicht als het prompt login: op de systeemconsole verschijnt. Als het oplicht zou dit betekenen dat FreeBSD een getty-proces heeft gestart op de juiste communicatiepoort en wacht op het modem om een gesprek aan te nemen.

Geef als de DTR-indicator niet oplicht, na aanmelden op de console, de opdracht ps ax om te zien of FreeBSD probeert een getty-proces op de juiste poort te draaien. Er dienen tussen de weergegeven processen regels zoals de onderstaande te verschijnen:

  114 ??  I      0:00.10 /usr/libexec/getty V19200 ttyu0
  115 ??  I      0:00.10 /usr/libexec/getty V19200 ttyu1

Er kan ook iets als het volgende verschijnen:

  114 d0  I      0:00.10 /usr/libexec/getty V19200 ttyu0

Als het modem nog geen gesprek heeft aangenomen, betekent dit dat getty het openen van de communicatiepoort voltooid heeft. Dit kan duiden op een probleem met de bekabeling of op een verkeerd ingesteld modem omdat getty niet in staat zou moeten zijn om de communicatiepoort te openen totdat CD (kiestoon) door het modem is bevestigd.

Indien er geen enkel getty-proces verschijnt dat wacht op het openen van de gewenste poort ttyuN, controleer dan de regels in /etc/ttys op vergissingen. Controleer ook het logboekbestand /var/log/messages om te zien of er logboekberichten van init of getty met betrekking tot problemen zijn. Indien er problemen zijn, controleer dan nogmaals de instellingenbestanden /etc/ttys en /etc/gettytab, alsook de betreffende speciale apparaatbestanden /dev/ttyuN, op vergissingen, ontbrekende regels of ontbrekende speciale apparaatbestanden.

26.4.6.2. Proberen om in te bellen

Probeer in te bellen op een systeem. Controleer of op het systeem-op-afstand 8 bits, geen pariteit en 1 stopbit gebruikt wordt. Probeer, indien er niet meteen een prompt verschijnt of als er rommel verschijnt, ongeveer eens per seconde op Enter te drukken. Probeer, indien er na een tijd nog geen prompt login: verschijnt, een BREAK te versturen. Probeer, indien er een modem wordt gebruikt dat op hoge snelheid werkt om te bellen, opnieuw in te bellen nadat de interfacesnelheid van het bellende modem is vastgezet (bijvoorbeeld via AT&B1 op een U.S. Robotics® Sportster® modem).

Controleer, indien er nog steeds geen prompt login: verschijnt, nogmaals /etc/gettytab en controleer of:

  • De initiële specificatie die in /etc/ttys voor de lijn staat overeenkomt met een naam van een specificatie in /etc/gettytab;

  • Elke regel nx= overeenkomt met een naam van een andere specificatie in gettytab;

  • Elke regel tc= overeenkomt met een naam van een andere specificatie in gettytab.

Controleer, indien er gebeld wordt maar het modem op het FreeBSD-systeem niet reageert, of het modem ingesteld is om de telefoon te beantwoorden als DTR bevestigd is. Controleer, indien het modem juist ingesteld lijkt te zijn, of de DTR-lijn bevestigd is door de indicatielampjes van het modem te controleren (indien die aanwezig zijn).

Neem een pauze en probeer het later nog eens indien alles meerdere malen is geprobeerd en het nog steeds niet werkt. Indien het nog steeds niet werkt, stuur dan een e-mail naar de FreeBSD algemene vragen mailinglijst met een beschrijving van het modem en het probleem en de mensen op de lijst zullen proberen te helpen.

26.5. Uitbeldienst

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.

De volgende tips dienen voor het maken van een verbinding met een andere computer per modem. Dit is geschikt voor het opzetten van een terminalsessie met een gast op afstand.

Dit is nuttig bij het aanmelden op een BBS.

Dit soort verbinding kan extreem behulpzaam zijn om een bestand op het Internet te krijgen indien er problemen zijn met PPP. Indien FTP ergens voor nodig is en PPP kapot is, kan de terminalsessie voor FTP gebruikt worden. Vervolgens kan zmodem gebruikt worden om het naar de machine te verzenden.

26.5.1. Een gewone Hayes-modem wordt niet ondersteund, wat nu?

In feite is de hulppagina voor tip verouderd. Er is al een generiek belprogramma voor Hayes ingebouwd. Gebruik at=hayes in het bestand /etc/remote.

Het stuurprogramma voor Hayes is niet slim genoeg om enkele geavanceerde eigenschappen van nieuwere modems te herkennen. Berichten als BUSY (in gesprek), NO DIALTONE (geen kiestoon) of CONNECT 115200 (verbinden 115200) verwarren het stuurprogramma. Schakel deze berichten uit bij gebruik van tip (door middel van ATX0&W).

Verder is de beltimeout voor tip 60 seconden. Het modem dient een lagere waarde te gebruiken om te voorkomen dat tip denkt dat er een probleem met de communicatie is. Probeer ATS7=45&W.

26.5.2. Hoe deze AT-commando’s in te geven?

Maak een zogenaamde "directe" regel in het bestand /etc/remote aan. Als het modem bijvoorbeeld aan de eerste seriële poort, /dev/cuau0, is gekoppeld, voeg dan de volgende regel toe:

cuau0:dv=/dev/cuau0:br#19200:pa=none

Gebruik voor de mogelijkheid br de hoogst ondersteunde snelheid van het modem in bps. Typ hierna tip cuau0 om een verbinding met het modem te maken.

Als alternatief kan cu als root met het volgende commando gebruikt worden:

# cu
	  -llijn
	  -ssnelheid

De waarde lijn is de seriële poort (bijvoorbeeld /dev/cuau0) en snelheid is de snelheid (bijvoorbeeld 57600). Als alle AT-commando’s zijn ingevoerd, voer dan ~. in om het programma te verlaten.

26.5.3. Het teken @ voor de optie pn werkt niet!

Het teken @ in de telefoonnummermogelijkheid vertelt tip om in /etc/phones naar een telefoonnummer te kijken. Maar het teken @ is ook een speciaal teken in specificatiebestanden als /etc/remote. Gebruik een backslash om hieraan te ontsnappen:

pn=\@

26.5.4. Hoe een telefoonnummer op de opdrachtregel te draaien?

Voeg een zogenaamde "generieke" regel aan het bestand /etc/remote toe. Bijvoorbeeld:

tip115200|Bel elk telefoonnummer met 115200 bps:\
        :dv=/dev/cuau0:br#115200:at=hayes:pa=none:du:
tip57600|Bel elk telefoonnummer met 57600 bps:\
        :dv=/dev/cuau0:br#57600:at=hayes:pa=none:du:

Hierna zijn onder andere de volgende mogelijkheden beschikbaar:

# tip -115200 5551234

Indien cu boven tip geprefereerd wordt, dient een generieke regel voor cu gebruikt te worden:

cu115200|Gebruik cu om elk nummer met 115200bps te bellen:\
	:dv=/dev/cuau1:br#57600:at=hayes:pa=none:du:

Voer in:

# cu 5551234 -s 115200

26.5.5. Dient de bps-snelheid telkens ingevoerd te worden?

Voeg een regel toe voor tip1200 of cu1200, maar gebruik een bps-snelheid die geschikt is voor de br-mogelijkheid. tip meent dat 1200 bps een goede standaardwaarde is, hierdoor zoekt het naar een regel tip1200. Uiteraard hoeft 1200 bps niet gebruikt te worden.

26.5.6. Een aantal hosts met een terminalserver benaderen

Om niet iedere keer te hoeven wachten totdat er verbinding is en CONNECT host in te typen, kan de mogelijkheid cm van tip gebruikt worden. Als voorbeeld bieden de onderstaande regels in /etc/remote de mogelijkheid om tip pain of tip muffin in te typen om met de hosts pain of muffin te verbinden, en tip deep13 om naar de terminalserver te gaan:

pain|pain.deep13.com|Forresters machine:\
        :cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|Franks machine:\
        :cm=CONNECT muffin\n:tc=deep13:
deep13:Gizmonics Institute terminalserver:\
        :dv=/dev/cuau2:br#38400:at=hayes:du:pa=none:pn=5551234:

26.5.7. Kan tip meer dan één lijn voor elke site proberen?

Dit is een vaak een probleem als een universiteit een handvol modemlijnen en enkele duizenden studenten heeft die ze proberen te gebruiken.

Voeg een regel voor de universiteit toe in /etc/remote en gebruik @ voor de mogelijkheid pn:

grote-universiteit:\
        :pn=\@:tc=dialout
dialout:\
        :dv=/dev/cuau3:br#9600:at=courier:du:pa=none:

Voeg hierna de telefoonnummers voor de universiteit toe aan /etc/phones:

grote-universiteit 5551111
grote-universiteit 5551112
grote-universiteit 5551113
grote-universiteit 5551114

Het commando tip probeert elk nummer in de volgorde van de lijst alvorens op te geven. Om de pogingen te herhalen, kan tip in een while-lus gedraaid worden.

26.5.8. Waarom moet Ctrl+P tweemaal worden ingedrukt om Ctrl+P éénmaal te versturen?

Ctrl+P is het standaard "forceer"-karakter, dat gebruikt wordt om tip te vertellen dat het volgende karakter letterlijk genomen dient te worden. Het forceerkarakter kan met de ontsnapping ~s, wat "stel een variabele in" betekent, op elk ander karakter ingesteld worden.

Typ ~sforce=enkel-karakter in gevolgd door een nieuwe regel. enkel-karakter is elk enkel karakter. Indien enkel-karakter weggelaten wordt, is het forceerkarakter het nulkarakter, wat door middel van Ctrl+2 of Ctrl+spatie verkregen kan worden. Een redelijke standaardwaarde voor enkel-karakter is Shift+Ctrl+6, die slechts op enkele terminalservers gebruikt wordt.

Het forceerkarakter kan op elk gewenst karakter ingesteld worden door het volgende op te nemen in het bestand $HOME/.tiprc:

force=enkel-karakter

26.5.9. Alle ingevoerde tekst staat opeens in hoofdletters?

Waarschijnlijk is Ctrl+A ingedrukt, het "raisechar" van tip, dat speciaal voor mensen met een kapotte caps-lock toets is ontworpen. Gebruik ~s zoals boven is aangegeven en stel de variabele raisechar op iets redelijks in. Het kan zelfs op hetzelfde als het forceerkarakter worden ingesteld, indien het onwaarschijnlijk is dat een van deze mogelijkheden ooit gebruikt wordt.

Hier volgt een voorbeeld voor het bestand .tiprc dat perfect is voor gebruikers van Emacs die Ctrl+2 en Ctrl+A vaak moeten gebruiken:

force=^^
raisechar=^^

De ^^ is Shift+Ctrl+6.

26.5.10. Hoe kan met tip bestanden worden verstuurd?

In de communicatie met een ander UNIX®-systeem kunnen bestanden verzonden en ontvangen worden met de commando’s ~p (put) en ~t (take). Deze commando’s draaien cat en echo op een systeem op afstand om bestanden aan te nemen en te verzenden. De syntaxis is:

~p lokaal-bestand [ bestand-op-afstand ]

~t bestand-op-afstand [ lokaal-bestand ]

Er wordt niet op fouten gecontroleerd, het is dus verstandig om een ander protocol te gebruiken, zoals zmodem.

26.5.11. Hoe kan zmodem samen met tip draaien?

Start om bestanden te ontvangen het verstuurprogramma aan de andere kant. Typ daarna ~C rz om ze lokaal te ontvangen.

Start om bestanden te versturen het ontvangprogramma aan de andere kant. Typ daarna ~C sz bestanden om ze naar het systeem aan de andere kant te versturen.

26.6. Seriële console opzetten

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.

26.6.1. Inleiding

FreeBSD biedt de mogelijkheid om op een systeem op te starten met slechts een domme terminal en een seriële poort als console. Dit soort opstellingen is handig voor twee soorten mensen: voor systeembeheerders die FreeBSD willen installeren op machines die geen toetsenbord of beeldscherm hebben en voor ontwikkelaars die de kernel of apparaatstuurprogramma’s willen debuggen.

Zoals beschreven in Het FreeBSD opstartproces, gebruikt FreeBSD drie fasen voor het opstarten. De eerste twee fasen bevinden zich in de code van het opstartblok dat zich aan het begin van de opstartslice van FreeBSD op de opstartschijf bevindt. Het opstartblok laadt vervolgens de opstartlader (/boot/loader) en draait als de code van de derde fase.

Om de seriële console gereed te maken moeten de code in het opstartblok, de code van de opstartlader en de kernel worden ingesteld.

26.6.2. De seriële console instellen, korte versie

Deze sectie neemt aan dat de standaard opstelling wordt gebruikt en dat een kort overzicht voor het opzetten van de seriële console gewenst is.

  1. Verbind de seriële kabel met COM1 en de leidende terminal;

  2. Om alle opstartmeldingen op de seriële console te zien, dient het volgende commando als supergebruiker uitgevoerd te worden:

    # echo 'console="comconsole"' >> /boot/loader.conf
  3. Bewerk /etc/ttys en wijzig off in on en dialup in vt100 voor de regel ttyu0. Indien dit niet gebeurt is er geen wachtwoord nodig om met de seriële console te verbinden, wat tot een mogelijk beveiligingslek leidt;

  4. Start het systeem opnieuw op om te zien of de veranderingen effect hebben.

Indien een andere instelling nodig is, is er een diepgaandere uitleg over instellingen beschikbaar in De seriële console instellen.

26.6.3. De seriële console instellen

  1. Bereid een seriële kabel voor.

    Benodigd zijn een nulmodem-kabel òf een standaard seriële kabel samen met een nulmodem-adapter. Zie Kabels en poorten voor een beschrijving van seriële kabels.

  2. Ontkoppel het toetsenbord.

    De meeste PC-systemen zoeken naar het toetsenbord tijdens de Power-On Self-Test (POST) en geven een foutmelding als het toetsenbord niet is gevonden. Sommige systemen klagen luid over het ontbreken van een toetsenbord en gaan niet verder met opstarten totdat het is aangesloten.

    Indien de computer klaagt over de fout, maar desondanks opstart, is het niet nodig iets speciaals te doen. Sommige machines waarop Phoenix BIOS is geïnstalleerd melden enkel Toetsenbord faalde en gaan normaal door met opstarten.

    Indien de machine weigert zonder toetsenbord op te starten dient het BIOS ingesteld te worden zodat het deze fout negeert (als het dit kan). Raadpleeg het handboek van het moederbord voor verdere aanwijzingen.

    Stel het toetsenbord in op "Niet geïnstalleerd" in de BIOS-instellingen. Het is dan nog steeds mogelijk om het toetsenbord te gebruiken. Dit zorgt er alleen voor dat het BIOS niet naar een toetsenbord zoekt tijdens het aanzetten. Het BIOS dient niet te klagen als het toetsenbord ontbreekt. Het is mogelijk om het toetsenbord aangesloten te laten, zelfs als deze vlag is ingesteld op "Niet geïnstalleerd" en het toetsenbord werkt nog steeds. Kijk, als de bovenstaande optie niet in het BIOS aanwezig is, naar een optie "Halt on Error". Het instellen van deze optie op "All but keyboard" of zelfs op "No Errors" zal hetzelfde effect hebben.

    Als een systeem een PS/2®-muis heeft, is het goed mogelijk dat naast het toetsenbord ook de muis losgekoppeld moet worden. Dit komt doordat PS/2®-muizen wat hardware met het toetsenbord delen. Als de muis aangesloten blijft, kan het zoeken naar het toetsenbord als resultaat hebben dat het toetsenbord er nog steeds is. Een Gateway 2000 Pentium 90 MHz systeem met een AMI BIOS schijnt zich op deze manier te gedragen. Over het algemeen is dit geen probleem aangezien een muis zonder toetsenbord sowieso weinig nut heeft.

  3. Sluit een domme terminal aan op COM1 (sio0).

    Indien er geen domme terminal aanwezig is, kan een oude PC met een modemprogramma of de seriële poort van een andere UNIX® machine gebruikt worden. Indien er geen COM1 (sio0) aanwezig is dient deze geregeld te worden. Op dit moment is er geen manier om een andere poort dan COM1 voor de opstartblokken te selecteren, afgezien van deze opnieuw te compileren. Indien COM1 al voor een ander apparaat gebruikt wordt, verwijder dat apparaat dan tijdelijk en installeer een nieuw opstartblok en een nieuwe kernel zodra FreeBSD werkt. Er wordt aangenomen dat COM1 sowieso beschikbaar is op een bestands-/reken-/terminalserver. Als COM1 ècht voor iets anders nodig is (en het niet mogelijk is om dat op COM2 (sio1) over te zetten), is het sowieso al onverstandig om hiermee bezig te zijn.)

  4. Controleer of het instellingenbestand van de kernel de juiste vlaggen ingesteld heeft voor COM1 (sio0).

    Relevante vlaggen zijn:

    0x10

    Zet console-ondersteuning voor deze eenheid aan. De andere consolevlaggen worden genegeerd tenzij deze is aangezet. Momenteel kan ten hoogste één eenheid console-ondersteuning hebben. De eerste (in de volgorde van het instellingenbestand) waarvan deze vlag is aangezet heeft de voorkeur. Deze optie zelf maakt de seriële poort geen console. Stel de volgende vlag in of gebruik de onderstaande optie -h samen met deze vlag.

    0x20

    Dwingt deze eenheid om de console te zijn (tenzij er een andere console met hogere prioriteit is), ongeacht de onderstaande optie -h. De vlag 0x20 dient samen met de vlag 0x10 gebruikt te worden.

    0x40

    Reserveert deze eenheid (in samenwerking met 0x10) en maakt de eenheid ontoegankelijk voor normale toegang. Deze vlag dient niet aangezet te worden op de seriële poort van de eenheid die als seriële console gebruikt gaat worden. De enige functie van deze vlag is de eenheid voor het debuggen van de kernel op afstand aan te merken. Zie het Ontwikkelaarshandboek voor meer informatie over debuggen op afstand.

    Voorbeeld:

    device sio0 at isa? port IO_COM1 flags 0x10 irq 4

    Zie de hulppagina sio(4) voor meer details.

    Indien de vlaggen niet waren ingesteld, dient UserConfig gedraaid te worden (op een andere console) of de kernel opnieuw gecompileerd te worden.

  5. Maak boot.config aan in de hoofdmap van de partitie a van de opstartschijf.

    Dit bestand instrueert de code op het opstartblok hoe het systeem opgestart dient te worden. Om de seriële console te activeren, zijn één of meer van de volgende opties nodig. Indien meerdere opties gewenst zijn, dienen ze allemaal op dezelfde regel te staan:

    -h

    Wisselt tussen de interne en de seriële console. Indien bijvoorbeeld vanaf de interne (video)console opgestart wordt, kan -h gebruikt worden om het console-apparaat van de opstartlader en de kernel om te leiden naar de seriële console. Indien vanaf de seriële poort opgestart wordt, kan -h gebruikt worden om de opstartlader en de kernel het videoscherm als console te laten gebruiken.

    -D

    Wisselt tussen opstellingen met een enkele en een dubbele console. In opstellingen met een enkele console is de console òfwel de interne console (videoscherm) òfwel de seriële poort, afhankelijk van bovenstaande optie -h. In opstellingen met een dubbele console worden zowel het videoscherm als de seriële poort tegelijkertijd console, ongeacht de toestand van de optie -h. De opstelling met een dubbele console heeft alleen effect als het opstartblok draait. Zodra de opstartlader het overneemt, wordt de console die met de optie -h gespecificeerd is de enige console.

    -P

    Zorgt ervoor dat het opstartblok naar het toetsenbord zoekt. Als er geen toetsenbord wordt gevonden, worden de opties -D en -h automatisch ingesteld.

    Vanwege ruimtebeperkingen in de huidige versie van het opstartblok, is de optie -P alleen in staat om uitgebreide toetsenborden te detecteren. Toetsenborden met minder dan 101 toetsen (en zonder de toetsen F11 en F12) worden mogelijk niet gedetecteerd. Toetsenborden op sommige laptops worden vanwege deze beperking mogelijk niet correct gevonden. Indien dit het geval is met een systeem, vermijd dan de optie -P. Helaas is er geen mogelijkheid om dit probleem te omzeilen.

    Gebruik om de console automatisch te selecteren òfwel de optie -P òfwel de optie -h om de seriële console te activeren.

    De andere opties beschreven in boot(8) kunnen ook gebruikt worden.

    De opties, behalve -P, worden aan de opstartlader (/boot/loader doorgegeven. De opstartlader bepaalt of de interne videopoort of de seriële poort de console wordt door enkel naar de toestand van de optie -h te kijken. Dit betekent dat als de optie -D, maar niet de optie -h in /boot.config gespecificeerd wordt, de seriële poort alleen tijdens het opstartblok als console gebruikt kan worden, de opstartlader gebruikt het interne videoscherm als console.

  6. Start de machine op.

    Als FreeBSD gestart wordt, tonen de opstartblokken de inhoud van /boot.config op de console. Bijvoorbeeld:

    /boot.config: -P
    Keyboard: no

    De tweede regel verschijnt alleen als -P in /boot.config staat en aangegeven wordt of het toetsenbord aanwezig of afwezig is. Deze berichten gaan of naar de seriële of interne console of naar beide, afhankelijk van de optie in /boot.config.

    OptiesBericht gaat naar

    geen

    interne console

    -h

    seriële console

    -D

    seriële en interne consoles

    -Dh

    seriële en interne consoles

    -P, toetsenbord aanwezig

    interne console

    -P, toetsenbord afwezig

    seriële console

    Na de bovenstaande berichten is er een korte pauze voordat de opstartblokken doorgaan met het laden van de opstartlader en voordat er verdere berichten op de console worden afgebeeld. Normaalgesproken hoeven de opstartblokken niet onderbroken te worden, maar het kan gedaan worden om er zeker van te zijn dat alles goed is ingesteld.

    Om het opstartproces te onderbreken, kan op elke andere toets dan Enter gedrukt worden. De opstartblokken vragen dan om verdere actie. Er verschijnt iets als het volgende:

    >> FreeBSD/i386 BOOT
    Default: 0:ad(0,a)/boot/loader
    boot:

    Controleer of de bovenstaande boodschap naar de seriële of interne console of beide gaat, naar gelang de opties in /boot.config. Indien de boodschap op de juiste console verschijnt kan op Enter gedrukt worden om het opstartproces voort te zetten.

    Als de seriële console gewenst is maar de prompt niet op de seriële terminal verschijnt, is er iets mis met de instellingen. Voer in de tussentijd -h in en druk op Enter of Return (indien mogelijk) om aan het opstartblok (en vervolgens de opstartlader en de kernel) te vertellen dat de seriële poort console moet worden. Controleer als het systeem draait wat er verkeerd ging.

Nadat de opstartlader is geladen en het derde stadium van het opstartproces bereikt is, kan er nog steeds gewisseld worden tussen de interne console en de seriële console door de juiste omgevingsvariabelen in de opstartlader in te stellen. Zie De console vanuit de opstartlader veranderen.

26.6.4. Samenvatting

Hieronder volgt een samenvatting van de verschillende instellingen die in deze sectie en de uiteindelijk gekozen console beschreven zijn.

26.6.4.1. Geval 1: vlaggen ingesteld op 0x10 voor sio

device sio0 at isa? port IO_COM1 flags 0x10 irq 4
Opties in /boot.configConsole tijdens de opstartblokkenConsole tijdens de opstartladerConsole in kernel

niets

intern

intern

intern

-h

serieel

serieel

serieel

-D

serieel en intern

intern

intern

-Dh

serieel en intern

serieel

serieel

-P, toetsenbord aanwezig

intern

intern

intern

-P, toetsenbord afwezig

serieel en intern

serieel

serieel

26.6.4.2. Geval 2: vlaggen ingesteld op 0x30 voor sio

device sio0 at isa? port IO_COM1 flags 0x30 irq 4
Opties in /boot.configConsole tijdens de opstartblokkenConsole tijdens de opstartladerConsole in kernel

niets

intern

intern

serieel

-h

serieel

serieel

serieel

-D

serieel en intern

intern

serieel

-Dh

serieel en intern

serieel

serieel

-P, toetsenbord aanwezig

intern

intern

serieel

-P, toetsenbord afwezig

serieel en intern

serieel

serieel

26.6.5. Tips voor de seriële console

26.6.5.1. Een hogere snelheid voor de seriële poort instellen

Standaard zijn de instellingen van de seriële poort: 9600 baud, 8 bits, geen pariteit, en 1 stopbit. Indien het wenselijk is om de snelheid te veranderen, zijn de volgened opties beschikbaar:

  • Hercompileer de opstart blokken met BOOT_COMCONSOLE_SPEED ingesteld op de nieuwe console snelheid. Zie Een andere seriële poort dan sio0 voor de console gebruiken voor gedetailleerde instructies over het bouwen en installeren van nieuwe opstartblokken.

    Als de seriële poort anders is gespecificeerd dan met -h bij het opstarten, of als de seriële console die gebruikt wordt door de kernel anders is dan die gebruikt wordt door de opstart blokken, dan moet de volgende optie aan het kernel instellingen bestand worden toegevoegd en moet de kernel opnieuw gecompileerd worden:

    options CONSPEED=19200
  • Gebruik de -S opstartoptie van de kernel. De optie -S kan worden toegevoegd aan het bestand /boot.config. Zie de handleiding boot(8) voor een beschrijving over hoe opties kunnen worden toegevoegd aan /boot.conf, en welke opties ondersteund worden.

  • Zet de comconsole_speed optie in het /boot/loader.conf bestand.

    Deze optie is ervan afhankelijk dat de console, boot_serial en boot_multicons ingesteld staan in /boot/loader.conf. Een voorbeeld van hoe comconsole_speed gebruikt kan worden om de console snelheid aan te passen:

    boot_multicons="YES"
    boot_serial="YES"
    console_speed="115200"
    console="comconsole,vidconsole"

26.6.5.2. Een andere seriële poort dan sio0 voor de console gebruiken

Het gebruik van een andere poort dan sio vergt wat hercompileren. Indien het gewenst is om een andere seriële poort te gebruiken, hercompileer dan de opstartblokken, de opstartlader en de kernel als volgt:

  1. De broncode van de kernel moet beschikbaar zijn. Zie FreeBSD updaten en upgraden;

  2. Bewerk /etc/make.conf en stel BOOT_COMCONSOLE_PORT in op het adres van de te gebruiken poort (0x3F8, 0x2F8, 0x3E8 of 0x2E8). Alleen sio0 tot en met sio3 (COM1 tot en met COM4) zijn te gebruiken. Seriële kaarten met meerdere poorten werken niet. Interrupts instellen is niet nodig;

  3. Maak een aangepast kernelinstellingenbestand aan en voeg de juiste vlaggen toe voor de te gebruiken seriële poort. Als bijvoorbeeld sio1 (COM2) de console moet worden:

    device sio1 at isa? port IO_COM2 flags 0x10 irq 3

    Alternatief:

    device sio1 at isa? port IO_COM2 flags 0x30 irq 3

    Stel de consolevlaggen voor de andere seriële poorten niet in;

  4. Hercompileer en installeer de opstartblokken en de opstartlader:

    # cd /sys/boot
    # make clean
    # make
    # make install
  5. Herbouw en installeer de kernel;

  6. Schrijf de opstartblokken met disklabel(8) naar de opstartschijf en start met de nieuwe kernel op.

26.6.5.3. De debugger DDB gebruiken via de seriële verbinding

Als het wenselijk is om vanuit de seriële console in de kerneldebugger te vallen - nuttig voor diagnose op afstand, maar ook gevaarlijk indien een onbedoelde BREAK op de seriële poort wordt gegenereerd! - compileer de kernel dan met de volgende opties:

options BREAK_TO_DEBUGGER
options DDB

26.6.5.4. Een aanmeldprompt op de seriële console krijgen

Hoewel dit niet nodig is, kan het gewenst zijn om een aanmeldprompt over de seriële lijn te krijgen, nu het mogelijk is om opstartboodschappen te zien en de kerneldebugsessie door de seriële console betreden kan worden. Hier volgt hoe het te doen.

Open het bestand /etc/ttys met een tekstverwerker en zoek de volgende regels:

ttyu0 "/usr/libexec/getty std.9600" unknown off secure
ttyu1 "/usr/libexec/getty std.9600" unknown off secure
ttyu2 "/usr/libexec/getty std.9600" unknown off secure
ttyu3 "/usr/libexec/getty std.9600" unknown off secure

ttyu0 tot en met ttyu3 komen overeen met COM1 tot en met COM4. Wijzig off in on voor de gewenste poort. Als de snelheid van de seriële poort is gewijzigd, wijzig dan std.9600 zodat het met de huidige instelling overeenkomt, bijvoorbeeld std.19200.

Het kan ook wenselijk zijn om het terminaltype te wijzigen van unknown naar het eigenlijke type van de seriële terminal.

Voer kill -HUP 1 uit na het wijzigen van het bestand om de wijzigingen actief te maken.

26.6.6. De console vanuit de opstartlader veranderen

De vorige secties beschreven hoe de seriële console ingesteld kan worden door het instellen van het opstartblok. Deze sectie toont dat het mogelijk is om de console te specificeren door het invoeren van enkele opdrachten en omgevingsvariabelen in de opstartlader. Aangezien de opstartlader tijdens het derde stadium van het opstartproces wordt geactiveerd, na het opstartblok, overheersen de instellingen in de opstartlader de instellingen in het opstartblok.

26.6.6.1. De seriële console instellen

Het is mogelijk om de opstartlader en de kernel gebruik te laten maken van de seriële console door slechts één regel naar /boot/loader.conf te schrijven:

console="comconsole"

Dit heeft effect ongeacht de instellingen in het opstartblok die in de vorige sectie zijn besproken.

Het is verstandig om bovenstaande regel de eerste regel van /boot/loader.conf te maken om de opstartboodschappen zo vroeg mogelijk op de seriële console te kunnen zien.

Evenzo kan de interne videoconsole worden gespecificeerd met:

console="vidconsole"

Indien de omgevingsvariabele console van de opstartlader niet ingesteld wordt, gebruikt de opstartlader, en vervolgens de kernel, de console die door de optie -h in het opstartblok wordt aangegeven.

De console kan worden gespecificeerd in /boot/looader.conf.local of in /boot/loader.conf.

Zie loader.conf(5) voor meer informatie.

Momenteel heeft de opstartlader een optie die gelijk is aan de optie -P van het opstartblok en is er geen voorziening om automatisch de interne console en de seriële console te selecteren afhankelijk van de aanwezigheid van een toetsenbord.

26.6.6.2. Een andere seriële poort dan sio voor de console gebruiken

Compileer de opstartlader opnieuw om een andere seriële poort dan sio voor de seriële console te gebruiken. Volg de procedure zoals beschreven in Een andere seriële poort dan sio0 voor de console gebruiken.

26.6.7. Valkuilen

De doelstelling van dit stuk is beheerders in staat te stellen om toegewijde servers te installeren die geen grafische hardware of aangesloten toetsenborden nodig hebben. Hoewel de meeste systemen zonder toetsenbord opstarten, zijn er helaas aardig wat die niet zonder een grafische adapter opstarten. Machines met een AMI BIOS kunnen ingesteld worden om zonder grafische adapter op te starten door de instelling "graphics adapter" in de CMOS-instellingen te wijzigen in "Not installed".

De meeste systemen ondersteunen deze optie echter niet en weigeren om zonder weergavehardware op te starten. Voor deze machines is het nodig om een of andere grafische kaart in een systeem te laten (zelfs al is het een aftandse monochrome kaart) hoewel het niet nodig is om een beeldscherm aan te sluiten. Ook kan geprobeerd worden om een AMI BIOS te installeren.


All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.