1992.11.27
SUBJECT: SunOS 4.x의 Boot Procedure 小考
MEANING OF THIS MEMO:
unOS 4.x의 Boot Procedure에 대해 간단히 살펴보았다.
CONTENTS:
1. Boot Procedure에 대한 도해적 이해
2. /etc/rc.boot에서 mount의 의미
DESCRIPTION:
1. Boot Procedure에 대한 도해적 이해
* System Initialization
Kernel
┌─┐ Init
│ │ ┌─┐
│ │→│ │→┌────┐
│ │ │ │ │rc.boot │
│ │ │ │←└────┘
│ │ │ │→┌────┐→┌────┐
│ │ │ │ │ rc │ │rc.local│
│ │ │ │←└────┘←└────┘
│ │ └─┘
└─┘
┌────┐ ┌────┐ ┌───────┐ ┌────┐
│ monitor│→ │ Kernel │ → │ /usr/etc/init│ → │/etc/rc │
└────┘ └────┘ └───────┘ └────┘
↓ ↑ ↓ ↑
┌────┐ ┌────┐
│rc.boot │ │rc.local│
└────┘ └────┘
* /usr/etc/init의 수행
- "init"는 /etc/rc.boot를 먼저 수행하면서 machine name을 set하고,
ifconfig와 hostconfig program은 kernel에 hostname, IP address, NIS domain name,
default router를 setting한다. 그리고 나서 file system을 check한다.
- fsck가 성공적으로 끝나면 "init"는 /etc/rc 를 실행한다.
/etc/rc는 system이 single-user mode인 경우,
single-user shell이 종료되고 나서야 실행된다.
rc는 4.2 filesystem을 mount하고 /etc/rc.local의 수행을 위해 shell을 spawn한다.
- rc에 의해 실행되는 /etc/rc.local은 NFS filesystem을 mount하고
sysIDtool(4.1.1. Rev B 이후)로 system configuration 정보를
local configuration file에 setting하며 local daemon을 구동시킨다.
2. /etc/rc.boot에서 mount의 의미
* /etc/rc.boot의 첫 주석을 번역해 본다.
* 여기(rc.boot)에서 root filesystem을 fsck한다는 것은
system crash 후 발생할 수 있는 여러 종류의 panic을 방지하는데
매우 중요한 역할을 한다.
* SunOS 4.x에서 'block device'는 'read-write mount된 file system'과
동일한 의미가 아니다.
┌─────────────────────────────┐
│ "block device" != "read-write mount된 file system" │
└─────────────────────────────┘
* system rebooting 동안 'root(= 4.2 UFS) file system'은 신뢰할 수 있는
fsck를 수행하기 위해 default로 read-only mount 된다.
즉 read-only mount함으로써 fsck 수행시 발견하는 corrupt,
그러나 disk에 write되어서는 안되는 것이 disk 즉 file system에 write되는 것을 방지한다.
* 'fsck'는 file system이 어떤 손상을 입었는지를 check하기 위해 'raw device'를 사용한다.
이처럼 'read-only mount된 file system' = 'raw device'을 fsck하는 방식은
kernel이 '혹시 있을 수도 있는 core file system control 정보의 corrupt'를
file system에 overwrite하지 않고서, file system damage를 recovery하도록 해준다.
┌────────────────────────────┐
│ "raw device" = "read-only mount된 file system" │ (?)
└────────────────────────────┘
* file system은 disk check가 제대로 수행되고 나서
/etc/rc.single의 'remount'가 수행될 때까지 read-only mount된 채 남아 있다.
* 이처럼 fsck가 현재 mount된 file system의 corrupt 부분을 찾아 repair하는 경우는
system이 바로 reboot되어야 한다. "
Revision History
Created on Nov. 27 ,1992