2013-05-30 121 views
12

在我的嵌入式系統上,我通常使用/ dev/ttyS0作爲主控制檯。這通過傳遞內核參數console=/dev/ttyS0並且當init發揮其作用時,getty在例如inittab中指定的相同設備上被觸發。 ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100如何在啓動過程後切換Linux內核控制檯?

有沒有可能在不重新啓動的情況下更改這些設置,並將控制檯切換到另一個終端,如ttyS1,ttyUSBx甚至是一些僞tty?

+0

我問的主要原因是我需要使用ttyS0偶爾將二進制數據傳輸到其他設備。其餘的時間應該像標準控制檯一樣。 – Honza

+1

爲了改進問題的範圍:在引導過程(輸出到ttyS0)之後,您希望將控制檯輸出更改爲另一個* tty *,而不使用運行時級別的更改,即不使用命令*初始化*到另一個級別? –

+0

是的,也許使用的術語運行時間很混亂,我已經更新了這個問題。 – Honza

回答

4

看來,也許你實際上並不想在另一臺設備上使用控制檯日誌消息,而只是建議在那裏重定向它們,以阻止它們干擾主串行設備上的二進制傳輸。

如果是這種情況,您可以通過動態調整控制檯日誌級別來解決您的問題。

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

建議你可以通過寫一個進程節點做到這一點:

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

會在他們的榜樣將其設置爲6。我懷疑將它設置爲0或1會適合您的目的 - 如果出現問題,您的二進制傳輸可能會失敗。

無論此設置如何,日誌條目仍應可由dmesg檢索。