有關串列埠獲得控制台的問題

2021-06-07 22:48:25 字數 2692 閱讀 4023

修改: /etc/inittab

增加一行,類似於: tty:2345:respawn:/sbin/agetty 115200 ttys0

字段"tty"是id ,一般表示這行的用途,注意不要跟inittab裡的其他行重複了

字段「2345」是執行級。

字段「respawn」: 表示程序在無論任何時候終止,都會自動重啟

最後乙個欄位是表明執行的程式和引數,這裡我採用115200的波特率,一般常規都使用9600,我覺得太慢了。就用這個了

修改: /etc/securetty

增加一行, 類似於: ttys0

這樣的目的是允許root在ttys0上登陸

利用串列埠終端作為linux控制台,能夠免去額外的鍵盤,顯示卡和顯示器,同時可將linux主機作為乙個任意用途的嵌入式黑匣。將串列埠終端連線到電腦的串列埠上並不困難,能夠參考linux的howto文件和連同inittab和agetty的幫助資訊。這裡扼要地說一下。

首先,準備好一根null modem 電纜.

其次,在文件/etc/inittab 增加下面一行。[注:假如您不採用 agetty程式,採用其他的程式如like getty_ps ,應用正確的命令語法]

id:runlevels:respawn:/sbin/agetty -l speed tty term

這裡: id =兩字母的識別符號,如s1或s2。

runlevels = 終端啟用的執行級別

speed = 串列埠埠速率

tty = 串列埠的裝置名

term = term環境變數

範例如下:

s2:12345:respawn:/sbin/agetty -l 9600 ttys1 vt100

表示串列埠 /dev/ttys1 (com2 )速率為 9600 bps,終端模式為vt100。

最後,重新啟動機器。

如正確地按照上述三步進行,則就能夠在終端螢幕上出現login: 的提示符。您能夠登入進系統,並能象在實際的控制台上或從遠端telnet登入相同進行工作。

下面簡單介紹一下如何終端配置成控制台,主要涉及核心資訊、啟動指令碼資訊和lilo資訊。

一、核心資訊

系統在啟動時顯示的資訊總是輸出到主控制台(tty1)。開啟機器後,您只有等待login: 出現在終端螢幕上,這意味著任何啟動資訊都無法獲悉。您只有登入後用dmesg命令檢視,但通常是想在login shell起來前看到這些資訊。

更有其他資訊出現在控制台上:/etc/rc.d目錄下指令碼命令執行時,啟動和終止機器時執行的指令碼命令等輸出的資訊。假如資訊沒有出現在螢幕上,怎樣真正地知道"系統已終止"呢?

您必須修改原始碼/usr/src/linux/drivers/char/console.c[必須已安裝了核心原始碼],這不是個複雜得核心修改,按照下面三步進行:

首先,在程式前定義config_serial_echo

#define config_serial_echo

其次,修改串列埠位址 (僅當您使用得埠不同於預設定義的才有必要修改)。

#define serial_echo_port 0x3f8 /* com1 */

或: #define serial_echo_port 0x2f8 /* com2 */

第三,重新編譯核心[請參考相應的手冊],啟動機器。在系統檢測硬體裝置時,您應該在終端螢幕上看到資訊。

請注意 :console.c 補丁除了alpha平台外,對任何的linux 埠都是必要的。在alpha平台上他是在執行make config ,選擇下面的選項完成的:

echo console messages on /dev/ttys1

二、/etc/rc.d/rc.*啟動指令碼資訊

為了將這些資訊顯示在終端上,能夠將這些文件中含有echo命令的行追加" > tty "。 tty 是終端的串列埠(和/etc/inittab 中串列埠終端行的相同)。

三、 lilo 配置

當前的很多嵌入式系統很多使用2個串列埠來進行通訊,乙個串列埠常常作為命令列串列埠,給使用者使用。而另乙個串列埠可以用來通訊或者作為除錯串列埠使用。

本文以兩個串列埠在linux下 乙個作為除錯串列埠,另乙個作為使用者命令列串列埠為例說明。首先,ttys0作為除錯串列埠,而ttys1作為命令列串列埠使用。等系統啟動後,命令列串列埠對使用者是可見的,使用者可以操作。而除錯串列埠只給開發人員使用。

在系統啟動時,傳遞給核心引數時,首先增加console=ttys0 115200n81,至於還需要其他什麼引數,就不多說了。這樣,linux系統會把ttys0作為預設串列埠控制台使用。

接下來要修改/etc/inittab中的內容了,在該檔案注釋有#ttys0::respawn地方增加2行,ttys1::respawn:/sbin/getty -l ttys1 115200 vt100,ttys1::respawn:/sbin/yourprogramm -l ttys1 115200 vt100,這樣系統啟動後會在登陸系統後在串列埠1ttys1上直接執行使用者的程式/sbin/yourprogramm。

如果不需要在串列埠1上使用linux的login,則可以使用乙個-n -l引數,即ttys1::respawn:/sbin/getty -l ttys1 115200 vt100 -n -l /sbin/yourprogramm即可,這樣在啟動系統後直接執行使用者程式,而沒有了busybox的login命令了,而串列埠0上還是有login命令的。

Ubuntu Server 控制台轉串列埠

ubuntu 伺服器下配置串列埠的方法 第一步 修改grub.conf 檔案。其中紅色粗體傾斜字型為需要新增的部分 vi boot grub grub.cfg begin etc grub.d 10 linux menuentry ubuntu,with linux 2.6.32 28 server...

Linux的serial串列埠控制台

本人大多數情況都是在除錯伺服器大量的linux伺服器,很多情況下也不沒有必要專門準備kvm keyboard,video,mouse 甚至有些機器根本就沒有顯示器介面。如何除錯的?閒來無事,分享一下。有些人說 給我個linux視窗 是想要乙個 另外一些人說 給我個linux視窗 就是說他打算挖煤了 ...

關閉串列埠控制台 靈思科

由於mt7620n只有乙個uart lite介面,在原生的openwrt中作為了核心列印和tty控制台所用。而在很多情況下,需要使用串列埠與外部晶元就行通訊,這時就需要從openwrt中釋放串列埠。其實這個任務只有兩個步驟 我們假定 topdir 為openwrt的編譯目錄 關閉串列埠控制台 將 t...