QEMU를 사용하여 ARM 시스템 이미지를 빌드하고 실행하시나요?

QEMU를 사용하여 ARM 시스템 이미지를 빌드하고 실행하시나요?

armhfQEMU와 함께 실행할 수 있는 Debian 기반 ARM( armeleven) 에 대한 전체 시스템 이미지를 설정하려고 합니다 . aarch64불행하게도 온라인에서 찾은 모든 예제는 initrd커널을 전달하여(또는 일부 모듈이 필요한 경우) 이미지를 부팅합니다.

qemu-system-amd64그러나 저는 설치를 시작하기 위해 디스크 이미지와 CD-ROM 이미지만 사용하여 시스템을 부팅하고 싶습니다 .

-machine기본값이 없다는 것을 이해할 수 있지만 -cpu온라인에서 다음 작업을 수행하는 방법에 대한 단서를 찾을 수 없습니다.

#> wget \
   http://cdimage.debian.org/.../armhf/iso-cd/debian-testing-armhf-netinst.iso
...
#> qemu-img create -f qcow2 debian-armhf.qcow 20G
...
#> qemu-system-arm -machine vexpress-a9 -cpu cortex-a9     \
                   -hda debian-armhf.qcow                  \
                   -cdrom debian-testing-amd64-netinst.iso \
                   -boot d
...
#> qemu-system-arm -machine vexpress-a9 -cpu cortex-a9     \
                   -hda debian-armhf.qcow                  \
                   -net nic -net user,hostfwd=tcp::2222-:22
...

그래서 저는 이런 일이 가능한지 정말 알고 싶습니다. 그렇다면 어떻게 해야 할까요? 그렇지 않다면 왜 그렇습니까?

답변1

이것은 훌륭한 질문입니다. 저는 얼마 전에 직접 파헤쳐보기로 결정했습니다. 저를 제외하고는 MIPS/MIP64를 사용하고 있었습니다.

이를 어렵게 만드는 몇 가지 문제가 있습니다.

Linux 호스트를 부팅할 때 커널은 어떤 하드웨어를 사용하고 있는지 알아야 합니다. 일부 아키텍처(예: amd64)의 경우 펌웨어 검색은 "고급 구성 및 전원 인터페이스"(ACPI). 다른 경우에는 확장 가능한 펌웨어 인터페이스(EFI) 또는 아주 오래된 솔루션인 ATAGS도 있습니다. 대부분의 최신 임베디드 시스템에서는 ATAGS의 사용이 "장치 트리 blob"이라는 메커니즘으로 대체되었습니다(디지털 텔레비전 방송). 더 나은 작업을 수행할 수 있는 일련의 유용한 사용자차이점을 설명해보세요내가 할 수 있는 것보다.

이 모든 것의 목적은 하드웨어 구성에 관해 커널에 메시지를 표시하는 데 도움이 되며 종종 부트로더와 함께 작동합니다. 귀하의 경우 ARM 리틀 엔디안( armel), ARM 하드 부동 소수점( armhf) 및 ARM 64비트( aarch64) 중에서 선택하는 것이 컴파일 패키지, 커널 등의 선택에 영향을 미치기 때문에 중요한 첫 번째 결정입니다. 시뮬레이션의 "명령어 세트 아키텍처"(ISA).

여러분이 빈 디스크와 CD 이미지의 단순성을 원한다는 것을 알고 있지만 이것이 Raspberry Pi*와 같은 시스템에 이러한 형태의 "설치 프로그램"이 없는 근본적인 이유입니다. Raspbian 이미지를 다운로드하면 해당 이미지에는 부트로더(das uBoot), 해당 하드웨어에 대한 장치 트리 Blob, 패키지 저장소를 구성할 때 사용할 수 있는 기본 패키지 세트를 포함하는 구조화된 파티션 세트가 포함됩니다.

또 다른 흥미로운 상식을 소개합니다. Linux를 "설치"할 때 ISO 이미지가 수행하는 작업을 살펴본 적이 있습니까?

Anaconda 기반 설치 프로그램(Fedora, RHEL, CentOS 등)을 예로 들어 보겠습니다.

설치를 시작하면 Python 유틸리티 실행을 자동으로 시작하는 최소 라이브 시스템이 시작됩니다.파이썬. 그런 다음 Anaconda는 사용자에게 일련의 질문에 답하라는 메시지를 표시하고 도메인별 언어로 구성 파일을 채운 다음 chroot를 생성하고 chroot 내에서 일련의 패키지 설치를 수행합니다.

그것은... 어떤 면에서는 Raspbian 이미지를 사용하는 것과 같습니다.

그렇다면 이것은 무엇을 의미합니까?

글쎄, 먼저 진행하려는 방법에 따라 몇 가지 답변을 추천하겠습니다.

RPi를 에뮬레이션하는 것으로 충분하다면 다음을 권장합니다. QEMU를 사용하여 Raspberry Pi 에뮬레이션

보다 "클라우드" 기반 시스템을 시뮬레이션하려는 경우 George Hawkins는 다음을 유지합니다.하이라이트 및 몇 가지 유용한 지침.

정말 처음부터 시작하고 싶다면 데비안 사용자 Aurel32가 수년 동안 세트를 유지해 왔습니다.기본 이미지 시작 준비 완료또한비슷한 프로세스에 대한 훌륭한 기사가 블로그에 있습니다..

관련 정보