26.6. SeriŽle console opzetten

Bijgedragen door Kazutaka YOKOTA.
Gebaseerd op een document van Bill Paul.

Waarschuwing:

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

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 Hoofdstuk†13, 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 Paragraaf†26.6.3, “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 Paragraaf†26.2.2, “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.

    Tip:

    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.

    Opmerking:

    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.

    Opmerking:

    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
    geeninterne console
    -hseriŽle console
    -DseriŽle en interne consoles
    -DhseriŽ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 Paragraaf†26.6.6, “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
nietsinterninternintern
-hserieelserieelserieel
-Dserieel en interninternintern
-Dhserieel en internserieelserieel
-P, toetsenbord aanweziginterninternintern
-P, toetsenbord afwezigserieel en internserieelserieel

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
nietsinterninternserieel
-hserieelserieelserieel
-Dserieel en interninternserieel
-Dhserieel en internserieelserieel
-P, toetsenbord aanweziginterninternserieel
-P, toetsenbord afwezigserieel en internserieelserieel

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 Paragraaf†26.6.5.2, “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 Hoofdstuk†24, 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.

Opmerking:

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 Paragraaf†26.6.5.2, “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 http://ftp.FreeBSD.org/pub/FreeBSD/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>.