[unix] 루트를 마운트하기 전에 / etc / fstab에 어떻게 액세스합니까?

/etc/fstab이 닭고기와 계란 질문이 나에게 발생했을 때 몇 가지 사항을 변경 했습니다 /etc/fstab. 루트 파티션을 포함한 파일 시스템 마운트 지침 이 포함되어 있으면 OS는 어떻게 해당 파일을 먼저 읽습니까?



답변

부트 로더가 커널을 호출하면라는 파라미터를 전달합니다 root. 따라서 커널 초기화가 완료되면 주어진 루트 파티션을 마운트 /한 다음 호출 하여 계속 진행합니다 /sbin/init(다른 매개 변수로 재정의하지 않은 경우).

그런 다음 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/fstab당신은 초기화 그것을 다시 마운트하면 다음 적용 할 것 파일 시스템 매개 변수를 지정할 수 있습니다.


답변

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되지만 시스템은 부팅됩니다.


답변