초기화면 지도 차례 찾아보기 새소식 지난기사 모음 추천사이트 LF에 대하여
상위메뉴
하위메뉴
This document is available in: English  Castellano  Deutsch  Francais  Italiano  Nederlands  Russian  Turkce  Korean  

convert to palmConvert to GutenPalm
or to PalmDoc

[Photo of the Author]
글쓴이: Guido Socher

글쓴이 소개:

Guido는 오랫동안 리눅스 팬이다. 그는 리눅스포커스에서 사용할 소프트웨어를 개발하고 리눅스포커스를 관리하는데 대부분의 시간을 보낸다. 하지만 종종 하드웨어 제품을 설계하기도 한다.


차례:

RS232인터페이스를 이용한 한방에 리눅스 종료시키기

[Illustration]

요약:

이 글에서 우리는 서버의 직렬포트에 연결할 조그마한 푸시버튼을 설계할 것이다. 이 장치는 필요할 때 서버를 종료시키는데 유용하게 사용할 수 있다.



 

들어가는 글

보통 서버용으로만 사용하는 장비는 키보드나 모니터, 마우스가 필요하지 않다. 단지 리눅스와 같이 좋은 운영체제와 네트웍 카드만 있으면 된다. 마우스나 키보드같은 외부 장치들은 오히려 혼란스럽기만 하다. 만약 리눅스를 서버 운영체제로 삼고 있다면 원격 관리는 가장 좋으면서 편리한 해결책이 될 것이다.

나는 컴퓨터를 새로 구입할 때 늘 부팅시 키보드를 체크하지 않도록 하는 BIOS옵션이 있는지를 살펴본다. 최근 거의 모든 괜찮은 마더보드들은 이런 옵션을 지원한다. 윈도우즈만 사용하는 사용자에게는 부팅시 키보드가 반드시 필요하지만 이것은 다른 이야기이며 또한 이런 하드웨어 구입을 권하고 싶지도 않다.

방화벽이나 웹서버, NFS파일서버, 메일서버, ADSL게이트웨이등으로 사용할 컴퓨터라면 키보드나 모니터없이도 완벽하게 작동할 수 있다. 또한 이런 컴퓨터들이 성능이 뛰어난 컴퓨터일 필요는 없다. 구닥다리 펜티엄 100MHz정도에 충분한 RAM만 장착되어 있으면 몇백명정도의 사용자에게 서비스를 제공할 수 있다.

서버는 보통 사무실의 구석이나 책장 귀퉁이에 조그만한 박스 형태로 둔채 운영되기 때문에 키보드를 연결하지 않는것이 더 편리하다. 하지만 네트웍으로 서버에 로그인하지 않고 그냥 셧다운 명령을 내리고 싶을 때가 종종있다. 만약 여러분은 서버실에 와있다고 생각하자. 그런데 네트웍에 연결할 웍스테이션이 100m정도 떨어져 있다고 하거나 또는 부하직원이 서버에 연결된 전원을 내려야하는데 루트패스워드를 알고있지못할때 이러한 방법이 유용할 것이다.

종료과정을 수행하지 않고 그냥 전원만 꺼버리면 자료를 잃어버릴수도 있고 다음 부팅시 디스크검사를 수행하기 위하여 시간이 오래걸릴 수 있다.

이 기사에서는 작고 저렴한 직렬장치를 만들어서 이러한 문제를 해결해 보도록 하자.

 

장치

우리는 발광다이오드(LED) 2개, 푸시버튼 한개로 이루어진 작은 장치를 만들 것이다. 녹색 LED는 서버가 잘 작동하고 있음을 의미하고 천천히 깜빡거리는 노란색 LED는 서버가 동작중이지만 종료과정중임을 의미한다. 서버를 종료시키려면 푸시버튼을 3초간 눌러주면 된다.

푸시버튼을 누르면 녹색 LED가 꺼지고 종료과정이 시작된다. 이 순간 "/sbin/shutdown -t2 -h now"명령이 실행된 것이다. 서버가 종료과정중이면 노란색 LED가 깜빡거릴 것이다. 여러분은 컴퓨터의 전원을 끄지 전에 노란 LED가 깜빡거림을 중단하고 나서 10초를 더 기다려야 한다. 모든 프로세스가 죽고 디스크가 언마운트되고나면 노란색 LED가 멈춘다.
만약 컴퓨터가 자동전원종료기능을 지원한다면 10초를 더 기다려야 하는 것을 걱정할 필요 없다. 그냥 그대로 두면 자동으로 전원이 꺼진다.  

직렬선(씨리얼 케이블)

직렬인터페이스에서 재미있는 점은 ioctl시스템호출을 통해 제어할 수 있는 핀들을 가지고 있다는 사실이다. 즉 직렬선으로 연결된 LED를 제어하거나 푸시버튼으로부터 입력을 받아들이기 위하여 커널을 손댈 필요가 전혀 없다는 것을 의미한다. 직렬포트는 2개의 저전력 LED를 작동시키기에 충분한 전원도 공급한다. 이 글에서는 LED를 연결하기 위하여RTS와 DTR핀을 사용하고 푸시버튼의 상태를 읽어들이기 위하여 케리어 감지핀을 사용할 것이다.
9 PIN D-SUB 암컷

컴퓨터측에 있는 9 핀 D-SUB 암컷.

9 PIN-컨넥터 25 PIN-컨넥터 이름 방향 설명
1 8 CD 입력 케리어 감지
2 3 RXD 입력 데이터 수신
3 2 TXD 입력 데이터 전송
4 20 DTR 출력 데이터 터미널 준비
5 7 GND -- 시스템 접지
6 6 DSR 입력 데이터 준비상태
7 4 RTS 출력 전송 요청
8 5 CTS 입력 전송 클리어
9 22 RI 입력 Ring 표시자


 

회로

이제 필요한 부품을 살펴보자

회로 다이어그램 부품은 다음 회로 다이어그램과 같이 연결하여야 한다. 직렬포트의 전압은 +/- 10볼트사이이다. 1.5K옴 저항은 저전력용 LED에 적합하다 하지만 일반적인 LED를 사용해도 괜찮다. 저항을 변경하거나 다른 외부 전원공급장치를 사용하지 마라. 잘못하면 마더보드의 칩셋을 태워버릴 수 있다. 만약 마더보드의 칩셋이 타버리면 마더보드를 통채로 바꾸어야 한다.


pcb

위의 그림은 에칭처리된 회로기판이다. 나는 직접 기판에 에칭방지펜으로 자유롭게 손으로 회로를 조그마하게 만드는 것을 좋아하므로 정확한 기판 회로 배선도를 제공하지는 않는다.

전체적으로 완성된 회로의 사진은 기사의 제일 앞에 있다. 조심해서 서버의 앞쪽부분에드릴을 이용해서 3개의 구멍을 뚫어라. LED용으로 3mm구멍 두개를 뚫고 하나는 푸시버튼에 적절하게 뚫으면 된다. 전체 회로는 매우 가벼우며 푸시버튼은 손에 쥐고있을만한 크기이다.

 

소프트웨어

소프트웨어는 조그마한 데몬 프로세스이다./etc/rc.d/rc3.d/의 스크립트에서 시작하면 된다. 이 소프트웨어는 직렬포트로 부터 데이터를 읽고 쓰기 위하여 ioctl(fd, TIOCMSET,...)함수를 사용한다.download sled-0.1.tar.gz에서 다운로드 받을 수 있다. makefile과 설치설명서가 함께 들어있다.

납땜을 재미있게 하시길

 

이 기사에 대한 의견이 있습니다

각 기사는 피드백 페이지가 들어 있습니다. 피드백을 통하여 여러분은 저자에게 의견을 보내거나 다른 독자의 의견을 보실 수 있습니다.:
 피드백 페이지 

본 웹사이트는 리눅스포커스 편집팀에서 관리합니다
© Guido Socher, FDL
LinuxFocus.org

오자를 찾으셨거나 의견이 있으시면 LinuxFocus로 알려주세요
Translation information:
en -> -- Guido Socher
en -> ko Juho Lee

2001-02-01, generated by lfparser version 2.8