Linux 부팅 프로세스를 디버깅하려고 합니다. 기본 런레벨을 2 또는 3으로 설정하면 시스템이 조용히 정지됩니다. 커널 매개변수를 통해 런레벨 1에 들어갈 수 있고 명령을 /etc/rc2.d
통해 모든 스크립트를 실행할 수 service ***** start/stop
있으며 모든 것이 정상입니다. 하지만 런레벨 2나 3을 실행하면 telinit
쉘 프롬프트가 표시되지 않습니다. 그렇다면 이 두 가지 방법의 차이점은 무엇입니까?
저는 SysVinit을 사용합니다. 내용 /etc/inittab
(수정하지 않았습니다):
id:3:initdefault:
# 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
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# When our UPS tells us power has failed, assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
# agetty on serial port
s0:2345:respawn:/sbin/agetty -L -i 9600 ttyS0 vt100
s1:2345:respawn:/sbin/agetty -L -i 9600 ttyS1 vt100
1:2345:respawn:/sbin/agetty 38400 tty1 linux
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon
# Ask for password at single user prompt
~~:S:wait:/sbin/sulogin
답변1
init
단지 실행하는 것 이상의 일을 합니다 /etc/rc.d
.
하나는 각 가상 터미널에 or 을 생성하는 것입니다 mingetty
. getty
다음 줄을 주석 처리하지 않았는지, 근처에 철자 오류가 있는지 확인하세요.
# 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
(현재 RHEL/CentOS 시스템을 사용하고 있지 않으므로 보장할 수 없습니다!)