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