Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7739605
  • 博文数量: 637
  • 博客积分: 10265
  • 博客等级: 上将
  • 技术积分: 6165
  • 用 户 组: 普通用户
  • 注册时间: 2004-12-12 22:00
文章分类

全部博文(637)

文章存档

2011年(1)

2010年(1)

2009年(3)

2008年(12)

2007年(44)

2006年(156)

2005年(419)

2004年(1)

分类: LINUX

2005-04-12 11:42:40

Last Updated: March/07/2002
Errors/Comments:

Setup Serial Console with 'GRUB' bootloader:

  •  Redhat 7.2 onwards and other Linux OS  give grub (GRand Unified Boot Loader) as default boot loader. Follow steps below to setup serial console. Most likely grub is compiled with Serial console support for your distribution, if not compile with Serial port support.
  • Example: /etc/grub.conf  with Serial port support.
====================================================================
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,2)
#          kernel /boot/vmlinuz-version ro root=/dev/sda3
#          initrd /boot/initrd-version.img
#boot=/dev/sda
#
#default image is First(0) image from title list
default=0
#
#This is grub Menu timeout(sec)
timeout=30
#
###############################################
## Serial/Console setup
###############################################
# Avoid splashing any GUI!!
# splashimage=(hd0,2)/boot/grub/splash.xpm.gz
#
# Setup serial (COM1) here with baudrate 9600
# use --unit=1 (for COM2) and so on
serial --unit=0 --speed=9600
#
# Now setup terminal as both Serial Line(/dev/ttyS0) and
# Monitor Console(/dev/tty0) depending upon where you press key
# with in timeout (15 sec) period. Otherwise first entry
# (console(Monitor)=>tty0) is selected here.
terminal --timeout=15  console serial


# In images section below, we are selecting two consoles
# (Serial(ttyS0) and Monitor(tty0) here. But in case of single user mode,
# keyboard entry is allowed from last selected console in 'kernel' line below.
# So we need to setup two different images so that we should be able to
# login in single usermode from any console depending upon selection at boot time.
# But in both cases  kernel message (not OS message) will go to both consoles.
#
#Allow Single user mode from Console(Monitor)
title Red Hat Linux (2.4.17) !!! MONITOR !!!
        root (hd0,2)
        kernel /boot/vmlinuz-2.4.17 ro root=/dev/sda3 console=ttyS0 console=tty0

#Allow Single user mode from Serial Port(ttyS0).
title Red Hat Linux (2.4.17) !!! SERIAL CONSOLE !!!
        root (hd0,2)
        kernel /boot/vmlinuz-2.4.17 ro root=/dev/sda3 console=tty0 console=ttyS0

#Booting Windows through Grub.
title Win2000 Professional
     root        (hd0,1)
     makeactive
     chainloader +1
     # For loading DOS if Windows NT is installed
     # chainload /bootsect.dos

============================================================


  • Avoid any splash image, so comment out splash line first. You need kermit  or some other serial program (Hyperterminal etc)  which supports vt100 emulation. If you are using GUI (X11), 'xterm' do support such. You other GUI terminals  may not support true vt100. You will need 'Null Modem' cable to connect serial ports of computers.
  •  Define Serial port first:
            serial --unit=0 --speed=9600
This will only define serial port definition but won't do anything useful yet. Above is defining Serial port as (COM1), for COM2 specify --unit=1 and so on. After this define terminal for throwing display.
            terminal --timeout=15  console serial
 Here we are defining 15 seconds timeout and both console(Monitor or tty0) and serial port (ttyS0 or COM1) as display. For 15 seconds it will allow  to select either Monitor or Serial port selection depending upon where you press key. Otherwise after 15 seconds it will select first entry ('console' ) in above example as primary display device and show grub menu of OS selection there.



  • Now you can pass kernel option in 'kernel' line  (console=??) to throw kernel messages to  selected devices. You can select both Monitor and Serial port to get kernel messages as in above example.
            kernel /boot/vmlinuz-2.4.17 ro root=/dev/sda3 console=ttyS0 console=tty0

  • Single User Mode Login: Although you can select both Monitor & Serial port to get kernel message, but only last selected 'console=??' in kernel line  will be available for OS messages and keyboard entry in single user mode. So it is desirable to set two images so that you can login as single user on either consoles. Notice:'console=??' entries sequence are swapped in two kernel entries in our example as last defined 'console=???' will be selected as primary console here.

 :Single user mode for Monitor
        kernel /boot/vmlinuz-2.4.17 ro root=/dev/sda3 console=ttyS0 console=tty0
                                                                     ^^^^^^^^^^
                                                                     Last Entry

 :Single user mode for Serial Port
            kernel /boot/vmlinuz-2.4.17 ro root=/dev/sda3 console=tty0 console=ttyS0
                                                                    ^^^^^^^^^^^
                                                                     Last Entry

In order to login as single user mode, at Grub boot selection menu, select kernel image by arrow (UP, DOWN keys) and then hit 'e' key to edit, which will show grub entry for image, select kernel line and append  word 'single'  and ,

kernel /boot/vmlinuz-2.4.17 ro root=/dev/sda3 console=tty0 console=ttyS0 single

 press 'b' to boot this image now. This edit is only temporary and won't overwrite /etc/grub.conf. By this way you can always edit grub entries for boot time temporarily.



  •  Last entry allows Windows partition to boot from Grub loader.

  •  Attaching login: prompt for Serial console: So far all you got is kernel and OS messages on console  (tty0{Monitor} or ttyS0{Serial Port}). This can allow only single user mode on Serial port. But when you go in multi-user mode, Serial line will appear blank till you attach login process to Serial line. You can use mgetty(8) program for this. See for mgetty(8) program.
  Add following line in your /etc/inittab
        # Add a tty to the serial console
        S0:2345:respawn:/sbin/mgetty -b -r -s 9600 -p "Serial Console Login: " ttyS0


   This will  run mgetty in as direct line (-r) (i.e no modem chat initiated), in block mode (-b), with speed as 9600 baud (-s 9600), login prompt as specified by -p option and device is ttyS0 (Serial port device /dev/ttyS0). Either reboot machine or type 'init q' to reread inittab file and that should start login process  on Serial console.

  •  If you setup mgetty(8) process as above, even if you select Monitor as your display console (which allows single user and OS messages on Monitor) still you will get Serial port login: on serial line. This is because after OS boot, mgetty will run irrespective of any selection and wait for login.
  • To allow root login on Serial console, add Serial device entry (ttyS0) in your /etc/securetty file. Otherwise you need to login as normal user and su for root.
阅读(939) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~