경고: switch_root는 현재 루트 파일 시스템의 모든 파일과 디렉터리를 반복적으로 삭제합니다.
--from , man switch_root
버전util-linux
2.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 프로세스를 종료할 수 없는 것과 거의 같습니다. 빈 목록을 확인하고 처리하기 위해 특수 코드를 사용하는 대신 커널은 특정 목록이 종료되지 않도록 더 작고 간단하게 보장할 수 있습니다. 텅 비게 된다.