Comunicazioni SerialiSinossicomunicazioni seriali&unix; ha sempre avuto un supporto per le comunicazioni seriali.
In effetti, le prime vere macchine &unix; si appoggiavano a linee seriali
per l'input e l'output da e verso l'utente. Le cose sono cambiate molto
dai giorni in cui un terminale consisteva in una stampante
da 10 caratteri al secondo o in una tastiera.
Questo capitolo coprirà alcuni dei modi nei quali
FreeBSD usa le comunicazioni seriali.Dopo aver letto questo capitolo, saprai:Come connettere terminali al tuo sistema FreeBSD.Come usare un modem per collegarti telefonicamente
ad una macchina remota.Come permettere a utenti remoti di effettuare
login sul tuo sistema via modem.Come avviare il tuo sistema da una console seriale.Prima di leggere questo capitolo, dovresti:Sapere come configurare ed installare un nuovo kernel
().Comprendere i permessi ed i processi &unix;
().Avere accesso al manuale tecnico per l'hardware seriale
(modem o scheda multiporta) che vuoi usare con FreeBSD.IntroduzioneTerminologiabpsbit per secondoBits per Second (Bit per Secondo) — la frequenza alla
quale vengono trasmessi i datiDTEDTEData Terminal Equipment (Attrezzatura per il Terminale Dati)
— ad esempio, il tuo computerDCEDCEData Communications Equipment (Attrezzatura per le
Comunicazioni Dati) — il tuo modemRS-232cavi RS-232CStandard EIA per le comunicazioni tra hardware serialeNel parlare della velocità di comunicazione, questa
sezione non usa il termine baud. Il baud si riferisce
al numero di transizioni degli stati elettrici che possono essere
effettuati in un periodo di tempo, mentre i bps
(bit per secondo) sono il termine corretto da usare
(o almeno non sembra irritare troppo i perfezionisti).Cavi e PortePer collegare un modem o un terminale alla tua macchina FreeBSD,
avrai bisogno di una porta seriale sul tuo computer e del cavo
appropriato per il tuo dispositivo seriale. Se sei già pratico
con l'hardware ed i cavi necessari, puoi saltare tranquillamente questa
sezione.CaviCi sono parecchi tipi diversi di cavi seriali. I due
tipi più comuni per i nostri scopi sono i cavi null-modem
ed i cavi standard (dritti) RS-232.
La documentazione per il tuo hardware dovrebbe descrivere il tipo
di cavi necessari.Cavi null-modemcavo null-modemUn cavo null-modem porta segnali dritti, come il
Segnale di Massa, e segnali incrociati. Per
esempio, il pin di Trasmissione Dati su un capo
è il pin di Ricezione Dati sull'altro
capo.Puoi costruirti un cavo null-modem da usare con
i terminali (es., se vuoi una migliore qualità).
Questa tabella mostra i
segnali
dell'RS-232C e i numeri dei pin su un connettore DB-25.
Nota che lo standard richiede il segnale dritto sul pin 1
chiamato Massa di Protezione,
anche se questo è spesso omesso. Alcuni terminali
funzionano usando solo i pin 2, 3 e 7, mentre altri richiedono
configurazioni diverse come mostrate negli esempi qui sotto.
Quando un pin di un capo si connette a una coppia di pin
dell'altro capo, questo è solitamente fatto ponendo
un cavetto tra la coppia di pin nel loro connettore e
collegando questi con un altro cavo al singolo pin dell'altro
capo.Queste sembrano essere le implementazioni più
popolari. In altre varianti (spiegate nel libro
RS-232 Made Easy) SG è connesso a SG, TD
a RD, RTS e CTS a DCD, DTR a DSR, e vice-versa.Cavi Standard RS-232Ccavi RS-232CUn cavo seriale standard ha tutti i segnali RS-232C diritti.
Cioè, il pin di Trasmissione Dati su un capo
del cavo va nel pin di Trasmissione Dati sull'altro
capo. Questo è il tipo di cavo da usare per collegare un
modem al tuo sistema FreeBSD, ed è anche appropriato per
alcuni terminali.PorteLe porte seriali sono i dispositivi attraverso i quali vengono
trasferiti i dati tra il computer FreeBSD ed il terminale. Questa
sezione descrive il tipo di porte che esistono e come vengono indicate
in FreeBSD.Tipi di PorteEsistono parecchi tipi di porte seriali. Prima di comprare o
costruire un cavo, avrai bisogno di assicurarti che sia adatto alle
porte sul terminale e sul sistema FreeBSD.La maggior parte dei terminali avrà porte DB-25.
I personal computer, compresi i PC con FreeBSD, avranno porte DB-25
o DB-9. Se hai una scheda seriale multiporta nel tuo PC, potresti
avere porte RJ-12 o RJ-45.Guarda la documentazione fornita con l'hardware per
le specifiche del tipo di porta usata. Spesso basta anche
un'ispezione visiva della porta.Nomi delle PorteIn FreeBSD, si accede ad ogni porta seriale attraverso una voce
nella directory /dev. Ci sono due differenti
tipi di voci:Le porte di ingresso vengono dette
/dev/ttydN
dove N è il numero di porta,
cominciando da zero. Generalmente, puoi usare la porta di
ingresso per i terminali. Le porte di ingresso richiedono che
la linea fornisca un segnale detto data carrier detect (DCD) per
funzionare correttamente.Le porte di uscita vengono dette
/dev/cuadN.
In genere non si usano porte di uscita per i terminali, ma solo
per i modem. Puoi usare la porta di uscita se il cavo seriale
o il terminale non supportano il segnale di carrier
detect.Le porte di uscita sono chiamate
/dev/cuaaN in
&os; 5.X e precedenti.Se hai connesso un terminale sulla prima porta seriale
(COM1 in &ms-dos;), allora userai
/dev/ttyd0 per riferirti al terminale. Se il
terminale è sulla seconda porta seriale (anche nota come
COM2), usa
/dev/ttyd1, e così via.Configurazione del KernelFreeBSD supporta quattro porte seriali di default. Nel mondo
&ms-dos;, queste sono note come COM1,
COM2, COM3, e
COM4. FreeBSD attualmente supporta
schede d'interfaccia seriale multiporta stupide,
come le BocaBoard 1008 e 2016, così come le schede multiporta
intelligenti come quelle fatte dalla Digiboard
e dalla Stallion Technologies. Ad ogni modo, il kernel di default
usa solo le porte COM standard.Per vedere se il tuo kernel riconosce una delle tue porte seriali,
guarda i messaggi mentre il kernel viene avviato, o usa il comando
/sbin/dmesg per far scorrere di nuovo i
messaggi di avvio del kernel. In particolare, cerca dei messaggi
che inizino con i caratteri sio.Per vedere solo i messaggi che hanno la parola
sio, usa il comando:&prompt.root; /sbin/dmesg | grep 'sio'Ad esempio, su un sistema con quattro porte seriali, questi sono
i messaggi dati dall'avvio del kernel specifici delle porte
seriali: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 16550ASe il tuo kernel non riconosce tutte le tue porte seriali,
probabilmente devi configurare il kernel sistemando il
file /boot/device.hints. Inoltre puoi
commentare o rimuovere completamente le righe dei dispositivi
che non hai.Su &os; 4.X devi editare il tuo file di configurazione del
kernel. Per informazioni dettagliate sulla configurazione del
kernel, guarda . Le righe dei
dispositivi interessati dovrebbero essere simili a queste:device sio0 at isa? port IO_COM1 irq 4
device sio1 at isa? port IO_COM2 irq 3
device sio2 at isa? port IO_COM3 irq 5
device sio3 at isa? port IO_COM4 irq 9Guarda la pagina man di &man.sio.4;
per informazioni aggiuntive sulla configurazione delle porte seriali e
delle schede multiporta.
Stai attento se stai usando un file di configurazione
già usato per una versione differente di FreeBSD, poiché
i flag dei dispositivi e la sintassi sono cambiati tra una versione e
l'altra.port IO_COM1 è una sostituzione per
port 0x3f8, IO_COM2 è
0x2f8, IO_COM3 è
0x3e8, e IO_COM4 è
0x2e8, che sono indirizzi comuni per le rispettive
porte seriali; gli interrupt 4, 3, 5, e 9 sono linee di richiesta di
interrupt piuttosto comuni. Da notare anche che le normali porte
seriali non possono condividere degli interrupt
sui bus ISA dei PC (le schede multiporta hanno dell'elettronica
integrata che permette a tutte le 16550A sulla scheda di condividere
uno o due linee di richiesta dell'interrupt).File Speciali di DispositivoAlla maggior parte dei dispositivi nel kernel si accede attraverso
file speciali di dispositivo, che si trovano
nella directory /dev. Ai dispositivi
sio si accede attraverso i
/dev/ttydN
(ingresso) e /dev/cuadN
(uscita). FreeBSD fornisce anche dei dispositivi di inizializzazione
(/dev/ttydN.init e
/dev/cuadN.init su
&os; 6.X,
/dev/ttyidN e
/dev/cuaidN su
&os; 5.X e precedenti) e
dispositivi di blocco
(/dev/ttydN.lock e
/dev/cuadN.lock su
&os; 6.X,
/dev/ttyldN e
/dev/cualdN su
&os; 5.X e precedenti). I
dispositivi di inizializzazione vengono usati per inizializzare
i parametri delle porte di comunicazione ogni volta che una porta
viene aperta, come crtscts per i modem che usano
le segnalazioni RTS/CTS per il controllo di flusso.
I dispositivi di blocco vengono usati per fissare i flag sulle porte
ed evitare che altri utenti o programmi cambino certi parametri;
guarda le pagine man di &man.termios.4;, &man.sio.4;, e &man.stty.1;
per maggiori informazioni sulle impostazioni dei terminali, sui
dispositivi di blocco ed inizializzazione, e sull'impostazione delle
opzioni del terminale, rispettivamente.Creazione dei File Speciali di DispositivoFreeBSD 5.0 include il file system &man.devfs.5;
che crea automaticamente nodi per i dispositivi necessari.
Se stai usando una versione di FreeBSD con il
devfs abilitato puoi saltare tranquillamente
questa sezione.Uno script di shell di nome MAKEDEV nella
directory /dev gestisce i file di dispositivo.
Per usare MAKEDEV nella creazione del
file di dispositivo per COM1 (porta 0),
fai cd su /dev e dai il
comando MAKEDEV ttyd0. Allo stesso modo, per
creare il file di dispositivo per COM2
(porta 1), usa MAKEDEV ttyd1.MAKEDEV non crea solo i file speciali
/dev/ttydN,
ma anche i nodi
/dev/cuaaN,
/dev/cuaiaN,
/dev/cualaN,
/dev/ttyldN, e
/dev/ttyidN.Dopo aver creato i nuovi file di dispositivo, fa attenzione nel
controllare i permessi sui file (specialmente sui file
/dev/cua*) per assicurarti che solo gli
utenti che dovrebbero effettivamente avere accesso a questi
dispositivi possano leggerli e
scriverli — magari non vorrai permettere al tuo utente medio
di usare il tuo modem per chiamare verso l'esterno. I permessi
predefiniti su
/dev/cua* dovrebbero essere adatti:crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cuaa1
crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuaia1
crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cuala1Questi permessi permettono all'utente uucp e
agli utenti nel gruppo dialer di usare i
dispositivi di uscita.Configurazione della Porta SerialettydcuadIl dispositivo
ttydN (o
cuadN) è il
normale dispositivo che si apre per le proprie applicazioni.
Quando un processo apre il dispositivo, avrà un insieme di
impostazioni di I/O predefinite per il terminale.
Puoi visualizzare queste impostazioni con il comando:&prompt.root; stty -a -f /dev/ttyd1Quando cambi le impostazioni per questo dispositivo, queste rimangono
efficaci finché il dispositivo non viene chiuso. Quando viene
riaperto, ritorna all'insieme di default. Per effettuare dei cambiamenti
all'insieme predefinito, modifica le impostazioni per il dispositivo di
stato iniziale. Ad esempio,
per attivare di default modalità ,
comunicazione a 8 bit, e controllo di flusso per
ttyd5, scrivi:&prompt.root; stty -f /dev/ttyd5.init clocal cs8 ixon ixofffile rcrc.serialLe inizializzazioni di sistema per i dispositivi seriali sono
controllate in /etc/rc.d/serial. Questo file
influisce sui valori predefiniti dei dispositivi seriali.Su &os; 4.X, l'inizializzazione globale dei
dispositivi seriali è controllata in
/etc/rc.serial.Per evitare cambiamenti da parte di qualche applicazione,
modifica il dispositivo di blocco dello stato.
Ad esempio, per bloccare la velocità di
ttyd5 a 57600 bps, scrivi:&prompt.root; stty -f /dev/ttyd5.lock 57600Ora, un applicazione che apra ttyd5 e cerchi
di cambiare la velocità della porta resterà bloccata a
57600 bps.MAKEDEVNaturalmente, dovresti rendere i dispositivi di stato iniziale e stato
di blocco scrivibili solo da root.TerminaliSeanKellyContributo di terminaliI terminali forniscono un sistema di accesso conveniente ed a basso
costo al tuo sistema FreeBSD quando non sei davanti alla console del
computer o connesso ad una rete. Questa sezione descrive l'uso dei
terminali con FreeBSD.Uso e Tipi di TerminaliI sistemi &unix; originali non avevano console. Invece, la gente
effettuava il login ed avviava programmi attraverso terminali connessi
alle porte seriali del computer. Ciò era abbastanza simile
all'uso di modem e programmi terminale per collegarsi telefonicamente
ad un sistema remoto e lavorare da riga di comando.I PC di oggi hanno console capaci di grafica di alta qualità,
ma l'abilità di stabilire una sessione di login su una porta
seriale esiste ancora in quasi ogni sistema operativo in stile &unix; di
oggi; FreeBSD non fa eccezione.
Usando un terminale attaccato ad una porta seriale inutilizzata, puoi
effettuare il login ed eseguire qualsiasi programma testuale che
potresti lanciare normalmente dalla console o da una finestra
xterm in X Window.Un utente aziendale può connettere molti terminali ad un
sistema FreeBSD e porli sulle scrivanie dei propri impiegati. Un utente
casalingo può usare qualcosa come un vecchio PC IBM o un
&macintosh; come terminale connesso a un computer più potente che
faccia girare FreeBSD.
Puoi anche trasformare quello che sarebbe un computer singolo utente in
un potente sistema per utenti multipli.Per FreeBSD, esistono tre tipi di terminali:terminali stupidiPC che interpretano
terminaliterminali XLe sottosezioni rimanenti descrivono ognuno di questi tipi.Terminali StupidiQuesti terminali sono oggetti hardware specializzati che
permettono di connettere dei computer tramite linee seriali.
Essi vengono detti stupidi poiché hanno solo la
potenza di calcolo necessaria per mostrare, inviare, e ricevere testo.
Non potete eseguire nessun programma su di essi.
È il computer al quale vi collegate che ha la potenza
per eseguire editor di testo, compilatori, email, giochi, e
così via.Ci sono centinaia di tipi di terminali di questo tipo, venduti
da molti produttori, incluso il VT-100 della Digital Equipment
Corporation e il WY-75 della Wyse. Quasi tutti funzioneranno con
FreeBSD. Alcuni terminali di alto livello possono anche mostrare
della grafica, ma solo alcuni
pacchetti software possono avvalersi di queste caratteristiche.I terminali stupidi sono popolari negli ambienti di lavoro nei
quali i lavoratori non hanno bisogno di accedere ad applicazioni
grafiche come quelle fornite dal sistema X Window.PC che Emulano TerminaliSe un terminale stupido ha appena
le capacità per mostrare, inviare, e ricevere testo, allora di
certo un qualunque personal computer può funzionare come un
terminale stupido.
Tutto ciò di cui hai bisogno è il cavo appropriato ed un
qualche programma per l'emulazione di terminale
sul tuo computer.Una simile configurazione è comune in molte case. Ad
esempio, se il tuo
coniuge sta lavorando alla console del sistema FreeBSD, tu puoi fare
del lavoro testuale allo stesso momento da un PC meno potente
connesso come terminale al sistema FreeBSD.Terminali XI terminali X sono i terminali più sofisticati tra quelli
disponibili. Invece di collegarsi alla porta seriale, in genere
ci si collega ad essi tramite un rete come Ethernet. Invece di essere
relegati alle applicazioni testuali, essi possono mostrare
applicazioni X.Introduciamo i terminali X solo per una questione di completezza.
Ad ogni modo, questo capitolo non affronta in
modo completo l'installazione, la configurazione, o l'uso dei
terminali X.ConfigurazioneQuesta sezione descrive quello che hai bisogno di configurare sul
tuo sistema FreeBSD per abilitare una sessione di login via terminale.
Si assume che tu abbia già configurato il kernel con il supporto
per la porta seriale alla quale è connesso il terminale —
e che questo sia già connesso.Dovresti ricordare dal che il processo
init è responsabile del controllo di tutti i
processi e dell'inizializzazione del sistema all'avvio. Uno dei compiti
svolti da init è la lettura del file
/etc/ttys e l'avvio di un processo
getty sui terminali disponibili.
Il processo getty è responsabile della lettura
di un nome di login e dell'avvio del programma
login.Dunque, per configurare i terminali per il tuo sistema FreeBSD
devono essere effettuati come root i seguenti
passi:Aggiungi una linea a /etc/ttys relativa al
file in /dev per la porta seriale, se non
è già presente.Specifica che /usr/libexec/getty deve essere
eseguito sulla porta, e specifica il tipo appropriato di
getty dal file
/etc/gettytab.Specifica il tipo di terminale predefinito.Imposta la porta su on.Specifica se la porta deve essere
sicura.Forza init alla rilettura del file
/etc/ttys.Come passo opzionale, potresti desiderare di creare un tipo di
getty personale da usare nel secondo passo
aggiungendo una linea in /etc/gettytab. Questo
capitolo non spiega come fare ciò; sei incoraggiato a leggere le
pagine man di &man.gettytab.5; e &man.getty.8; per maggiori
informazioni.Aggiunta di un Elemento in /etc/ttysIl file /etc/ttys elenca tutte le porte
del tuo sistema FreeBSD dalle quali vuoi permettere un login.
Ad esempio, la prima console virtuale ttyv0
è elencata in questo file. Si può accedere al sistema
dalla console grazie a questa voce. Questo file contiene anche delle
voci per altre console virtuali, porte seriali, e pseudo-tty. Per un
terminale connesso fisicamente, basta copiare l'elenco delle porte
seriali in /dev
senza la parte /dev (ad esempio,
/dev/ttyv0 verrà scritta come
ttyv0).Un'installazione predefinita di FreeBSD include un file
/etc/ttys con supporto per le prime
quattro porte seriali: da ttyd0 a
ttyd3. Se vuoi collegare un terminale
a una di queste porte, non hai bisogno di aggiungere un'altra
voce.Aggiunta di Voci per Altri Terminali a
/etc/ttysSupponiamo che si vogliano collegare due terminali ad un
sistema: un Wyse-50 ed un vecchio PC IBM 286 con
Procomm come programma di emulazione di
terminale VT-100. Colleghiamo il Wyse alla seconda porta seriale
ed il 286 alla sesta (una porta su scheda seriale multiporta).
Le voci corrispondenti nel file /etc/ttys
apparirebbero così:ttyd1 "/usr/libexec/getty std.38400" wy50 on insecure
ttyd5 "/usr/libexec/getty std.19200" vt100 on insecureIl primo campo in genere specifica il nome del file
speciale per il terminale, come si trova in
/dev.Il secondo campo è il comando da eseguire per questa
linea, generalmente &man.getty.8;.
getty inizializza ed apre la linea,
imposta la velocità, richiede all'utente un nome di login
e poi esegue il programma &man.login.1;.Il programma getty accetta un parametro
(opzionale) da riga di comando, il tipo di
getty. Un tipo di
getty configura le caratteristiche
della linea del terminale, come la frequenza di bit per secondo
e la parità. Il programma getty legge
questa caratteristiche dal file
/etc/gettytab.Il file /etc/gettytab
contiene molte voci per le linee di terminale sia vecchie che
nuove. In quasi tutti i casi, le voci che cominciano per
std funzioneranno con i terminali connessi
fisicamente. Queste voci ignorano la parità.
C'è una voce std per ogni frequenza di
bps da 110 a 115200. Naturalmente, puoi aggiungere le tue
voci a questo file. La pagina man di &man.gettytab.5;
fornisce maggiori informazioni.Nell'impostare il tipo di getty
nel file /etc/ttys, assicurati
che le impostazioni di comunicazione sul terminale
corrispondano.Nel nostro esempio, il Wyse-50 non usa parità e si
connette a 38400 bps. Il PC 286 non usa parità
e si connette a 19200 bps.Il terzo campo è il tipo di terminale generalmente
collegato alla linea tty. Per le porte dial-up, viene usato
tipicamente unknown o
dialup poiché gli utenti possono
collegarsi con praticamente qualunque tipo di terminale o
programma.
Per i terminali connessi direttamente, il tipo di terminale
non cambia, quindi puoi mettere un vero tipo di terminale
preso dal file database di &man.termcap.5; in questo
campo.Per il nostro esempio, il Wyse-50 usa il tipo
per il vero terminale mentre il PC 286 con
Procomm in esecuzione
verrà impostato per emulare un VT-100.Il quarto campo specifica se la porta deve essere abilitata.
Scrivere on qui farà sì che il
processo init avvii il programma nel secondo
campo, getty. Se metti
off in questo campo, non ci sarà
nessun getty, e dunque nessun login sulla
porta.Il campo finale è usato per specificare se la porta
è sicura.
Segnare una porta come sicura significa
confidare nel fatto che non ci sia rischio nel permettere
all'account di root (o ad un altro con
user ID uguale a 0) di effettuare il login da quella porta.
Porte insicure non permettono il login a
root.
Su una porta insicura, gli utenti devono effettuare
un login con accesso non privilegiato, e poi usare &man.su.1; o
un meccanismo simile per ottenere privilegi superiori.È fortemente consigliato l'uso di
insecure anche per i terminali che si trovano
dietro porte chiuse a chiave.
È abbastanza semplice effettuare il login e usare
su se si ha bisogno di privilegi da
superutente.Come Forzare init a Rileggere
/etc/ttysDopo aver effettuato i cambiamenti necessari al file
/etc/ttys si deve mandare un segnale SIGHUP
(hangup) al processo init affinché sia
costretto a rileggere il suo file di configurazione.
Ad esempio:&prompt.root; kill -HUP 1init è sempre il primo processo
eseguito su un sistema dunque avrà sempre PID 1.Se tutto è stato impostato correttamente, tutti i cavi sono
collegati, ed i terminali sono accesi, allora un processo
getty dovrebbe essere in esecuzione su ogni
terminale e a questo punto dovresti vedere dei prompt per il login sui
tuoi terminali.Risoluzione dei Problemi di ConnessioneAnche con la più meticolosa attenzione ai dettagli, qualcosa
potrebbe comunque andare storto nell'impostazione di un terminale.
Questa è una lista dei sintomi e di alcuni suggerimenti per
risolverli.Non Appare Nessun Prompt per il LoginAssicurati che il terminale sia connesso e acceso.
Se è un personal computer che funziona da terminale,
assicurati che il programma di emulazione di terminale sia attivo
sulla porta seriale giusta.Assicurati che il cavo sia ben connesso sia al terminale che
al computer FreeBSD. Assicurati che sia il giusto tipo di
cavo.Assicurati che il terminale e FreeBSD siano concordi sul
valore di bps e sulle impostazioni di parità. Se hai un
terminale con un display video, assicurati
che il contrasto e la luminosità siano giusti. Se è
un terminale di stampa, assicurati che ci siano carta e inchiostro
sufficienti.Assicurati che il processo getty sia attivo
per quel terminale. Ad esempio, per avere una lista dei processi
getty con ps, scrivi:&prompt.root; ps -axww | grep gettydovresti vedere una voce per il terminale. Ad esempio,
la schermata seguente mostra che
getty è in esecuzione sulla seconda
porta seriale ttyd1 e sta usando la voce
std.38400 in
/etc/gettytab:22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1Se non c'è nessun processo getty in
esecuzione, assicurati di aver abilitato la porta in
/etc/ttys.
Ricordati anche di eseguire kill -HUP 1
dopo aver modificato il file ttys.Se il processo getty è attivo ma
il terminale non mostra ancora un prompt di login,
o se mostra un prompt ma non ti permette di digitare nulla,
il tuo terminale o il tuo cavo potrebbero non supportare la
transazione hardware. Prova a cambiare il valore in
/etc/ttys da std.38400 a
3wire.38400 (e ricordati di dare un
kill -HUP 1 dopo aver modificato
/etc/ttys).
La voce 3wire è simile a
std, ma ignora l'handshake hardware.
Potresti aver bisogno di ridurre i baud o
di abilitare un controllo di flusso software usando
3wire per evitare dei buffer
overflow.Compaiono Caratteri Strani Invece di un Prompt di LoginAssicurati che il terminale e FreeBSD siano concordi sui bps
e sulle impostazioni di parità. Verifica i processi
getty per assicurarti che sia in funzione il
tipo corretto di getty.
Se non è così,
modifica /etc/ttys ed esegui kill
-HUP 1.I Caratteri Appaiono Duplicati; la Password Viene Visualizzata
Quando la ScrivoCambia l'impostazione del terminale (o del programma di
emulazione) da half duplex o
local echo a full duplex.Servizio di Ricezione ChiamateGuyHelmerContributo di SeanKellyAggiunte di servizio di ricezione chiamateLa configurazione del sistema FreeBSD per il servizio di ricezione
chiamate è molto simile alla connessione di terminali tranne per il
fatto che si ha a che fare con dei modem invece che con dei
terminali.Modem Esterni contro Modem InterniI modem esterni sembrerebbero migliori per chiamare,
poiché i modem esterni spesso possono essere configurati in
maniera semipermanente tramite dei parametri immagazzinati in RAM non
volatile e generalmente forniscono degli indicatori luminosi che
mostrano lo stato degli importanti segnali RS-232. Le lucine
lampeggianti impressionano gli ospiti, ma sono anche molto
utili per vedere se un modem sta funzionando in maniera
appropriata.I modem interni in genere mancano della RAM non-volatile, quindi
la loro configurazione può essere limitata solo impostando i DIP
switch. Se il tuo modem interno ha delle luci indicatrici di
segnale, probabilmente è difficile vederle quando il case del
sistema è al suo posto.Modem e CavimodemSe stai usando un modem esterno, allora avrai bisogno
del cavo appropriato. Un cavo seriale standard RS-232C
dovrebbe essere sufficiente, posto che tutti i normali segnali siano
connessi:
Nomi dei SegnaliAcronimiNomiRDRicezione DatiTDTrasmissione DatiDTRTerminale di Dati DisponibileDSRPronto alla TrasmissioneDCDData Carrier Detect (scopre il Segnale di Linea
di Ricezione di RS-232)SGSegnale di MassaRTSRichiesta alla TrasmissioneCTSDisponibile all'Invio
FreeBSD necessita dei segnali RTS e
CTS per il controllo di flusso a velocità
superiori a 2400 bps, del segnale CD per
identificare quando c'è stata una risposta alla chiamata o
quando una linea è stata scollegata, e del
segnale DTR per dare il reset al modem dopo che una
sessione è terminata. Alcuni cavi sono connessi senza alcuni
dei segnali necessari, dunque se hai dei problemi, come una sessione
di login che non scompare quando la linea è sconnessa, potresti
avere un problema col cavo.Come altri sistemi operativi &unix;, FreeBSD usa i segnali
hardware per scoprire quando una chiamata è stata accettata
o quando una linea è stata scollegata e per scollegare e
resettare il modem dopo una chiamata.
FreeBSD evita di mandare comandi al modem
o di leggere i valori riportati dal modem. Se hai familiarità
con la connessione dei modem a BBS di PC, questo potrebbe sembrarti
scomodo.Considerazioni sull'Interfaccia SerialeFreeBSD supporta interfacce di comunicazione EIA RS-232C
(CCITT V.24) basate su NS8250, NS16450, NS16550, e NS16550A.
I dispositivi 8250 e 16450 hanno buffer di un singolo carattere.
Il dispositivo 16550 fornisce un buffer di 16 caratteri, che permette
prestazioni del sistema migliori. (Dei bug nel normale 16550
impediscono l'uso del buffer di 16 caratteri, quindi usate 16550A se
possibile).
A causa del buffer a singolo carattere questi dispositivi richiedono
un lavoro maggiore da parte del sistema operativo rispetto ai
dispositivi a 16 caratteri di buffer, le schede d'interfaccia seriale
basate su 16550A sono preferibili. Se il sistema ha molte porte
seriali attive o dovrà sopportare un grosso carico, le schede
basate su 16550A sono migliori per comunicazioni a basso tasso
d'errore.Breve PanoramicagettyCome con i terminali, init lancia un processo
getty per ogni porta seriale configurata
per connessioni in ingresso. Ad esempio, se un modem è connesso
a /dev/ttyd0, il comando
ps ax mostrerà questo: 4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0Quando un utente chiama la linea del modem e questo si collega, il
modem riporterà la linea CD (Carrier Detect).
Il kernel nota che la portante è stata rilevata e completa
l'apertura della porta con getty.
getty invia un prompt login: alla
velocità iniziale di linea specificata.
getty aspetta per verificare che vengano ricevuti
caratteri legittimi, e, in una tipica configurazione, se trova dei
caratteri strani (probabilmente perché la velocità del
modem è differente da quella di
getty), getty cerca
di calibrare la velocità di linea fino a ricevere dei caratteri
ragionevoli./usr/bin/loginDopo che l'utente ha inserito il suo nome di login,
getty esegue
/usr/bin/login, che completa il login
richiedendo la password per l'utente ed avviandone la shell.File di ConfigurazioneCi sono tre file di configurazione di sistema nella directory
/etc che avrai probabilmente bisogno di modificare
per permettere chiamate in ingresso sul tuo sistema FreeBSD. Il primo,
/etc/gettytab, contiene le informazioni di
configurazione per il demone /usr/libexec/getty.
Il secondo, /etc/ttys contiene le informazioni che
dicono a /sbin/init quali dispositivi
tty devono avere processi getty
in esecuzione.
Infine, si possono mettere comandi di inizializzazione nello script
/etc/rc.d/serial.Ci sono due scuole di pensiero riguardo i modem su &unix;.
Un gruppo preferisce configurare i propri modem in maniera che
qualunque sia la velocità con la quale un utente remoto si
collega, l'interfaccia locale RS-232 computer-modem funzioni ad una
velocità fissa.
Il beneficio di questa configurazione è che l'utente
remoto vede sempre un prompt di login immediato.
Il lato negativo è che il sistema non sa quale sia la vera
velocità di trasmissione
dati di un utente, quindi programmi a tutto schermo come Emacs
non modificheranno i loro metodi di rappresentazione dello schermo per
ottimizzare la risposta su connessioni lente.L'altra scuola di pensiero configura le proprie interfacce RS-232
verso il modem per variare la propria velocità rispetto a quella
di connessione dell'utente remoto.
Ad esempio, le connessioni V.32bis (14.4 Kbps) faranno sì
che il modem faccia funzionare la propria interfaccia RS-232 a
19.2 Kbps, mentre le connessioni a 2400 bps faranno sì
che funzioni a 2400 bps.
Poiché getty non comprende nessun valore
restituito dal modem riguardo la velocità di connessione,
getty darà un messaggio
login: ad una velocità iniziale fissata e
aspetterà i caratteri in risposta. Se l'utente vede caratteri
strani, si assume che sappia che dovrà premere
Invio finché non vedrà un prompt
riconoscibile. Se le frequenze di trasmissione non concordano,
getty vedrà tutto ciò che l'utente
preme come spazzatura, cercherà di passare alla
velocità seguente e invierà
il prompt login: di nuovo. Questa procedura
potrebbe continuare ad nauseam, ma normalmente ci vogliono solo una o
due pressioni sui tasti prima che l'utente veda un buon prompt.
Ovviamente, questa
sequenza di login non è pulita come la precedente a
velocità fissata, ma un utente su una
connessione a bassa velocità dovrebbe ricevere una risposta
interattiva migliore da programmi a tutto schermo.Questa sezione cercherà di fornire informazioni di
configurazione bilanciate, ma è indirizzata verso l'approccio di
avere la frequenza di trasmissione del modem
che segue la velocità della connessione./etc/gettytab/etc/gettytab/etc/gettytab è un file di
configurazione sul modello di &man.termcap.5; per &man.getty.8;.
Si prega di vedere la pagina man di &man.gettytab.5; per le
informazioni complete sul formato del file
e la lista delle sue possibilità.Configurazione a Velocità FissaSe stai fissando la frequenza di comunicazione del modem ad
una velocità particolare, probabilmente non avrai bisogno di
effettuare nessun cambiamento a
/etc/gettytab.Configurazione a Velocità ConcordataC'è bisogno di impostare una voce in
/etc/gettytab per dare a
getty le informazioni sulla velocità che
si vuole usare per il modem. Se si possiede un modem a
2400 bps, probabilmente è possibile usare
la voce D2400 già esistente.#
# Terminali chiamanti veloci, a rotazione 2400/1200/300
# (può impostarsi in tutti i modi)
#
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:Se si possiede un modem con velocità maggiore,
probabilmente sarà necessario
aggiungere una voce in /etc/gettytab; qui
c'è un esempio per modem a 14.4 Kbps modem con una
velocità massima d'interfaccia di 19.2 Kbps:#
# Aggiunte per un modem V.32bis
#
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:Questo risulterà in una connessione a 8-bit, senza
parità.L'esempio precedente avvia la comunicazione a 19.2 Kbps
(per una connessione V.32bis), poi cicla tra 9600 bps (per
V.32), 2400 bps, 1200 bps, 300 bps, e poi ancora a
19.2 Kbps.
Il ciclo sulle frequenze di comunicazione è implementato con
nx= (next table).
Ogni linea usa una voce tc= (table
continuation) per continuare a leggere le impostazioni
standard per una frequenza particolare.Se hai un modem a 28.8 Kbps e/o vuoi avvantaggiarti della
compressione su un modem a 14.4 Kbps, hai bisogno di usare una
frequenza di comunicazione più alta di 19.2 Kbps. Qui
c'è un esempio di voce per gettytab che
imposta la velocità a 57.6 Kbps:#
# Aggiunte per modem V.32bis o V.34 Modem
# Impostazione a 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:Se hai una CPU lenta o un carico di sistema pesante e non hai
porte seriale 16550A, potresti ricevere errori
siosilo a
57.6 Kbps./etc/ttys/etc/ttysLa configurazione del file /etc/ttys
è stata affrontata nella .
La configurazione dei modem è simile ma dobbiamo passare
un argomento differente a getty e specificare un
tipo di terminale differente. Il formato generale per la
configurazione sia a velocità fissata che per quella
concordata è:ttyd0 "/usr/libexec/getty xxx" dialup onIl primo elemento nella linea precedente è il file di
dispositivo per questa voce — ttyd0 significa
che /dev/ttyd0 è il file che verrà
tenuto d'occhio da getty. Il secondo elemento,
"/usr/libexec/getty xxx"
(xxx verrà rimpiazzato dalla
capacità iniziale di gettytab) è
il processo che init eseguirà sul
dispositivo. Il terzo elemento, dialup, è
il tipo predefinito di terminale. Il quarto parametro,
on, indica a init che quella
linea è operativa. Potrebbe esserci un quinto parametro,
secure, ma dovrebbe essere usato solo per i
terminali che siano fisicamente sicuri (come la console di
sistema).Il tipo di terminale predefinito (dialup
nell'esempio precedente) potrebbe dipendere dalle preferenze locali.
dialup è il terminale tradizionale
predefinito sulle linee di ingresso in maniera che gli utenti possano
personalizzare i loro script di login per notare quando il terminale
è dialup e modificare
automaticamente il loro tipo di terminale. Ad ogni modo, l'autore
ritiene più semplice specificare vt102 come
tipo di terminale predefinito, poiché l'utente può usare
semplicemente un'emulazione VT102 sul suo sistema remoto.Dopo aver effettuato i cambiamenti a
/etc/ttys, puoi inviare un segnale
HUP a init per fargli
rileggere il file. Puoi usare il comando
&prompt.root; kill -HUP 1
per inviare il segnale. Se questa è la prima volta che cambi
le impostazioni del sistema, puoi aspettare finché il modem non
sia configurato in maniera appropriata e connesso, prima di inviare il
segnale a init.Configurazione a Velocità FissaPer una configurazione a velocità fissa, la voce
in ttys ha bisogno di una voce che gestisca la
velocità fissa anche per getty.
Per un modem la cui velocità sulla porta
sia bloccata a 19.2 Kbps, la voce in ttys
potrebbe essere così:ttyd0 "/usr/libexec/getty std.19200" dialup onSe il tuo modem è bloccato su una frequenza di
trasmissione differente, sostituisci il valore appropriato per
std.velocità
al posto di std.19200. Assicurati di usare
un tipo valido elencato in
/etc/gettytab.Configurazione a Velocità ConcordataIn una configurazione a velocità concordata, la voce in
ttys deve fare riferimento alla voce
iniziale auto-baud (sic) in
/etc/gettytab. Ad esempio, se hai aggiunto la
riga suggerita precedentemente per un modem con velocità
variabile che inizi a 19.2 Kbps (la riga in
gettytab contenente
il punto d'avvio V19200), la riga in
ttys potrebbe essere questa:ttyd0 "/usr/libexec/getty V19200" dialup on/etc/rc.d/serialfile rcrc.serialI modem ad alta velocità, come i V.32, i V.32bis, e i V.34,
necessitano di un controllo di flusso hardware
(RTS/CTS).
Puoi aggiungere dei comandi stty al file
/etc/rc.d/serial per impostare i
flag di controllo di flusso nel kernel FreeBSD per le porte del
modem.Ad esempio per impostare il flag termioscrtscts sui dispositivi di inizializzazione
di ingresso e uscita della porta seriale numero 1
(COM2), si possono aggiungere le
seguenti linee a /etc/rc.d/serial:# Configurazione iniziale della porta seriale
stty -f /dev/ttyd1.init crtscts
stty -f /dev/cuad1.init crtsctsImpostazioni del ModemSe hai uno di quei modem i cui parametri possono essere impostati in
maniera permanente in RAM non volatile, avrai bisogno di usare un
programma terminale (come Telix su &ms-dos; o tip
sotto FreeBSD) per impostare i parametri. Collegati al modem usando le
stesse velocità iniziali e di comunicazione
che userebbe getty e configura la RAM non volatile
secondo queste necessità:CD attivo per la connessioneDTR attivo per l'operazione; l'assenza del
DTR porta allo scollegamento della linea e al reset del modemCTS controllo di flusso dei dati
trasmessiDisabilita il controllo di flusso
XON/XOFFRTS controllo di flusso dei dati
ricevutiModalità silenziosa (nessun codice di risposta)Nessun echo dei comandiLeggi la documentazione del tuo modem per capire quali
comandi e/o impostazioni per i DIP switch sia necessario
fornirgli.Ad esempio, per impostare i parametri precedenti su un &usrobotics;
&sportster; 14.400 esterno, si potrebbero dare questi comandi
al modem:ATZ
AT&C1&D2&H1&I0&R2&WPotresti anche sfruttare questa opportunità per raffinare
le impostazioni del modem, ad esempio per decidere se dovrà usare
V.42bis e/o la compressione MNP5.Il modem esterno &usrobotics; &sportster; 14.400 ha anche dei DIP
switch che devono essere impostati; per altri modem, forse potrai usare
queste impostazioni come esempio:Switch 1: SU — DTR NormaleSwitch 2: N/D (Codici di Risposta Verbali/Codici di Risposta
NumericiSwitch 3: SU — Sopprime i Codici di RispostaSwitch 4: GIÙ — Nessun echo, comandi offline Switch 5: SU — Auto rispostaSwitch 6: SU — Carrier Detect NormaleSwitch 7: SU — Carica i valori predefiniti
dall'NVRAMSwitch 8: N/D (Modalità intelligente/modalità
stupida)I codici di risposta dovrebbero essere disabilitati/soppressi per i
modem chiamanti per evitare i problemi che possono capitare
se getty dà incidentalmente un prompt
login: ad un modem che si trova in modalità
di comando ed il modem restituisce l'eco del comando o un codice di
risposta. Questa sequenza può portare ad una lunga, stupida
conversazione tra getty ed il modem.Configurazione a Velocità FissaPer una configurazione a velocità fissa, avrai bisogno di
configurare il modem affinché mantenga una frequenza dati
da modem a computer indipendente dalla frequenza di comunicazione.
Su un modem esterno &usrobotics; &sportster; 14.400
questi comandi bloccheranno la velocità dati tra modem e
computer alla velocità con la quale i comandi sono stati
inviati:ATZ
AT&B1&WConfigurazione a Velocità ConcordataPer una configurazione a velocità concordata, sarà
necessario configurare il modem affinché modifichi la frequenza
dei dati della porta seriale relativamente alla velocità di
arrivo. Su un modem esterno &usrobotics; &sportster; 14.400, questi
comandi causeranno il blocco della frequenza di trasmissione dati con
correzione d'errore del modem sulla velocità con il quale
è stato inviato il comando, ma permetteranno variazioni della
velocità della porta seriale per le connessioni senza
correzione d'errore:ATZ
AT&B2&WVerifica della Configurazione del ModemLa maggior parte dei modem ad alta velocità fornisce
comandi per verificare i parametri funzionali usati dal modem in
maniera più o meno comprensibile.
Sui modem esterni &usrobotics; &sportster; 14.400, il comando
ATI5 mostra le impostazioni che sono immagazzinate
nella RAM non volatile. Per vedere i veri parametri operativi del
modem (così come vengono influenzati dai DIP switch del modem),
usa i comandi ATZ e ATI4.Se hai modem di marche differenti, verifica il manuale del tuo
modem per vedere come sia possibile un ulteriore controllo sui
parametri di configurazione del modem.Risoluzione dei ProblemiQuesti sono un po' di passi che è possibile seguire per
verificare il funzionamento del modem sul tuo sistema.Verifica del Sistema FreeBSDCollega il modem al sistema FreeBSD, avvia il sistema, e,
se il tuo modem ha luci di indicazione dello stato, guarda se la luce
DTR del modem si accende quando appare il prompt
login: sulla console del sistema
— se si accende, dovrebbe significare che FreeBSD ha avviato
un processo getty sulla porta di comunicazione
appropriata e sta aspettando una chiamata dal modem.Se l'indicatore DTR non lampeggia, effettua il
login sul sistema FreeBSD dalla console e dai il comando ps
ax per verificare se FreeBSD sta cercando di eseguire un
processo getty sulla porta corretta. Dovresti
vedere linee come queste tra i processi mostrati: 114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0
115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1Se vedi qualcosa di diverso, come questo: 114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0ed il modem non ha ancora accettato chiamate, ciò
significa che getty ha completato l'apertura della
porta di comunicazione.
Questo potrebbe indicare un problema nei cavi o un modem
mal configurato, poiché getty non dovrebbe
completare l'apertura della porta fino al rilevamento del segnale
CD (carrier detect).Se non vedi nessun processo getty in attesa
sulla porta ttydN
scelta, ricontrolla le voci in /etc/ttys per
vedere se ci sono errori lì. Inoltre, controlla il file di log
/var/log/messages per vedere se ci sono messaggi
di init o getty
riguardo i loro problemi. Se ci sono messaggi, ri-ricontrolla i file
di configurazione /etc/ttys e
/etc/gettytab, ed anche i file speciali di
dispositivo /dev/ttydN, cercando ogni errore,
voce mancante, o file di dispositivo mancante.Tentativo di Connessione in IngressoCerca di collegarti dall'esterno al sistema; assicurati di usare 8
bit, nessuna parità, e 1 bit di stop sul sistema remoto. Se
non ottieni un prompt, o vengono visualizzati caratteri strani, prova
a premere Invio circa una volta per secondo.
Se dopo un po' ancora non vedi un prompt login:,
prova inviare un'INTERRUZIONE. Se stai usando un
modem ad alta velocità per effettuare la chiamata, prova a
richiamare dopo aver bloccato la velocità dell'interfaccia del
modem (tramite AT&B1 su un &usrobotics;
&sportster;, ad esempio).Se ancora non ottieni alcun prompt login:,
verifica /etc/gettytab ancora e ricontrolla
che:La capacità iniziale specificata in
/etc/ttys per quella linea corrisponda a
quella in /etc/gettytabOgni campo nx= corrisponda ad un
valore in gettytabOgni campo tc= corrisponda a un altro nome
di capacità in gettytabSe chiami ma il modem su FreeBSD non risponde,
assicurati che il modem sia configurato per rispondere alla chiamata
quando viene fornito un segnale DTR. Se il modem
sembra essere configurato correttamente, verifica che la linea
DTR sia attiva controllando
gli indicatori luminosi del modem (se ne ha).Se hai già controllato tutto quanto più volte ed
ancora non funziona, fai una pausa e riprova in seguito. Se ancora
non funziona puoi provare a inviare un messaggio di posta elettronica
alla &a.questions; descrivendo il tuo modem ed il tuo problema, e i
bravi ragazzi della lista cercheranno di darti una mano.Servizio di Effettuazione Chiamateservizio di effettuazione chiamateI seguenti sono consigli per far sì che la tua macchina sia in
grado di connettersi tramite modem ad un altro computer. Questo è
appropriato per stabilire una sessione terminale con un host
remoto.Questo è utile per collegarsi ad una BBS.Questo tipo di connessione può essere estremamente utile per
ottenere un file da Internet se hai problemi con il PPP. Se hai
bisogno di usare l'FTP ed il PPP non funziona, usa la sessione terminale
per eseguire l'FTP.
Poi usa zmodem per trasferire il file sulla tua macchina.Il Mio Modem Hayes Stock Non È Supportato, Cosa Posso
Fare?Effettivamente, la pagina man di tip
è un po' datata.
C'è un compositore Hayes generico già integrato. Usa
semplicemente at=hayes nel tuo
/etc/remote file.Il driver Hayes non è abbastanza intelligente da riconoscere
alcune delle caratteristiche avanzate dei nuovi modem—messaggi
come BUSY, NO DIALTONE, o
CONNECT 115200 lo confonderanno e basta. Dovrai
disattivare questi messaggi quando usate tip (usando
ATX0&W).Inoltre, il timeout di composizione per tip
è di 60 secondi.
Il tuo modem dovrebbe usare qualcosa di meno, altrimenti tip
penserà che ci sia un problema di comunicazione. Prova
ATS7=45&W.Come viene fornito, tip non supporta ancora
i modem Hayes completamente. La soluzione è modificare il file
tipconf.h nella directory
/usr/src/usr.bin/tip/tip. Ovviamente avrai
bisogno della distribuzione con i sorgenti per fare ciò.Modifica la linea #define HAYES 0 a
#define HAYES 1. Poi dai i comandi
make e make install.
Tutto funziona bene dopo aver fatto questo.Come Dovrei Inserire Questi Comandi AT?/etc/remoteInserisci quella che viene definita una voce diretta
nel file /etc/remote. Ad esempio, se il tuo modem
è collegato alla prima porta seriale,
/dev/cuad0, allora inserisci la riga
seguente:cuad0:dv=/dev/cuad0:br#19200:pa=noneUsa la frequenza di bps più alta supportata dal tuo modem per
il valore di br. Poi, digita tip cuad0 e verrai
connesso al tuo modem.O usa cu come root con il
seguente comando:&prompt.root; cu -llinea -s velocitàlinea è la porta seriale
(es. /dev/cuad0) e
velocità è la velocità
(es. 57600). Quando hai finito di inserire i comandi
AT premi ~. per uscire.Il Simbolo @ per il Valore pn Non
Funziona!Il simbolo @ come valore del numero telefonico
dice a tip di andare a cercare un numero telefonico in
/etc/phones.
Ma il segno @ è anche un carattere speciale
nei file come /etc/remote. Devi farne l'escape con
un backslash:pn=\@Come Posso Chiamare Un Numero Telefonico Da Riga di
Comando?Metti una cosiddetta voce generica in
/etc/remote. Ad Esempio:tip115200|Chiama un qualunque numero a 115200 bps:\
:dv=/dev/cuad0:br#115200:at=hayes:pa=none:du:
tip57600|Chiama un qualunque numero a 57600 bps:\
:dv=/dev/cuad0:br#57600:at=hayes:pa=none:du:Poi puoi fare una cosa simile:&prompt.root; tip -115200 5551234Se preferisci cu a tip,
usa una voce generica per cu:cu115200|Usa cu per chiamare un numero qualsiasi a 115200bps:\
:dv=/dev/cuad1:br#57600:at=hayes:pa=none:du:e digita:&prompt.root; cu 5551234 -s 115200Devo Digitare La Frequenza di bps Ogni Volta Che lo Faccio?Metti una voce per tip1200 o
cu1200, ma vai avanti e inserisci una qualunque
frequenza di bps appropriata per il valore di br.
tip pensa che un buon valore predefinito sia
1200 bps, motivo per cui cerca una voce per
tip1200.
Non sei obbligato a usare 1200 bps, comunque.Accedo ad un Grande Numero di Host attraverso un Server di
TerminaliInvece di aspettare fino ad essere connesso e poi digitare
CONNECT <host> ogni volta, usa la
funzionalità cm di tip. Ad esempio, queste
voci in /etc/remote:pain|pain.deep13.com|La macchina di Forrester:\
:cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|La macchina di Frank:\
:cm=CONNECT muffin\n:tc=deep13:
deep13:Server di terminali del Gizmonics Institute:\
:dv=/dev/cuad2:br#38400:at=hayes:du:pa=none:pn=5551234:ti permetteranno di digitare tip pain o
tip muffin per collegarti agli host pain o muffin, e
tip deep13 per il server di terminali.Tip Può Provare Più di una Linea per ogni
Sito?Questo è spesso un problema quando una università ha
molte linee di modem e molte migliaia di studenti cercano di
usarle.Inserisci una voce per la tua università in
/etc/remote e usa @ per il
campo pn:big-university:\
:pn=\@:tc=dialout
dialout:\
:dv=/dev/cuad3:br#9600:at=courier:du:pa=none:Poi, elenca i numeri di telefono dell'università in
/etc/phones:big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114tip proverà ognuno di questi secondo
l'ordine, poi smetterà. Se vuoi continuare a riprovare, esegui
tip in un ciclo while.Perché Devo Premere CtrlP Due Volte per Inviare Un Solo CtrlP?CtrlP è il carattere predefinito per
forzare, usato per dire a tip che il
prossimo carattere è un dato letterale. Puoi impostare il
carattere per forzare a qualsiasi altro carattere con il comando di
escape ~s, che significa imposta una
variabile.Digita
~sforce=singolo-carattere
seguito da un ritorno a capo.
singolo-carattere è un
qualsiasi carattere singolo. Se non date nessun
singolo-carattere, allora il carattere per
forzare sarà il carattere nullo, che è possibile ottenere
premendo Ctrl2 o CtrlSpazio.
Un valore abbastanza buono per il
singolo-carattere è
ShiftCtrl6, che è usato solo da alcuni server di
terminali.Potete far sì che il carattere per forzare sia un qualsiasi
carattere vogliate specificando la riga seguente nel file
$HOME/.tiprc:force=<singolo-carattere>Improvvisamente Tutto Quello che Digito È in
Maiuscolo??Devi aver premuto CtrlA, il raise character, di
tip progettato specificamente per le persone con il
tasto caps-lock rotto. Usa ~s come mostrato prima
per impostare la variabile raisechar a qualcosa di
ragionevole. In pratica, puoi impostarla allo stesso valore del
carattere per forzare, se pensi di non usare mai queste due
caratteristiche.Qui c'è un file .tiprc di esempio per gli utenti
Emacs che hanno bisogno di premere
Ctrl2 e CtrlA molto spesso:force=^^
raisechar=^^Il carattere ^^ è
ShiftCtrl6.Come Posso Trasferire File con tip?Se stai parlando ad altri sistemi &unix;, puoi mandare e ricevere
file con ~p (put) e
~t (take). Questi comandi eseguono
cat ed echo sul sistema remoto
per accettare e inviare file. La sintassi è:~pfile-localefile-remoto~tfile-remotofile-localenon c'è controllo d'errore, quindi probabilmente dovresti
usare un altro protocollo, come zmodem.Come Posso Eseguire zmodem con tip?Per ricevere file, avvia il programma di invio sul lato remoto.
Poi, digita ~C rz per iniziare a ricevere in
locale.Per inviare file, avvia il programma di ricezione sul lato remoto.
Poi, digita ~C sz files
per inviarli sul sistema remoto.Impostazione della Console SerialeKazutakaYOKOTAContributo di BillPaulBasato su un documento di console serialeIntroduzioneFreeBSD ha la capacità di avviare un sistema con soltanto un
terminale stupido su porta seriale come console. Una configurazione
simile dovrebbe essere utile per due tipi di persone: amministratori di
sistema che desiderano installare FreeBSD su macchine che non hanno
tastiera o monitor connesso, e sviluppatori che vogliono effettuare il
debug del kernel o dei driver.Come descritto nel , FreeBSD implementa un
avviamento composto da tre stadi. I primi due stadi sono
nel blocco di avvio che viene immagazzinato all'inizio
della slice di FreeBSD sul disco d'avvio. Il blocco di avvio
poi carica ed avvia il loader (/boot/loader)
come terzo stadio.Per poter impostare la console seriale devi configurare il codice
del blocco di avvio, il codice del loader ed il kernel.Configurazione della Console Seriale, Versione EssenzialeQuesta sezione presuppone che stai usando una configurazione
di default e vuoi solamente una veloce panoramica su come abilitare
una console seriale.Connetti il cavo seriale alla COM1 e al terminale.Per vedere tutti i messaggi di boot sulla console seriale,
dai il comando seguente mentre sei loggato come superuser:&prompt.root; echo 'console="comconsole"' >> /boot/loader.confModifica il file /etc/ttys e cambia
off in on e
dialup in vt100 per l'entry
ttyd0. Altrimenti non verrà chiesta la
password per connettersi via console seriale, con il risultato di
creare un potenziale buco di sicurezza.Riavvia il sistema per vedere se i cambiamenti
funzionano.Se si necessita di una diversa configurazione, esiste una spiegazione
maggiormente dettagliata nella sezione .Configurazione della Console SerialePreparazione di un cavo seriale.cavo null-modemAvrai bisogno di un cavo null-modem o di un cavo seriale
standard ed un adattatore null-modem. Guarda
per una discussione
sui cavi seriali.Scollegamento della tastiera.La maggior parte dei sistemi PC verifica la presenza di una
tastiera durante il Power-On Self-Test (POST) e dà un errore
se la tastiera non viene rilevata. Alcune macchine si lamentano
parecchio per la mancanza della tastiera e non proseguono l'avvio
finché non viene collegata.Se il tuo computer si lamenta per questo errore,
ma si avvia lo stesso, allora non devi fare nulla di speciale.
(Alcune macchine con BIOS Phoenix semplicemente dicono
Keyboard failed e continuano ad avviarsi
normalmente).Se il tuo computer rifiuta di avviarsi senza la tastiera
allora dovrai configurare il BIOS affinché ignori questo
errore (se possibile). Consulta il manuale della tua scheda madre
per maggiori dettagli su come fare ciò.Imposta la tastiera su Non installata nel
setup del BIOS. Sarai ancora in grado di
usare la tastiera. Tutto quel che fa è dire al BIOS
di non verificare la presenza di una tastiera all'accensione.
Il tuo BIOS non dovrebbe segnalare che la tastiera non
è collegata.
Puoi lasciare la tastiera collegata anche con questa opzione
impostata a Non installata e la tastiera
funzionerà lo stesso.Se il tuo sistema ha un mouse &ps2;, le possibilità di
dover scollegare il mouse allo stesso modo della tastiera
sono alte.
Questo perché i mouse &ps2; condividono dell'hardware
con la tastiera e lasciando il mouse collegato potresti
ingannare la verifica della tastiera facendogli credere
che sia ancora presente. Si dice che il sistema
Gateway 2000 Pentium 90 MHz con BIOS AMI funzioni
così.
In generale, questo non è un problema perché il
mouse non è comunque particolarmente utile senza la
tastiera.Collegamento di un terminale stupido alla
COM1
(sio0).Se non possiedi un terminale stupido, puoi usare un
vecchio PC/XT con un programma per modem, o la porta seriale di un
altra macchina &unix;. Se non hai una COM1
(sio0), trovane una.
Attualmente, non c'è altro modo di scegliere
una porta diversa dalla COM1
per i blocco di avvio senza doverlo ricompilare. Se stai
già usando la COM1 per un altro
dispositivo, dovrai rimuoverlo temporaneamente ed
installare un nuovo blocco di avvio ed un nuovo kernel
una volta che FreeBSD sia funzionante. (Si assume che la
COM1 sia sempre disponibile
su un server di file/calcolo/terminali; se davvero hai bisogno
della COM1 per qualcos'altro
(e non puoi passare quel qualcosa alla
COM2 (sio1)),
allora probabilmente non dovresti nemmeno avere a che fare con
tutto questo in primo luogo).Assicurati che il file di configurazione del tuo kernel abbia
i parametri appropriati impostati per la
COM1
(sio0).I parametri rilevanti sono:0x10Abilita il supporto alla console per questa unità.
Gli altri parametri di console sono ignorati se non è
fissato questo.
Attualmente, al massimo un'unità può avere il
supporto alla console; verrà preferita la prima
(secondo l'ordine nel file di configurazione) con questo
parametro.
Questa opzione non renderà la porta seriale la
console.
Imposta il parametro seguente o usa l'opzione
descritta più in basso, insieme a
questa impostazione.0x20Forza questa unità ad essere la console (a meno che
sia presente un'altra console con priorità più
alta), trascurando l'opzione discussa
precedentemente. Il parametro
0x20 deve essere usato insieme al
.0x40Riserva questa unità (insieme a
0x10) e rende l'unità indisponibile
per l'accesso normale. Non dovresti impostare questo
parametro sull'unità della porta seriale che desideri
usare come console seriale. L'unico uso di questo parametro
è per designare l'unità per il debug remoto
del kernel. Guarda il Developer's
Handbook per maggiori informazioni sul
debugging remoto.In FreeBSD 4.0 o successivo, la semantica del
parametro 0x40 è leggermente
differente e c'è un altro parametro per specificare
una porta seriale per il debug remoto.Esempio:device sio0 at isa? port IO_COM1 flags 0x10 irq 4Guarda la pagina man &man.sio.4; per maggiori dettagli.Se i parametri non sono stati impostati, sarà necessario
eseguire UserConfig (su una console differente) o ricompilare il
kernel.Creazione di boot.config nella directory
radice della partizione a nel disco di
avvio.Questo file istruirà il codice del blocco di avvio su
come vuoi avviare il sistema. Per poter attivare la console
seriale, avrai bisogno di una o più delle seguenti
opzioni—se vuoi opzioni multiple, includile tutte sulla
stessa linea:Passa dalla console interna a quella seriale. Puoi usarla
per cambiare i dispositivi console. Ad esempio, se avvii
dalla console interna (video), puoi usare
per dirigere il loader ed il kernel
in modo che usino la porta seriale come dispositivo per la
console. Alternativamente, se avvii da porta seriale, puoi
usare l'opzione per dire al loader ed al
kernel di usare lo schermo come console.Passa da una configurazione singola a una duplice. Nella
configurazione singola la console sarà o quella interna
(il display video) o la porta seriale, a seconda dello
stato dell'opzione già descritta.
Nella configurazione duplice, sia il display video che la
porta seriale diventeranno la console allo stesso momento,
senza curarsi dello stato dell'opzione .
Ad ogni modo, nota che questa configurazione duplice ha
effetto solo durante l'esecuzione del blocco di avvio.
Una volta che il loader ha assunto il controllo, la console
specificata da diventa l'unica.Fa sì che il blocco di avvio verifichi la presenza
della tastiera. Se non ne viene rilevata nessuna, le opzioni
e
vengono impostate automaticamente.A causa delle costrizioni relative allo spazio
nelle versioni attuali del blocco di avvio, l'opzione
è in grado di riconoscere solo le
tastiere estese. Le tastiere con meno di 101 tasti (e senza
i tasti F11 e F12) potrebbero non essere rilevate.
Le tastiere su alcuni computer portatili potrebbero
non essere rilevate a causa di questa limitazione.
Se questo è il caso del tuo sistema,
devi abbandonare l'opzione .
Sfortunatamente non c'è nessun metodo per aggirare
questo problema.Usa l'opzione per selezionare
la console automaticamente, o l'opzione per
attivare la console seriale.Puoi includere altre opzioni come descritte in
&man.boot.8;.Le opzioni, eccetto , verranno passate al
loader (/boot/loader). Il loader
determinerà quale tra il video interno o la console seriale
debba diventare la console esaminando lo stato dell'opzione
. Ciò significa che se specifichi
l'opzione ma non la
in /boot.config, puoi usare la porta seriale
come console soltanto durante l'esecuzione del blocco di avvio; il
loader userà il video interno come console.Avviamento della macchina.Quando avvii la tua macchina FreeBSD, il blocco di avvio
scriverà il contenuto di /boot.config
sulla console. Ad esempio:/boot.config: -P
Keyboard: noLa seconda linea appare solo se metti l'opzione
in /boot.config ed indichi
la presenza/assenza della tastiera. Questo messaggio va alla
console seriale o a quella interna, o a entrambe, a seconda
dell'opzione in /boot.config.OpzioniI messaggi vanno anessunaconsole internaconsole serialeconsole seriale ed internaconsole seriale ed interna, tastiera presenteconsole interna, tastiera assenteconsole serialeDopo i messaggi precedenti, ci sarà una piccola pausa
prima che il blocco di avvio continui nel caricamento del loader e
prima che ulteriori messaggi vengano scritti sulla console.
In circostanze normali, non hai necessità di interrompere il
blocco di avvio, ma potresti volerlo fare per verificare che tutto
sia impostato correttamente.Premi un tasto qualsiasi, differente da
Invio, alla console per interrompere il processo
di avvio. Il blocco di avvio aspetterà ulteriori azioni.
Dovresti vedere qualcosa del genere:>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/boot/loader
boot:Verifica se il messaggio precedente appare sulla console seriale
o su quella interna o su entrambe, secondo le opzioni poste in
/boot.config. Se il messaggio appare nella
console corretta, premi Invio per continuare il
processo di avvio.Se vuoi la console seriale ma non riesci a vedere il prompt sul
terminale seriale, qualcosa è sbagliato nelle tue
impostazioni. Nel frattempo, scrivi e premi
Invio (se possibile) per dire al blocco di avvio (e al loader e al
kernel) di scegliere la porta seriale per la console. Una volta
che il sistema è attivo, torna indietro e verifica cosa
è andato storto.Dopo che il loader è stato caricato e ti trovi nel terzo
stadio del processo di avvio puoi ancora passare dalla console interna
alla console seriale impostando le variabili d'ambiente appropriate nel
loader. Guarda la .SommarioQui c'è il sommario delle varie impostazioni discusse in
questa sezione e la console eventualmente selezionata.Caso 1: Imposti il Flag 0x10 per
sio0device sio0 at isa? port IO_COM1 flags 0x10 irq 4Opzioni in /boot.configConsole durante i blocco di avvioConsole durante il loaderConsole nel kernelnienteinternainternainternaserialeserialeserialeseriale ed internainternainternaseriale ed internaserialeseriale, tastiera presenteinternainternainterna, tastiera assenteseriale ed internaserialeserialeCaso 2: Imposti il Flag 0x30 per sio0device sio0 at isa? port IO_COM1 flags 0x30 irq 4Opzioni in /boot.configConsole durante i blocco di avvioConsole durante il loaderConsole nel kernelnienteinternainternaserialeserialeserialeserialeseriale ed internainternaserialeseriale ed internaserialeseriale, tastiera presenteinternainternaseriale, tastiera assenteseriale ed internaserialeserialeConsigli per una Console SerialeImpostazione di una Velocità Maggiore della Porta
SerialeDi default, le impostazioni della porta seriale sono: 9600 baud, 8
bit, nessuna parità, ed 1 bit di stop. Se desideri cambiare
la velocità, avrai bisogno di ricompilare almeno il blocco di
avvio. Aggiungi la linea seguente a
/etc/make.conf e compila il nuovo blocco di
avvio:BOOT_COMCONSOLE_SPEED=19200Guarda per istruzioni
dettagliate su come costruire e installare nuovi blocchi di
avvio.Se la console seriale è configurata in qualche altra
maniera invece di essere selezionata all'avvio con
, o se la console seriale usata dal kernel
è differente da quella usata dal blocco di avvio, allora
dovrai aggiungere anche le opzioni seguenti al file di
configurazione del kernel e compilare un nuovo kernel:options CONSPEED=19200Utilizzo di una Porta Seriale Differente da
sio0 per la ConsoleUsare una porta seriale differente da
sio0 come
console richiede un po' di ricompilazione. Se vuoi usare un'altra
porta seriale per qualche motivo, ricompila il blocco di avvio, il
loader ed il kernel come segue.Ottieni i sorgenti del kernel. (Guarda il )Modifica /etc/make.conf e imposta
BOOT_COMCONSOLE_PORT all'indirizzo della
porta che vuoi usare (0x3F8, 0x2F8, 0x3E8 o 0x2E8). Solo
i dispositivi da sio0 a
sio3 (COM1
a COM4) possono essere usati; le schede
seriali multiporta non funzioneranno. Non sono necessarie
impostazioni per gli interrupt.Crea un file di configurazione del kernel personalizzato e
aggiungi i flag appropriati per la porta seriale che intendi
usare.
Ad esempio, se vuoi fare di sio1
(COM2) la console:device sio1 at isa? port IO_COM2 flags 0x10 irq 3odevice sio1 at isa? port IO_COM2 flags 0x30 irq 3I flag di console per le altre porte seriali non dovrebbero
essere impostati.Ricompila ed installa il blocco di avvio ed il loader:&prompt.root; cd /sys/boot
&prompt.root; make clean
&prompt.root; make
&prompt.root; make installRicompila ed installa il kernel.Scrivi il blocco di avvio sul disco di avvio con
&man.disklabel.8; ed avvia con il nuovo kernel.Accesso al Debugger DDB dalla Linea SerialeSe desideri entrare nel debugger del kernel dalla console seriale
(utile per diagnostiche remote, ma anche molto pericoloso se generi
un BREAK spurio sulla porta seriale!) allora dovrai compilare
il tuo kernel con le opzioni seguenti:options BREAK_TO_DEBUGGER
options DDBCome Ottenere un Prompt di Login sulla Console SerialeAnche se questo non è necessario, potresti desiderare un
prompt di login sulla linea seriale, ora
che puoi vedere i messaggi di avvio e puoi accedere a sessioni di
debug del kernel attraverso la console seriale.
Qui è spiegato come fare.Apri il file /etc/ttys con un editor
e trova queste linee:ttyd0 "/usr/libexec/getty std.9600" unknown off secure
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
ttyd2 "/usr/libexec/getty std.9600" unknown off secure
ttyd3 "/usr/libexec/getty std.9600" unknown off secureI dispositivi da ttyd0 a
ttyd3
corrispondono a COM1 fino a
COM4. Cambia off a
on per la porta desiderata. Se hai cambiato la
velocità della porta seriale, dovrai cambiare
std.9600 affinché corrisponda
all'impostazione corrente, ad es. std.19200.Potresti anche desiderare cambiare il tipo di terminale da
unknown al tipo effettivo del tuo terminale
seriale.Dopo avere modificato il file, devi dare un kill -HUP
1 affinché i cambiamenti abbiano effetto.Cambiamento della Console dal LoaderLe sezioni precedenti hanno descritto come impostare la console
seriale lavorando sul blocco di avvio. Questa sezione mostra come
specificare a console inserendo alcuni comandi ed alcune variabili
di ambiente nel loader. Quando il loader verrà invocato al terzo
stadio del processo di avvio, dopo il blocco di avvio, le impostazioni
nel loader prenderanno il posto di quelle nel blocco di avvio.Impostazione della Console SerialePuoi facilmente specificare al loader ed al kernel di usare
la console seriale scrivendo una sola riga in
/boot/loader.rc:set console="comconsole"Ciò sarà efficace in ogni caso, qualunque siano le
impostazioni nel blocco di avvio discusse nella sezione
precedente.Sarebbe meglio mettere la linea precedente come prima linea
di /boot/loader.rc in modo da vedere
i messaggi sulla console seriale il prima possibile.Altrimenti, puoi specificare la console interna come:set console="vidconsole"Se non imposti la variabile di ambiente
console del loader, quest'ultimo, e
conseguentemente anche il kernel, useranno
una console qualunque indicata dall'opzione
nel blocco di avvio.Nelle versioni 3.2 o successive, è possibile specificare
la console in
/boot/loader.conf.local o
/boot/loader.conf, piuttosto che in
/boot/loader.rc. Con questo metodo il tuo
/boot/loader.rc dovrebbe apparire
così:include /boot/loader.4th
startPoi, crea /boot/loader.conf.local ed
aggiungi lì la linea seguente.console=comconsoleoconsole=vidconsoleGuarda &man.loader.conf.5; per maggiori informazioni.Al momento il loader non ha un'opzione equivalente alla
del blocco di avvio, e non c'è
possibilità di scegliere automaticamente la console interna e
la console seriale basandosi sulla presenza di una tastiera.Utilizzo di una Porta Seriale Diversa da
sio0 per la ConsoleSarà necessario ricompilare il loader per usare una
porta seriale differente da sio0 per la
console seriale. Segui la procedura descritta nella .AvvertimentoL'idea di tutto questo è di permettere alla gente di mettere
su server dedicati che non abbiano bisogno di hardware grafico o di
tastiere. Sfortunatamente, mentre la maggior parte dei sistemi
ti permetteranno di avviare senza tastiera, ce ne sono alcuni che
non ti permetteranno di partire senza un adattatore grafico.
Le macchine con BIOS AMI possono essere configurate per partire senza
adattatori grafici cambiando semplicemente il valore di graphics
adapter nella configurazione CMOS a Not
installed.Ad ogni modo, molte macchine non supportano questa opzione e si
rifiuteranno di avviarsi se non si ha hardware grafico nel sistema.
Con queste macchine, avrai bisogno di lasciare un qualche tipo di scheda
grafica attaccata, (anche una scheda monocromatica di recupero) sebbene
non avrai necessità di collegare un monitor.
Potresti anche tentare di installare un BIOS AMI.