initramfs는 / etc / fstab을 사용합니까?


20

내가 이해하는 방식으로, initramfs는 "실제"루트 파일 시스템을로드합니다.

이제 우리는 그 루트를 정의하는 두 곳이 있습니다. 먼저에 항목을 넣습니다 /etc/fstab. 둘째, 커널 부팅 명령에 장치를 넣습니다 (예 :) root=/dev/sda1.

루트 파일 시스템이 어디에 있는지를 결정하기 위해 initramfs는 어느 것을 사용합니까? 루트 커널 매개 변수를 사용하는 경우 왜 /etc/fstab?에 항목이 있습니까? 두 번째 옵션 (읽기 /etc/fstab)은 /etc/fstab파일이 initramfs가 처음에 마운트하려고하는 루트 장치에 있기 때문에 매우 비논리적 입니다.

매우 혼란스러운 것들.

답변:


14

언급 한 바와 같이, initramfs의 목적은 "실제"루트 파일 시스템을 마운트하는 것입니다 (다른 작업도 수행 할 수 있지만 이것은 일반적인 작업입니다).

initramfs가 없으면 커널은 일반적으로 파티션을 읽기 전용으로 마운트 한 다음에 제어권을 넘깁니다 /sbin/init. initramfs는 일반적으로 루트 파일 시스템이 일반 파티션이 아닌 경우 (mdraid, lvm, 암호화 등) 커널에서이 작업을 수행합니다.

이제 initramfs의 배경과는 별도로 /etc/fstab루트 파일 시스템에 있습니다. 따라서 initramfs가 시작될 때 해당 루트 파일 시스템이 없으므로 fstab (치킨 및 계란 문제)에 도달 할 수 없습니다.
대신 initramfs에서 사용할 수 있도록 매개 변수를 커널 부팅 인수로 전달해야합니다. 일반적으로 이것은 다음과 같습니다 root=/dev/sdX. 그러나 루트 장치의 위치를 ​​자동으로 파악하는 매개 변수가 없으므로 매개 변수가 없습니다. 소프트웨어 (일반적으로 스크립트) 일 뿐이므로 루트 장치를 마운트하기 위해 원하는 모든 작업을 수행 할 수 있습니다.

이제 앞에서 언급했듯이 커널은 실제 루트를 읽기 전용으로 마운트합니다. initramfs는이 작업을 정확히 수행해야합니다. initramfs가 완료되면 시스템은 initramfs가 전혀없는 것처럼 정확하게 부팅을 /sbin/init시작 하고 시작합니다. 이 init은 모든 일반 부팅 스크립트를 시작하며,이 스크립트 중 하나의 역할은 읽기 /etc/fstab, 루트를 읽기 / 쓰기로 전환하고 다른 모든 파일 시스템을 마운트하는 것입니다.


따라서 실제 루트 파일 시스템의 / sbin / init는 / etc / fstab?의 옵션을 사용하여 루트를 다시 마운트한다고 말하고 있습니까?
Ahmed Ghonim

3
예. 일반적으로 간단한 통해 mount -o remount,rw /. 마운트 된 장치는 변경되지 않지만 마운트 옵션은 변경됩니다. 맨 페이지에서 :After this call mount reads fstab (or mtab) and merges these options with options from command line
Patrick

grub2 명령 줄을 사용하는 경우 커널 부트 인수에 매개 변수를 어떻게 전달합니까? 어떤 이유로 내 시스템에 그럽 메뉴가 표시되지 않습니다.
intuited

@intuited 새로운 질문을해야합니다. 논평은 Q & A의 장소가 아닙니다.
Patrick

lsinitramfs /boot/initrd* | fgrep fstab놀랍게도, initramfs는 적어도 fstab 파일을 포함하고 있습니다.
youfu

2

그럴 수도 있고 아닐 수도 있습니다. Initramfs는 다양한 방법으로 구성 될 수 있기 때문에 (커널은로드하고 실행 /init합니다.) 그러나 매개 변수를 사용하는 것이 더 유연합니다. 즉, 변경 사항이있는 경우 부팅 항목을 편집하면 작업이 계속 진행됩니다. 내장 된 하드 코딩 된 루트를 사용하면 반드시 가능하지는 않습니다.

fstab 항목은 마운트 옵션 (일부 변경 가능) 및 fsck순서 와 같은 다른 사항도 결정하므로 어떤 방식 으로든 필요할 수 있습니다 . 또한 그것이 완전히 불필요한 경우에도 (그리고 Initramfs가 그것을 처리하면 작동하지 않을 수 있습니다), 나는 여전히 완전성을 위해 엔트리를 유지합니다.


1

/ etc / fstab을 정적 마운트로 간주 할 수 있습니다. 이러한 작업을 수행하는 방법 일 뿐이지 만 실제로 mount 명령을 실행하는 것은 아니며 fstab에없는 많은 파일 시스템을 볼 수 있습니다. 이러한 udev 및 udisk 서비스는 / etc / fstab 파일을 무시하고 많은 "자동 마운트"를 관리합니다.

따라서 무언가가 마운트되거나 자주 마운트되지 않으면 / etc / fstab과 관련이 없습니다.

initramfs "true"rootfs가 마운트 될 때까지 부팅 과정에서 사용되는 임시 rootfs 일뿐입니다. 왜 initramfs가 / etc / fstab에 있어야합니까?

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