IT/Server Information

autologin

알콩달콩아빠 2022. 5. 4. 19:14
728x90
반응형

프로젝트 과정에서 리눅스박스로 자동로그인 기능이 필요하게 되었다.

사 실 부팅시 실행시켜야하는 데몬 프로그램들의 경우 rc 스크립트를 수정하는 것으로 어느정도 가능한데, 본 프로젝트에서 사용되는 tslib의 경우, 환경변수가 등록되지 않으면, 이것을 찾을 수 없어서 실행이 안된다는 문제점이 있었다. 때문에 시리얼통신 환경에서 로그인이 진행되어야 비로소 환경변수가 등록되는 까닭에 자동로그인 기능이 필요했던 것이다. (/etc/profile 에 export 명령을 통해서 환경변수를 등록하는 것 이외에 부팅시 환경변수를 등록 가능한 방법이 있다면 주저하지 말고 댓글을 남겨주기 바랍니다. 정말 몰라서요~ +_+)

아무튼, 몇 주전 부터 시도했던 방법인데 나중에 나중에 이러면서 차일 피일 미루었던 일이었지만, 프로젝트 시연회가 얼마남지 않은 지금! 무엇보다 시급한 일이 아닐 수 없었다.

기존에 콘솔상에서 자동로그인을 수행하기 위해서는 rungetty 를 이용하는 방법도 있지만, 이보다는 간단한 방법으로 autologin 이라는 프로그램을 하나 만들고, /etc/inittab 파일을 적당히 수정하는 것이 있겠다.

본인이 작성한 autologin.c 파일은 다음과 같다.

#include <unistd.h>
int main(void)
{
    execlp("/bin/login", "login", "-f", "root", 0);
    return 0;
}


뭐, 특별할 것도 없는 그냥 그런 코드되겠다. 이 녀석을 툴체인으로 컴파일 한 다음에 보드 파일 시스템의 /sbin 디렉토리 아래에 복사하자.

arm-linux-gcc autologin.c -o autologin && cp autologin /tftpboot/myrootdir/sbin/autologin


이제 inittab 파일만 수정하면 된다. vi 를 이용해서 /etc/inittab 파일을 수정한다.

#T0:12345:respawn:/sbin/getty -L /dev/tts/0 115200 vt100
T0:12345:respawn:/sbin/getty -n -l /sbin/autologin 115200 /dev/tts/0


첫번째 줄처럼 되어있는 부분은 주석처리하고, 두번째 줄과 같이 새로 작성해준다.

여기서 당황했던 부분이 KELP에서 검색해 보면 알겠지만 대부분의 문서에는 다음과 같이 수정하라고 되어있다.

T0:12345:respawn:/sbin/getty -n -l /sbin/autologin 115200 ttyS0


저기 저 빨간 부분이 문제인 것이다. rebis 보드에서는 /dev 디렉토리 아래에 저와 같은 파일이 없다. +_+;;
아무튼, rebis 보드의 어이없음이 어제 오늘 일은 아니지만 다시한번 통감하게 되었다.

# 보너스
rc 스크립트를 이용하여 자동으로 수행될 프로그램을 등록해보도록 하자.
rebis 보드에서는 /etc/rc.d/ 디렉토리 아래에 여러가지 rc 스크립트가 있는데, rc.local 파일을 수정하는 것이 가장 안전하다.

본인의 보드에서는 rt73 usb 무선랜 드라이버를 insmod하고, 무선랜 IP 및 AP설정 부분, 그리고 기본적으로 실행되는 데몬 서버를 실행시키는 코드를 추가시켜주었으며, 다음과 같다. 

 

# For theMeal Project
/sbin/insmod /root/rt73.ko
/sbin/ifconfig rausb0 192.168.77.20 up
/sbin/iwconfig rausb0 mode ad-hoc essid oz

/root/oo_server 192.168.77.20 &

출처 ㅣ http://blog.naver.com/PostView.nhn?blogId=aceofall&logNo=110066673018
728x90
반응형