시작하는 동안 Linux 또는 Unix에서 "/"를 마운트하는 방법은 무엇입니까?

시작하는 동안 Linux 또는 Unix에서 "/"를 마운트하는 방법은 무엇입니까?

특정 경로에 장치를 설치할 수 있습니다. 예를 들어, "/dev/sda1"은 "/home/user"에 마운트될 수 있습니다. 내가 이해하지 못하는 것은 시작 중에 "/"가 마운트되는 방법과 위치입니다. 누구든지 이것을 설명하는 데 도움을 줄 수 있습니까?

답변1

Unix 시스템을 시작하는 동안 커널은 일반 작업 중에는 수행하지 않는 일부 작업을 수행합니다. 그 중 하나는 디렉토리에 파일 시스템을 마운트하는 것입니다. /이는 마운트가 mount시스템 호출에 의해 트리거되지 않고 대상 디렉토리가 기존 디렉토리가 아니기 때문에 일반적인 마운트 작업과 매우 다릅니다. 또 다른 것은PID 1로 프로그램 실행, 이는 일반 작업과 다릅니다.기존 프로세스 복제.

이 "마법의" 루트 디렉토리가 마운트되는 방식은 Unix 변형마다 크게 다릅니다. 커널은 컴파일 타임 구성, 커널 이미지의 런타임 구성, 사전 정의된 메모리 위치의 런타임 구성, 명령줄 인수 등 다양한 방법으로 지정할 수 있는 구성 매개변수를 기반으로 마운트할 장치를 선택합니다. 작동 방법 귀하의 컴퓨터에서 이를 실행하려면 Unix 변형에 대한 문서를 확인하고 귀하의 컴퓨터가 어떻게 구성되어 있는지 이해해야 합니다.

작동 방식을 이해하기 위해 최신 Linux 커널 작동 방식에 대한 개요를 살펴보겠습니다. Linux는 오랜 역사와 다양한 사용 사례를 갖고 있기 때문에 이것은 가장 간단한 예는 아닙니다.

  • /Linux는 RAM에 저장된 파일로 구성된 경로에 추가된 "특수" 파일 시스템에서 부팅할 수 있습니다 . 이 특수 파일 시스템을파일 시스템 초기화;rootfs 파일 시스템 유형의 인스턴스입니다. initramfs는 아키텍처 종속 프로토콜을 통해 부트로더가 전달한 콘텐츠로 채워지며, 부트로더가 메모리에 로드한 커널 이미지로 직접 컴파일됩니다.
  • 또는 Linux는 /커널의 초기화 코드에서 인식되는 제한된(그러나 더 큰) 볼륨 유형 세트의 일부인 장치를 마운트할 수 있습니다. 이러한 장치 유형에는 일반 유형 디스크(ATA, USB 등을 포함한 SCSI와 같은 모든 것)의 일반 유형 파티션에 있는 모든 파일 시스템과 RAM 디스크 및 NFS 마운트가 포함됩니다.
  • 선택한 경로에 따라 초기 루트 파일 시스템은 나중에 숨겨지거나 다른 파일 시스템으로 대체될 수 있습니다. 섀도잉은 대부분의 데스크톱 및 서버 시스템이 작동하는 방식인 initramfs에서 발생하는 일입니다(반면에 내장형 시스템에는 하드코딩된 루트 파일 시스템이 있는 경우가 많습니다). 교체는 무슨 일이 일어나는가초기화 프로그램, 특수 RAM 디스크입니다. initramfs 또는 initrd의 작업은 일반 작업에서 사용할 "실제" 루트 파일 시스템을 제공하는 드라이버를 로드하는 것입니다.

답변2

이것은 bootup(7)Ubuntu 시스템의 매뉴얼에서 가져온 것입니다.

시스템 시작에는 다양한 구성 요소가 포함됩니다. 전원을 켜는 즉시 시스템 BIOS는 최소한의 하드웨어 초기화를 수행하고 영구 저장 장치에 저장된 부트로더로 제어권을 전송합니다. 그런 다음 이 부트로더는 디스크(또는 네트워크)에서 운영 체제 커널을 호출합니다. Linux의 경우 커널은 (선택적으로) 루트 파일 시스템을 찾는 initrd에서 생성된 것과 같은 초기 RAM 디스크 이미지( ) 를 추출하고 실행합니다(아마도 이 목적으로). 루트 파일 시스템을 찾아 마운트하면 운영 체제 이미지에 저장된 호스트 시스템 관리자(예:)에게 제어권이 넘겨지며 , 호스트 시스템 관리자 는 나머지 모든 하드웨어를 검색하고, 필요한 모든 파일 시스템을 마운트하고, 구성된 모든 파일을 생성하는 일을 담당합니다. 제공하다.dracut(8)systemd(1)initrdsystemd(1)

man boot이것을 읽어도 답을 찾지 못하더라도 bootup(7)설명서 하단에 있는 "참조:" 를 볼 수도 있습니다 .

호기심에 설명서를 확인해 봤습니다 initrd.

첫 번째 부팅 단계에서 커널은 부팅되고 /dev/initrd콘텐츠(예: 부트로더에 의해 초기화된 RAM 디스크)에서 초기 루트 파일 시스템을 마운트합니다. 두 번째 단계에서는 초기 루트 장치의 콘텐츠에서 추가 드라이버나 기타 모듈이 로드됩니다. 추가 기능 모듈을 로드한 후 새로운 루트 파일 시스템(즉, 일반 루트 파일 시스템)이 다른 장치에서 설치됩니다.

"Unix"에 대해 언급하셨으니 OpenBSD 문서를 알려드리겠습니다.1단계 시스템 부팅그리고두 번째 단계 부트로더또한.

관련 정보