여기 슬라이드쇼에 제안된 대로 "snow"라고 불리는 Samsung XE303C12 Chromebook에서 Xen을 부팅하려고 합니다.
https://www.slideshare.net/xen_com_mgr/xpds16-porting-xen-on-arm-to-a-new-soc-julien-grall-arm
이 장치는 가상화 확장 기능이 있는 Samsung armv7 칩인 exynos5250 SOC 듀얼 코어 1.7GHz 및 2MB RAM으로 구동됩니다.
특히 최신 6.1.59 Linux LTS 커널의 베어메탈과 KVM이 포함된 최신 5.4.257 LTS 커널 모두에서 꽤 잘 실행되도록 만들었습니다. KVM이 커널 버전을 지원하므로 이전 LTS 커널 버전을 사용하여 KVM을 테스트했습니다. ARM v7의 5.7이 Linux에서 제거되었습니다.
따라서 우리는 KVM과 함께 사용할 수 있기 때문에 하이퍼바이저 모드가 활성화되어 있음을 알고 있습니다.
Xen의 경우 최신 Debian 버전 Xen 4.17을 사용하여 Debian armhf 아키텍처를 구현합니다.
(XEN) Xen version 4.17.2-pre (Debian 4.17.1+2-gb773c48e36-1)
(pkg-xen-devel@xxxxxxxxxxxxxxxxxxxxxxx)
(arm-linux-gnueabihf-gcc (Debian 12.2.0-14) 12.2.0) debug=n Thu May 18 19:26:30 UTC 2023
Linux 커널은 커널 위에 Xen 구성 커널 옵션(CONFIG_XEN_DOM0 등)을 추가하는 맞춤형 빌드로, 베어메탈의 동일한 Chromebook 모델에서 잘 실행됩니다.
우리의 부팅 방법은 Xen wiki에 따라 u-boot fdt 명령을 사용하여 /chosen 노드를 추가하는 Linux 커널의 변경되지 않은 장치 트리에 dom0을 추가한 후 Xen 하이퍼바이저를 u-boot 부팅하고 장치 트리를 로드하는 것입니다. 그리고 거기에서 링크된 페이지들.
또한 장치 트리/선택된 노드를 사용하여 initrd.img를 추가하고 로드하려고 시도했지만 테스트에서는 아무런 차이가 없었습니다. 우리는 실제로 KVM 부팅에 사용하는 것과 동일한 u 버전을 사용하는 Xen에서 Linux LTS 커널 버전 6.1.59를 dom0으로 사용하고 있지만 한 가지 큰 문제가 있습니다.
우리가 보고 있는 문제는 Xen을 사용하여 6.1.59 커널 버전을 dom0으로 부팅할 때 화면이 완전히 검은색이고 시스템에 액세스할 수 있는 유일한 방법은 SSH를 통해 원격으로 접근하는 것입니다.
로그에는 SSH를 통해 원격으로 액세스할 수 있는 Wi-Fi 카드와 연결되면 USB 광 마우스가 켜지므로 USB도 작동하는 등 대부분의 다른 작업이 작동하고 있음을 나타냅니다.
분명히 디스크도 작동하고 있습니다. SD 카드 슬롯에서 부팅할 수 있도록 Chrome OS 개발자 모드 옵션을 켜서 Chromebook이 기기의 SD 카드 슬롯에서 부팅되도록 구성합니다.
미스터리는 Xen에서 dom0으로 부팅하는 대신 베어 메탈에서 정확히 동일한 6.1.59 커널을 부팅할 때 X.org Windows 시스템 상호 작용을 통해 수행할 수 있는 화면에 대한 전체 액세스 권한으로 부팅된다는 것입니다. 그러나 Xen을 사용하여 dom0으로 부팅하면 화면이 완전히 검게 변하고 시스템에 대한 유일한 액세스는 SSH를 통한 네트워크를 통해서입니다.
또한 하이퍼바이저 모드에서 KVM을 사용하여 5.4.257 커널을 부팅하면 화면이 작동하고 X.org Windows 시스템을 통해 시스템과 상호 작용할 수 있습니다.
로그 파일을 탐색하면 다음 오류가 표시됩니다. Xen(또는 베어 메탈) 사용:
devuan-bunsen kernel: [drm] Exynos DRM: using 14400000.fimd device for DMA mapping operations
devuan-bunsen kernel: exynos-drm exynos-drm: bound 14400000.fimd (ops 0xc0d96354)
devuan-bunsen kernel: exynos-drm exynos-drm: bound 14450000.mixer (ops 0xc0d97554)
devuan-bunsen kernel: exynos-drm exynos-drm: bound 145b0000.dp-controller (ops 0xc0d97278)
devuan-bunsen kernel: exynos-drm exynos-drm: bound 14530000.hdmi (ops 0xc0d97bd0)
...
devuan-bunsen kernel: Console: switching to colour frame buffer device 170x48
devuan-bunsen kernel: exynos-drm exynos-drm: [drm] fb0: exynosdrmfb frame buffer device
devuan-bunsen kernel: [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0
이 경우 커널은 exynos-drm 커널을 사용하여 fb0 장치를 부팅할 수 있습니다.
하지만 Xen의 경우 exynos-drm에서 다음 오류가 발생합니다.
devuan-bunsen kernel: [drm] Exynos DRM: using 14400000.fimd device for DMA mapping operations
devuan-bunsen kernel: exynos-drm exynos-drm: bound 14400000.fimd (ops 0xc0d96354)
devuan-bunsen kernel: exynos-mixer 14450000.mixer: [drm:exynos_drm_register_dma] *ERROR* Device 14450000.mixer lacks support for IOMMU
devuan-bunsen kernel: exynos-drm exynos-drm: failed to bind 14450000.mixer (ops 0xc0d97554): -22
devuan-bunsen kernel: exynos-drm exynos-drm: adev bind failed: -22
devuan-bunsen kernel: exynos-dp: probe of 145b0000.dp-controller failed with error -22
Xen ML에 대한 게시물을 시작했지만 아직 실제로 해결책을 찾지 못했습니다.
https://lists.xenproject.org/archives/html/xen-users/2023-10/msg00034.html
커널 구성 파일에서 어떻게든 EXYNOS_IOMMU 매개변수를 조정해야 하거나 조정할 수 있는 것 같습니다... 아니면?