묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
INIT에 대한 질문이요...
2004.08.03 20:39
오늘 시스템 부팅과정 중에 시스템 초기화 프로그램인 INIT을 공부하던 중에 궁금한 점이 있어서 질문을 드려요. 책의 내용을 보면 뭔가 알것 같은데, 이해가 가지 않는 부분이 있어서 질문을 드리는 것이니까요. 질문이 좀 횡설수설하더라도 이해해 주세요 ^^
그럼 질문드릴께요.
질문1)
/etc/inittab파일의 Default RunLevel 에서 사용하는 실행레벨 값으로는 0, 1, 2, 3, 4, 5, 6 까지 있잖아요.
그런데, 이 실행레벨 값은 Default RunLevel 이외에.....
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# Run xdm in runlevel 5
# xdm is now a separate service
x:5:respawn:/etc/X11/prefdm -nodaemon
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
와 같은 초기화 스크립트에서도 함께 사용되는 값이 맞나요?
질문2)
단일숫자로 지정된 실행레벨 이외에 실행레벨이 아예없는(예: ud::once:/sbin/update) 초기화 스크립트들은 리눅스가 어떠한 실행레벨로 부팅이 되든 상관없이 무조건 해당 초기화스크립트가 실행되는 것이 맞나요? 그리고, 2345와 같은 실행레벨은 리눅스가 실행레벨2 또는 실행레벨3 또는 실행레벨4 또는 실행레벨5로 부팅이 되었을 때만 해당 초기화 스크립트가 실행되는 것이 맞나요?
질문3)
/etc/inittab 파일의 스크립트 내용중에 id:3:initdefault 로 지정되어 있는 상태에서 LILO프롬포트에서 linux를 선택하여 리눅스로 부팅하는 것과 LILO프롬포트에서 linux 3 을 입력하여 리눅스로 부팅하는 것은 모두 실행레벨 3으로 linux 를 부팅하라는 것이 맞나요? 그리고, id:3:initdefault로 지정되어 있어도 LILO프롬포트에서 linux 5 를 입력하면 id:3:initdefault 설정은 무시하고 실행레벨 5로 부팅이 되는 것이 맞나요?
질문4)
실행레벨 3으로 부팅했을 때, /etc/inittab 파일에 설정된 각종 초기화 스크립트들은 실행레벨 3, 실행레벨2345(0123, 1234, 3456등...3이 포함된 실행레벨), 실행레벨이 아예없는 초기화 스크립트들만 실행이 되는 건가요?
질문5)
ud::once:/sbin/update 초기화 스크립트 내용중에 once 액션에 대한 책 내용을 보면...
"모든 실행 레벨에서는 공통적으로 실행되는 것으로 update명령에 의해서 bdflush 데몬을 실행하여 버퍼 캐시에 남아있는 데이터들을 자동적으로 디스크에 내보내기(flush)하여
데이터들을 안전하게 저장할 수 있도록 해 줍니다.
액션 항목의 once가 의미하는 것은 프로세스가 실행되어 질 때 실행중인 프로세스가 이미 있다면 그대로 두고, 실행되지 않은 프로세스일 경우에는 단 한번만 실행되도록 해주는
것입니다. bdflush는 부팅시 실행되지 않는 프로세스이므로, /sbin/update명령에 의해서 단 한번만 실행 가동되어 디스크 버퍼링 기능이 활성화 됩니다."
라고 나와 있는데요.... 이 설명이 좀 이해가 가지 않아서요...
이해 안가는 점1)
ud::once:/sbin/update 초기화 스크립트는 bdflush 데몬 1개만을 실행시키나요?
이해 안가는 점2)
bdflush데몬은 리눅스 시스템이 가동되는 중에도 각종 장치의 버퍼 캐시에 있는 데이터를 하드디스크에 내보내어 저장하나요? 아니면 시스템을 종료할 때만 하드디스크에 내보내어 저장하나요?
이해 안가는 점3)
bdflush데몬은 ud::once:/sbin/update 초기화 스크립트에 의해 실행되는 것이라고 나와 있고, /etc/inittab 파일에 있는 초기화 스크립트들은 부팅시 실행되는 스크립트라고 책에 나와있는 것으로 보아, bdflush데몬은 부팅시 실행되는 것으로 생각이 되는데요. 그런데. 위에 설명을 보면.....
"bdflush는 부팅시 실행되지 않는 프로세스이므로, /sbin/update명령에 의해서 단 한번만 실행 가동되어 디스크 버퍼링 기능이 활성화 됩니다."
라고 나와 있는데요. 그렇다면 bdflush데몬은 /sbin/update 명령에 의해 언제 실행이 되는 데몬인가요?
질문6)
책에 보면, ctrl+alt+del 을 이용한 재부팅을 /etc/shutdown.allow에 지정된 사용자만 사용할 수 있게 지정할 수 있다고만 나와있고, 구체적인 방법이 하나도 안나와 있어서 /etc디렉토리에 가서 모든 파일과 디렉토리들을 살펴봤는데, shutdown.allow 라는 파일이나 디렉토리가 없더라구요. 어떻게 ctrl+alt+del 조합키를 지정된 사용자만 사용할 수 있게 할 수 있나요?
질문이 좀 많은 것은 알지만...답답한 사람의 마음을 헤아리시고 좋은 답변 부탁드릴께요.
글을 읽으시는 분들 모두 더운 여름 몸 건강히 지내시기를 바라며...(__)
그럼 질문드릴께요.
질문1)
/etc/inittab파일의 Default RunLevel 에서 사용하는 실행레벨 값으로는 0, 1, 2, 3, 4, 5, 6 까지 있잖아요.
그런데, 이 실행레벨 값은 Default RunLevel 이외에.....
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# Run xdm in runlevel 5
# xdm is now a separate service
x:5:respawn:/etc/X11/prefdm -nodaemon
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
와 같은 초기화 스크립트에서도 함께 사용되는 값이 맞나요?
질문2)
단일숫자로 지정된 실행레벨 이외에 실행레벨이 아예없는(예: ud::once:/sbin/update) 초기화 스크립트들은 리눅스가 어떠한 실행레벨로 부팅이 되든 상관없이 무조건 해당 초기화스크립트가 실행되는 것이 맞나요? 그리고, 2345와 같은 실행레벨은 리눅스가 실행레벨2 또는 실행레벨3 또는 실행레벨4 또는 실행레벨5로 부팅이 되었을 때만 해당 초기화 스크립트가 실행되는 것이 맞나요?
질문3)
/etc/inittab 파일의 스크립트 내용중에 id:3:initdefault 로 지정되어 있는 상태에서 LILO프롬포트에서 linux를 선택하여 리눅스로 부팅하는 것과 LILO프롬포트에서 linux 3 을 입력하여 리눅스로 부팅하는 것은 모두 실행레벨 3으로 linux 를 부팅하라는 것이 맞나요? 그리고, id:3:initdefault로 지정되어 있어도 LILO프롬포트에서 linux 5 를 입력하면 id:3:initdefault 설정은 무시하고 실행레벨 5로 부팅이 되는 것이 맞나요?
질문4)
실행레벨 3으로 부팅했을 때, /etc/inittab 파일에 설정된 각종 초기화 스크립트들은 실행레벨 3, 실행레벨2345(0123, 1234, 3456등...3이 포함된 실행레벨), 실행레벨이 아예없는 초기화 스크립트들만 실행이 되는 건가요?
질문5)
ud::once:/sbin/update 초기화 스크립트 내용중에 once 액션에 대한 책 내용을 보면...
"모든 실행 레벨에서는 공통적으로 실행되는 것으로 update명령에 의해서 bdflush 데몬을 실행하여 버퍼 캐시에 남아있는 데이터들을 자동적으로 디스크에 내보내기(flush)하여
데이터들을 안전하게 저장할 수 있도록 해 줍니다.
액션 항목의 once가 의미하는 것은 프로세스가 실행되어 질 때 실행중인 프로세스가 이미 있다면 그대로 두고, 실행되지 않은 프로세스일 경우에는 단 한번만 실행되도록 해주는
것입니다. bdflush는 부팅시 실행되지 않는 프로세스이므로, /sbin/update명령에 의해서 단 한번만 실행 가동되어 디스크 버퍼링 기능이 활성화 됩니다."
라고 나와 있는데요.... 이 설명이 좀 이해가 가지 않아서요...
이해 안가는 점1)
ud::once:/sbin/update 초기화 스크립트는 bdflush 데몬 1개만을 실행시키나요?
이해 안가는 점2)
bdflush데몬은 리눅스 시스템이 가동되는 중에도 각종 장치의 버퍼 캐시에 있는 데이터를 하드디스크에 내보내어 저장하나요? 아니면 시스템을 종료할 때만 하드디스크에 내보내어 저장하나요?
이해 안가는 점3)
bdflush데몬은 ud::once:/sbin/update 초기화 스크립트에 의해 실행되는 것이라고 나와 있고, /etc/inittab 파일에 있는 초기화 스크립트들은 부팅시 실행되는 스크립트라고 책에 나와있는 것으로 보아, bdflush데몬은 부팅시 실행되는 것으로 생각이 되는데요. 그런데. 위에 설명을 보면.....
"bdflush는 부팅시 실행되지 않는 프로세스이므로, /sbin/update명령에 의해서 단 한번만 실행 가동되어 디스크 버퍼링 기능이 활성화 됩니다."
라고 나와 있는데요. 그렇다면 bdflush데몬은 /sbin/update 명령에 의해 언제 실행이 되는 데몬인가요?
질문6)
책에 보면, ctrl+alt+del 을 이용한 재부팅을 /etc/shutdown.allow에 지정된 사용자만 사용할 수 있게 지정할 수 있다고만 나와있고, 구체적인 방법이 하나도 안나와 있어서 /etc디렉토리에 가서 모든 파일과 디렉토리들을 살펴봤는데, shutdown.allow 라는 파일이나 디렉토리가 없더라구요. 어떻게 ctrl+alt+del 조합키를 지정된 사용자만 사용할 수 있게 할 수 있나요?
질문이 좀 많은 것은 알지만...답답한 사람의 마음을 헤아리시고 좋은 답변 부탁드릴께요.
글을 읽으시는 분들 모두 더운 여름 몸 건강히 지내시기를 바라며...(__)
init를 꿰고 있는 사람은 상당히 드믈것으로 생각되네요^^;
질문1의 질문이 조금 애매하시네요.
질문2.
물론입니다.
질문3.
initdefault는 말 그대로 아무런 지정도 없을경우 디폴트값으로 대처하라 라는 말입니다.
만약 lilo에서 runlevel을 지정해주셨다면 지정해주신 runlevel로 처리 됩니다.
질문4.
질문2와 비슷한것 같은데.. 물론입니다^^
질문5.
커널을 공부해보시면 답을 얻으실 수 있을것 같네요.
저 또한 bdflush가 커널에서 관리되는 부분이라는것 까지밖에는 모릅니다 :-)