리눅스는 run-levels라는 개념을 기반으로 하는 SysVinit이라는 특수 부팅 기능을 사용한다. 이는 시스템마다 상당히 다를 수 있기 때문에, 특정 리눅스 배포판에서 잘 작동했다고 해서 LFS에서도 똑같이 작동하리라 보장할 수 없다. LFS는 나름대로의 방법이 있지만, 보편적으로 받아들여지는 기준을 존중한다.
SysVinit(이제부터는 “init”으로
지칭한다)는 run-levels
체계를 사용하여
동작한다. run-levels는
0부터 6까지
7개이고(실제로는 더
많지만, 특별한
경우를 위한 것으로
일반적으로는 잘
사용되지 않는다.
자세한 내용은 init(8)
를
참고하라), 각
레벨은 컴퓨터가
시작될 때 수행해야
하는 작업에
해당된다. 기본
run-level은 3이다. 다음은
구현된 다양한 run-level에
대한 설명이다:
0: 컴퓨터를 종료함
1: 싱글 유저 모드
2: 네트워크 미지원 멀티 유저 모드
3: 네트워크 지원 멀티 유저 모드
4: 사용자 정의를 위해 보류되어 있음, 사용자 정의되지 않았다면 3과 동일하게 작동
5: 4와 동일, 보통 GUI 로그인에 사용됨(X의 xdm이나 KDE의 kdm)
6: 컴퓨터를 재시작함
커널 초기화 중에,
실행되는 첫 번째
프로그램은
명령줄에 따로
지정되지 않는 한
기본적으로 init이다. 이
프로그램은 초기화
파일인 /etc/inittab
를
읽어들인다. 다음을
실행하여 이 파일을
생성하라:
cat > /etc/inittab << "EOF"
# Begin /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc S
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
su:S016:once:/sbin/sulogin
1:2345:respawn:/sbin/agetty --noclear tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600
# End /etc/inittab
EOF
이 초기화 파일에
대한 설명은 inittab의 man
페이지에 있다. LFS의
경우 실행 명령은
rc이다.
위의 초기화 파일은
/etc/rc.d/rcS.d
디렉토리에서 S로
시작하는 모든
스크립트와, /etc/rc.d/rc?.d
디렉토리(물음표는
initdefault 값으로
대체)에서 S로
시작하는 모든
스크립트를
실행하도록 rc에
지시한다.
편의상 rc
스크립트는 /lib/lsb/init-functions
의 함수
라이브러리를 읽어
들인다. 이
라이브러리는
선택적 구성 파일인
/etc/sysconfig/rc.site
도
읽어 들인다.
아래에서 설명하는
어떤 시스템 구성
파일 매개 변수든 이
파일에 배치해서 이
파일 하나에 모든
시스템 매개 변수를
통합할 수 있다.
디버깅 상의 편의를
위해, functions
스크립트는 모든
출력을 /run/var/bootlog
에
기록한다. /run
디렉토리는
tmpfs이므로 이 파일은
시스템 종료나
재부팅 시에는
보존되지 않지만,
부팅 절차가 끝날 때
영구적인 /var/log/boot.log
파일에
내용이 첨부된다.
run-levels 변경은 init <runlevel>
을
통해 이루어지며,
여기서 <runlevel>
은
대상 run-level이다. 예를
들어, 시스템을
재부팅하려면
사용자는 reboot 명령의
별칭인 init
6 명령을
사용할 수 있다.
마찬가지로, init 0은 halt 명령의
별칭이다.
/etc/rc.d
아래에는 rcsysinit.d
와 rc?.d
(여기서 ? 는
run-level의 번호)같은
디렉토리 등의
여러 디렉토리가
있으며, 모두
다수의 심볼릭
링크를 포함하고
있다. 어떤 것은 K로
시작하고, 다른
일부는 S로
시작하며, 그들
모두는 첫 글자에
이어 두 개의
숫자를 갖고 있다.
K는 서비스를
중지(종료)하고 S는
서비스를 시작하는
것을 의미한다.
숫자는 00에서 99까지
스크립트가
실행되는 순서를
결정한다—숫자가
낮을수록 더 빨리
실행된다. init이 다른
run-level로 전환되면,
선택한 runlevel에 따라
적절한 서비스가
시작되거나
중지된다.
실제 스크립트들은
/etc/rc.d/init.d
에
있다. 실제로
동작하는 것은
그것들이고 심볼릭
링크들은 모두
그것들을
가리킨다. K 링크와 S
링크는 /etc/rc.d/init.d
의
동일한 스크립트를
가리킨다. 이는 start
, stop
, restart
, reload
, 및 status
와 같은
다른 매개 변수를
사용하여
스크립트를 호출할
수 있기 때문이다. K
링크가 호출되면
적절한 스크립트가
stop
인수와 함께
실행된다. S 링크가
호출되면 start
인수와
함께 적절한
스크립트가
실행된다.
이 설명에는 한
가지 예외가 있다.
rc0.d
와 rc6.d
디렉토리의
S로
시작하는 링크들은
어떤 것도
시작시키지
않는다. 그것들은
무언가를
중단시키기 위한
매개 변수 stop
과 함께
호출된다. 그
이유는 사용자가
시스템을
재부팅하거나
종료할 때는
아무것도 시작할
필요가 없기
때문이다.
시스템은 오로지
중단되기만 하면
된다.
다음은 스크립트가 인수에 따라 수행하는 작업에 대한 설명이다:
start
서비스가 시작된다.
stop
서비스가 중지된다.
restart
서비스가 중지되었다가 다시 시작된다.
reload
서비스 구성이 업데이트된다. 이는 서비스의 구성 파일이 수정된 후 서비스를 재시작할 필요가 없을 때 사용된다.
status
서비스가 실행 중인지, PID가 몇인지 출력한다.
부팅 프로세스가 작동하는 방식을 자유롭게 수정하라(어떻게 하든 간에 결국 당신만의 LFS 시스템이다). 여기서 주어진 파일들은 이를 수행하는 방법의 예시이다.
/etc/rc.d/init.d/udev
initscript는 udevd를
시작하고, 커널에
의해 이미 생성된
"coldplug" 장치를
작동시키며 모든
규칙이 처리 완료될
때까지 기다린다. 또
스크립트는 /sbin/hotplug
의
기본값으로부터 uevent
핸들러를
해제(unset)한다. 이는
커널이 더 이상 외부
바이너리를 호출할
필요가 없기
때문이다. 대신 udevd가
커널에서 발생하는
uevent를 netlink 소켓에서
수신한다.
/etc/rc.d/init.d/udev_retry
initscript는 mountfs
스크립트가
실행되고도
마운트되지 않은
파일 시스템이
필요한 규칙이 있는
하위 시스템에 대한
이벤트를 다시
실행(re-triggering)하는
작업을 한다(특히
/usr
와 /var
가 이런
문제를 일으킬 수
있다). 이
스크립트는 mountfs
스크립트 이후에
실행되므로, 그러한
규칙들은
(재실행된다면) 두
번째 시도부터는
성공적으로 작동할
것이다. 이는 /etc/sysconfig/udev_retry
파일로부터
구성된다; 이
파일에서 주석
이외의 모든 단어는
재시도 시 실행할
하위 시스템
이름으로 간주된다.
장치의 하위
시스템을 찾으려면
udevadm info --attribute-walk
<device>를
사용하라. 여기서
<device>는 /dev/sr0 또는
/sys/class/rtc와 같이 /dev나 /sys의
절대 경로이다.
커널 모듈 로드와 udev에 대한 정보는 7.3.2.3절. “모듈 로딩”를 참고하라.
setclock
스크립트는 BIOS 또는
CMOS(Complementary Metal Oxide Semiconductor)
시계라고도 하는
하드웨어
시계로부터 시간을
읽어 들인다.
하드웨어 시계가
UTC로 설정된 경우, 이
스크립트는 /etc/localtime
파일(사용자가 속해
있는 시간대를 hwclock
프로그램에
알려주는 파일)을
사용하여 하드웨어
시계의 시간을 로컬
시간으로 변환한다.
하드웨어 클럭이
UTC로 설정되어
있는지 여부는 달리
확인할 방법이
없으므로 수동으로
설정해야 한다.
setclock은 커널이 부팅 시 하드웨어 기능을 감지할 때 udev를 통해 실행된다. stop 매개 변수와 함께 수동으로 실행하여 시스템 시간을 CMOS 시계에 저장할 수도 있다.
하드웨어 시계가
UTC로 설정되어
있는지의 여부를
기억할 수 없다면
hwclock --localtime
--show
명령을
실행하여 확인하라.
이는 하드웨어
시계에 따라 현재
시간을 표시한다.
만약 이 시간이
당신의 다른 시계와
일치하면, 하드웨어
시계는 현지
시간으로 설정된
것이다. hwclock의
출력이 현지 시간이
아니라면 UTC
시간으로 설정됐을
가능성이 있다. hwclock에서
표시된 시간에
적절한 시간대를
더하거나 빼서
확인해보라. 예를
들어 현재 GMT
-0700이라고도 하는 MST
표준 시간대에
있다면, 현지 시간에
7시간을 더하라.
하드웨어 시계가 UTC
시간으로 설정되지
않았다면
아래의 UTC
변수의 값을 0
(zero)으로
변경하라.
다음을 실행하여 새
/etc/sysconfig/clock
파일을 생성하라:
cat > /etc/sysconfig/clock << "EOF"
# Begin /etc/sysconfig/clock
UTC=1
# Set this to any options you might need to give to hwclock,
# such as machine hardware clock type for Alphas.
CLOCKPARAMS=
# End /etc/sysconfig/clock
EOF
LFS에서 시간을
다루는 방식을
설명하는 좋은
힌트들을 http://www.linuxfromscratch.org/hints/downloads/files/time.txt에서
확인할 수 있다.
시간대, UTC, TZ
환경 변수와 같은
주제들을 설명한다.
CLOCKPARAMS와 UTC 매개 변수는
/etc/sysconfig/rc.site
파일에서 대신
설정할 수 있다.
이 절에서는 키보드
맵, 콘솔 글꼴 및
콘솔 커널 로그
레벨을 설정하는,
console
부트스크립트를
설정하는 방법을
설명한다. ASCII 문자가
아닌 문자(예:
저작권 기호, 영국
파운드 기호 및 유로
기호)를 사용하지
않으며 키보드가
미국식 키보드라면
이 절의 많은 부분을
건너뛸 수 있다.
설정 파일이
없으면,(또는 rc.site
의 같은
설정), console
부트스크립트는
아무 작업도
수행하지 않는다.
console
스크립트는 /etc/sysconfig/console
파일로부터 설정
정보를 읽어들인다.
사용할 키맵과 화면
글꼴을 결정하라.
다양한 언어별 HOWTO도
도움이 될 수
있다(http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html를
참고하라). 결정하기
힘들다면 /usr/share/keymaps
와 /usr/share/consolefonts
디렉토리에서
유효한 키맵과 화면
글꼴을 확인하라.
loadkeys(1)
및 setfont(8)
매뉴얼
페이지를 읽고
이러한 프로그램에
대한 올바른 인수를
결정하라.
/etc/sysconfig/console
파일은 다음과 같은
형식의 행을
포함한다: VARIABLE="value".
다음과 같은
변수들이 인식된다:
이 변수는 dmesg에서 설정한 대로 콘솔로 전달되는 커널 메시지의 로그 수준을 지정한다. 유효한 수준은 "1"(메시지 없음)에서 "8"까지이다. 기본값은 "7"이다.
이 변수는 대표적으로 로드할 키맵의 이름(예: “it”)과 같은, loadkeys 프로그램에 대한 인수를 지정한다. 이 변수를 설정하지 않으면 부트스크립트가 loadkeys 프로그램을 실행하지 않고 기본 커널 키맵이 사용된다. 키맵 중 몇 가지는 동일한 이름의 여러 버전이 있다(qwerty/와 qwertz/에는 cz와 그 변형들, olpc/와 qwerty/에는 es, fgGIod/와 qwerty/에는 trf). 이 경우 적절한 키맵이 로드되도록 상위 디렉토리(예: qwerty/es)도 지정해야 한다.
이 (드물게 쓰이는) 변수는 loadkeys 프로그램을 재호출하는 데에 쓰이는 인수를 지정한다. 이는 기본 키맵이 완전히 만족스럽지 않아서 약간 조정하고자 할 때 유용하다. 예를 들어 유로 기호를 기본적으로 포함하지 않는 키맵에 유로 기호를 포함시키려면 이 변수를 “euro2”로 설정하라.
이 변수는 setfont 프로그램에 대한 인수를 지정한다. 이는 일반적으로 글꼴 이름과 “-m”, 그리고 로드할 응용 문자맵의 이름으로 구성된다. 가령 “lat1-16” 글꼴을 “8859-1” 응용 문자맵(미국에서 적합하다)과 함께 로드하려면, 이 변수를 “lat1-16 -m 8859-1”로 설정하라. UTF-8 모드에서 커널은 키맵에 구성된 8비트 키코드를 UTF-8로 전환하기 위해 응용 문자맵을 사용한다. 따라서 "-m" 매개 변수의 인수는 키맵에 구성된 키코드의 인코딩으로 설정되어야 한다.
콘솔을 UTF-8 모드로 전환하려면 이 변수를 “1”, “yes” 또는 “true”로 설정하라. 이는 UTF-8 기반 로케일에서 사용 가능하며 UTF-8 기반 로케일이 아닐 경우엔 문제를 일으킨다.
많은 키보드 레이아웃은 Kbd 패키지에 기본 유니코드 키맵이 없다. console 부트스크립트는 이 변수가 사용 가능한 비 UTF-8 키맵의 인코딩으로 설정되면 사용 가능한 키맵을 UTF-8로 즉시 변환한다.
몇 가지 예시:
유니코드가 아닌 설정에서는 일반적으로 KEYMAP과 FONT 변수만 있으면 된다. 가령 폴란드어 설정은 다음과 같이 할 수 있다:
cat > /etc/sysconfig/console << "EOF"
# Begin /etc/sysconfig/console
KEYMAP="pl2"
FONT="lat2a-16 -m 8859-2"
# End /etc/sysconfig/console
EOF
위에서 언급한 바와 같이, 가끔은 기본 키맵을 약간 조정해야할 때가 있다. 다음 예시는 독일어 키맵에 유로 기호를 추가한다:
cat > /etc/sysconfig/console << "EOF"
# Begin /etc/sysconfig/console
KEYMAP="de-latin1"
KEYMAP_CORRECTIONS="euro2"
FONT="lat0-16 -m 8859-15"
UNICODE="1"
# End /etc/sysconfig/console
EOF
다음은 기본 UTF-8 키맵이 존재하는, 유니코드가 사용 가능한 불가리아어 예시이다:
cat > /etc/sysconfig/console << "EOF"
# Begin /etc/sysconfig/console
UNICODE="1"
KEYMAP="bg_bds-utf8"
FONT="LatArCyrHeb-16"
# End /etc/sysconfig/console
EOF
이전 예시에서 512-glyph LatArCyrHeb-16 글꼴을 사용했기 때문에, 프레임 버퍼를 사용하지 않는 한 리눅스 콘솔에서 밝은 색상은 더 이상 사용할 수 없다. 프레임버퍼 없이 밝은 색을 원하며 자신의 언어에 속하지 않는 문자를 사용하지 않아도 된다면, 아래와 같이 언어별 256-glyph 글꼴을 사용하는 것도 가능하다:
cat > /etc/sysconfig/console << "EOF"
# Begin /etc/sysconfig/console
UNICODE="1"
KEYMAP="bg_bds-utf8"
FONT="cyr-sun16"
# End /etc/sysconfig/console
EOF
다음 예제는 ISO-8859-15에서 UTF-8로의 키맵 자동 변환과 유니코드 모드에서 데드키를 활성화 하는 법을 보여준다:
cat > /etc/sysconfig/console << "EOF"
# Begin /etc/sysconfig/console
UNICODE="1"
KEYMAP="de-latin1"
KEYMAP_CORRECTIONS="euro2"
LEGACY_CHARSET="iso-8859-15"
FONT="LatArCyrHeb-16 -m 8859-15"
# End /etc/sysconfig/console
EOF
일부 키맵들은 데드키(즉, 스스로 문자를 생성하지 않고 그 뒤에 입력된 문자에 액센트를 붙이는 키)가 있거나 구성 규칙을 가진다(예: 기본 키맵에서 “Æ를 입력하기 위해 Ctrl+. A E를 누름”). 리눅스-5.5.3은 함께 합성할 원본 문자가 멀티바이트가 아닐 때만 키맵의 데드 키와 구성 규칭을 올바르게 해석한다. 이 결함은 유럽 언어들의 키맵에는 영향을 미치지 않는데, 왜냐하면 그 악센트들은 악센트가 없는 ASCII 문자에 추가되거나 두 개의 ASCII 문자가 함께 결합되기 때문이다. 그러나 UTF-8 모드, 예를 들어 그리스어에서는, 문자 “alpha”에 악센트를 붙여야 하는 문제가 있다. 해결책은 UTF-8의 사용을 피하거나, 입력 처리에서 이러한 제한이 없는 X 윈도 시스템을 설치하는 것이다.
한국어, 일본어, 중국어를 비롯한 일부 언어들은 리눅스 콘솔이 해당 언어를 표시하도록 구성할 수 없다. 이러한 언어가 필요한 사용자는 X 윈도 시스템, 필요한 문자 범위를 포함하는 글꼴과 적절한 입력기(예를 들어 SCIM, 다양한 언어를 지원)를 설치해야 한다.
/etc/sysconfig/console
파일은 리눅스
텍스트 콘솔
언어만을
제어한다. X 윈도
시스템에서의
적절한 키보드
레이아웃이나
터미널 글꼴 설정,
또는 ssh 세션이나
시리얼 콘솔과는
아무 관련이 없다.
이런 상황에서는
위에서 마지막으로
언급한 두 제한
사항이 해당되지
않는다.
가끔은 부팅 시에
파일을 생성하고
싶을 수도 있다.
예를 들어 /tmp/.ICE-unix
디렉토리가 필요할
수 있다. 이 작업은
/etc/sysconfig/createfiles
구성 스크립트에
항목을 생성하여
수행할 수 있다. 이
파일의 작성 양식은
기본 구성 파일의
주석에 적혀있다.
sysklogd
스크립트는 System V
초기화 중 syslogd
프로그램을
호출한다. -m
0
옵션은 syslogd가 로그
파일에 기본적으로
20분마다 주기적으로
기록하는
타임스탬프 표시를
비활성화한다. 이
주기적 타임스탬프
표시를
활성화하려면, /etc/sysconfig/rc.site
의 SYSKLOGD_PARMS
변수를 원하는
값으로 정의하라.
예를 들어, 모든
매개 변수를
제거하려면 변수를
빈 값으로 설정하라:
SYSKLOGD_PARMS=
더 많은 옵션은 man syslogd
를
참고하라.
선택 사항인 /etc/sysconfig/rc.site
파일에는 각 SystemV 부트
스크립트에 대해
자동으로 설정된
설정이 포함되어
있다. 이 파일은 /etc/sysconfig/
디렉토리의 hostname
, console
,
그리고 clock
파일에 지정된 값을
대체할 수 있다.
관련 변수들이 이
별도의 파일들과
rc.site
에 모두
존재할 경우,
스크립트별 파일의
값들은 덮여 쓰인다.
rc.site
에는
부팅 절차의 다른
부분을 사용자
정의할 수 있는 매개
변수도 포함되어
있다. IPROMPT 변수를
설정하면
부트스크립트를
선택적으로 실행할
수 있다. 다른
옵션은 파일 주석에
설명되어 있다.
파일의 기본 버전은
다음과 같다:
# rc.site # Optional parameters for boot scripts. # Distro Information # These values, if specified here, override the defaults #DISTRO="Linux From Scratch" # The distro name #DISTRO_CONTACT="lfs-dev@linuxfromscratch.org" # Bug report address #DISTRO_MINI="LFS" # Short name used in filenames for distro config # Define custom colors used in messages printed to the screen # Please consult `man console_codes` for more information # under the "ECMA-48 Set Graphics Rendition" section # # Warning: when switching from a 8bit to a 9bit font, # the linux console will reinterpret the bold (1;) to # the top 256 glyphs of the 9bit font. This does # not affect framebuffer consoles # These values, if specified here, override the defaults #BRACKET="\\033[1;34m" # Blue #FAILURE="\\033[1;31m" # Red #INFO="\\033[1;36m" # Cyan #NORMAL="\\033[0;39m" # Grey #SUCCESS="\\033[1;32m" # Green #WARNING="\\033[1;33m" # Yellow # Use a colored prefix # These values, if specified here, override the defaults #BMPREFIX=" " #SUCCESS_PREFIX="${SUCCESS} * ${NORMAL} " #FAILURE_PREFIX="${FAILURE}*****${NORMAL} " #WARNING_PREFIX="${WARNING} *** ${NORMAL} " # Manually seet the right edge of message output (characters) # Useful when resetting console font during boot to override # automatic screen width detection #COLUMNS=120 # Interactive startup #IPROMPT="yes" # Whether to display the interactive boot prompt #itime="3" # The amount of time (in seconds) to display the prompt # The total length of the distro welcome string, without escape codes #wlen=$(echo "Welcome to ${DISTRO}" | wc -c ) #welcome_message="Welcome to ${INFO}${DISTRO}${NORMAL}" # The total length of the interactive string, without escape codes #ilen=$(echo "Press 'I' to enter interactive startup" | wc -c ) #i_message="Press '${FAILURE}I${NORMAL}' to enter interactive startup" # Set scripts to skip the file system check on reboot #FASTBOOT=yes # Skip reading from the console #HEADLESS=yes # Write out fsck progress if yes #VERBOSE_FSCK=no # Speed up boot without waiting for settle in udev #OMIT_UDEV_SETTLE=y # Speed up boot without waiting for settle in udev_retry #OMIT_UDEV_RETRY_SETTLE=yes # Skip cleaning /tmp if yes #SKIPTMPCLEAN=no # For setclock #UTC=1 #CLOCKPARAMS= # For consolelog (Note that the default, 7=debug, is noisy) #LOGLEVEL=7 # For network #HOSTNAME=mylfs # Delay between TERM and KILL signals at shutdown #KILLDELAY=3 # Optional sysklogd parameters #SYSKLOGD_PARMS="-m 0" # Console parameters #UNICODE=1 #KEYMAP="de-latin1" #KEYMAP_CORRECTIONS="euro2" #FONT="lat0-16 -m 8859-15" #LEGACY_CHARSET=
LFS 부트 스크립트는
상당히 효율적인
방식으로 시스템을
부팅하고
종료하지만, rc.site
파일을 약간
수정해서 속도를
더욱 향상시키고
사용자의 취향에
따라 메시지를
조정할 수 있는
방법이 몇 가지
있다. 이렇게
하려면 위의 /etc/sysconfig/rc.site
파일에서 설정을
조정하라.
부트 스크립트
udev
에는
완료하는 데
약간의 시간이
걸리는 udev
settle 호출이
있다. 시스템에
있는 장치에 따라
시간이 걸리거나
걸리지 않을 수
있다. 단순
파티션과 단일
이더넷 카드만
있는 경우 부팅
프로세스는 이
명령을 기다릴
필요가 없다. 이를
건너 뛰려면
변수를 다음과
같이 설정하라:
OMIT_UDEV_SETTLE=y
부트 스크립트
udev_retry
도
마찬가지로 udev settle을
기본적으로
실행한다. 이
명령은 /var
디렉토리가
별도로 마운트된
경우에만
필요하다. 시계에
/var/lib/hwclock/adjtime
파일이 필요하기
때문이다. 다른
사용자 정의도
udev가 완료되기를
기다려야 하지만,
대부분은
불필요하다.
다음과 같이
변수를 설정하여
이 명령을 건너
뛴다: OMIT_UDEV_RETRY_SETTLE=y.
기본적으로 파일 시스템 검사는 암묵적으로 진행되기 때문에 부팅 프로세스가 지연되는 것처럼 보일 수 있다. fsck 출력을 활성화하려면 다음과 같이 변수를 설정하라: VERBOSE_FSCK=y.
재부팅할 때 파일
시스템 검사(fsck)를
건너뛰려면 /fastboot
파일을
만들거나, /sbin/shutdown -f -r now
명령으로
시스템을
재부팅하라.
반면에 /forcefsck
를
만들거나 -f
매개
변수 대신 -F
와 함께
shutdown
명령을 실행하면
모든 파일
시스템을 강제로
검사할 수도 있다.
FASTBOOT=y로 설정하면 이 옵션을 지우지 않는 한 부팅 과정에서 fsck를 비활성화한다. 이는 영구적인 설정으로는 권장하지 않는다.
일반적으로 /tmp
디렉토리의 모든
파일은 부팅 시
삭제된다. 이는
존재하는
파일이나
디렉토리의 수에
따라 부팅 과정이
현저하게 지연될
수 있다. 이러한
파일 제거를
건너뛰려면
다음과 같이
설정하라: SKIPTMPCLEAN=y.
시스템 종료 중 init 프로그램은 시작된 각 프로그램(예: agetty)에 TERM 신호를 보내고 설정된 시간(기본값 3초)을 기다린 뒤, 각 프로세스에 KILL 신호를 보낸 후 다시 기다린다. 이 과정은 각자 고유한 스크립트에 의해 종료되지 않은 모든 프로세스들을 대상으로 sendsignals 스크립트에 의해 반복된다. init의 대기 시간은 매개 변수로 조절할 수 있다. 예를 들어 init의 대기 시간을 없애려면, 시스템 종료나 재부팅할 때 -t0 매개 변수를 사용하라(예를 들면 /sbin/shutdown -t0 -r now). sendsignals 스크립트의 대기 시간은 다음과 같이 매개 변수를 설정하여 건너뛸 수 있다: KILLDELAY=0.