boot(7) - wariua/manpages-ko GitHub Wiki

NAME

boot - μœ λ‹‰μŠ€ μ‹œμŠ€ν…œ V 릴리슀 4 기반의 μ‹œμŠ€ν…œ λΆ€νŒ… κ³Όμ •

DESCRIPTION

λΆ€νŒ… κ³Όμ •(λ˜λŠ” "λΆ€νŠΈ 절차")의 μ„ΈλΆ€ λ‚΄μš©μ€ μ‹œμŠ€ν…œλ§ˆλ‹€ λ‹€λ₯΄μ§€λ§Œ λŒ€λž΅μ μœΌλ‘œ λ‹€μŒ μš”μ†Œλ“€μ΄ 각각 ν†΅μ œν•˜λŠ” λ‹¨κ³„λ“€λ‘œ λ‚˜λˆŒ 수 μžˆλ‹€.

  1. ν•˜λ“œμ›¨μ–΄
  2. 운영 체제(OS) λ‘œλ”
  3. 컀널
  4. 루트 μ‚¬μš©μž 곡간 ν”„λ‘œμ„ΈμŠ€ (init 및 inittab)
  5. λΆ€νŠΈ 슀크립트

이 단계듀 각각을 μ•„λž˜μ—μ„œ μžμ„Ένžˆ μ„€λͺ…ν•œλ‹€.

ν•˜λ“œμ›¨μ–΄

전원을 μΌœκ±°λ‚˜ ν•˜λ“œ 리셋을 ν•œ ν›„μ—λŠ” 읽기 μ „μš© λ©”λͺ¨λ¦¬(보톡 PROM)에 μ €μž₯된 ν”„λ‘œκ·Έλž¨μœΌλ‘œ μ œμ–΄κΆŒμ΄ κ°„λ‹€. 개인용 컴퓨터와 κ΄€λ ¨λœ 역사적인 이유 λ•Œλ¬Έμ— 이 ν”„λ‘œκ·Έλž¨μ„ μ’…μ’… "λ°”μ΄μ˜€μŠ€(BIOS)"라고 ν•œλ‹€.

보톡 이 ν”„λ‘œκ·Έλž¨μ€ 머신에 λŒ€ν•œ 기본적인 μžκ°€ 검사λ₯Ό μˆ˜ν–‰ν•˜κ³  λΉ„νœ˜λ°œμ„± λ©”λͺ¨λ¦¬μ— μ ‘κ·Όν•˜μ—¬ μΆ”κ°€ λ§€κ°œλ³€μˆ˜λ“€μ„ μ½λŠ”λ‹€. PCμ—μ„œ 이 λ©”λͺ¨λ¦¬λŠ” λ°°ν„°λ¦¬λ‘œ λ™μž‘ν•˜λŠ” CMOS λ©”λͺ¨λ¦¬μ΄λ©°, κ·Έλž˜μ„œ λ§Žμ€ μ‚¬λžŒλ“€μ΄ κ·Έκ±Έ "CMOS"라고 λΆ€λ₯Έλ‹€. PC 세계 λ°–μ—μ„œλŠ” 일반적으둜 "NVRAM"(λΉ„νœ˜λ°œμ„± RAM)이라고 ν•œλ‹€.

MVRAM에 μ €μž₯λ˜λŠ” λ§€κ°œλ³€μˆ˜λŠ” μ‹œμŠ€ν…œλ§ˆλ‹€ λ‹€λ₯΄μ§€λ§Œ μ΅œμ†Œν•œ μ–΄λ–€ μž₯μΉ˜κ°€ OS λ‘œλ”λ₯Ό μ œκ³΅ν•  수 μžˆλŠ”μ§€λ₯Ό, μ•„λ‹ˆλ©΄ 적어도 μ–΄λ–€ μž₯μΉ˜μ—μ„œ OS λ‘œλ”λ₯Ό μ°Ύμ•„λ³Ό 수 μžˆλŠ”μ§€λ₯Ό λͺ…μ‹œν•΄μ•Ό ν•œλ‹€. 그런 μž₯치λ₯Ό "λΆ€νŠΈ μž₯치(boot device)"라고 ν•œλ‹€. ν•˜λ“œμ›¨μ–΄ λΆ€νŠΈ λ‹¨κ³„μ—μ„œλŠ” λΆ€νŠΈ μž₯치의 κ³ μ •λœ μœ„μΉ˜λ‘œλΆ€ν„° OS λ‘œλ”λ₯Ό μ μž¬ν•˜κ³  그리둜 μ œμ–΄κΆŒμ„ λ„˜κΈ΄λ‹€.

μ°Έκ³ : OS λ‘œλ”λ₯Ό 읽어듀일 μž₯μΉ˜κ°€ λ„€νŠΈμ›Œν¬λ₯Ό 톡해 λΆ™μ–΄μžˆμ„ μˆ˜λ„ μžˆλ‹€. 이런 경우 λΆ€νŒ…μ˜ μ„ΈλΆ€ 사항을 DHCP, TFTP, PXE, Etherboot λ“±κ³Ό 같은 ν”„λ‘œν† μ½œλ“€μ΄ λͺ…μ„Έν•œλ‹€.

OS λ‘œλ”

OS λ‘œλ”μ˜ 주된 역할은 μ–΄λ–€ μž₯μΉ˜μ—μ„œ 컀널이 μžˆλŠ” μœ„μΉ˜λ₯Ό μ•Œμ•„λ‚΄μ„œ μ μž¬ν•œ λ‹€μŒ μ‹€ν–‰ν•˜λŠ” 것이닀. λ§Žμ€ OS λ‘œλ”λ“€μ—μ„œλŠ” λŒ€ν™”ν˜• μ‚¬μš© 방식을 톡해 (μ•„λ§ˆλ„ λ§ˆμ§€λ§‰ 컴파일 ν•œ 컀널이 λ™μž‘ν•˜μ§€ μ•Šμ„ λ•Œμ˜ λŒ€λΉ„μ±…μœΌλ‘œ) λ‹€λ₯Έ 컀널을 μ§€μ •ν•˜κ±°λ‚˜ 컀널에 선택적인 λ§€κ°œλ³€μˆ˜λ₯Ό 전달할 수 μžˆλ‹€.

전톡적 PCμ—μ„œ OS λ‘œλ”λŠ” λΆ€νŠΈ μž₯치의 졜초 512λ°”μ΄νŠΈ 블둝에 μœ„μΉ˜ν•œλ‹€. 이 블둝을 "MBR"(Master Boot Record; λ§ˆμŠ€ν„° λΆ€νŠΈ λ ˆμ½”λ“œ)라고 ν•œλ‹€.

μ—¬λŸ¬ μ‹œμŠ€ν…œμ—μ„œ OS λ‘œλ”λŠ” λ‹€μ–‘ν•œ μ œμ•½λ“€ λ•Œλ¬Έμ— μ•„μ£Ό μ œν•œλ˜μ–΄ μžˆλ‹€. PC μ•„λ‹Œ μ‹œμŠ€ν…œλ“€μ—μ„œλ„ 이 λ‘œλ”μ˜ 크기와 λ³΅μž‘λ„μ— μ–΄λ–€ μ œμ•½μ΄ μžˆμ§€λ§Œ PC MBR의 크기 μ œμ•½(512λ°”μ΄νŠΈ. νŒŒν‹°μ…˜ ν…Œμ΄λΈ” 포함)은 거기에 λ§Žμ€ κΈ°λŠ₯을 μ§‘μ–΄λ„£λŠ” κ±Έ 거의 λΆˆκ°€λŠ₯ν•˜κ²Œ ν•œλ‹€.

κ·Έλž˜μ„œ μ—¬λŸ¬ μ‹œμŠ€ν…œμ—μ„œλŠ” OSλ₯Ό μ μž¬ν•˜λŠ” 역할을 1μ°¨ OS λ‘œλ”μ™€ 2μ°¨ OS λ‘œλ”λ‘œ λ‚˜λˆˆλ‹€. 이 2μ°¨ OS λ‘œλ”λŠ” λ””μŠ€ν¬ νŒŒν‹°μ…˜ 같은 μ˜μ† μ €μž₯μ†Œμ˜ 더 큰 λΆ€λΆ„ μ•ˆμ— μžˆμ„ 수 μžˆλ‹€.

λ¦¬λˆ…μŠ€μ—μ„œ OS λ‘œλ”λŠ” λ§Žμ€ 경우 lilo(8) μ•„λ‹ˆλ©΄ grub(8)이닀.

컀널

컀널은 μ˜¬λΌκ°€λ©΄μ„œ 컴퓨터와 운영 체제의 λ‹€μ–‘ν•œ ꡬ성 μš”μ†Œλ“€μ„ μ΄ˆκΈ°ν™” ν•œλ‹€. 일반적으둜 그런 일을 μ±…μž„μ§€λŠ” μ†Œν”„νŠΈμ›¨μ–΄μ˜ 각 뢀뢄을 ν•΄λ‹Ή ꡬ성 μš”μ†Œμ˜ "λ“œλΌμ΄λ²„(driver)"라고 λ³Έλ‹€. 컀널은 가상 λ©”λͺ¨λ¦¬ μŠ€μ™€νΌ(μš”μ¦˜ λ¦¬λˆ…μŠ€ μ»€λ„μ—μ„œλŠ” "kswapd"λΌλŠ” 컀널 ν”„λ‘œμ„ΈμŠ€)λ₯Ό μ‹œμž‘ν•˜κ³  루트 경둜 /에 μ–΄λ–€ 파일 μ‹œμŠ€ν…œμ„ 마운트 ν•œλ‹€.

컀널에 전달할 수 μžˆλŠ” λ§€κ°œλ³€μˆ˜λ“€ 쀑 일뢀가 이 λ™μž‘λ“€κ³Ό κ΄€λ ¨λ˜μ–΄ μžˆλ‹€. (예λ₯Ό λ“€μ–΄ κΈ°λ³Έ 루트 파일 μ‹œμŠ€ν…œμ„ λ³€κ²½ν•  수 μžˆλ‹€.) λ¦¬λˆ…μŠ€ 컀널 λ§€κ°œλ³€μˆ˜μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ bootparam(7)을 읽어 보라.

μ—¬κΈ°κΉŒμ§€ ν•˜κ³  λ‚˜μ„œμ•Ό 컀널이 졜초의 μ‚¬μš©μž 곡간 ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•œλ‹€. κ·Έ ν”„λ‘œμ„ΈμŠ€μ—λŠ” PID(ν”„λ‘œμ„ΈμŠ€ ID)둜 1λ²ˆμ„ μ€€λ‹€. μ „ν†΅μ μœΌλ‘œ 이 ν”„λ‘œμ„ΈμŠ€λŠ” ν”„λ‘œκ·Έλž¨ /sbin/init을 μ‹€ν–‰ν•˜λŠ”λ°, 컀널이 μ²˜λ¦¬ν•˜μ§€ λͺ»ν•œ λ§€κ°œλ³€μˆ˜λ“€μ΄ 그리 μ „λ‹¬λœλ‹€.

루트 μ‚¬μš©μž 곡간 ν”„λ‘œμ„ΈμŠ€

μ°Έκ³ : λ‹€μŒ μ„€λͺ…은 μœ λ‹‰μŠ€ μ‹œμŠ€ν…œ V 릴리슀 4λ₯Ό 기반으둜 ν•˜λŠ” OS에 μ μš©λœλ‹€. ν•˜μ§€λ§Œ 널리 μ“°μ΄λŠ” μ—¬λŸ¬ μ‹œμŠ€ν…œλ“€μ—μ„œλŠ” 관련은 μžˆμ§€λ§Œ 근본적으둜 λ‹€λ₯Έ systemd(1)λΌλŠ” 방식을 μ±„νƒν–ˆλ‹€. 그와 μ—°κ³„λœ bootup(7)μ—μ„œ κ±°κΈ°μ„œμ˜ λΆ€νŒ… 과정을 μƒμˆ ν•œλ‹€.

/sbin/init은 μ‹œμž‘ν•˜λ©΄μ„œ /etc/inittab을 μ½μ–΄μ„œ μΆ”κ°€ μ§€μ‹œλ₯Ό λ°›λŠ”λ‹€. 이 νŒŒμΌμ—μ„œλŠ” /sbin/init ν”„λ‘œκ·Έλž¨μ΄ νŠΉμ • 런레벨(run-level)둜 μ§„μž…ν•˜λΌλŠ” 지식λ₯Ό 받을 λ•Œ 무엇을 μ‹€ν–‰ν•΄μ•Ό ν•˜λŠ”μ§€λ₯Ό κ·œμ •ν•œλ‹€. κ·Έλž˜μ„œ κ΄€λ¦¬μžκ°€ μ–΄λ–€ μš©λ„λ₯Ό μœ„ν•œ ν™˜κ²½μ„ μ†μ‰½κ²Œ μˆ˜λ¦½ν•  수 있게 ν•΄ μ€€λ‹€. 각 λŸ°λ ˆλ²¨μ€ 일ꡰ의 μ„œλΉ„μŠ€λ“€κ³Ό μ—°κ³„λ˜μ–΄ μžˆλ‹€. (예λ₯Ό λ“€μ–΄ 런레벨 SλŠ” 단일 μ‚¬μš©μž(single-user) λͺ¨λ“œμ΄λ©° 런레벨 2μ—λŠ” μƒλ‹Ήμˆ˜μ˜ λ„€νŠΈμ›Œν¬ μ„œλΉ„μŠ€ 싀행이 μˆ˜λ°˜λœλ‹€.)

κ΄€λ¦¬μžκ°€ init(1)을 톡해 ν˜„μž¬ λŸ°λ ˆλ²¨μ„ λ°”κΏ€ 수 있고 runlevel(8)을 톡해 ν˜„μž¬ λŸ°λ ˆλ²¨μ„ μ§ˆμ˜ν•  수 μžˆλ‹€.

ν•˜μ§€λ§Œ 이 νŒŒμΌμ„ νŽΈμ§‘ν•΄μ„œ κ°œλ³„ μ„œλΉ„μŠ€λ“€μ„ κ΄€λ¦¬ν•˜λŠ” 것은 λΆˆνŽΈν•˜λ―€λ‘œ /etc/inittabμ—μ„œλŠ” κ°œλ³„ μ„œλΉ„μŠ€λ“€μ„ μ‹€μ œλ‘œ μ‹œμž‘/μ •μ§€ν•˜λŠ” 일ꡰ의 μŠ€ν¬λ¦½νŠΈλ“€μ„ μ‹€ν–‰ν•˜κΈ°λ§Œ ν•œλ‹€.

λΆ€νŠΈ 슀크립트

μ°Έκ³ : λ‹€μŒ μ„€λͺ…은 μœ λ‹‰μŠ€ μ‹œμŠ€ν…œ V 릴리슀 4λ₯Ό 기반으둜 ν•˜λŠ” OS에 μ μš©λœλ‹€. ν•˜μ§€λ§Œ 널리 μ“°μ΄λŠ” μ—¬λŸ¬ μ‹œμŠ€ν…œλ“€(μŠ¬λž™μ›¨μ–΄ λ¦¬λˆ…μŠ€, FreeBSD, OpenBSD)μ—λŠ” λ‹€μ†Œ λ‹€λ₯Έ λΆ€νŠΈ 슀크립트 체계가 μžˆλ‹€.

κ΄€λ¦¬ν•˜λŠ” μ„œλΉ„μŠ€(메일, nfs μ„œλ²„, cron λ“±)λ§ˆλ‹€ νŠΉμ • 디렉터리(λŒ€λ‹€μˆ˜ λ¦¬λˆ…μŠ€ λ²„μ „λ“€μ—μ„œλŠ” /etc/init.d)에 κ°œμ‹œ μŠ€ν¬λ¦½νŠΈκ°€ ν•œ κ°œμ”© μžˆλ‹€. 이 슀크립트 각각은 (μ„œλΉ„μŠ€λ₯Ό μ‹œμž‘ν•˜κ²Œ λ§Œλ“œλŠ”) "start"λ‚˜ (μ„œλΉ„μŠ€λ₯Ό μ •μ§€ν•˜κ²Œ λ§Œλ“œλŠ”) "stop"을 μœ μΌν•œ 인자둜 λ°›λŠ”λ‹€. μ„ νƒμ μœΌλ‘œ λ‹€λ₯Έ "편의용" λ§€κ°œλ³€μˆ˜λ₯Ό 받을 수 μžˆλ‹€. (κ°€λ Ή, μ •μ§€ν•˜κ³  μ‹œμž‘ν•˜λŠ” "restart", μ„œλΉ„μŠ€ μƒνƒœλ₯Ό ν‘œμ‹œν•˜λŠ” "status" λ“±.) λ§€κ°œλ³€μˆ˜ 없이 슀크립트λ₯Ό μ‹€ν–‰ν•˜λ©΄ κ°€λŠ₯ν•œ μΈμžλ“€μ„ ν‘œμ‹œν•΄ μ€€λ‹€.

μˆœμ„œ μ§€μ • 디렉터리

νŠΉμ • λŸ°λ ˆλ²¨μ—μ„œ μ •ν•΄μ§„ μˆœμ„œλ‘œ νŠΉμ • μŠ€ν¬λ¦½νŠΈλ“€μ΄ μ‹œμž‘/μ •μ§€ν•˜κ²Œ ν•˜κΈ° μœ„ν•΄ μˆœμ„œ μ§€μ • 디렉터리가 μžˆλ‹€. 보톡 /etc/rc[0-6S].d ν˜•νƒœμ΄λ‹€. 이 디렉터리 각각에 /etc/init.d λ””λ ‰ν„°λ¦¬μ˜ μŠ€ν¬λ¦½νŠΈμ— λŒ€ν•œ (일반적으둜 심볼릭) 링크듀이 μžˆλ‹€.

inittab(5)μœΌλ‘œλΆ€ν„° μ£Ό 슀크립트(일반적으둜 /etc/rc)κ°€ ν˜ΈμΆœλœλ‹€. 이 μ£Ό μŠ€ν¬λ¦½νŠΈμ—μ„œ ν•΄λ‹Ήν•˜λŠ” μˆœμ„œ μ§€μ • λ””λ ‰ν„°λ¦¬μ˜ 링크λ₯Ό 톡해 각 μ„œλΉ„μŠ€μ˜ 슀크립트λ₯Ό ν˜ΈμΆœν•œλ‹€. 이름이 'S'둜 μ‹œμž‘ν•˜λŠ” λ§ν¬λŠ” "start" 인자둜 ν˜ΈμΆœν•œλ‹€ (μ„œλΉ„μŠ€ μ‹œμž‘). 이름이 'K'둜 μ‹œμž‘ν•˜λŠ” λ§ν¬λŠ” "stop" 인자둜 ν˜ΈμΆœν•œλ‹€ (μ„œλΉ„μŠ€ μ •μ§€).

동일 런레벨 λ‚΄μ—μ„œ μ‹œμž‘ μˆœμ„œλ‚˜ μ •μ§€ μˆœμ„œλ₯Ό κ·œμ •ν•˜λ„λ‘ 링크 이름에 μˆœμ„œ λ²ˆν˜Έκ°€ μžˆλ‹€. 그리고 λͺ…확성을 μœ„ν•΄ 일반적으둜 링크 이름이 μ°Έμ‘°ν•˜λŠ” μ„œλΉ„μŠ€μ˜ μ΄λ¦„μœΌλ‘œ λλ‚œλ‹€. 예λ₯Ό λ“€μ–΄ /etc/rc2.d/S80sendmail λ§ν¬λŠ” 런레벨 2μ—μ„œ sendmail μ„œλΉ„μŠ€λ₯Ό μ‹œμž‘ν•œλ‹€. 그리고 /etc/rc2.d/S12syslogλ₯Ό μ‹œμž‘ν•œ ν›„μ΄λ©΄μ„œ /etc/rc2.d/S90xfsλ₯Ό μ‹œμž‘ν•˜κΈ° 전에 κ·Έλ ‡κ²Œ ν•œλ‹€.

이 링크듀을 κ΄€λ¦¬ν•˜λŠ” 것은 λΆ€νŠΈ μˆœμ„œμ™€ λŸ°λ ˆλ²¨μ„ κ΄€λ¦¬ν•˜λŠ” 것이닀. μ—¬λŸ¬ μ‹œμŠ€ν…œμ—λŠ” 이 μž‘μ—…μ„ 도와 μ£ΌλŠ” 도ꡬ듀(κ°€λ Ή chkconfig(8))이 μžˆλ‹€.

λΆ€νŠΈ μ„€μ •

μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μ’…μ’… "데λͺ¬(daemon)"이라고 ν•œλ‹€. 일반적으둜 데λͺ¬μ€ λ‹€μ–‘ν•œ λͺ…λ Ήν–‰ μ˜΅μ…˜κ³Ό λ§€κ°œλ³€μˆ˜λ“€μ„ 받을 수 μžˆλ‹€. μ‹œμŠ€ν…œ κ΄€λ¦¬μžκ°€ 전체 λΆ€νŠΈ 슀크립트λ₯Ό νŽΈμ§‘ν•˜μ§€ μ•Šκ³ λ„ 이 μž…λ ₯을 λ°”κΏ€ 수 있게 ν•˜κΈ° μœ„ν•΄ μ–΄λ–€ 별도 μ„€μ • νŒŒμΌμ„ μ‚¬μš©ν•˜λ©° κ·Έ νŒŒμΌμ€ μ—°κ³„λœ λΆ€νŠΈ μŠ€ν¬λ¦½νŠΈμ—μ„œ 찾을 수 μžˆλŠ” νŠΉμ • 디렉터리(ꡬ식 λ ˆλ“œν–‡ μ‹œμŠ€ν…œμ—μ„œλŠ” /etc/sysconfig)에 μžˆλ‹€.

ꡬ식 μœ λ‹‰μŠ€ μ‹œμŠ€ν…œλ“€μ—μ„œλŠ” 그런 νŒŒμΌμ— 데λͺ¬μ„ μœ„ν•œ μ‹€μ œ λͺ…λ Ήν–‰ μ˜΅μ…˜λ“€μ΄ λ“€μ–΄ μžˆμ—ˆλ‹€. ν•˜μ§€λ§Œ μš”μ¦˜μ˜ λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œλ“€μ—μ„œλŠ” (또 HP-UXμ—μ„œλŠ”) μ…Έ λ³€μˆ˜λ“€λ§Œ λ‹΄κ³  μžˆλ‹€. /etc/init.d λ‚΄μ˜ λΆ€νŠΈ μŠ€ν¬λ¦½νŠΈκ°€ μ„€μ • νŒŒμΌμ„ μ½μ–΄μ„œ ν¬ν•¨ν•œ λ‹€μŒ (즉 μ„€μ • νŒŒμΌμ„ "source" ν•œ λ‹€μŒ) κ·Έ λ³€μˆ˜ 값듀을 μ‚¬μš©ν•œλ‹€.

FILES

/etc/init.d/, /etc/rc[S0-6].d/, /etc/sysconfig/

SEE ALSO

init(1), systemd(1), inittab(5), bootparam(7), bootup(7), runlevel(8), shutdown(8)


2015-03-11

⚠️ **GitHub.com Fallback** ⚠️