임베디드 Linux 플랫폼용 커널 이미지 빌드

임베디드 Linux 플랫폼용 커널 이미지 빌드

Ingenic SoC 기반 플랫폼용 Linux 이미지 컴파일에 관심이 있습니다. 공급업체는 대상 SoC용 Linux 커널을 컴파일하는 방법에 대해 모호한 지침을 제공합니다. 따라서 공급업체 지침과 온라인 검색에 따르면 이 플랫폼에 대한 임베디드 Linux 이미지를 얻으려면 다음이 필요합니다.

  1. 컴파일 도구 체인(Mips 기반 아키텍처용 mipsel)
  2. 툴체인을 사용하여 특정 드라이버/BSP를 사용하여 Linux 커널 컴파일
  3. 루트 파일 시스템 컴파일 - Busybox가 권장함(이유는 확실하지 않음)
  4. 대상 SoC에 대해 uBoot 컴파일
  5. 대상 특정 파티션 테이블을 사용하는 파티션 스토리지(예: sd)
  6. 전체 이미지를 SD로 플래시

그렇다면 문제는 왜 루트 파일 시스템이 커널 이미지와 분리되어 있느냐는 것입니다. 파일 시스템 생성에서 busybox는 어떤 역할을 합니까? 또한 Linux 이미지가 루트 파일 시스템 없이 컴파일된 경우 드라이버가 루트 파일 시스템의 /sys 디렉터리에 있도록 두 이미지를 어떻게 병합합니까?

답변1

Embedded Linux 구축은 매우 광범위하면서도 난해한 주제이며, EE.SE 또는 Unix/Linux.SE 사이트에 적합한지 확실하지 않습니다.

귀하의 문제를 해결할 수 있는 일부 책은 여기에서 찾을 수 있습니다.

처음부터 리눅스(LFS)
http://www.linuxfromscratch.org/
"인기 있는 Linux-From-Scratch-HOWTO에서 파생된 이 책은 필요한 소프트웨어 소스만을 사용하여 설치된 Linux 배포판에서 처음부터 자신만의 Linux 시스템을 만드는 과정을 설명합니다."

이 책은 Linux 문서화 프로젝트의 일부입니다.
https://www.tldp.org/guides.html

EE.SE에 대한 이전 질문에서 임베디드 시스템에 대해 스스로 배우고 있는 것으로 보이므로 이 내용을 읽어 보는 것이 좋습니다. Linux from Scratch는 동일한 PC용으로 PC에 Linux 배포판을 구축한다고 가정합니다. 이는 PC가 아닌 다른 시스템에 대한 크로스 컴파일 문제와는 별개입니다.

기타 권장 읽기 자료(위의 TLDP 가이드 링크에도 있음):

  • Bash 초보자 가이드
  • Linux 소개 - 실용 가이드
  • GNU/Linux 명령줄 도구 요약
  • 고급 Bash 스크립팅 가이드
  • Linux 시스템 관리자 안내서
  • 장치 드라이버 작성을 시작하는 경우 Linux 커널 모듈 프로그래밍 가이드
  • 사용자 정의 Linux: 마이그레이션 가이드 - LinuxPPC를 사용자 정의 SBC로 마이그레이션

또한 Embedded Linux Wiki를 확인해 보세요.https://elinux.org/Main_Page

기존 지원이 많은 Raspberry Pi 또는 Beaglebone과 같이 보다 일반적으로 지원되는 임베디드 대상 시스템으로 시작하는 것을 고려할 수 있습니다. 먼저 PC에 최신 배포판을 구축한 다음 임베디드 타겟 시스템에서 실행할 최신 배포판을 구축하면 프로젝트가 성공할 가능성이 더 높습니다. 본질적으로 동일한 질문이지만 더 많은 사람들이 Raspian(Debian Stretch) 구축에 대한 구체적인 질문에 도움을 줄 수 있고 Ingeninc SoC에 대해 구체적으로 추측하려는 사람은 줄어들 것입니다. 예를 들어 RaspberryPi.SE에서 다음 질문을 참조하세요.https://raspberrypi.stackexchange.com/questions/3196/building-kernel-image-img-include-ramdisk

루트 파일 시스템이 커널 이미지와 분리된 이유는 무엇입니까?

리눅스는 이런 식으로 설계되었습니다. 커널 이미지는 커널 공간에서(부팅 시 특수 권한을 사용하여) 실행되는 실행 코드이며 루트 파일 시스템은 해당 데이터입니다. 부팅 미디어가 특정 대상 시스템용으로 구축되지 않은 경우 두 미디어를 결합하는 것은 의미가 없습니다.

파일 시스템 생성에서 busybox는 어떤 역할을 합니까?

전혀. Busybox는 가장 일반적으로 사용되는 여러 Unix 유틸리티를 셸 실행 파일로 결합합니다.

많은 수의 작은 독립 실행형 유틸리티를 선호하는 전통적인 Unix와 달리 Busybox 접근 방식은 가장 일반적으로 사용되는 몇 가지 유틸리티를 쉘 내장에 번들로 제공합니다. Busybox는 매우 작고 편리한 패키지에 많은 유용한 유틸리티를 제공하므로 대상 시스템의 루트 파일 시스템에 포함하기에 좋은 선택입니다.

"Linux from Scratch" 가이드는 Busybox가 아닌 전통적인 접근 방식을 따릅니다. 대상 시스템에 Busybox가 포함되어 있는지 걱정하지 말고 먼저 프로세스를 진행하는 것이 좋습니다.

Linux 이미지가 루트 파일 시스템 없이 컴파일된 경우 드라이버가 루트 파일 시스템의 /sys 디렉터리에 있도록 두 이미지를 어떻게 병합할 수 있습니까?

장치 드라이버는 커널 이미지의 일부로 구축되거나 부팅 프로세스 중에 선택적으로 로드할 수 있는 별도의 로드 가능한 커널 모듈입니다.

"파일"이라는 용어는 일반적으로 하드 드라이브나 USB 스틱과 같은 비휘발성 저장 장치에 저장된 비트 스트림을 의미하지만, "파일"은 이름이나 일부 정보가 있는 임시 데이터 비트 문자열을 의미할 수도 있습니다. 다른 유형. 다루다. /proc, /sys 및 /dev에는 커널에 의해 생성되고 루트 파일 시스템의 빈 /proc /sys 및 /dev 자리 표시자 위에 설치되는 특수하고 동적으로 생성된 파일이 있습니다.

관련 정보