设置com1⼝,让超级终端通过com1⼝进⾏登录 确认有/sbin/agetty 这个⽂件
编辑/etc/inittab,添加 7:2345:respawn:/sbin/agetty /dev/ttyS0 9600
9600bps是因为联路由器缺省⼀般都是这种速率,也可以设成19200、38400、57600、115200 修改/etc/securetty,添加⼀⾏:ttyS0,确保root⽤户能登录 重启机器
参考⽂档:
===========================================================
通过COM⼝/串⼝管理LINUX服务器
原⽂地址
本⽂简要地介绍了如何通过常见的COM⼝进⾏LINUX服务器的控制台的扩展,具有实⽤性和简易性,不受服务器⽹络等条件的,可以⽅便地管理实际⽣产环境中的LINUX服务器。
说 到管理LINUX服务器,⼤家会有很多种不同的办法:键盘+显⽰器、通过⽹络登陆、基于WEB的⼯具、X系统下的图形⼯具等等,这些⽅法⽤在普通的服务器 或者⾃⼰的PC服务器上是没有任何问题的,但是要管理⼀台24X7模式的服务器,确保在任何情况下都能直接快捷地管理到服务器,就不是那么容易了。对⽐以上说到的⼏种⽅式:
· X系统下的图形⼯具。这当然是界⾯很友好的⽅式了,⽽且X系统也可以通过⽹络扩展到远程,但⽹络毕竟不是这么可靠,如果服务器的⽹络瘫痪了,你正好需要远程解决⽹络的问题,那该怎么做?
· 基于WEB的⼯具。这种⽅式的界⾯也是相当友好,如webadmin,但是由于安全⽅⾯的问题,这些⼯具是不会安装在真正重要的服务器上的,另外这种⽅式也受限于⽹络;
· 通过⽹络登陆。这是常⽤的办法,⼀般服务器会对信赖的远程站点开放SSH服务,以便维护⼈员可以远程登陆进⾏⽇常维护,这是很安全的,但很不幸它还是基于⽹络的,当然也受限于⽹络;
· 键盘+显⽰器。这是最保险的办法,笔者都建议使⽤这种最保险的办法,但是很不幸这也是有缺陷的,就是有很多服务器都不配备显⽰器和键盘,就算有,也只是安装系统时使⽤,⼀旦投⼊⽣产运⾏就不再使⽤显⽰器和键盘了。
其实对于UNIX/LINUX系统的服务器,可以通过COM⼝即串⾏⼝来扩展系统的控制台,作为另外的途径管理服务器。
CONSOLE, 即控制台,是系统输出管理信息的字符输出设备,这些管理信息是由内核产⽣,⽐如系统⽇志、告警信息等。LINUX下默认的控制台就是键盘和显⽰器,⽽⼀些 ⽼式的SUN、HP、IBM服务器则使⽤串⾏⼝接Text Terminal[1](字符终端,如著名的DEC的VT100)作为控制台,这也是这次将要介绍的⽅式。
字 符终端在⼤型机时代⽤得⽐较多,⼀个⼤型机通常联接许多终端,每个终端没有处理能⼒,只是简单地⽤键盘输⼊和从屏幕输出结果,处理过程都是由⼤型机完成。 字符终端屏幕多为⿊⽩字符型的,不具备图形显⽰功能。这⾥介绍的Text Terminal和⼤型机的终端是⼀样的,只不过市场上早就没有新的终端设备了,现在都是通过应⽤程序模拟⼀个终端,叫虚拟终端,如WINDOWS的超级 终端就是常⽤的⼀个虚拟终端程序,在管理⼯作站上⽤打开超级终端(使⽤正确的速率),就相当于⼀个终端了。
这 种通过串⾏⼝实⾏CONSOLE功能是⼴泛使⽤的,如CISCO的路由器,都是通过这种⽅式进⾏设备的管理,⼩⼩的⼀条CONSOLE线就相当于⼀台PC 的显⽰器加键盘,这⽆疑为路由器省下了许多不必要的配件,⽽事实上部分CISCO的设备就是⼀台PC,如思科
PIX515防⽕墙,只要你插上⼀块PCI的 显卡到PCI槽,接上显⽰器,按下PIX的开关,你就可以看到⼀台BX主板、奔腾II代350MHZ处理器、128M内存电脑的启动信息,和⼀台普通电脑 启动是没有任何区别的。当PIX完成⾃检后,控制台就转到CONSOLE⼝上了,⽽那个RJ45接⼝的CONSOLE⼝,其实就是⼀个COM⼝,只是接⼝ 形式不是9针D形⼝⽽⼰。
现在可以明确我们需要做的⼯作了:使⽤管理⼯作站的虚拟终端程序模拟⼀个字符终端设备,通过COM⼝对COM⼝的形式将LINUX的CONSOLE重定向到该虚拟终端,以实现从虚拟终端控制LINUX服务器。步骤如下:
1、制作交叉线
两 台电脑要⽤COM⼝互联起来需要⼀种\"NULL MODEM CABLE\",\"NULL MODEM CABLE\"直译过来⼤致是\"交叉MODEM线\",和⽹线的交叉线意思相近,这是⽤来\"背靠背\"联接两个DTE设备的,两头都是9针D型母接头,分别插⼊ 管理⼯作站和服务器的COM⼝中,为了⽅便标识建议都接第⼀个COM⼝。这种线可以⾃⼰制作,也可以去电脑城买,最⽅便的是有CISCO的标准 CONSOLE线加RJ45转9针D型母接头的转接头(部件号74-0495-01),可以直接使⽤。⾃⼰制作可以参考以下的线序:缩写RxDTxD DTRGNDDCDDSRRTS
引脚定义Receive Data 2Transmit Data 3
Data Terminal Ready 4Signal Ground 5Carrier Detect 1Data Set Ready 6Request To Send 7
⽅向<-------->+-->--+--><----><--+<--+------>
引脚定义
3 TxD Transmit Data2 RxD Receive Data6 DSR Data Set Ready1 DCD Carrier Detect5 GND Signal Ground
4 DTR Data TerminalReady
8 CTS Clear To Send
RTSCTSRI
Request To Send 7Clear To Send 8Ring Indicator 9
----><----(not used)
8 CTS Clear To Send7 RTS Request To Send
制作时需要把Txd与Rxd、CTS与RTS、GND与GND、DTR与DSR&DCD交叉相联,DSR&DCD表⽰这两个引脚串联在⼀起作为⼀个引脚信号。更多的详细介绍参见Serial-HOWTO[3]。
2、测试联通性
管 理⼯作站和服务器接上交叉线后,可以简单地来测试⼀下这条线是否起作⽤。在管理⼯作站上⽤超级终端新建⼀个联接,速率
9600,8数据位,1停⽌位,⽆奇 偶校验位,⽆硬件\"Flow control\";在服务器上echo '1'>/dev/ttyS0(需要ROOT权限),在管理⼯作站超级终端⾥观察是否能收到数字1,如果能收到就表明联接⽆问题。如果不能收到则要 在服务器上检查⼀下各信号引脚是否正确,使⽤命令\"statserial /dev/ttyS0\"可以查看当前串⾏⼝的状态(在CABLE对端不接管理⼯作站时或者线序错误时DSR状态为0),联接状态如下:Device: /dev/ttyS0Signal Name-----FGTxDRxDRTSCTSDSRGNDDCDDTRRI
Pin(25)---123456782022
Pin(9)----327865149
Direction(computer)----------outinoutinin-inoutin
Status---------101-010
Full Name-----Frame GroundTransmit DataReceive DataRequest To SendClear To SendData Set ReadySignal GroundData Carrier DetectData Terminal ReadyRing Indicator
3、从POST开始
这 是很多电脑都⽆法实现的功能,这主要取决于主板BIOS是否⽀持。POST(Power On Self Test)即我们通常说的⾃检,我们可以看到系统的基本信息及检查过程,当然也有可能有出错的提⽰信息及相应的处理提⽰,有⼀些型号的服务器主板(如 INTEL原装
NL440BX)可以将POST重定向到COM⼝,这样我们可以接⼀个终端在COM⼝上便能看到POST过程,当然也可以通过终端操作,完全不需要键盘和显⽰器。可惜⼀般情况下我们的主板并不⽀持这项功能,但是没有关系,我们可以先设定好BIOS参数(Halt On 设置为None)忽略⽆关紧要的出错信息,让每次系统⾃检都顺利通过,这样系统便能顺利进⼊硬盘启动了。
4、重定向GRUB
也 许你有⼏个系统(如FreeBSD),或者有新的内核需要进⾏测试,你可能希望通过COM⼝来选择系统,将GRUB重定向到COM⼝也是可能的。我们在 GRUB的manual页[4]可以看到其⽀持seriral终端,在GRUB配置⽂件第⼀条Title的前⾯加⼊两⾏如下:
serial --unit=0 --speed=38400terminal serial console
我们便能从接在COM⼝上的终端中看到GRUB的提⽰信息,通过上、下键选择光带就可以正确地进⼊各个系统了。LILO的⽤法类似,请参阅LILO的⼿册页。
5、重定向CONSOLE
为 了能够控制LINUX服务器启动过程,我们需要传递⼀些参数到LINUX内核中,从serial-console[2]中我们可以看到只需要将
console=ttyS0,9600传递到内核中就可以实现CONSOLE重定向到串⼝。当然9600的速度太慢,我们可以使⽤38400的速率,这样 显⽰的速度就和启动时显⽰器上显⽰的速度差不多了。我的服务器使⽤GRUB,所以我的/boot/grub/menu.lst⽂件中kernel语句如 下:
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ console=tty0 console=ttyS0,38400
现 在重新启动LINUX服务器,打开超级终端,不出意外就能看到平时在显⽰器上才看得到的启动信息,当然你也可以按\"i\"键进⼊交互式的启动模式,当然在不 ⼩⼼踢掉电源后也能轻松输⼊\"Y\"进⾏⽂件系统检测,是不是很好⽤?不过启动完了系统后怎么就停在那⾥不动了?好像LINUX很笨啊,它居然不知道我想从 这⾥登录进系统?不要怪LINUX,我们马上就来解释为什么会这样以及解决办法。
6、开启ttyS0登陆
其 实LINUX启动时的信息都是由KERNEL显⽰的,缺省情况下启动完毕了后init再运⾏mingetty来提供6个虚拟终端来登陆系统,这可以在 /etc/inittab⽂件中清楚地看到。其实login和内核是没有关系的,所以如果只是在内核中加⼊参数使其能从COM⼝交互式地操作并不代表能从 超级终端登录系统,我们需要另外运⾏⼀个提供从串⼝登录能⼒的程序,这个程序就是agetty,它是属于util-linux软件包中的⼀员,⼤家可以参 考其man⼿册页以获得更多的信息,这些信息在其他的⽂档[1][3]中也都提及到了。我在服务器的/etc/inittab⽂件中加了⼀⾏如下:
S0:2345:respawn:/sbin/agetty -L 38400 ttyS0
这样我们就能从超级终端登录系统了,很好⽤吧。
7、⼀些经验
使⽤ttyS0登录还有⼀些⼩的窍门和经验,以下是我的经验:
COM⼝的传输距离有,普通的线缆只有15⽶的有效距离,建议使⽤5类双绞线,可以扩展到50⽶仍能正常操作;
⼤家⼀般会想使⽤root从ttyS0登录,但是默认的这是不⾏的,我们需要把该终端加⼊到⽂件/etc/securetty中,就是说终端ttyS0是安全的终端,可以使⽤root登录;
如果服务器长时间开着的话,最好每次都使⽤exit退出该终端,因为如果不退出来的话,下次再登陆可能会出现输⼊乱码导致终端不可⽤等问题,⽽在登录提⽰符下输⼊乱码则⽆关紧要;
如 果你是通过这种⽅法管理⼀台实际24X7开着的服务器的话,你可能会有时发现在终端中按回车没有任何反映,有⼀种可能性就是系统在停电后再开机出现不能启 动NFS和sendmail之类的服务,就这样卡在那⾥死锁住了,这在电源不稳定的情况下尤其多见,所以⼀定要给你的LINUX服务器接上UPS不间断电 源,或者在系统BIOS⾥设置断电后不再启动系统(如果它不是太重要的话),在这种情况下只有按键盘重新启动或者直接断电再重新启动⼀次,检查启动过程到 底发⽣了什么事情,⼀般只需要检查⼀遍硬盘就没有问题了;
如 果你的ttyS0出现乱码没有办法使⽤的话,可以尝试着从⽹络登陆,把/etc/inittab中ttyS0那⼀⾏注释,使⽤\"init q\"命令停⽌通过inittab启动的agetty,然后再重新取消/etc/inittab中的注释,再次\"init q\"命令启动agetty,不出意外就能恢复正常了。
结束语
到 此我们就⽅便地管理没有显⽰器和键盘的LINUX服务器了,实际⽣产中可以使⽤终端服务器代替管理⼯作站来管理⾮常多的服务器。简单地说终端服务器有许多 COM⼝,可以同时连接多个服务器(或者⽹络设备如思科路由器)的CONSOLE,以实现集中式管理。LINUX也可以作为优秀的终端服务器,我们将另作 介绍。
参考资料
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务