April 12, 2005

Linux Remote Serial Console Howto 筆記2

原始文件出處
LDP: Linux Remote Serial Console HOWTO (英文)
http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/

測試環境:
OS -- Red Hat Linux 9, Fedora Core 2
boot loader -- GRUB
設定鮑率為 9600, 資料位元 8, 同位檢查 n, 停止位元 1

修改步驟:

  1. 修改 GRUB:
    1. GRUB 全域參數
      bash# vi /etc/grub.conf
      新增下面二行以設定 serial console 為 9600/8/n/1, 以及 10 秒等待時間.
      serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1
      terminal --timeout=10 -dumb serial console

    2. 增加一個單人模式選項到 GRUB 選單
      title Red Hat Linux (2.4.9-21) single user mode
      lock
      root (hd0,0)
      kernel /vmlinuz-2.4.9-21 ro root=/dev/hda6 s
      initrd /initrd-2.4.9-21.img
    3. 修改每個 kernel 項目參數 , 加入紅色字部分
      title Red Hat Linux (2.4.9-21)
      root (hd0,0)
      kernel /vmlinuz-2.4.9-21 ro root=/dev/hda6 console=tty0 console=ttyS0,9600n8
      initrd /initrd-2.4.9-21.img

  2. 安裝 mgetty
    1. 系統已安裝的 mingetty 不支援 serial console.
      請取得 mgetty 並安裝.
      如: mgetty-1.1.30-2.i386.rpm
      rpm -ivh mgetty-1.1.30-2.i386.rpm
    2. 在 /etc/mgetty+sendfax/mgetty.config 如下設定 ttyS0
      bash# vi /etc/mgetty+sendfax/mgetty.config

      port ttyS0
      speed 9600
      direct yes
      data-only yes
      toggle-dtr yes
      need-dsr yes
      port-owner root
      port-group root
      port-mode 600
      login-prompt @ \P login:\040
      login-time 60
      term vt102
  3. /etc/inittab 設定
    1. 設定 mgetty 為 ttyS 設備, 在最下面增加一行
      bash# vi /etc/inittab

      co:2345:respawn:/sbin/mgetty ttyS
    2. 在 /etc/inittab 改變預設登入的 run level 為文字模式 ( run level 3)
      找到
      id:5:initdefault:
      改為
      id:3:initdefault:
    3. 在 /etc/inittab 移除不用的 mingetty 項目
      1:2345:respawn:/sbin/mingetty tty1
      # Additional virtual terminals are not used
      2:2345:off:/sbin/mingetty tty2
      3:2345:off:/sbin/mingetty tty3
      4:2345:off:/sbin/mingetty tty4
      5:2345:off:/sbin/mingetty tty5
      6:2345:off:/sbin/mingetty tty6
    4. 存檔離開, 重新啟動 init
      bash# telinit q
  4. 編輯 /etc/securetty 以允許 root 由 serial console 登入
    在 /etc/securetty 加入下面一行
    ttyS0
  5. 移除現有的 console 設定
    bash# rm -f /etc/ioctl.save
  6. 改變 /dev/systty 的裝置設定
    bash# cd /etc/makedev.d
    bash# fgrep systty *
    linux-2.4.x:l systty tty0
    bash# vi linux-2.4.x
    找到
    l systty tty0
    改為
    l systty ttyS0
    存檔, 重新建立 /dev/systty
    bash# cd /dev
    bash# rm systty
    bash# ./MAKEDEV systty
  7. PAM 認證設定
    bash# vi /etc/security/console.perms
    增加下面一行
    <sconsole>=ttyS0
    然後把 console 的項目改為 sconsole
    <sconsole> 0660 <floppy> 0660 root.floppy
    <sconsole> 0600 <sound> 0600 root
    <sconsole> 0600 <cdrom> 0660 root.disk
    <sconsole> 0600 <pilot> 0660 root.uucp
    <sconsole> 0600 <jaz> 0660 root.disk
    <sconsole> 0600 <zip> 0660 root.disk
    <sconsole> 0600 <ls120> 0660 root.disk
    <sconsole> 0600 <scanner> 0600 root
    <sconsole> 0600 <camera> 0600 root
    <sconsole> 0600 <memstick> 0600 root
    <sconsole> 0600 <flash> 0600 root
    <sconsole> 0600 <mainboard> 0600 root
    <sconsole> 0600 <rio500> 0600 root

  8. Red Hat Linux 的設定
    1. bash# vi /etc/sysconfig/init
      改為
      BOOTUP=serial
      PROMPT=no
    2. bash# vi /etc/sysconfig/kudzu
      改為
      SAFE=yes
  9. 現在可以重開機並測試你的 seial console
LILO 的修改:

LILO 全域參數設定範例:
serial=0,9600n8
timeout=100
restricted
password=PASSWORD


The password should be good, as it can be used to gain root access.
LILO 的 password 是以 plain text 存在設定檔, 所以不要跟你其他的密碼相同. 設定檔的權限應該設定為只能讓 root 可以讀取 /etc/lilo.conf. 設定方式如下:
bash# chmod u=rw,go= /etc/lilo.conf

LILO 有顯示開機訊息的功能,但不能在 serial console 顯示,請刪除像下面此行的設定:
message=/boot/message

至此 LILO 已經設定好使用 serial console.

對於 /etc/lilo.conf 中的每個 image 項目加入此行:
append="console=tty0 console=ttyS0,9600n8"

若已經有 append 敘述. 例如
append="mem=1024M"

可改成如下敘述以傳送所有的參數:
append="mem=1024M console=tty0 console=ttyS0,9600n8"

這樣就完成 LILO 的設定.

現在用 lilo 指令安裝新的 boot record 到磁碟上:
bash# chown root:root /etc/lilo.conf
bash# chmod u=rw,g=,o= /etc/lilo.conf
bash# lilo
Added linux *


現在可以重開機並測試你的 serial console.

1 意見:

Jaki said...

補充--
測試方式文件如下:
CH8 Reboot and test
http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/test.html