Linux 파티션이 "/" 디렉터리에 "마운트"되어 있다고 말하는 것이 정확합니까?

Linux 파티션이 "/" 디렉터리에 "마운트"되어 있다고 말하는 것이 정확합니까?

라는 이름의 파티션이 있다고 가정합니다 /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를 설명하는 것도 완벽하다고 생각합니다.

관련 정보