linux-headers 和 linux-image¶
linux-headers 和 linux-image 是两个 deb 包,可安装在 Debian/Ubuntu 系统中。
linux-headers 包含各种头文件,可以让设备具有本地编译驱动的能力。
linux-images 包含编译内核时产生的驱动模块,将这些模块安装到设备中,设备才能 modprobe/insmod 进行使用。如果设备使用了 extboot,自行编译的 linux-image 内还会包含内核,安装即可直接升级内核,免去烧写步骤。
如何确定是否使用了 extboot?请前往板卡对应维基的编译 Ubuntu 固件
页面,部分编译
章节查看。如果没有 extboot 相关内容,则说明不支持。
获取方法¶
下载¶
Firefly 官方提供了两个 linux-headers 和 linux-image,方便客户在开发板进行驱动编译。官方提供的包中不含内核,安装后不会对内核进行升级,各板型均可使用。
各个板卡的下载请到 Firefly 官方《资料下载》页面下载。选择板卡后一般在“资源”处,名称为 linux-headers。
制作¶
官方提供的 headers 和 image 版本和实际固件可能有差异,并且有定制需求的客户也无法使用,因此建议通过 SDK 制作:
首先准备环境、获取 SDK、编译前配置,请前往不同板卡的维基查看,接下来在 SDK 根目录进行编译:
# 选择板卡配置文件
./build.sh xxxx.mk
# 编译
./build.sh kerneldeb
生成的文件会在 SDK 根目录:
linux-headers-x.xx.xxx_x.xx.xxx-xxx_arm64.deb
linux-image-x.xx.xxx_x.xx.xxx-xxx_arm64.deb
如果 SDK 使用了 extboot,那么 linux-image 包含内核,因此只能用于你在./build.sh xxxx.mk
所选择的型号上。
安装¶
以下以 ROC-RK3568-PC 安装为例:
将得到的 deb 包放入设备中,然后安装,对于 headers,安装后还需要进行编译处理:
对于使用了 extboot 的板卡,安装后重启即可完成内核更新,之后再进行编译 headers
# 安装
sudo dpkg -i linux-headers-4.19.172_4.19.172-189_arm64.deb
sudo dpkg -i linux-image-4.19.172_4.19.172-189_arm64.deb
# 准备编译环境
sudo apt install -y build-essential python libssl-dev
# 编译
cd /usr/src/linux-headers-4.19.172
make headers_check
make headers_install
# make scripts 可能会出错,如果出错在 tools,可以直接忽略,安装完成
make scripts