리눅스 시작 프로세스 - 위키백과, 우리 모두의 백과사전 리눅스 시작 프로세스 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 리눅스 시작 프로세스는 리눅스 부팅 시에 수행되는 다단계 초기화 과정이다. 이것은 리눅스가 파생된 BSD 및 다른 유닉스 계열 부팅 프로세스와 비슷하다. 리눅스를 부팅하는 것은 펌웨어 초기화, 부트 로더의 실행, 리눅스 커널 이미지의 로딩과 시작 그리고 다양한 시작 스크립트들과 데몬들의 실행을 포함하는 여러 단계와 여러 소프트웨어 구성 요소들과 관련된다. 이 단계들 각각에서는 다른 방식과 접근법이 존재한다 ; 예를 들면 GRUB, LILO, SYSLINUX 또는 Loadlin는 부트 로더로서 사용될 수 있지만
이 존재한다 ; 예를 들면 GRUB, LILO, SYSLINUX 또는 Loadlin는 부트 로더로서 사용될 수 있지만, 시작 스크립트들도 전통적인 init 스타일 또는 ( systemd나 Upstart 같은 현대의 대체재들을 통해 수행될 수 있는 ) 시스템 설정으로도 가능하다. 목차 1 개요 2 부트 로더 단계 3 커널 국면 3. 1 커널 로딩 단계 3. 2 커널 스타트업 단계 4 초기 사용자 공간 5 Init 프로세스 5. 1 SysV init 5. 2 systemd 5. 3 Upstart 5. 4 runit 6 같이 보기 7 각주 8 외부 링크 개요 [ 편집 ] 리눅스 시작 프로세스의 초기 단계들은 컴퓨터 구조에 매우 의존적이다. IBM PC 호환의 하드웨어가 리눅스가 일반적으로 사용되는 가장 흔한 구조이다 ; 이러한
[ 6 ] 근본적으로 이것은 전체 사용자 공간을 수립하고 가동한다. 이것은 파일 시스템을 검사하고 마운트하며 필요한 사용자 서비스를 시작하고 궁극적으로 시스템 스타트업이 완료될 때 사용자 환경으로 전환하는 것을 포함한다. 이것은 유닉스와 BSD의 init 과정들과 비슷하지만 몇몇 차이점이 존재한다. 표준 리눅스 시스템에서 Init은 런레벨로 알려진 ( 0부터 6의 값을 갖는 ) 파라미터와 함께 실행되며 어떤 서브시스템이 동작할 지를 결정한다. 각 런레벨은 자신만의 스크립트를 가지며 주어진 런레벨에서 해야할 일이 적어져 있다. Init 스크립트들은 일반적으로 " / etc / rc... " 와 같은 이름을 갖는 디렉토리에 존재한다. init의 상위 수준 설정 파일은 / etc / inittab에 존재한다. [ 6
데몬이다. Systemd를 초기에 개발한 소프트웨어 엔지니어들은 [ 8 ] 여러 방식들에서 init 데몬의 효율성을 능가하려고 했다. 이들은 시스템 부팅 동안에 과정들이 더 동시에 또는 병렬로 진행되게 해서 소프트웨어 프레임워크를 향상시키고 셸의 오버헤드를 감소시키려고 했다. 각 데몬들을 위한 systemd의 초기화 명령어들은 셸 스크립트가 아닌 설정 파일에 저장된다. 프로세스 간 통신을 위해서, systemd는 유닉스 도메인 소켓과 D - Bus를 동작하는 데몬들에게 사용 가능케 했다. Systemd는 또한 적극적인 병렬화가 가능하다. Upstart [ 편집 ] 전통적인 init 과정은 근본적으로 단지 전력이 공급된 이후에 컴퓨터를 정상적인 실행 상태로 되돌리고 [UNK] 이전에 서비스들을 정상적으로 종료시키는 것을 다룬다. 결과적으로
은 일반적으로 리눅스 라이브 CD와 부팅 가능한 설치 CD들에서 사용된다. Loadlin은 시에 실행 중인 도스 또는 윈도우 9x 커널을 리눅스 커널로 대체할 수 있는 부트 로더이다. 이 부팅 방식은 리눅스가 다양한 하드웨어 장치들을 위한 드라이버를 갖기 때문에 현재는 그다지 사용되지 않지만 모바일 장치에서는 아직 볼 수 있다. 커널 국면 [ 편집 ] 리눅스에서 커널은 메모리 관리, 태스크 스케줄링, 입출력, 프로세스 간 통신 그리고 전체적인 시스템 제어 같은 모든 운영 체제 프로세스들을 다룬다. 이것은 두 단계로 로드되는데 첫 단계에서 커널은 ( 압축된 이미지 파일로서 ) 메모리에 로드되며 압축 해제되고 몇몇의 중요한 함수들이 설치된다. 제어는 이후 주요 커널 시작 프로세스로 넘어간다. 커널이 완전하게 동작 가능해지
init 과정은 근본적으로 단지 전력이 공급된 이후에 컴퓨터를 정상적인 실행 상태로 되돌리고 [UNK] 이전에 서비스들을 정상적으로 종료시키는 것을 다룬다. 결과적으로 설계는 엄격하게 동기적이며 현재 작업이 완료되기 전까지는 추후의 작업을 막는다. 이 작업들은 반드시 이전에 정의되어야 한다. 이것은 현대의 데스크탑 컴퓨터에서 다양한 비 스타트업 작업들을 다루지 못하게 한다. Upstart는 비동기적으로 동작한다 ; 이것은 부팅 시에 작업들과 서비스들의 시작 그리고 종료 시에 이것들의 정지를 다루며 또한 시스템이 돌아가는 동안 이 작업들을 감시한다. Sysvinit을 통한 쉬운 이행과 완벽한 하위 호환성이 명백한 설계의 목표이다 ; [ 9 ] 그에 따라 Upstart는 수정되지 않은 sysvinit을 실행할 수 있다. 이 방식으로 이것
호환성이 명백한 설계의 목표이다 ; [ 9 ] 그에 따라 Upstart는 수정되지 않은 sysvinit을 실행할 수 있다. 이 방식으로 이것은 적절한 실행을 위해 일반적으로 완전한 이행을 가정하고 요구하는 그리고 과거와 현재의 스타트업 방식들이 혼합된 환경을 지원하지 않는 대부분의 다른 init 대체재들과는 다르다. [ 10 ] Upstart는 확장으로 inictl, 싱글 이벤트 또는 이벤트 브릿지 ( 많은 복잡한 이벤트들을 통합하기 위한 ) 들의 사용을 통해 자신의 이벤트 모델을 가능케 한다. [ 11 ] 디폴트로 Upstart는 소켓, dbus, udev, file 그리고 dconf 이벤트들의 브릿지들을 포함한다. [ 12 ] runit [ 편집 ] Runit은 유닉스 계열 운영 체제들을 위한 init 구조로서 운영 체제를 통해 초기화,
리눅스 시작 프로세스의 초기 단계들은 컴퓨터 구조에 매우 의존적이다. IBM PC 호환의 하드웨어가 리눅스가 일반적으로 사용되는 가장 흔한 구조이다 ; 이러한 시스템들에서 바이오스가 중요한 역할을 하는데, 다른 시스템들에서도 똑같은 방식이 사용되는 것은 아니다. 다음의 예시에서 IBM PC 호환 하드웨어는 : 바이오스는 실제 하드웨어 플랫폼 특유의 시작 태스크를 수행한다. 하드웨어가 열거되고 부트에 필요한 하드웨어가 정확히 초기화되면 바이오스는 설정된 부트 장치에서 부트 코드를 로드하고 실행한다. 부트 로더는 종종 사용자에게 가능한 부트 옵션의 메뉴를 보여주기도 하며 선택하지 않은 채 일정 시간 이상 지나면 자동으로 선택되는 기본 옵션을 갖고 있다. 선택이 되면 부트 로더는 커널을 메모리로 로드하고, 몇몇 파라미터들을
은 완전한 데스크탑 환경을 구성할 수 있는 UI 요소들 같은 프로그램들의 집합이다. 종료 시에, 모든 init은 모든 사용자 공간 기능을 종료하기 위해 호출된다. init은 그 후 종료되며 커널은 자신의 종료를 수행한다. 부트 로더 단계 [ 편집 ] 부트 로더 단계는 컴퓨터 구조에 따라 다르다. 초기 단계들은 운영 체제에 관련 없었기 때문에, 바이오스 기반 부트 과정은 마스터 부트 레코드 코드가 리얼 모드에서 실행되고 첫 번째 단계 부트 로더가 로드되었을 때 실행될 것이라고 여겨진다. UEFI 시스템에서 리눅스 커널 같은 페이로드는 직접적으로 실행된다. 그래서 부트 로더가 필요치 않다. 아래는 몇몇 유명한 부트 로더들에 대한 개략적인 설명이다. LILO는 파일 시스템 레이아웃을 이해하지 않는
하고 세 이벤트 중 하나가 일어나기를 기다린다 : 종료를 위한 과정의 시작, 정전 신호, 런레벨을 바꾸기 위한 / sbin / telinit을 통한 요청. [ 7 ] 이것은 SysV - 스타일 init에서 적용된다. systemd [ 편집 ] Systemd의 개발자들은 유닉스 시스템 V와 BSD 운영 체제에서 나온 리눅스 init 시스템을 대체하려는 것에 초점을 두었다. init과 비슷하게 systemd는 다른 데몬들을 관리하는 데몬이다. Systemd를 포함한 모든 데몬들은 백그라운드 프로세스들이다. Systemd는 부팅 시에 시작되는 첫번째 데몬이며 [UNK] 시에 종료되는 마지막 데몬이다. Systemd를 초기에 개발한 소프트웨어 엔지니어들은 [ 8 ] 여러 방식들에서 init 데몬의 효율성을 능가하려고 했다. 이들은 시스템
리눅스 시작 프로세스는 리눅스 부팅 시에 수행되는 다단계 초기화 과정이다. 이것은 리눅스가 파생된 BSD 및 다른 유닉스 계열 부팅 프로세스와 비슷하다. 리눅스를 부팅하는 것은 펌웨어 초기화, 부트 로더의 실행, 리눅스 커널 이미지의 로딩과 시작 그리고 다양한 시작 스크립트들과 데몬들의 실행을 포함하는 여러 단계와 여러 소프트웨어 구성 요소들과 관련된다. 이 단계들 각각에서는 다른 방식과 접근법이 존재한다; 예를 들면 GRUB, LILO, SYSLINUX 또는 Loadlin는 부트 로더로서 사용될 수 있지만 시작 스크립트들도 전통적인 init 스타일 또는 (systemd나 Upstart 같은 현대의 대체재들을 통해 수행될 수 있는) 시스템 설정으로도 가능하다.