Google Android 에뮬레이터에는 execheap
권한이 필요합니다. 그렇지 않으면 SElinux가 강제 모드에 있을 때 세그폴트가 발생합니다. Android 에뮬레이터에 익숙하지 않은 분들을 위해 말씀드리자면 이 에뮬레이터는 qemu의 분기된 버전을 사용합니다.
두 가지 간단한 솔루션은
setenforce 0
setsebool -P allow_execheap 1
분명히 이는 보안 관점에서 이상적인 것과는 거리가 멀습니다. 또한 에뮬레이터에 execheap이 필요하지 않도록 패치를 얻는 데 시간이 오래 걸릴 수 있기를 바랍니다.
그러나 내 감사 로그에서 문제의 프로세스는 실제로 qemu-system-x86_64-headless
"원본" 프로세스가 아닌 번들 바이너리임을 확인했습니다. 따라서 라벨이 다릅니다.
semanage fcontext --list | grep qemu-kvm
/usr/bin/qemu-kvm regular file system_u:object_r:qemu_exec_t:s0
ls -laZ /root/android_sdk/emulator/qemu/linux-x86_64
-rwxr-xr-x. 1 root root unconfined_u:object_r:user_home_t:s0 31174856 Aug 1 16:32 qemu-system-x86_64-headless
다른 보고서에서는 execheap
GPU 드라이버에 문제가 있다고 지적합니다. 내가 실행 중인 컴퓨터에는 GPU나 iGPU가 없습니다. 사용된 Vulkan 장치는 Swiftshader입니다.
불행히도 저는 SElinux를 처음 접했습니다.
- 시뮬레이터에 대한 사용자 지정 정책을 작성해야 합니까? 어떻게? 위 정책으로 어떻게 실행하나요?
- 실행 파일에 태그를 지정하는 것으로 충분합니까? 어떻게 해야 하나요?
- execheap을 전역적으로 활성화하거나 SElinux를 허용 모드로 설정하지 않고 어떻게 작동하게 할 수 있습니까?