2013-05-30 10 views
12

Sul mio sistema embedded di solito uso/dev/ttyS0 come console principale. Ciò si ottiene passando il parametro del kernel console=/dev/ttyS0 e quando init prende la sua parte, getty viene attivato sullo stesso dispositivo specificato in inittab ad es. ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100.Come cambiare la console del kernel di Linux dopo il processo di avvio?

C'è qualche possibilità di modificare queste impostazioni senza riavviare e passare la console ad un altro terminale come ttyS1, ttyUSBx o anche qualche pseudo tty?

+0

Il motivo principale per cui sto chiedendo è la mia necessità di usare ttyS0 per un trasferimento binario occasionale su un altro dispositivo. Il resto del tempo dovrebbe comportarsi come una console standard. – Honza

+1

Per perfezionare l'ambito della tua domanda: dopo il processo di avvio (uscita in ttyS0), vuoi cambiare l'output della console in un altro * tty *, senza l'uso di una modifica del livello di runtime, cioè senza usare il comando * init * ad un altro livello? –

+0

Sì, forse il termine runtime utilizzato è confuso, ho aggiornato la domanda. – Honza

risposta

4

Sembra che forse in realtà non si desidera che i messaggi di log della console su un altro dispositivo, ma propongono solo di reindirizzarli lì per impedire loro di interferire con i trasferimenti binari sul dispositivo seriale principale.

In questo caso, è possibile risolvere il problema regolando dinamicamente il livello di log della console.

http://tuxthink.blogspot.com/2012/07/printk-and-console-log-level.html

suggerisce che si può farlo scrivendo a un nodo proc:

echo "6" > /proc/sys/kernel/printk 

Sarebbe impostarlo a 6 in loro esempio. Sospetto che impostarlo su 0 o 1 funzioni per i tuoi scopi - se qualcosa va storto, il tuo trasferimento binario è probabilmente fallito comunque.

Le voci di registro dovrebbero essere ancora recuperabili da dmesg indipendentemente da questa impostazione.

Problemi correlati