Debian Buster에서 ksmbd 빌드(+bpo)

Debian Buster에서 ksmbd 빌드(+bpo)

ksmbd 커널 모듈을 빌드하려고 합니다. 태그가 지정된 버전을 사용해 보았습니다.

$ wget https://github.com/namjaejeon/ksmbd/archive/refs/tags/3.2.1.tar.gz
$ tar xvfz 3.2.1.tar.gz
$ cd ksmbd-3.2.1
$ make
[...]
  CC [M]  /tmp/ksmbd-3.2.1/transport_tcp.o
/tmp/ksmbd-3.2.1/transport_tcp.c: In function ‘create_socket’:
/tmp/ksmbd-3.2.1/transport_tcp.c:484:10: error: incompatible type for argument 4 of ‘sock_setsockopt’
          (char __user *)iface->name,
          ^~~~~~~~~~~~~~~~~~~~~~~~~~

그리고 git/master의 버전:

$ git clone [email protected]:namjaejeon/ksmbd.git
$ cd ksmbd
$ make
make -C /lib/modules/5.10.0-0.bpo.7-amd64/build M=/tmp/ksmbd modules
make[1]: Entering directory '/usr/src/linux-headers-5.10.0-0.bpo.7-amd64'
make[3]: *** No rule to make target '/tmp/ksmbd/ksmbd_spnego_negtokeninit.asn1.c', needed by '/tmp/ksmbd/ksmbd_spnego_negtokeninit.asn1.o'.  Stop.
make[2]: *** [/usr/src/linux-headers-5.10.0-0.bpo.7-common/Makefile:1845: /tmp/ksmbd] Error 2
make[1]: *** [/usr/src/linux-headers-5.10.0-0.bpo.7-common/Makefile:185: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.10.0-0.bpo.7-amd64'
make: *** [Makefile:47: all] Error 2

이러한 *.asn1.c 파일을 생성하는 비결은 무엇입니까?

참고로:

$ cat Makefile 
[...]
$(obj)/asn1.o: $(obj)/ksmbd_spnego_negtokeninit.asn1.h $(obj)/ksmbd_spnego_negtokentarg.asn1.h

$(obj)/ksmbd_spnego_negtokeninit.asn1.o: $(obj)/ksmbd_spnego_negtokeninit.asn1.c $(obj)/ksmbd_spnego_negtokeninit.asn1.h
$(obj)/ksmbd_spnego_negtokentarg.asn1.o: $(obj)/ksmbd_spnego_negtokentarg.asn1.c $(obj)/ksmbd_spnego_negtokentarg.asn1.h

답변1

Fedora 및 RHEL에서는 패키지에 모든 관련 도구, ksmbd특히 .kernel-develasn1_compiler

데비안에는 이에 상응하는 패키지가 없으므로 빌드하는 유일한 방법은 ksmbd전체 커널 소스를 사용하는 것입니다. 쉬운 대안은 다음과 같습니다.커널 트리에서 빌드:

sudo apt install linux-source-5.10
cd $(mktemp -d)
tar xf /usr/src/linux-source-5.10.tar.xz
cd linux-source-5.10/fs
git clone https://github.com/namjaejeon/ksmbd

fs/Kconfig필요에 따라 변경한 fs/Makefile다음

cd ..
make allmodconfig
make fs/ksmbd/ksmbd.ko

관련 정보