강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

▒ Serial Port Console Redirection on Linux

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

▒ Serial Port Console Redirection on Linux

 

  서버를 관리하다 보면 한번쯤은 이런 것이 가능할까 ?? 궁금해 할 지도 모르겠습니다.
저 역시 서버를 관리하다 이런 것이 있었으면 좋겠다는 생각으로 시작해서 자료도 많이 찾아 보고 테스트도 많이 해 보면서 이렇게 결론을 내리고 그 보낸 시간이 헛되지 않기 위해서 이렇게 강좌로 남깁니다.
 먼저 결론은 다음과 같습니다.

1. idc에 서버가 있는데 커널을 업그래이드 하다가 서버가 올라 오지 않는다 그럴 때 원격에서 서버의 콘솔로 들어가는 방법이 있을까? (물론 특별한 장비는 사용하지 않습니다.) ==> 이건 좀 어렵더라구요(커널 소스를 변형좀^^:)

2. idc에 고객 지원해 주는 사람이 있고, 그  사람이 on/off 정도 해 줄 수 있다고 하고,, bios setup을 할 수 있을까?
 ==> 서버에서 console redirction을 지원한다면 이건 가능하다.
3. dos로 부팅하여 간단한 작업을 할 수 있을까??? === > 가능합니다.

4. 리눅스 서버를 사용하고 있는데.. 리부팅은 잘 되는데 넷트웍 및 ssh 및 telnet 설정의 잘못으로 원격 접속이 되지 않는데 콘솔 접속처럼 들어갈 수 있을까?? ==> 가능합니다.

 지금부터 약 2일 정도 자료도 찾아보고 테스트 해 본 결과를 적어 보도록 하겠습니다. 일단.. 멀쩡한 서버(클라이언트)가 한 대 있어야 합니다. 그리고 대상 서버가 한 대 있어야 하구요.. 저는 멀쩡한 서버를 (intel 서버)를 사용했고 대상 서버를 (intel STL2보드가 장착된 서버)를 사용했습니다.
map.gif중간에 있는넘은 스위치 입니다.
만약 서버의 설정이 잘못되어 네트웍이 되지 않는다면... 클라이언트 서버를 통해서 서버로 들어갈 수 있습니다.
 

1. 널 케이블 제작 (null cable)
  상가나 기타 다른곳에서 null 모뎀 케이블을 구입할 수 있습니다. 하지만 상가 까지 가는 것두 귀찮아서 남아도는 9핀 케이블을 사용하기로 했습니다. RS 232C 케이블은 9핀 짜리를 제작할 때 9개의 선이 필요한 것이 아닌 3개의 선만 필요로 합니다. 송신용(Tx) , 수신용(Rx) , 그라운드(GND) 이렇게 존재하면 양방향(full duplex) 통신이 가능합니다.
커넥터는 다음 그림과 같이 생겼습니다.
RS232C.jpg어설프게 그림을 그렸습니다.^^;
여기서 ②번이 Tx , ③번이 Rx , ⑦번이 GND입니다. 이렇게 3개의 핀만 있으면 가능합니다.
그럼 null 모뎀은 Rx와 Tx를 서로 서로 물리면 되죠. 물론 GND는 그데로 물립니다.
②(Tx) ------------------------------------------ ③(Rx)
③(Rx) ------------------------------------------ ②(Tx)
⑦(GND) ---------------------------------------- ⑦(GND)
이렇게 3가닥의 선만 연결하면 null 모뎀 제작은 끝납니다.

** 주의!! 그럼 다른 핀들은 폼인가?? 그건 아닙니다. 흐름제어를 하기 위해서 필요한 선들인데 연결하지 않았으므로 앞으로 할 설정에서 H/W 흐름제어는 모두 없는 것으로 해야 합니다.


2. Server Board 의 console redirection 이용(서버측 설정)
  intel 및 기타 서버 보드라면 기본적으로 console redirection을 지원합니다. 지금 테스트로 사용할 서버는 한때는 고가였던 intel Server Board STL2 보드의 바이오스에 들어가서 셋팅해 보도록 하겠습니다.
(bios setup을 캡쳐할 수 없어 console redirection 기능을 사용하여 캡쳐 하였습니다. (ANSI모드))

bios_serial_port_add.gif
Bios Setup 화면으로 들어오게 되면. . 대부분 위와 같은 화면이며, console redirection 메뉴를 선택합니다.
처음 설정해야 할 것이 DOS에서 com1, 또는 com2입니다. 대부분 메인보드에 9핀짜리 포트가 2개 있을 것이며, 위에것이 첫 번째것 , 아래것이 두 번째 것 또는 사용안함을 선택할 수 있습니다. 포트의 위치는 절대적인 것이 아니기 때문에 이곳 저곳 꽂아 보시기 바랍니다.

bios_baud_rate.gif
다음은 ... 전송 속도를 적어주는 부분입니다. null모뎀으로 통신 가능한 최대 속도가 115,200 BPS입니다. 하지만 위와같이 메뉴에서 57,600BPS를 지원한다면 높은 것을 선택합니다. 이 숫자는 클라이언트에도 설정을 하여야 하기 때문에 잘 기억하시기 바랍니다.

bios_flow_control.gif
현제 9핀짜리 케이블에서 하드웨어 적으로 특별히 흐름제어(flow control)을 하지 않고 있습니다. 그렇기 때문에 이 흐름제어를 NO로 선택해 주시기 바랍니다.

bios_console_con.gif
이 메뉴는 케이블의 종류를 선택하는 메뉴입니다. 다른 서버보드에는 보이지 않더니 이 보드에는 보이는군요..
그냥 Direct 로 선택하면 됩니다.

bios_save_conf.gif
이젠 F10키를 누르던지 해서 저장하고 빠져나갑니다.
그리고 다시 bios setup 메뉴 화면으로 들어와서 대기해 있습니다. 이유는 콘솔이 연결되었을 때 화면이 보여져야 하기 때문입니다.


3. Server Board 의 console redirection 이용(클라이언트측 설정) minicom
  서버에서 console redirection을 설정 해 두었다면, 이젠 클라이언트가 있어야 합니다. 클라이언트는 윈도우의 하이퍼 터미널을 써도 되지만, 지금 하려는 것은 원격지의 서버를 다루길 원합니다. 물론 둘다 리눅스 서버입니다. 그래서 클라이언트가 되는 서버에서 접속하려면 리눅스의 프로그램으로 접속해야 합니다. 저는 여기서 minicom이라는 프로그램을 선택했습니다. 다른 여러 프로그램도 많겠지만, redhat 배포판에 기본적으로 설치되기 때문입니다.
실행 방법은 아래와 같습니다.
-bash-2.05b# minicom -s
위 옵션중 -s는 셋업 모드로 들어가는 명령입니다.
minicom_menu.gif
셋업 메뉴로 들어가면 위와같은 화면이 출력됩니다.
여러 설정을 할 수 있습니다. 하지만 본 강좌는 minicom강좌가 아니기 때문에 필요한 설정만 하겠습니다.
먼저 Serial port setup을 선택합니다.

minicom_serial_port_setup.gif
여기서 선택해야 할 것이, 처음 A를 눌러서 /dev/ttyS0(com1), /dev/ttyS1(com2)입니다. 선택을 해 줘야 합니다.
제가 사용했었던 장비들은 (우측 , 위 ) 이렇게 위치한 포트가 com1 이고, (좌측, 아래) 이렇게 위치한 포트가 com2였습니다. 이리 저리 꽂아보세요^^; 그리고 흐름제어(H/W Flow Control)는 No로 해주시기 바랍니다.  속도는 전에 설정한 것이 57600BPS이었기 때문에 "E" 키를 눌러 57600BPS으로 설정합니다.

minicom_com_para.gif
속도는 H, Q 로 선택하면 ,패리티 None, Data 8, Stop Bits 는 1이 됩니다.

이렇게 설정이 끝났다면, 기본 값으로 저장을 합니다.
minicom_save_setup_dfl.gif
화면과 같이 Save setup as dfl을 선택하여 기본값으로 저장합니다.

그런다음 Exit를 선택하여 설정화면을 빠져 나옵니다. 빠져나오면 모뎀을 초기화 한다는 메시지가 나옵니다.
그런 다음 연결되었다면, 연결 메시지가 나오며, 연결되어 있지 않다면, 메시지가 나오지 않으니 선을 뽑아서 이리 저리 꽂아보고 위 설정들을 쭉~~ 확인 하시기 바랍니다.
bios.gif
위 화면은 서버는 바이오스 setup 화면에 들어 와 있고, 그 다음 minicom으로 접속한 화면 입니다.


4. 부팅화면을 볼 수 있고, bios setup 까지 들어간다?
 위와같이 정상적으로 연결되었다면, 부팅함과 동시에 부팅되는 화면과 원한다면, bios에 까지 들어갈 수 있습니다.
boot1.gif
boot2.gif
boot3.gif
위 그림들은 서버가 부팅되면서 실시간으로 메시지를 redirect 시켜주는 화면을 캡쳐한 것입니다.

다음과 같이 <F2>키를 눌러서 bios config 화면으로 들어갈 수 있습니다.
enter_bios.gif
부팅과 동시에 <F2>키를 누른 결과입니다. bios로 들어가는 키는 서버별로 다르지만, 대부분 F2 또는 del 키로 알고 있습니다.

bios.gif
위와같이 선이 깨지기는 하지만, 알아볼 수 있게 bios를 설정할 수 있습니다.

모드만 바꾸어주면.. 본강자 처음에 보였던 것 처럼 컬러로 볼 수 있습니다.(ANSI)

5. DOS 부팅을 해 봅시다.
 서버의 console redirect 기능을 이용하여, 서버 설치 등 작업 하면 좋겠지만.. 설치시에는 포트의 제어권을 빼끼는지 끊어져 버리더군요.. 그래서 Windows 98 SE 부팅 디스크로 부팅해 보았습니다..
dos_start1.gif
위 선택화면에서 CD-ROM을 선택했습니다.

dos_start2.gif
위 선택화면에서는 2번째 CD-ROM과 함께 커멘드 모드를 얻을 수 있는 메뉴를 선택했습니다.

dos_dir.gif
이렇게 커멘드 모드를 얻고, dir 명령을 내렸을 때 정상적으로 실행되었습니다.
여기서 주의하실 점은 프로그램에서 마우스를 지원하는 프로그램을 띄우게 되면 제어권을 빼끼어 버립니다.~~
별 할 수 있는 작업이 없죠??

6. Linux console redirection
 이젠 리눅스의 콘솔을 다른 서버에서 시리얼 포트로 통해 연결 해 보도록 하겠습니다. 이 설정은 서버보드가 아니라도 가능하며, 리눅스의 가상 콘솔을 시리얼 포트로 보내주고 받고 합니다.

 -  서버측 설정
서버측에는 다음과 같이 설정합니다.
/etc/inittab 파일을 열어 맨 아래에 다음 줄을 추가합니다.

S0:2345:respawn:/sbin/agetty -L 115200 ttyS0 vt100
여기서 S0는 com1포트를 의미합니다.
2345는 런레벨이며, 대부분 3를 많이 사용하고 X-window 사용시에는 5를 주로 사용합니다.
respawn : 이건 뒤에나오는 agetty가 죽었을 때 자동으로 살려주는 것입니다.
/sbin/agetty : 이건 명령어이고, 이 명령어에서 주고 받고 처리를 합니다.
115220 : BPS 속도입니다. 시리얼 포트에서는 최대 속도 입니다.
ttyS0 : com1를 사용하겠다는 설정입니다.
vt100: 터미널 모드입니다.
위 설정에서 바꾸어 줘야할 것은 속도 와 포트 입니다.

그리고 서버에 root로 바로 로긴할 수 있게 설정합니다.
/etc/securetty 파일에 다음 부분을 추가합니다.
ttyS0
ttyS1

위와같이 시리얼로 들어오는 요청은 root로 로긴 가능하게 설정을 변경합니다.
그리고 난 다음에 reboot합니다.
만약 설정이 잘못되었다면, message 로그에 남으니 참고하시기 바랍니다.

- 클라이언트 측 설정
클라이언트측 설정은 위의 설정을 하셨다면, 속도만 바꾸어 주시면 됩니다.
속도는 115200으로 바꾸어 주시기 바랍니다. 흐름제어 No

모든 설정이 끝났다면, 다음과 같이 연결 가능합니다.
linux_connect.gif
이렇게 접속만 하게되면. 일반 telnet 이나 ssh 와 똑같이 사용가능합니다.



7. 마치며..
  평소에 console redirection이 뭘까?? 생각하던 와중에 이렇게 테스트 해 보았습니다. 중요한 서버라면 이렇게 접속할 수 있는 구멍을 만들어 두는 것도 관리의 도움이 될 것 같습니다.^^;
  혹시 본 강좌에 대한 질문 및 오타를 발견하게 되면, 메일 한통 보내주기 바란다. 메일주소는 doly 골뱅이superuser.co.kr 입니다. 메일 주소를 무단 수집해서 스팸메일을 보내는 이를 막기 위해서 위와 같이 표기했으며, 골뱅이 부분은 @ 치환하면 됩니다.
  이상... 2004년 5월 28일 수퍼유저 운영자 doly ...

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,789 개
  • 현재 접속자 :  261 명