From c6afab65efa4f58804d4d630da8cd2d853180abd Mon Sep 17 00:00:00 2001 From: tsukumi Date: Fri, 30 Jun 2023 04:38:52 +0000 Subject: [PATCH] =?UTF-8?q?debian:=20dkms=20mkdeb=20=E3=81=A7=E7=94=9F?= =?UTF-8?q?=E6=88=90=E3=81=97=E3=81=9F=20Debian=20=E3=83=91=E3=83=83?= =?UTF-8?q?=E3=82=B1=E3=83=BC=E3=82=B8=E3=81=8B=E3=82=89=E3=83=89=E3=83=A9?= =?UTF-8?q?=E3=82=A4=E3=83=90=E3=82=92=E3=82=A4=E3=83=B3=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=83=BC=E3=83=AB=E3=81=99=E3=82=8B=E9=9A=9B=E3=81=AE=E5=95=8F?= =?UTF-8?q?=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3=20=E5=90=8C=E6=99=82?= =?UTF-8?q?=E3=81=AB=20Debian=20=E3=83=91=E3=83=83=E3=82=B1=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=81=AB=E3=83=95=E3=82=A1=E3=83=BC=E3=83=A0=E3=82=A6?= =?UTF-8?q?=E3=82=A7=E3=82=A2=E3=82=92=E5=90=AB=E3=82=81=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F=20ref:=20https://github.co?= =?UTF-8?q?m/dell/dkms/issues/53#issuecomment-1591788158?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- README.md | 56 ++++++++++++++---------- build_deb.sh | 21 +-------- debian/control | 7 --- dkms.conf | 4 +- dkms/post_install | 3 -- dkms/post_install.sh | 11 +++++ dkms/post_remove | 4 -- dkms/post_remove.sh | 12 +++++ etc/it930x-firmware.bin | Bin 0 -> 2169 bytes px4_drv-dkms-mkdeb/Makefile | 29 ++++++++++++ px4_drv-dkms-mkdeb/debian/README.Debian | 5 +++ px4_drv-dkms-mkdeb/debian/changelog | 6 +++ px4_drv-dkms-mkdeb/debian/compat | 1 + px4_drv-dkms-mkdeb/debian/control | 12 +++++ px4_drv-dkms-mkdeb/debian/copyright | 2 + px4_drv-dkms-mkdeb/debian/dirs | 1 + px4_drv-dkms-mkdeb/debian/postinst | 49 +++++++++++++++++++++ px4_drv-dkms-mkdeb/debian/prerm | 28 ++++++++++++ px4_drv-dkms-mkdeb/debian/rules | 54 +++++++++++++++++++++++ 20 files changed, 249 insertions(+), 58 deletions(-) delete mode 100644 debian/control delete mode 100755 dkms/post_install create mode 100755 dkms/post_install.sh delete mode 100755 dkms/post_remove create mode 100755 dkms/post_remove.sh create mode 100644 etc/it930x-firmware.bin create mode 100644 px4_drv-dkms-mkdeb/Makefile create mode 100644 px4_drv-dkms-mkdeb/debian/README.Debian create mode 100644 px4_drv-dkms-mkdeb/debian/changelog create mode 100644 px4_drv-dkms-mkdeb/debian/compat create mode 100644 px4_drv-dkms-mkdeb/debian/control create mode 100644 px4_drv-dkms-mkdeb/debian/copyright create mode 100644 px4_drv-dkms-mkdeb/debian/dirs create mode 100755 px4_drv-dkms-mkdeb/debian/postinst create mode 100755 px4_drv-dkms-mkdeb/debian/prerm create mode 100755 px4_drv-dkms-mkdeb/debian/rules diff --git a/.gitignore b/.gitignore index 7080306..67a9d52 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,7 @@ modules.order /driver/revision.h /fwtool/fwtool -*.bin +fwtool/*.bin *.sys *.zip diff --git a/README.md b/README.md index 702ddf1..bd93517 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,9 @@ BonDriver と同じフォルダに DriverHost_PX4.exe / DriverHost_PX4.ini / it9 ### 1. ファームウェアの抽出とインストール +> **px4_drv を Debian パッケージや DKMS を使ってインストールする場合、ファームウェアは自動的にインストールされます。** +> Debian パッケージや DKMS を使ってインストールする場合は、この手順は不要です。 + unzip, gcc, make がインストールされている必要があります。 $ cd fwtool @@ -97,39 +100,40 @@ unzip, gcc, make がインストールされている必要があります。 または、抽出済みのファームウェアを利用することもできます。 - $ sudo mkdir -p /lib/firmware && sudo cp winusb/pkg/DriverHost_PX4/it930x-firmware.bin /lib/firmware/ + $ sudo mkdir -p /lib/firmware && sudo cp etc/it930x-firmware.bin /lib/firmware/ ### 2. ドライバのインストール 一部の Linux ディストリビューションでは、udev のインストールが別途必要になる場合があります。 + +#### Debian パッケージを使用してインストール -#### DKMS を使用しない場合 +`./build_deb.sh` を実行すると、./build_deb.sh の一つ上層のディレクトリに `px4-drv-dkms_0.2.1_(amd64|arm64).deb` という名前の Debian パッケージが生成されます。 -gcc, make, カーネルソース/ヘッダがインストールされている必要があります。 + $ ./build_deb.sh + $ sudo apt install -y ../px4-drv-dkms_0.2.1_amd64.deb - $ cd driver - $ make - $ sudo make install - $ cd ../ +上記コマンドで、px4_drv の Debian パッケージをインストールできます。 -#### DKMS を使用する場合 +#### DKMS を使用してインストールする gcc, make, カーネルソース/ヘッダ, dkms がインストールされている必要があります。 $ sudo cp -a ./ /usr/src/px4_drv-0.2.1 $ sudo dkms add px4_drv/0.2.1 $ sudo dkms install px4_drv/0.2.1 - -#### ビルド済みバイナリを Debian パッケージからインストールする -`build_deb.sh` を実行すると、 -- px4-drv-***.deb -- px4-drv-dkms-***.deb -の2つのファイルが生成されます。 -``` -sudo apt install ./px4-drv*.deb -y -``` -とする事でインストールができます。 +#### DKMS を使用せずにインストールする + +gcc, make, カーネルソース/ヘッダがインストールされている必要があります。 + +> DKMS を使用せずにインストールした場合、カーネルのアップデート時にドライバが自動的に再ビルドされないため、アップデート後に再度インストールを行う必要があります。 +> 基本 DKMS を使用してインストールすることをおすすめします。 + + $ cd driver + $ make + $ sudo make install + $ cd ../ ### 3. 確認 @@ -220,19 +224,27 @@ sudo apt install ./px4-drv*.deb -y ### 1. ドライバのアンインストール -#### DKMS を使用せずにインストールした場合 +#### Debian パッケージを使用してインストールした場合 - $ cd driver - $ sudo make uninstall - $ cd ../ + $ sudo apt purge px4-drv-dkms #### DKMS を使用してインストールした場合 $ sudo dkms remove px4_drv/0.2.1 --all $ sudo rm -rf /usr/src/px4_drv-0.2.1 +#### DKMS を使用せずにインストールした場合 + + $ sudo modprobe -r px4_drv + $ cd driver + $ sudo make uninstall + $ cd ../ + ### 2. ファームウェアのアンインストール +> **px4_drv を Debian パッケージや DKMS を使ってインストールした場合、ファームウェアは自動的にアンインストールされます。** +> Debian パッケージや DKMS を使ってインストールした場合は、この手順は不要です。 + $ sudo rm /lib/firmware/it930x-firmware.bin ## 受信方法 diff --git a/build_deb.sh b/build_deb.sh index 6ccbe50..c6d0be3 100755 --- a/build_deb.sh +++ b/build_deb.sh @@ -1,26 +1,9 @@ #!/bin/bash set -CEuo pipefail -SCRIPT_DIR=$(cd $(dirname $0) && pwd) - -VER_MAJ=0 -VER_MIN=2 -VER_BUILD=1 - -cd $SCRIPT_DIR # Prep -sudo apt install dkms dpkg +sudo apt-get install -y dkms dpkg -# Source pkg +# Build dkms deb dkms mkdeb - -# Binary pkg -mkdir -p ./installer/lib/firmware -cp ./winusb/pkg/DriverHost_PX4/it930x-firmware.bin ./installer/lib/firmware -cp -r ./debian ./installer/DEBIAN -dpkg-deb --build installer - -# Clean up, and then place them all -rm -rf installer -mv ./installer.deb ../px4-drv_${VER_MAJ}.${VER_MIN}.${VER_BUILD}_all.deb -v diff --git a/debian/control b/debian/control deleted file mode 100644 index bde7643..0000000 --- a/debian/control +++ /dev/null @@ -1,7 +0,0 @@ -Maintainer: nns779 <25547272+nns779@users.noreply.github.com> -Build-Depends: debhelper (>= 9), dpkg -Package: px4-drv -Architecture: all -Depends: px4-drv-dkms -Description: Binary blob(s) for the it930x driver -Version: 0.2.1 diff --git a/dkms.conf b/dkms.conf index d66f626..7abb37f 100644 --- a/dkms.conf +++ b/dkms.conf @@ -5,6 +5,6 @@ MAKE="cd ./driver; make KVER=${kernelver} px4_drv.ko" BUILT_MODULE_LOCATION="driver" BUILT_MODULE_NAME="px4_drv" DEST_MODULE_LOCATION="/updates/dkms" -POST_INSTALL="dkms/post_install" -POST_REMOVE="dkms/post_remove" +POST_INSTALL="dkms/post_install.sh" +POST_REMOVE="dkms/post_remove.sh" AUTOINSTALL="yes" diff --git a/dkms/post_install b/dkms/post_install deleted file mode 100755 index 9ad0f09..0000000 --- a/dkms/post_install +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -rm -fv /etc/udev/rules.d/90-px4.rules -install -D -v -m 644 ./etc/99-px4video.rules /etc/udev/rules.d/99-px4video.rules diff --git a/dkms/post_install.sh b/dkms/post_install.sh new file mode 100755 index 0000000..327d09d --- /dev/null +++ b/dkms/post_install.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +# Unload previous driver +KVER=`uname -r` +if [ `grep -e '^px4_drv' /proc/modules | wc -l` -ne 0 ]; then + modprobe -r px4_drv +fi + +rm -fv /etc/udev/rules.d/90-px4.rules +install -D -v -m 644 ./etc/99-px4video.rules /etc/udev/rules.d/99-px4video.rules +install -D -v -m 644 ./etc/it930x-firmware.bin /lib/firmware/it930x-firmware.bin diff --git a/dkms/post_remove b/dkms/post_remove deleted file mode 100755 index dbbb07b..0000000 --- a/dkms/post_remove +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -if [ `find /lib/modules/ -name px4_drv.ko | wc -l` -eq 0 ]; then - rm -fv /etc/udev/rules.d/90-px4.rules /etc/udev/rules.d/99-px4video.rules -fi diff --git a/dkms/post_remove.sh b/dkms/post_remove.sh new file mode 100755 index 0000000..5ce6de3 --- /dev/null +++ b/dkms/post_remove.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +# Unload previous driver +KVER=`uname -r` +if [ `grep -e '^px4_drv' /proc/modules | wc -l` -ne 0 ]; then + modprobe -r px4_drv +fi + +if [ `find /lib/modules/ -name px4_drv.ko | wc -l` -eq 0 ]; then + rm -fv /etc/udev/rules.d/90-px4.rules /etc/udev/rules.d/99-px4video.rules + rm -fv /lib/firmware/it930x-firmware.bin +fi diff --git a/etc/it930x-firmware.bin b/etc/it930x-firmware.bin new file mode 100644 index 0000000000000000000000000000000000000000..3bd8e2806a9a65afac7889e0510acea5a8e51e5c GIT binary patch literal 2169 zcma)8Urbw77{9%}Wq`{drHOOSi8pr%Cs8_NiEfh()^4O(=~(Q;)EMf<)Ca?^?sO9@ z<0?@{5IEWN!54M(Wzh&PGw}&a*^@I1VbR0~!kMel#AuHRchx|9{l0SxV;kzipPuu5 zzwdXxe?Nj(QM_&NZB?{g*rNKsQQI!)iZVW#Yi21$jL+wq)8g!*f#p=V|J%1T|3$B& zc-p=sT{(yD3EJ=EcG~tJbwo}6a_b-2`RpVeV)h`N_&z}&cWqsQO1wi}bzN+pGL3hJxKeJyEbUZEbM~GndZXPd%Jt8}i9Sx1v&MhP}ozD){gof&q z!&AwTskzbYbarA+;`_*y|J*Y<)~gBjqv6KoSmc;sDGxWC^YhRv{G8O8#HUF?`yxU_w4=vNM#nU0eK_!H6k}~ai=s>*Hfyi zi|^|xU5VGg@w~)m$;{Xt8DGg}pciu!FoY8V$09pm?#qr!{BK02A4t>%5}S=e=T_qZ zvpiO7YjSuYIkI2{lEeArNFMRw0I@c@Q@6CS;jt0q9+i|(!&5k$GGDEnSGa}T>I?wq z=5i2lNzQvoY=V7>Bsoj@V1HhR&kA83Wf5Aom}rsskBG1ivdF2j zBIP>E550%dH1@iBxB^7)LqgnfafXI)F(q6XB}i^Lxzv8w~#RU2HiwHM!-i^LBTc4!GD<`YXSavDz+q6qu3PDz;0 zW%&DWPi1RLg2z0*!y<3q&kKl;RgiUix84g9A0z_viJbZW7bN~Df$5k%E2C-c z#&NC=}WehE;DwHl+zm>l8{Z-;y;MIJWl(Lkax zkZ1{jdNdQXg6gR%tEU=8BJnXIMT8C%5ja3As2;SSdcXo&LG?)d8G;TJ5jbjD1l5BU yR8KW*b2VzEilay*{<8*LtjfGFA3`T|zDi1=-&Ym`xWLaH-RpsW9~7^8Q27U#f#4ee literal 0 HcmV?d00001 diff --git a/px4_drv-dkms-mkdeb/Makefile b/px4_drv-dkms-mkdeb/Makefile new file mode 100644 index 0000000..817173d --- /dev/null +++ b/px4_drv-dkms-mkdeb/Makefile @@ -0,0 +1,29 @@ +#/usr/bin/make +SRC = $(DESTDIR)/usr/src +SHARE = $(DESTDIR)/usr/share/$(NAME)-dkms + +all: + +clean: + +install: + +#source tree +ifeq ("$(wildcard $(NAME)-$(VERSION))", "$(NAME)-$(VERSION)") + install -d "$(SRC)" + cp -a $(NAME)-$(VERSION) $(SRC) + #ref: https://github.com/dell/dkms/issues/53#issuecomment-1591788158 + #chmod 644 -R "$(SRC)/$(NAME)-$(VERSION)" +endif + +#tarball, possibly with binaries +ifeq ("$(wildcard $(NAME)-$(VERSION).dkms.tar.gz)", "$(NAME)-$(VERSION).dkms.tar.gz") + install -d "$(SHARE)" + install -m 644 $(NAME)-$(VERSION).dkms.tar.gz "$(SHARE)" +endif + +#postinst, only if we are supporting legacy mode +ifeq ("$(wildcard common.postinst)", "common.postinst") + install -d "$(SHARE)" + install -m 755 $(PREFIX)/usr/lib/dkms/common.postinst $(SHARE)/postinst +endif \ No newline at end of file diff --git a/px4_drv-dkms-mkdeb/debian/README.Debian b/px4_drv-dkms-mkdeb/debian/README.Debian new file mode 100644 index 0000000..f8495d9 --- /dev/null +++ b/px4_drv-dkms-mkdeb/debian/README.Debian @@ -0,0 +1,5 @@ +MODULE_NAME DKMS module for Debian + +This package was automatically generated by the DKMS system, +for distribution on Debian based operating systems. + diff --git a/px4_drv-dkms-mkdeb/debian/changelog b/px4_drv-dkms-mkdeb/debian/changelog new file mode 100644 index 0000000..2434da0 --- /dev/null +++ b/px4_drv-dkms-mkdeb/debian/changelog @@ -0,0 +1,6 @@ +DEBIAN_PACKAGE-dkms (MODULE_VERSION) stable; urgency=low + + * Automatically packaged by DKMS. + + -- Dynamic Kernel Modules Support Team DATE_STAMP + diff --git a/px4_drv-dkms-mkdeb/debian/compat b/px4_drv-dkms-mkdeb/debian/compat new file mode 100644 index 0000000..7f8f011 --- /dev/null +++ b/px4_drv-dkms-mkdeb/debian/compat @@ -0,0 +1 @@ +7 diff --git a/px4_drv-dkms-mkdeb/debian/control b/px4_drv-dkms-mkdeb/debian/control new file mode 100644 index 0000000..b455166 --- /dev/null +++ b/px4_drv-dkms-mkdeb/debian/control @@ -0,0 +1,12 @@ +Source: DEBIAN_PACKAGE-dkms +Section: misc +Priority: optional +Maintainer: Dynamic Kernel Modules Support Team +Build-Depends: debhelper (>= 7), dkms +Standards-Version: 3.8.1 + +Package: DEBIAN_PACKAGE-dkms +Architecture: DEBIAN_BUILD_ARCH +Provides: DEBIAN_PACKAGE-modules (= MODULE_VERSION) +Depends: dkms (>= 1.95), ${misc:Depends} +Description: DEBIAN_PACKAGE driver in DKMS format. diff --git a/px4_drv-dkms-mkdeb/debian/copyright b/px4_drv-dkms-mkdeb/debian/copyright new file mode 100644 index 0000000..ad983f3 --- /dev/null +++ b/px4_drv-dkms-mkdeb/debian/copyright @@ -0,0 +1,2 @@ + +This copyright has not been completed by the author of this package. diff --git a/px4_drv-dkms-mkdeb/debian/dirs b/px4_drv-dkms-mkdeb/debian/dirs new file mode 100644 index 0000000..b601f22 --- /dev/null +++ b/px4_drv-dkms-mkdeb/debian/dirs @@ -0,0 +1 @@ +usr/src diff --git a/px4_drv-dkms-mkdeb/debian/postinst b/px4_drv-dkms-mkdeb/debian/postinst new file mode 100755 index 0000000..e87022f --- /dev/null +++ b/px4_drv-dkms-mkdeb/debian/postinst @@ -0,0 +1,49 @@ +#!/bin/sh +# Copyright (C) 2002-2005 Flavio Stanchina +# Copyright (C) 2005-2006 Aric Cyr +# Copyright (C) 2007 Mario Limonciello +# Copyright (C) 2009 Alberto Milone + +set -e + +NAME=MODULE_NAME +PACKAGE_NAME=$NAME-dkms +DEB_NAME=$(echo $PACKAGE_NAME | sed 's,_,-,') +CVERSION=`dpkg-query -W -f='${Version}' $DEB_NAME | awk -F "-" '{print $1}' | cut -d\: -f2` +ARCH=`dpkg-architecture -qDEB_BUILD_GNU_CPU` + +dkms_configure () { + for POSTINST in /usr/lib/dkms/common.postinst "/usr/share/$PACKAGE_NAME/postinst"; do + if [ -f "$POSTINST" ]; then + "$POSTINST" "$NAME" "$CVERSION" "/usr/share/$PACKAGE_NAME" "$ARCH" "$2" + return $? + fi + echo "WARNING: $POSTINST does not exist." >&2 + done + echo "ERROR: DKMS version is too old and $PACKAGE_NAME was not" >&2 + echo "built with legacy DKMS support." >&2 + echo "You must either rebuild $PACKAGE_NAME with legacy postinst" >&2 + echo "support or upgrade DKMS to a more current version." >&2 + return 1 +} + +case "$1" in + configure) + dkms_configure + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/px4_drv-dkms-mkdeb/debian/prerm b/px4_drv-dkms-mkdeb/debian/prerm new file mode 100755 index 0000000..f42d293 --- /dev/null +++ b/px4_drv-dkms-mkdeb/debian/prerm @@ -0,0 +1,28 @@ +#!/bin/sh + +NAME=MODULE_NAME +VERSION=MODULE_VERSION + +set -e + +case "$1" in + remove|upgrade|deconfigure) + if [ "`dkms status -m $NAME`" ]; then + dkms remove -m $NAME -v $VERSION --all + fi + ;; + + failed-upgrade) + ;; + + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# + +exit 0 + + diff --git a/px4_drv-dkms-mkdeb/debian/rules b/px4_drv-dkms-mkdeb/debian/rules new file mode 100755 index 0000000..7426e58 --- /dev/null +++ b/px4_drv-dkms-mkdeb/debian/rules @@ -0,0 +1,54 @@ +#!/usr/bin/make -f +# -*- makefile -*- + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +DEB_NAME=DEBIAN_PACKAGE +NAME=MODULE_NAME +VERSION=MODULE_VERSION + +configure: configure-stamp +configure-stamp: + dh_testdir + touch configure-stamp + + +build: build-stamp + +build-stamp: configure-stamp + dh_testdir + $(MAKE) + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + -$(MAKE) clean + dh_clean + +install: build + dh_testdir + dh_testroot + dh_prep + dh_installdirs + $(MAKE) DESTDIR=$(CURDIR)/debian/$(DEB_NAME)-dkms NAME=$(NAME) VERSION=$(VERSION) install + +binary-arch: build install + +binary-indep: build install + dh_testdir + dh_testroot + dh_link + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure