2018年4月23日 星期一

[Linux Embedded System] Linux的Serial port(ttyS1) 無法登入&輸入訊息,但是透過VGA(tty1)的卻可以

今天遇到了一個很奇怪的問題,首先我的平台有兩個終端介面可以使用,一個是透過VGA輸出到螢幕的終端介面,可供我們對機器下指令。另一個則是透過Serial port(UART),利用Tera Term或是putty等軟體,來對機器下指令

今天遇到的問題是,進入Linux系統之後,VGA那邊的終端介面可以順利的輸入訊息,機器也能順利的給予回饋,而Serial port的部分則是無法輸入任何訊息,看起來就像是無法進到sh一樣(如下圖)。















我也嘗試了一下,從能夠下指令的VGA那方,輸入下面的指令
#echo "ls" | sh > /dev/ttyS1

結果在ttyS1那方還真有一些回饋訊息,看來問題是跟sh有所關係

















後來找了一些資料,發現可能的問題出在/etc/inittab

最後的解決方法,是去修改/etc/inittab 這之檔案,在裡面的內容多加一行 ttyS1::respawn:-/bin/sh

















重新啟動之後便能夠順利的進入shell 模式底下囉!!!


*註
若是進入到 Linux Kernel 底下,無Serial 訊息,請先確認您的硬體是使用UART1 或 UART2
UART1 就必須指定你的Console參數 ===>  Console=ttyS0
UART2 就必須指定你的Console參數 ===>  Console=ttyS1


3 則留言:

  1. 版主您好,最近小弟也碰到這個問題,我使用的是ttyS0,環境是Ubuntu Server 18.04!
    試著找了一下,並沒有找到inittab檔,我在網路上做了一些功課得到結論都是inittab檔已經被拿掉了!
    如果是這樣的話,要怎麼解決這個問題呢?直接在/etc/下面建立一個inittab可行嗎?

    回覆刪除
    回覆
    1. Hi, 我這邊是使用單純的 Linux kernel,可能會與你使用Ubuntu(Linux distribution)不太一樣~
      你要不要用下面這篇文章的作法試試~
      Reference: https://ubuntuforums.org/showthread.php?t=2343595
      1.建立 /lib/systemd/system/ttyS0.service
      2.chmod 644 /lib/systemd/system/ttyS0.service
      3.sudo systemctl daemon-reload
      sudo systemctl enable ttyS0
      sudo systemctl start ttyS0

      刪除
    2. 感謝回覆,我再試試!XD

      刪除