switch_root가 initramfs의 모든 파일을 삭제하는 이유는 무엇입니까?

switch_root가 initramfs의 모든 파일을 삭제하는 이유는 무엇입니까?

경고: switch_root는 현재 루트 파일 시스템의 모든 파일과 디렉터리를 반복적으로 삭제합니다.

--from , man switch_root버전util-linux2.32-2.fc28.x86_64

왜?

답변1

의 정확한 동작은 switch_root아래에 설명되어 있습니다.

https://github.com/torvalds/linux/blob/v4.17/Documentation/filesystems/ramfs-rootfs-initramfs.txt

다른 루트 장치로 전환할 때 initrdivov_root를 실행한 다음 램디스크를 제거합니다. 그러나 initramfs는 rootfs입니다. ivot_root rootfs를 사용하거나 마운트 해제할 수 없습니다. 대신, rootfs의 모든 항목을 삭제하여 공간을 확보하세요( find -xdev / -exec rm '{}' ';')...

Linux가 초기 rootfs 제거를 지원하지 않는 이유는 다음과 같습니다.

Rootfs는 2.6 시스템에 항상 존재했던 ramfs(또는 활성화된 경우 tmpfs)의 특수 인스턴스입니다. rootfs를 마운트 해제할 수 없는 이유는 init 프로세스를 종료할 수 없는 것과 거의 같습니다. 빈 목록을 확인하고 처리하기 위해 특수 코드를 사용하는 대신 커널은 특정 목록이 종료되지 않도록 더 작고 간단하게 보장할 수 있습니다. 텅 비게 된다.

관련 정보