BTF 생성을 건너뛰는 중 xxx. Ubuntu 21.04에서 vmlinux를 사용할 수 없기 때문에

BTF 생성을 건너뛰는 중 xxx. Ubuntu 21.04에서 vmlinux를 사용할 수 없기 때문에

커널 모듈 빌드로 인해 오류가 발생했습니다.

vmlinux를 사용할 수 없기 때문에 [내 모듈 이름] BTF 생성을 건너뜁니다.

이 작업은 커널 5.8.0.55*를 사용하는 이전 Ubuntu 20.10 버전에서 제대로 작동했습니다. 최근 Ubuntu 버전 21.04로 업데이트했는데 커널 모듈 빌드에서 이 오류가 발생했습니다.

답변1

이것은 우분투 22.04에서 저에게 효과적이었습니다. 더 이상 'BTF 생성을 건너뛰는 중...' 오류가 발생하지 않습니다.

apt install dwarves
cp /sys/kernel/btf/vmlinux /usr/lib/modules/`uname -r`/build/

물론, 먼저 vmlinux가 실제로 /sys/kernel/btf.

답변2

좋아요, 이것이 일종의 대답입니다.

이전에는 Ubuntu 21.10에서 가상 머신을 시작하는 데 실패했습니다. VMWare의 관점에서 볼 때 문제는 다음과 같습니다.

Could not open /dev/vmmon: No such file or directory.

커널 모듈 'vmmon'이 로드되었는지 확인하세요.

(그리고vmnet 또한)

이 명령은 sudo vmware-modconfig --console --install-all다음과 같은 오류를 발생시켰습니다. (그리고 여전히 발생합니다!)

Skipping BTF generation for /tmp/modconfig-9O1P2c/vmmon-only/vmmon.ko due to unavailability of vmlinux

해결책

  • 내 상황에서는 Windows 플랫폼에서 보안 부팅이 설치된 Ubuntu 노트북으로 가상 머신을 이동하고 있었습니다.

  • 위의 컴파일이 완벽하지는 않았지만 필요한 바이너리를 생성했지만 서명되지 않았기 때문에 Ubuntu 부팅 시 로드할 수 없습니다.

  • 그래서 VMNware의 시작을 방해한다고 생각한 BTF 오류 메시지를 받았지만 제 생각은 틀렸습니다.

  • 이 링크 https://github.com/mkubecek/vmware-host-modules/issues/87#issuecomment-800051833 바이너리에 서명하는 데 필요한 고문을 설명합니다.

    # generate a key
    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VMware/"
    # import to UEFI database
    sudo mokutil --import MOK.der     (generate a password need next step)
    # reboot system and import in UEFI BIOS
    # (use same password)
    sudo shutdown -r now
    
    # once rebooted need to sign the binaries
    sudo kmodsign sha256 ./MOK.priv ./MOK.der $(modinfo -n vmmon)
    
    sudo kmodsign sha256 ./MOK.priv ./MOK.der $(modinfo -n vmnet)
    # on reboot new signed binaries used
    sudo shutdown -r now
    # now good to start VMware and use any VM
    
  • UEFI BIOS에 대한 정보가 제공되고 드라이버 바이너리가 서명되면 VMware는 제대로 작동할 수 있으며 세상은 다시 저장됩니다.


그래서 컴파일 문제를 완전히 해결하지는 않았지만 이 오류 메시지를 VMware를 실행할 수 없는 것과 혼동한 것 같습니다. 이는 잘못된 것입니다.

답변3

그들은 'vmlinux.xz' 파일의 위치를 ​​변경했습니다.

노력하다ln -sf /usr/lib/modules/$(uname -r)/vmlinux.xz /boot/

좀 더 자세히 설명하는 reddit 게시물은 다음과 같습니다.

관련 정보