zImage, rootfs란 무엇입니까?

zImage, rootfs란 무엇입니까?

저는 임베디드 리눅스를 처음 접했습니다. 우리는 poky를 사용하여 시스템을 구축합니다. 우리는 커널을 빌드하기 위해 bitbake linux-imx 명령을 사용합니다. 일부 파일 zImage, rootfs, uboot 및 sdcard 이미지를 생성합니다. SD 카드 이미지를 복사하고 맞춤형 보드에서 Linux를 실행하기만 하면 됩니다. 내 질문 rootfs와 zImage에는 실제로 무엇이 포함되어 있습니까?

답변1

각 파일의 기능을 이해하려면 MPU가 시작되는 방식을 이해해야 합니다.
귀하의 질문에서 제가 이해한 바에 따르면 귀하는 NXP(Freescale) i.MX 마이크로프로세서 제품군을 사용하고 계십니다. 여기에는 기본 시스템 설정(메모리 인터페이스, 클록 트리 등)을 수행하고, 부팅 미디어(구워진 OTP 비트 또는 GPIO 기반)를 검색하고, u-boot에서 부트 로더를 찾고, 데이터시트를 로드하는 작은 ROM 로더가 포함되어 있습니다. 그리고 부팅하세요. U-boot는 더 많은 인터페이스(예: 이더넷)를 초기화하고, 커널에 전달되어야 하는 매개변수(화면 설정, 콘솔, 네트워크 설정(NFS를 사용하는 경우))를 찾고, 커널을 DDR에 복사하고 모든 매개변수를 전달합니다. 커널은 모든 드라이버를 로드하고 모든 라이브러리, 애플리케이션 등이 포함된 rootfs를 검색합니다. 그런 다음 커널은 모든 시스템을 초기화하고 애플리케이션을 시작하는 init 스크립트를 시작합니다.

  1. u-boot는 ROM 부트로더 이후에 가장 먼저 부팅되는 것입니다. MPU가 운영 체제(예: 마이크로 컨트롤러) 없이 베어 메탈 코드를 실행하도록 하려면 이를 자체 코드로 바꿀 수 있습니다.
  2. zImage는 자동 추출 Linux 커널 이미지의 압축 버전입니다.
  3. rootfs는 홈 폴더를 포함한 모든 애플리케이션, 라이브러리 및 대부분의 모든 것을 포함하는 루트 파일 시스템입니다.
  4. sdcard 이미지는 위에서 언급한 모든 것이며 dd를 통해 카드에 복사할 수 있습니다. 복사한 후에는 커널과 장치 트리가 있는 FAT 파티션과 rootfs가 있는 EXT 파티션이 표시됩니다. u-boot는 FAT 영역 전에 파티션이 해제되어 있습니다(만일의 경우 i.MX6을 사용하고 있다면 0x80000입니다). 그것은 단지 당신의 삶을 더 쉽게 만들기 위해 존재합니다.

답변2

  • zImage컴파일된 커널의 실제 바이너리 이미지입니다. 이것이 부트로더가 로드하고 실행하려고 시도하는 것입니다. (내 생각에는 임베디드 Linux에서는 어떻게든 부트 섹터에 직접 기록한다고 믿습니다. 자세한 내용은 임베디드 Linux 배포 매뉴얼을 참조하세요.)
  • rootfs실제 루트 파일 시스템이 마운트될 수 있는 상태로 커널을 부팅하는 데 필요한 모든 것이 포함된 소위 INITial RamDisk(initrd라고도 함) 이미지입니다.
  • uboot임베디드 Linux에서 사용하는 부트 로더입니다. 기본적으로 BIOS(기본 입출력 시스템)에 부팅 방법을 알 수 있도록 zImage루트 파일 시스템을 찾을 수 있는 위치를 알려주는 옵션을 사용하여 실행 하도록 지시합니다.zImage

추측해야 한다면 더 이상 최종 이미지에 처음 세 파일을 수동으로 추가할 필요가 없더라도 실제 SD 카드 이미지를 생성하는 과정에서 이러한 파일이 모두 생성될 위험이 있습니다.

관련 정보