- Haiku arm64 포트가 최신 야간 빌드에서 데스크톱까지 부팅되며, hrev59669 이미지는 QEMU에서 동작함
- QEMU 실행에는 Tianocore EFI와 CPU 선택의 호환성이 중요하며, Debian에서는 --cpu cortex-a76 지정으로 해결됨
- 작은 수정으로 UTM 부팅도 가능해졌지만, 마우스 움직임이 느리고 끊겨 실제 사용성은 아직 낮음
- arm64 야간 이미지는 unbootstrapped 상태라 git, gcc, 개발 패키지가 없고, OpenSSL 부재로 패키지 설치도 막힐 수 있음
- 호스트와 게스트 간 파일 전달은 FAT32 디스크 이미지로 우회 가능하며, x86_64나 Linux에서 .hpkg 크로스 빌드 가능성이 거론됨
Haiku arm64 부팅 현황
- Haiku arm64 포트가 최신 야간 빌드에서 데스크톱까지 부팅되는 상태에 도달함
- download.haiku-os.org의 최신 빌드 hrev59669가 QEMU에서 동작함
- 작은 수정으로 Haiku를 UTM에서도 부팅할 수 있지만, 마우스 움직임이 느리고 끊겨 사용성은 아직 낮음
QEMU 실행 구성
- QEMU에서 arm64 이미지를 실행할 때 동작한 명령은 다음과 같음
qemu-system-arm64 -m 512M -bios /path/to/the/arm64/QEMU_EFI.fd -device ramfb -M virt --cpu cortex-a76 -device usb-ehci -device usb-kbd -device usb-tablet -device usb-storage,drive=dska -drive id=dska,file=haiku-arm64-mmc.image,if=none
- Debian의 QEMU가 기본으로 선택하는 CPU는 함께 제공되는 EFI 구현과 호환되지 않는 것으로 보였고, --cpu cortex-a76 지정으로 해결됨
- 키보드와 태블릿 입력은 USB 장치를 사용하며, usb-tablet은 마우스 캡처 없이 입력을 다룰 수 있게 해줌
- ramfb는 arm64에서 비교적 안전한 프레임버퍼 선택지로 쓰임
- Debian에서 Tianocore 바이너리 경로는 필요한 패키지를 설치했을 때 /usr/share/qemu-efi-aarch64/QEMU_EFI.fd임
- 다른 시스템에서는 EFI 이미지를 온라인에서 찾거나 Debian 패키지에서 추출할 수 있음
개발 환경과 패키지 상태
- 현재 arm64 야간 이미지는 “bootstrap image”가 아니라 unbootstrapped 이미지이며, 초기 패키지 세트를 빌드한 방식이 다름
- 현재 야간 이미지에는 git, gcc, 개발 패키지가 포함되어 있지 않음
- haikuports의 릴리스 아카이브를 내려받아 설정하면 패키지 빌드에 필요한 기본 패키지 세트를 얻을 수 있을 것으로 보임
- pkgman으로 일부 패키지를 설치할 수도 있지만, 현재 haikuports builder가 없어 패키지 세트는 매우 제한적일 수 있음
- pkgman이 어떤 패키지도 설치하지 못하고 “operation not supported” 오류를 낸 보고가 있음
- 이미지가 OpenSSL 지원 없이 빌드된 것이 원인일 수 있으며, 이 경우 유용한 작업을 하기가 어려움
- depot에 패키지가 있다면 링크를 가져와 wget으로 내려받는 우회가 가능하며, riscv64 이미지에서 haikuporter와 haikuports를 설정할 때도 비슷한 우회가 필요했음
호스트와 게스트 간 파일 전달
- depot 서버에서 arm64용 사전 빌드 개발 패키지를 찾지 못한 상태임
- QEMU 호스트에서 ARM64 Haiku 게스트로 파일을 가져오기 위해 FAT32 디스크 이미지를 사용할 수 있음
- MacOS Disk Utility로 FAT32 디스크 이미지를 만들고, Mac에서 마운트해 파일을 넣은 뒤 QEMU 게스트에 연결하는 방식임
- 공유 디스크를 붙이는 QEMU 실행 예시는 다음과 같음
qemu-system-aarch64 \
-M virt \
-cpu max \
-m 2G \
-smp 4 \
-bios /opt/homebrew/share/qemu/edk2-aarch64-code.fd \
-device qemu-xhci,id=usb \
-drive file=haiku-master-hrev59671-arm64-mmc.image,if=none,id=drv0,format=raw \
-device usb-storage,bus=usb.0,drive=drv0 \
-device usb-kbd,bus=usb.0 \
-device usb-tablet,bus=usb.0 \
-device ramfb \
-display cocoa,zoom-to-fit=on \
-device qemu-xhci,id=usb2 \
-drive file=../shared.img,format=raw,if=none,id=usb-shared \
-device usb-storage,bus=usb2.0,drive=usb-shared \
-serial stdio
- x86_64 Haiku 또는 Linux에서 ARM64 Haiku용 .hpkg를 크로스 빌드할 수 있어야 한다는 가능성이 제기됨