나는 그들이 두 개의 다른 실체라는 것을 알고 있습니다. Rootfs는 데이터가 저장되고 액세스되는 방법을 설명하는 파일 시스템입니다. 커널은 실행되는 실제 코드입니다.
그런데 커널 코드는 Rootfs에 저장되어 있지 않나요?
그렇다면 왜 플래시 메모리의 다른 파티션에 저장됩니까? 나는 커널용 파티션과 Rootfs용 파티션 등 임베디드 시스템의 emmc 장치에 대한 파티션 레이아웃을 항상 봅니다. 이것은 나를 혼란스럽게 한다.
답변1
이전 부트 로더는 원시 파일 시스템만 마운트할 수 있으므로 커널은 부팅 상태로 유지되고 운영 체제는 루트 상태로 유지됩니다. 전체 파일 시스템으로 인한 특정 유형의 오류를 방지하는 한 가지 방법은 각 항목에 자체 파일 시스템을 제공하는 것입니다. 다중 파티션의 또 다른 편리함은 개별적으로 쉽게 백업하고 복원할 수 있다는 것입니다. 일부 파일 시스템은 ZFS, BTRFS, LVM입니까? 기본적으로 Linux 커널을 사용하지 않는 부트로더는 지원되지 않습니다.
이러한 아이디어의 문제점은 부팅 볼륨이 가득 차고 사용 가능한 다른 공간이 많으면 커널 업데이트가 실패할 수 있다는 것입니다. 빠른 증분 스냅샷은 고급 파일 시스템에서만 사용할 수 있습니다.
따라서 어떤 절충안이 만들어지는지 결정하는 것은 운영 체제 배포에 달려 있습니다.
파일 시스템과 완전히 독립적으로 커널을 메모리에 매핑한 다음 하드웨어 및/또는 소프트웨어를 사용하여 해당 메모리에 대한 액세스를 제한하여 권한을 적용하고 권한 에스컬레이션을 완화하는 기능(보안 등)이 있습니다. 바라보다사용자 모드와 커널 모드.
답변2
커널은 RAM에 상주하는 실행 가능한 코드입니다. rootfs는 시스템의 기본 파일 시스템(원래 ramfs 또는 tmpfs)이지만 다음과 같은 특정 유형의 파일 시스템(예: ramfs, ext2/3/4, jffs2, ubifs)의 파일 모음을 참조하는 데 더 일반적으로 사용됩니다. 기본 초기화 및 사용자 공간 프로그램 구성을 통해 둘 다 Linux 시스템을 부팅하는 데 필요합니다.
누군가 비슷한 질문을 한 자매 커뮤니티에서 가져왔습니다. 딸깍 하는 소리여기더 많은 정보를 알고 싶습니다.