1.
솔라플레어를 거의 사용하지 않습니다. 고객에게 권유하지 않습니다. 다만 고객이 선택하여 요청하면 설치를 할 때도 있습니다. 최근 두 번 솔라플레어를 CentOS와 Rocky Linux에 설치하였습니다. Rocky Linux에 설치할 때 발생하지 않았던 증상을 Centos에 설치할 때 보아서 기억을 위해 남깁니다.
ZeroAOS서버에 Centos 8.4를 Minimal Install로 설치를 하였습니다.
보통 Development Tools 그룹을 같이 설치하는데 아마도 선택하지 않은 듯 합니다. 보통 개별적으로 필요한 패키지를 별도로 설치하기 때문입니다. 그리고 Onload User Guides & Packages에서 최신 onload 버전을 다운을 받아서 설치하였습니다. 현재 최신버전은 SF-109585-LS-42-OpenOnload-Release-Package.zip 입니다.
압축을 푼 후 onload-8.1.1.17/scripts로 이동합니다. 여기서 사용하는 명령어는 onload_install입니다. 도움말입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
./onload_install [options] options: --newkernel <ver> - Build and install drivers for new kernel --kernelver <ver> - Specify kernel version for drivers --nobuild - Do not (re)compile --require32 - Fail if 32-bit binaries are not installed --setuid - Preload libraries are set-uid and set-gid --nosetuid - Preload libraries are not set-uid/gid --affinity - Include sfcaffinity --noaffinity - Do not include sfcaffinity --debug - Build debug binaries --no-debug-info - Omit debug info from binaries --strict - Compiler warnings are errors --require-optional-targets - Require optional targets --userfiles - Only install user-level components --kernelfiles - Only install kernel driver components --modprobe - Only install modprobe configuration --force - Force install if already installed --allow-unsupported-cpu - Force install even when CPU is too old --verbose - Verbose logging of commands --test - Do not install; just print commands --listfiles - Do not install; just list installed files --filter-engine - Specify location of filter engine directory by default - /opt/onload_filter_engine --no-filter-engine - Don't include filter engine support even if it's present in the system --build-profile - Specify a build profile --no-initramfs - Do not update initramfs --no-tcpdirect - Do not install TCPDirect libraries |
별도의 옵션없이 명령어를 실행합니다. 모든 것이 순조롭게 이루어지기를 기대하였는데 의외의 에러가 발생하였습니다.
kernel_compat.sh: Kernel build tree is unable to build modules
2.
구글링을 하였습니다.
Problems trying to build and install Onload on Linux 5.4.200-1.el7.elrepo.x86_64을 보니까 아래와 같이 원인을 설명하고 있습니다.
The important error here is this one:
kernel_compat.sh: Kernel build tree is unable to build modules
This means that you’re missing one of the vital dependencies in order to be able to build kernel modules – most likely either the kernel-devel or the kernel-headers package.
Appendix C of the Onload User Guide has the full list of needed packages.
Appendix C에 있는 패키지를 설치하지 않았다고 하네요. Build Dependencies에 나온 패키지를 하나씩 설치하였습니다. 다시 컴파일을 했지만 오류가 발생합니다.
그래서 단순무식 과격한 방법을 선택하였습니다. Development Tools 그룹의 모든 패키지를 설치하는 것입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
[root@localhost ium]# dnf groupinfo "Development Tools" CentOS Linux 8 - AppStream 9.6 kB/s | 4.3 kB 00:00 CentOS Linux 8 - BaseOS 8.6 kB/s | 3.9 kB 00:00 CentOS Linux 8 - Extras 3.4 kB/s | 1.5 kB 00:00 Extra Packages for Enterprise Linux 8 - x86_64 12 kB/s | 7.7 kB 00:00 Extra Packages for Enterprise Linux 8 - x86_64 9.7 MB/s | 16 MB 00:01 Group: Development Tools Description: A basic development environment. Mandatory Packages: autoconf automake binutils bison flex gcc gcc-c++ gdb glibc-devel libtool make pkgconf pkgconf-m4 pkgconf-pkg-config redhat-rpm-config rpm-build rpm-sign strace Default Packages: asciidoc byacc ctags diffstat elfutils-libelf-devel git intltool jna ltrace patchutils perl-Fedora-VSP perl-Sys-Syslog perl-generators pesign source-highlight systemtap valgrind valgrind-devel Optional Packages: cmake expect rpmdevtools rpmlint |
패키지목록을 보니까 빠진 것도 있는 듯 합니다. 이후 설치명령어를 실행하니까 오류없이 빌드가 이루어졌습니다.
libVMA와 비교하면 불친절한 패키지입니다. libvma를 빌드할 때 어떤 패키지가 빠졌는데 오류메시지를 통해 보여줍니다. 굳이 모든 패키지를 설치할 필요없이 빌드할 때 필요한 패키지만 설치하면 충분합니다.