7.6. System V 부트스크립트 사용 및 설정

7.6.1. System V 부트스크립트의 작동 방식

리눅스는 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: 컴퓨터를 재시작함

7.6.2. Sysvinit 설정

커널 초기화 중에, 실행되는 첫 번째 프로그램은 명령줄에 따로 지정되지 않는 한 기본적으로 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 파일에 내용이 첨부된다.

7.6.2.1. Run Levels 변경

run-levels 변경은 init <runlevel>을 통해 이루어지며, 여기서 <runlevel>은 대상 run-level이다. 예를 들어, 시스템을 재부팅하려면 사용자는 reboot 명령의 별칭인 init 6 명령을 사용할 수 있다. 마찬가지로, init 0halt 명령의 별칭이다.

/etc/rc.d 아래에는 rcsysinit.drc?.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.drc6.d 디렉토리의 S로 시작하는 링크들은 어떤 것도 시작시키지 않는다. 그것들은 무언가를 중단시키기 위한 매개 변수 stop과 함께 호출된다. 그 이유는 사용자가 시스템을 재부팅하거나 종료할 때는 아무것도 시작할 필요가 없기 때문이다. 시스템은 오로지 중단되기만 하면 된다.

다음은 스크립트가 인수에 따라 수행하는 작업에 대한 설명이다:

start

서비스가 시작된다.

stop

서비스가 중지된다.

restart

서비스가 중지되었다가 다시 시작된다.

reload

서비스 구성이 업데이트된다. 이는 서비스의 구성 파일이 수정된 후 서비스를 재시작할 필요가 없을 때 사용된다.

status

서비스가 실행 중인지, PID가 몇인지 출력한다.

부팅 프로세스가 작동하는 방식을 자유롭게 수정하라(어떻게 하든 간에 결국 당신만의 LFS 시스템이다). 여기서 주어진 파일들은 이를 수행하는 방법의 예시이다.

7.6.3. Udev 부트스크립트

/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절. “모듈 로딩”를 참고하라.

7.6.4. 시스템 시계 설정

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 파일에서 대신 설정할 수 있다.

7.6.5. 리눅스 콘솔 설정

이 절에서는 키보드 맵, 콘솔 글꼴 및 콘솔 커널 로그 레벨을 설정하는, 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". 다음과 같은 변수들이 인식된다:

LOGLEVEL

이 변수는 dmesg에서 설정한 대로 콘솔로 전달되는 커널 메시지의 로그 수준을 지정한다. 유효한 수준은 "1"(메시지 없음)에서 "8"까지이다. 기본값은 "7"이다.

KEYMAP

이 변수는 대표적으로 로드할 키맵의 이름(예: it)과 같은, loadkeys 프로그램에 대한 인수를 지정한다. 이 변수를 설정하지 않으면 부트스크립트가 loadkeys 프로그램을 실행하지 않고 기본 커널 키맵이 사용된다. 키맵 중 몇 가지는 동일한 이름의 여러 버전이 있다(qwerty/와 qwertz/에는 cz와 그 변형들, olpc/와 qwerty/에는 es, fgGIod/와 qwerty/에는 trf). 이 경우 적절한 키맵이 로드되도록 상위 디렉토리(예: qwerty/es)도 지정해야 한다.

KEYMAP_CORRECTIONS

이 (드물게 쓰이는) 변수는 loadkeys 프로그램을 재호출하는 데에 쓰이는 인수를 지정한다. 이는 기본 키맵이 완전히 만족스럽지 않아서 약간 조정하고자 할 때 유용하다. 예를 들어 유로 기호를 기본적으로 포함하지 않는 키맵에 유로 기호를 포함시키려면 이 변수를 euro2로 설정하라.

FONT

이 변수는 setfont 프로그램에 대한 인수를 지정한다. 이는 일반적으로 글꼴 이름과 -m, 그리고 로드할 응용 문자맵의 이름으로 구성된다. 가령 lat1-16 글꼴을 8859-1 응용 문자맵(미국에서 적합하다)과 함께 로드하려면, 이 변수를 lat1-16 -m 8859-1로 설정하라. UTF-8 모드에서 커널은 키맵에 구성된 8비트 키코드를 UTF-8로 전환하기 위해 응용 문자맵을 사용한다. 따라서 "-m" 매개 변수의 인수는 키맵에 구성된 키코드의 인코딩으로 설정되어야 한다.

UNICODE

콘솔을 UTF-8 모드로 전환하려면 이 변수를 1, yes 또는 true로 설정하라. 이는 UTF-8 기반 로케일에서 사용 가능하며 UTF-8 기반 로케일이 아닐 경우엔 문제를 일으킨다.

LEGACY_CHARSET

많은 키보드 레이아웃은 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 세션이나 시리얼 콘솔과는 아무 관련이 없다. 이런 상황에서는 위에서 마지막으로 언급한 두 제한 사항이 해당되지 않는다.

7.6.6. 부팅 시 파일 생성

가끔은 부팅 시에 파일을 생성하고 싶을 수도 있다. 예를 들어 /tmp/.ICE-unix 디렉토리가 필요할 수 있다. 이 작업은 /etc/sysconfig/createfiles 구성 스크립트에 항목을 생성하여 수행할 수 있다. 이 파일의 작성 양식은 기본 구성 파일의 주석에 적혀있다.

7.6.7. sysklogd 스크립트 구성

sysklogd 스크립트는 System V 초기화 중 syslogd 프로그램을 호출한다. -m 0 옵션은 syslogd가 로그 파일에 기본적으로 20분마다 주기적으로 기록하는 타임스탬프 표시를 비활성화한다. 이 주기적 타임스탬프 표시를 활성화하려면, /etc/sysconfig/rc.site의 SYSKLOGD_PARMS 변수를 원하는 값으로 정의하라. 예를 들어, 모든 매개 변수를 제거하려면 변수를 빈 값으로 설정하라:

SYSKLOGD_PARMS=

더 많은 옵션은 man syslogd를 참고하라.

7.6.8. rc.site 파일

선택 사항인 /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=

7.6.8.1. 부팅 및 시스템 종료 스크립트 사용자 정의

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.