루트 마운트 전에 /etc/fstab에 액세스하는 방법은 무엇입니까?

루트 마운트 전에 /etc/fstab에 액세스하는 방법은 무엇입니까?

몇 가지 사항을 변경하면서 /etc/fstab닭과 달걀 문제에 대해 생각했습니다. /etc/fstab파일 시스템(루트 파티션 포함)을 마운트하기 위한 지침이 포함된 경우 운영 체제는 처음에 해당 파일을 어떻게 읽습니까?

답변1

부트로더가 커널을 호출하면 커널에 이라는 매개변수를 전달합니다 root. 따라서 커널이 초기화를 마치면 /호출하기 전에 지정된 루트 파티션 마운트를 진행합니다 /sbin/init(다른 매개변수로 재정의되지 않는 한).

그런 다음 프로세스 init는 기본 실행 수준에서 시작하도록 정의된 모든 서비스를 로드하여 시스템의 나머지 부분을 시작합니다.

구성 및 사용하는 초기화 시스템에 따라 앞서 언급한 단계 사이에 여러 다른 단계가 있을 수 있습니다. 현재 Linux에서 가장 널리 사용되는 init 시스템은 SysVInit(전통), Upstart 및 Systemd입니다. 여기에서 시작 프로세스에 대한 자세한 내용을 확인할 수 있습니다.위키피디아 기사.

이것은 Grub 구성의 단순화된 예입니다. 귀하의 질문에 대답하는 중요한 부분은 마지막 줄에서 두 번째 부분입니다. 다음과 같습니다 root=/dev/sda3.

menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-40864544-2d0f-471a-ab67-edd7e4754dae' {
    set root='hd0,msdos1'
    echo    'Loading Linux 3.12.6-gentoo-c2 ...'
    linux   /kernel-3.12.6-gentoo-c2 root=/dev/sda3 ro  
}

많은 구성에서 커널은 /나머지 모든 옵션이 기본값으로 설정된 읽기 전용 모드로 마운트됩니다. /etc/fstabinit가 다시 마운트되면 적용될 파일 시스템 매개변수를 지정할 수 있습니다 .

답변2

fstab이는 기본이 아닌 일부 설치 옵션을 지정하려는 경우에 필요합니다. 그러나 이제 systemd올바른 커널 장치와 fstype은 fstab더 이상 필요하지 않습니다. 루트 항목을 다음으로 바꿀 수 있습니다.

#UUID=8f74237d-b689-4beb-9d1f-f60b426c9969 /            ext4        rw,relatime,data=ordered    0 1
dummy /             auto        rw,relatime,data=ordered,debug  0 1

그리고 systemd는 여전히 마운트 옵션을 존중합니다.

/dev/sdz1잘못된 UUID를 제외하고 잘못된 장치 이름(예: )을 사용할 수 있습니다 . UUID가 잘못된 경우 부팅 시 메시지가 인쇄되지만 Failed to start Remount Root and Kernel File Systems시스템은 여전히 ​​부팅됩니다.

관련 정보