라는 이름의 파티션이 있다고 가정합니다 /dev/sda2
. 이 파티션을 사용하려면 이를 일부 디렉터리에 마운트해야 합니다. 예를 들어 해당 /mnt/sda2
디렉터리에 마운트할 수 있습니다.
/dev/sda1
이제 Linux가 파티션 에 설치되어 있다고 말하면 Linux 파티션( /dev/sda1
)이 "/" 디렉터리에 "마운트"되어 있다고 말하는 것이 정확합니까, 아니면 이 경우 "마운트"라는 용어를 사용하는 것이 부정확합니까?
답변1
루트 파일 시스템은 일반적으로 initramfs/initrd(대부분의 주요 배포판에서) 또는 커널(클래식 Unix 시스템과 유사한 initramfs-less 커널 구성 사용)에 의해 부팅 프로세스로 마운트된다는 점에서 약간 특별합니다. 다른 시스템처럼 사용할 수 없습니다. 파일 시스템이 실제로 마운트 해제되었습니다.
그러나 "루트 파일 시스템이 /dev/sda1
마운트되었습니다 "라고 말하는 데는 /
아무런 문제가 없습니다 . 일부 오래된 Unix 교과서에서 "루트 파일 시스템은 마술처럼 마운트됩니다"라고 말한 것 같습니다. /
특정 설치 프로세스의 세부 사항은 까다롭고 본질적으로 커널 부팅 작업을 처리하는 커널 개발자에게만 관련이 있기 때문입니다.
/
initramfs를 사용하면 커널이 부팅될 때 initramfs 이미지가 마운트됩니다 . 그런 다음 루트 파일 시스템이 임시 위치에 마운트되고 /sbin/pivot_root
도구(또는 다른 배포판 도구의 일부인 동등한 시스템 호출)를 사용하여 initramfs와 실제 루트 파일 시스템의 위치를 서로 전환합니다. 그런 다음 실제 초기화 프로세스가 exec()
실제 루트 파일 시스템에서 제거되어 마지막으로 남아 있는 열린 파일 핸들을 initramfs에 해제합니다. 그러면 initramfs는 마운트 해제되어 할당된 RAM을 해제할 수 있습니다.
커널이 기술적으로 계속 실행되는 동안 다시 동일한 프로세스를 사용하여 한 루트 파일 시스템에서 다른 루트 파일 시스템으로 전환하는 것이 가능할 수 있지만 실제로는 일반적으로 그다지 유용하지 않습니다. 어쨌든 기본적으로 모든 프로세스를 중지해야 합니다. 열려 있는 모든 파일 시스템 파일 가져오기 회전 후 이전 루트 파일 시스템을 마운트 해제할 수 있도록 이전 루트 파일 시스템을 닫았습니다. 이 지점에 도달하면 효과적으로 종료 프로세스가 시작되므로 다시 시작하는 것이 더 간단할 수 있습니다. 보너스로, 이 경우 재부팅하면 부팅이 새 루트 파일 시스템에서 작동한다는 확실한 증거를 얻을 수 있습니다.
답변2
이것은 특별한 경우입니다. initrd/initramfs가 없으면 루트 파일 시스템이 커널에 의해 마운트됩니다. Linux 커널 개발자는 이 용어를 사용합니다. 나는 그들을 반박할 이유가 없다고 생각합니다.
linux-v5.0/init/do_mounts.c#L533
나는 루트 파일 시스템을 마운트하는 것으로 initrd/initramfs를 설명하는 것도 완벽하다고 생각합니다.