deb格式安装包创建流程

  1. 建立根目录, 目录名称为test
  2. 在test目录下建立配置文件目录:DEBIAN和程序文件目录:usr,目录结构如下所示:

    3.DEBIAN目下创建文件名分别为control、md5sums、postinst、postrm、prerm的配置文件,如下所示: 

 

a、control包描述文件

Package: test

Version: 1.0.0

Architecture: arm64

Maintainer: jason

Installed-Size: 351

Depends: dkms (>= 2.1.0.0)

Section: misc

Priority: optional

Description: test driver in DKMS format.

b、md5sums各个文件的md5校验值,这个文件是非必须的

c、postinst安装包后执行文件

#!/bin/bash



echo "=========================================="

#echo "请阅读以下协议:"

cat /usr/share/doc/test/copyright

#read -t 3 -p "请输入是否接受该协议,3秒后默认接受该协议,自动进行安装[yes/no]:" ans

#if [ -z ${ans} ] ;then

# ans="yes"

# echo ""

#fi

#ans=$(echo $ans | tr '[A-Z]' '[a-z]')

#if ( [ ${ans} != yes ] && [ ${ans} != y ] ) ;then

# echo "[INFO] 由于您拒绝接受协议,安装程序自动退出!"

# exit -1

#fi

#echo "[INFO] 接受该协议,自动进行安装。"

BUILD_SYS=4.4.131-20200710.kylin.desktop-generic

INSTALL_SYS=`uname -r`

echo "================================================================================================"

echo " BUILD SYSTEM ${BUILD_SYS} "

echo " INSTALL SYSTEM ${INSTALL_SYS} "

echo "================================================================================================"

if [ ${BUILD_SYS} != ${INSTALL_SYS} ];then

 echo "[ERROR]检查到系统内核版本与驱动编译版本不同!"

 echo "[ERROR]请在系统内核版本为 ${BUILD_SYS} 对于的 test"

 echo "[WARNING]对于内核不匹配的驱动,安装后将有可能导致黑屏,死机等可能性,"

 read -p "是否强制安装[yes/no]:" ans

 ans=$(echo $ans | tr '[A-Z]' '[a-z]')

 if ( [ ${ans} != yes ] && [ ${ans} != y ] ) ;then

 echo "[INFO] 安装程序已退出,程序未安装."

 exit -1

 else

 echo "[INFO] 强制执行安装程序."

 fi

fi



DEB_NAME=test

NAME=test

VERSION=1.0.0

for kv in `ls /lib/modules/ |grep -e 3.14 -e 4.4` ; do

if [ -d /lib/modules/${kv}/build/ ]; then

echo install ${NAME}/${VERSION} to kernel ${kv}

dkms add ${NAME}/${VERSION}

dkms build ${NAME}/${VERSION}

dkms install ${NAME}/${VERSION} -k ${kv}

update-initramfs -u -k ${kv}

cp /boot/initrd.img-${kv} /boot/initramfs.img-${kv}

depmod -a

insmod /lib/modules/${INSTALL_SYS}/kernel/drivers/char/${NAME}.ko

sleep 1

chmod 777 /dev/test

echo "test"  >> /etc/modules





else

echo /lib/modules/${kv}/build/ directory is not exist.

fi

done



exit 0

d、postrm删除包后执行文件

#!/bin/sh



for kv in `ls /lib/modules/ |grep -e 3.14 -e 4.4` ; do

if [ -d /lib/modules/${kv}/build/ ]; then

update-initramfs -u -k ${kv}

cp /boot/initrd.img-${kv} /boot/initramfs.img-${kv}

fi

done



exit 0

e、prerm删除包前执行文件

#!/bin/sh



DEB_NAME=test

NAME=test

VERSION=1.0.0



dkms remove ${NAME}/${VERSION} --all



exit 0

4.usr实际上是文件要安装的目录,该目下创建sbin、share、src三个目录,如下所示:

a、sbin目录下放置应用程序

b、share存放文档,这个目录也是非必需创建的

例子中在该目录下创建一个doc目录,doc下创建一个test目录,存放版权信息等类容,share目录结构如下:

 

test目录下可以创建一个版权文件:copyright,内容如下:

test版本信息读取程序

copyright@ 2021-2022 jingjiaMicro  All rights reserved

<author>         <time>        <version>

jason      2021/07/23     V1.0.0

c、src目录下放置dkms驱动程序

src目录结构如下:

test-1.0.0目录下放置驱动相关文件和makefile,如下所示:

其中dkms.conf为编译dkms驱动的配置文件,内容如下:

PACKAGE_NAME="test"

PACKAGE_VERSION="1.0.0"

MAKE[0]="make -C ${dkms_tree}/test/${PACKAGE_VERSION}/build/"

CLEAN="make -C ${dkms_tree}/test/${PACKAGE_VERSION}/build/ clean"

BUILT_MODULE_NAME[0]="test"

DEST_MODULE_LOCATION[0]="/kernel/drivers/char"

AUTOINSTALL="yes"

REMAKE_INITRD="true"

其中Makefile文件内容如下:

obj-m := test.o

test-objs := test.o.dkms



ifneq ($(KERNELRELEASE),)

KERNELDIR ?= /lib/modules/$(KERNELRELEASE)/build

else

KERNELDIR ?= /lib/modules/$(shell uname -r)/build

endif



PWD := $(shell pwd)



.PHONY: all

all: clean modules #install



.PHONY: modules

modules:

  $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) modules



.PHONY: clean

clean:

  $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) clean

5、目录创建完后,在test目录下用dpkg -b test命令创建deb安装包,名称执行成功后会生成名称为:test.deb的安装包。如果提示提示postinst 权限错误,将DEBIAN目录下所有配置文件权限修改成775即可。

相关命令说明:

dkms 驱动创建:

1、将源文件拷贝到 /usr/src目录,源文件目录格式name-version 例如test-0.1

2、添加模块:dkms add test/0.1  (删除模块命令 dkms remove test/0.1 --all)

3、编译模块: dkms build test/0.1

4、安装模块:dkms install test/0.1 (协助模块命令dkms uninstall test/0.1)

deb包命令:

创建deb包命令:dpkg -b lpc

安装deb包:dpkg -i lpc.deb

卸载deb包:dpkg -r lpc

安装包例子下载地址,包含以上涉及的创建所需文件:

Linuxdeb安装包例子,包含制作一个deb安装包需要的相关文件-Linux文档类资源-CSDN下载

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

缥缈孤鸿_jason

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值