검색결과 리스트
글
<리눅스 부팅 순서>
1. PC에 전원이 들어오게 되면, 메인보드에 있는 ROM-BIOS에 있는 BIOS는 우선 시스템의 하드웨어에 문제가 없는지 다양한 테스트를 한 후, 문제가 없다면 부팅을 시작한다.
2. BIOS는 먼저 어느 디스크 드라이브로부터 부팅을 시작할 것인지 선택하는데, 첫번째 하드디스크로부터 부팅을 시도할 것이다.
3. 디스크의 첫번째 섹터를 읽어 들이는데, 파티션이 나뉘어져 있으면 그 파티션의 정보를 담고 있는 MBR을 읽어들일 것이고, 그렇지 않다면 하드디스크의 통상 첫번째 섹터라고 불리는 부트 섹터를 읽어들일 것이다.
4. 부트 섹터에는 작은 프로그램을 넣어두는데, 이 프로그램이 운영체제를 읽어들이고 실행을 시키게 된다. 하드 디스크에서 부팅할 때는MBR의 프로그램이 파티션 테이블을 검사한다. 이 과정을 통해 어느 파티션이 활성화된 파티션(즉 부팅이 가능하다고 표시된 파티션)인지를 알아본 후에, 그 파티션의 부트 섹터를 읽어서 그 코드를 실행시킨다.
5. 이 부트 섹터의 역할은 커널을 파티션으로부터 읽어들이고 실행시켜야 한다. 그런데, 각 파티션에는 파일시스템이 존재하므로 플로피의 경우처럼 디스크를 단순히 순차적으로 읽을 수는 없다. 이 문제를 해결하기 위한 여러 방법들이 있는데, 그 중에 가장 많이 쓰는 것이 바로 LILO이다. LILO는 커널이 어느 섹터에 위치하는 지를 미리 파악해 두었다가, 부팅때 이 정보를 가지고 커널을 읽어들이는 방법을 쓴다.
6. LILO로 부팅을 하게 되면, 보통 기본 설정된 커널로 부팅이 된다. 그러나 설정을 바꿔주면 몇가지 다른 커널을 사용해 부팅할 수도 있고, 심지어 아예 다른 운영체제로도 부팅이 가능하다. 그래서 부팅시에 어떤 커널이나 운영체제로 부팅을 할 것인지 사용자가 직접 고를 수 있다. 즉, 부팅시 LILO가 떴을 때,alt, shift, ctrl 키를 누른 후 선택을 입력하게 할 수도 있고, 언제나 입력을 요구하도록 설정할 수도 있다. 선택을 하지 않는다면, 지정된 대기 시간이 지난후 기본 설정으로 부팅이 될 것이다.
7. 리눅스 커널이 메모리 속으로 읽혀지고나면, 진짜 부팅 과정이 시작된 것이라 볼 수 있다.
8. 리눅스 커널은 압축된 형태로 설치되어 있다. 따라서 우선 압축을 풀어야 한다. 그래서 압축된 커널 이미지의 첫부분은 압축을 풀기 위한 작은 프로그램으로 되어 있다.
9. 압축 과정이 끝나면, 커널은 어떤 하드웨어들이 장착되어 있는지 체크하고(하드 디스크, 플로피, 네트워크 어댑터 등), 적절한 장치드라이버를 설정한다.
10. 이제 커널은 루트 파일시스템(root filesystem)을 마운트하려 할 것이다. 이 위치는 컴파일시에 지정될 수도 있고, rdev나 LILO를 통해 정해줄 수도 있다. 또한 파일시스템 타입은 자동적으로 감지된다. 만일, 적합한 파일시스템 드라이버를 커널에 포함시키지 않았다든지 하는 이유로, 파일시스템을 마운트하는 데 실패한다면 커널은 공황상태(panic)에 빠져들고 시스템은 그저 꺼지는 수 밖에 없다.(루트 파일시스템이 마운트되지 않으면 아무것도 할 수가 없다.)
11. 루트 파일시스템은 흔히 읽기 전용으로만 마운트된다. 이렇게 하면 마운트한 상태에서도 파일시스템을 안전하게 점검할 수 있게 된다.
12. 커널은 init 프로그램을 백그라운드로 실행시킨다(/sbin/init). init는 가장 먼저 실행되는 프로세스이므로, 그 프로세스 번호는 1이 된다. init는 시스템 시작을 위한 다양한 작업을 수행하는데, 최소한 몇가지 필수적인 백그라운드 데몬을 실행하도록 되어 있다.
13. init는 다중사용자 모드로 전환되며, getty를 가상 콘솔과 시리얼 라인 터미널들에 띄운다. getty는 사용자들이 가상 콘솔이나 시리얼 라인 터미널을 통해 로그인 할 수 있도록 해주는 프로그램이다. 또한 init가 어떻게 설정되느냐에 따라, 여기서 몇가지 다른 프로그램들을 실행하기도 한다.
더 자세한 내용은 이곳을 참고하길 바란다.
http://wiki.kldp.org/Translations/html/SysAdminGuide-KLDP/x1681.html
'OS > Linux' 카테고리의 다른 글
리눅스 - 마스터 네임 서버 구축 (0) | 2016.02.21 |
---|---|
리눅스 - DNS 서버 개념 (0) | 2016.02.20 |
리눅스 - Telnet(텔넷) 서버 (0) | 2016.02.19 |
리눅스 - FTP서버 (0) | 2016.02.18 |
리눅스 - 환경변수 (0) | 2016.02.17 |
RECENT COMMENT