sys.memfd_use는 기본적으로 false로 설정되어 비활성화 상태로 둡니다.

sys.memfd_use는 기본적으로 false로 설정되어 비활성화 상태로 둡니다.

Debian 노트북(Storytel)에서 Android 애플리케이션을 실행하려고 합니다.

저장소에서 Waydroid를 설치했지만 초기화에 실패했습니다.

root@x1v5:/etc/apt# waydroid init
[23:15:43] ERROR: Binder node "vndbinder" for waydroid not found
[23:15:43] See also: <https://github.com/waydroid>
Run 'waydroid log' for details.

Waydroid 로그는 다음과 같습니다.

root@x1v5:/etc/apt# waydroid log
(021820) [23:09:48] % modprobe binder_linux devices="anbox-vndbinder,anbox-hwbinder"
(021820) [23:09:48] ERROR: Binder node "vndbinder" for waydroid not found
(021820) [23:09:48] See also: <https://github.com/waydroid>
(021820) [23:09:48] Traceback (most recent call last):
  File "/usr/lib/waydroid/tools/__init__.py", line 64, in main
    actions.init(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 110, in init
    setup_config(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 97, in setup_config
    helpers.drivers.setupBinderNodes(args)
  File "/usr/lib/waydroid/tools/helpers/drivers.py", line 141, in setupBinderNodes
    raise OSError('Binder node "vndbinder" for waydroid not found')
OSError: Binder node "vndbinder" for waydroid not found

(021826) [23:10:28] % modprobe binder_linux devices="anbox-vndbinder,anbox-hwbinder"
(021826) [23:10:28] ERROR: Binder node "vndbinder" for waydroid not found
(021826) [23:10:28] See also: <https://github.com/waydroid>
(021826) [23:10:28] Traceback (most recent call last):
  File "/usr/lib/waydroid/tools/__init__.py", line 64, in main
    actions.init(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 110, in init
    setup_config(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 97, in setup_config
    helpers.drivers.setupBinderNodes(args)
  File "/usr/lib/waydroid/tools/helpers/drivers.py", line 141, in setupBinderNodes
    raise OSError('Binder node "vndbinder" for waydroid not found')
OSError: Binder node "vndbinder" for waydroid not found

(021831) [23:10:48] % modprobe binder_linux devices="anbox-vndbinder,anbox-hwbinder"
(021831) [23:10:48] ERROR: Binder node "vndbinder" for waydroid not found
(021831) [23:10:48] See also: <https://github.com/waydroid>
(021831) [23:10:48] Traceback (most recent call last):
  File "/usr/lib/waydroid/tools/__init__.py", line 64, in main
    actions.init(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 110, in init
    setup_config(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 97, in setup_config
    helpers.drivers.setupBinderNodes(args)
  File "/usr/lib/waydroid/tools/helpers/drivers.py", line 141, in setupBinderNodes
    raise OSError('Binder node "vndbinder" for waydroid not found')
OSError: Binder node "vndbinder" for waydroid not found

(021932) [23:14:28] % tail -n 60 -F /var/lib/waydroid/waydroid.log
(021932) [23:14:28] *** output passed to waydroid stdout, not to this log ***
(021968) [23:15:43] % modprobe binder_linux devices="anbox-vndbinder,anbox-hwbinder"
(021968) [23:15:43] ERROR: Binder node "vndbinder" for waydroid not found
(021968) [23:15:43] See also: <https://github.com/waydroid>
(021968) [23:15:43] Traceback (most recent call last):
  File "/usr/lib/waydroid/tools/__init__.py", line 64, in main
    actions.init(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 110, in init
    setup_config(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 97, in setup_config
    helpers.drivers.setupBinderNodes(args)
  File "/usr/lib/waydroid/tools/helpers/drivers.py", line 141, in setupBinderNodes
    raise OSError('Binder node "vndbinder" for waydroid not found')
OSError: Binder node "vndbinder" for waydroid not found

(022124) [23:20:40] % tail -n 60 -F /var/lib/waydroid/waydroid.log
(022124) [23:20:40] *** output passed to waydroid stdout, not to this log ***

어떻게 작동하게 할 수 있나요?

답변1

바인더 드라이버를 활성화하려면 다음 패키지를 배열된 대로 설치하십시오.

libglibutil, libgbinder, python3-gbinder, Waydroid

이 패키지는 다음 위치에 있습니다.https://repo.waydro.id/erfan/bookworm/

확인하려면 다음 명령을 사용하십시오.

sudo modprobe 바인더_리눅스

치명적인 오류가 발생하면 실패하지만 다시 프롬프트가 나타나면 문제가 없습니다.

경고하다:

Debian 12 Bookworm의 Waydroid에는 바인더 드라이버뿐만 아니라 memfd 드라이버(ashmem 드라이버 대체)도 필요합니다.

설치된 최종 버전 12.0(실험 아님)에서 시작 폴더에 있는 "config-6.1.0-9-amd64"를 열고 memfd를 검색하세요. 결과:

CONFIG_MEMFD_CREATE=y(y는 예를 의미함)

Waydroid 17.1을 사용하려면 독점 libhoudini.so(libhoudini와 함께 제공되는 Waydroid 18.1과 반대)가 없으므로 두 이미지를 모두 다운로드하십시오.

"system.img" 및 "vendor.img".

이러한 이미지는 다음 위치에 있습니다.

https://sourceforge.net/projects/blissos-dev/files/waydroid/lineage/

Waydroid 17.1의 "system.img" 루트 디렉터리에서 "init.rc"를 열고 memfd를 검색하세요. 결과:

sys.memfd_use는 기본적으로 false로 설정되어 비활성화 상태로 둡니다.

신청 및 공급업체 절차가 확정될 때까지

ashmem fd의 IOCTL은 더 이상 존재하지 않습니다.

setprop sys.use_memfd 거짓

"false"를 "true"로 변경해야 합니다.

답변2

답변 댓글에 BE: "Lineagea 버전을 확인하는 방법은 무엇입니까?"

계보 버전을 확인하려면 압축을 풀거나 설치할 필요 없이 아카이브 프로그램을 사용하여 system.img를 엽니다. 이미지는 "var/lib/images" 또는 "usr/share/waydroid-extra"에 있습니다. 어쨌든, 현재 Waydroid는 두 가지 버전, 즉 Lineage 17.1(Android 10 기반)과 Lineage 18.1(Intel의 독점 Android 11 기반)을 기반으로 합니다.

물론 Lineage 19.1을 기반으로 한 Waydroid는 없습니다(Android 12를 기반으로 하며 배터리 수명을 절약하기 위해 사용하는 메모리 양에 제한이 있습니다). Android 12는 휴대폰과 소형 태블릿에서만 사용할 수 있습니다.

"CONFIG_MEMFD_CREATE=y"와 관련하여 Debian Bookworm 및 커널 5.18+가 설치된 일부 Linux 배포판에 포함되어 있습니다. Waydroid의 system.img(Android 10 또는 11)와 최신 Linux 버전 간의 충돌을 보여줍니다.

Waydroid 이미지는 압축되어 보호됩니다. (루트에서도 수정이 불가능합니다.)

https://sourceforge.net/projects/waydroid/files/images/

여기에서 수정할 수 있는 다양한 이미지를 다운로드할 수 있습니다.

https://sourceforge.net/projects/blissos-dev/files/waydroid/lineage/lineage-17.1

루트로 수정하려면 다음 단계를 따르세요.

  1. 압축을 풀고 "system.img" 및 "vendor.img"를 가져옵니다.

  2. Virtualbox에 운영 체제 "OS"를 격리된 환경으로 설치한 다음 etcher(https://github.com/balena-io/etcher) 게스트 운영 체제에서.

  3. 가상 USB 컨트롤러를 통해 이 게스트를 2GB 동적 가상 디스크(vdi, vhd, vmdk)와 연결합니다(정적인 경우 "init.rc"를 수정할 수 없음). Virtualbox 6.x에서는 USB 1.1이 사용됩니다(실제 USB가 아니기 때문에 느리지는 않습니다). 그렇지 않은 경우 Virtual USB에 대한 특허가 만료되거나 취소되었으며 다른 기능을 유지하면서 Virtualbox 확장이 필요하지 않으므로 USB 2 또는 3과 함께 Virtualbox 7.x를 사용하십시오. etcher를 사용하여 동적 가상 디스크에 "system.img"를 씁니다. 작성이 완료되면 nemo(마우스 오른쪽 버튼을 클릭하여 루트로 폴더를 열 수 있는 파일 관리자)를 사용하여 "init.rc"를 선택하고 마우스 오른쪽 버튼을 클릭하여 다음 줄을 검색하여 텍스트 편집기에서 엽니다. "setprop sys.use_memfd false ", 여기서 "false"는 "true"로 변경되어야 합니다. 루트 권한을 잊어버리면 파일이 저장되지 않거나 가짜로 저장됩니다(비워짐).

  4. 호스트 운영 체제에서 임의의 방법을 사용하여 동적 가상 디스크를 원시 이미지로 변환합니다(원시 이미지인 경우 새 확장자의 이름을 img로 변경).

이제 ashmem 드라이버 대신 Debian Bookworm의 memfd 드라이버를 지원하도록 "system.img"(재컴파일하지 않음)를 패치했습니다.

관련 정보