# /sbin/dmesg | grep 'uart'
# /sbin/dmesg | grep 'sio'
Hoofdstuk 26. Seriële communicatie
This translation may be out of date. To help with the translations please access the FreeBSD translations instance.
Table of Contents
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.
Signaal | Pin # | 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:
Signaal | Pin # | 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 |
Signaal | Pin # | 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 |
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.
|
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:
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;
Specificeer dat
/usr/libexec/getty
uitgevoerd moet worden op de poort en het juiste type getty van het bestand /etc/gettytab;Specificeer het standaard terminaltype;
Stel de poort in op "on";
Specificeer of de poort "secure" dient te zijn;
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.
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 programmagetty
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 programmagetty
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 tekststd
beginnen voor vast aangesloten terminals. Deze regels negeren pariteit. Er is eenstd
-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
ofdialup
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, startinit
het programma in het tweede veld,getty
, op. Indien hieroff
staat wordtgetty
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 doorroot
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 ensu
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
|
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.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.
Acroniemen | Namen |
---|---|
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.
Verbind de seriële kabel met COM1 en de leidende terminal;
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
Bewerk /etc/ttys en wijzig
off
inon
endialup
invt100
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;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
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.
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.
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.)
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 vlag0x20
dient samen met de vlag0x10
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.
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.
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.Opties Bericht gaat naar geen
interne console
-h
seriële console
-D
seriële en interne consoles
-Dh
seriële en interne consoles
-P
, toetsenbord aanweziginterne console
-P
, toetsenbord afwezigserië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.config | Console tijdens de opstartblokken | Console tijdens de opstartlader | Console in kernel |
---|---|---|---|
niets | intern | intern | intern |
| serieel | serieel | serieel |
| serieel en intern | intern | intern |
| serieel en intern | serieel | serieel |
| intern | intern | intern |
| 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.config | Console tijdens de opstartblokken | Console tijdens de opstartlader | Console in kernel |
---|---|---|---|
niets | intern | intern | serieel |
| serieel | serieel | serieel |
| serieel en intern | intern | serieel |
| serieel en intern | serieel | serieel |
| intern | intern | serieel |
| 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
enboot_multicons
ingesteld staan in /boot/loader.conf. Een voorbeeld van hoecomconsole_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:
De broncode van de kernel moet beschikbaar zijn. Zie FreeBSD updaten en upgraden;
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;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;
Hercompileer en installeer de opstartblokken en de opstartlader:
# cd /sys/boot # make clean # make # make install
Herbouw en installeer de kernel;
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 |
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.
Last modified on: 9 maart 2024 by Danilo G. Baio