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


21

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

답변:


18

부트 로더가 커널을 호출하면라는 파라미터를 전달합니다 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당신은 초기화 그것을 다시 마운트하면 다음 적용 할 것 파일 시스템 매개 변수를 지정할 수 있습니다.


2
루트 파티션은 처음에 커널에 의해 읽기 전용으로 마운트됩니다. init과정은 다음에 일을 마운트 /etc/fstab보통 수단을 다시 설치 루트 파티션을 읽기 - 쓰기가 매개 변수에 따라.
goldilocks

1
또한 커널은 아직 마운트되지 않은 활성 파티션에서 일부 특수 파일을 찾는 하드 코딩 된 루틴으로 컴파일 할 수 있습니다. FreeBSD 로더는 그런 식으로 작동합니다.
Kondybas

리눅스에서 @Kondybas LILO는 또한 고정 된 블록 번호로 커널을로드하도록 하드 코딩되어 있습니다
phuclv

3

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.