LINUX는 멀티유저를 목적으로 만들어졌습니다.
단일 사용자가 사용하려면 Kernel을 분석해서 Login Shell을
호출하는 부분을 찾으시고 자신이 만든 Login Shell을 호출하게
하거나 아니면 Login을 안하고 그냥 Shell을 호출하게 하면 되겠죠. --;
이라는 프롬프트는
getty 라는 프로그램에서 띄우게 됩니다.
이 getty 프로그램은 /sbin/init 가 fork() 한 후 exec() 해서 실행합니다.
이것은 /etc/inittab 파일을 보고 init 가 수행하는 것입니다.
init 는, 커널 스레드 중 init 스레드가 수행되면서
자기 자신을 /sbin/init 의 코드로 바꿔서 생기는 프로세스입니다.
그리고, getty 가 띄운
login
프롬프트에 username 이 입력되면, getty 는 /bin/login 을
실행시켜서 사용자로부터 passwd 를 입력받게 됩니다.........
제 생각엔 커널 분석보다는 sysV init 프로그램을 분석해 보아야
할 것 같습니다.
혹은 inittab 의 getty 에 바로 쉘을 연결시켜 버리면...
어떨런지요... 해 보진 않았습니다.
지금 바꿔서 리붓하기도... 그렇구요 ^^*
커널을 분석하세요.
LINUX는 멀티유저를 목적으로 만들어졌습니다.
단일 사용자가 사용하려면 Kernel을 분석해서 Login Shell을
호출하는 부분을 찾으시고 자신이 만든 Login Shell을 호출하게
하거나 아니면 Login을 안하고 그냥 Shell을 호출하게 하면 되겠죠. --;
Re^2: /sbin/init
login
이라는 프롬프트는
getty 라는 프로그램에서 띄우게 됩니다.
이 getty 프로그램은 /sbin/init 가 fork() 한 후 exec() 해서 실행합니다.
이것은 /etc/inittab 파일을 보고 init 가 수행하는 것입니다.
init 는, 커널 스레드 중 init 스레드가 수행되면서
자기 자신을 /sbin/init 의 코드로 바꿔서 생기는 프로세스입니다.
그리고, getty 가 띄운
login
프롬프트에 username 이 입력되면, getty 는 /bin/login 을
실행시켜서 사용자로부터 passwd 를 입력받게 됩니다.........
제 생각엔 커널 분석보다는 sysV init 프로그램을 분석해 보아야
할 것 같습니다.
혹은 inittab 의 getty 에 바로 쉘을 연결시켜 버리면...
어떨런지요... 해 보진 않았습니다.
지금 바꿔서 리붓하기도... 그렇구요 ^^*
댓글 달기