系统准备
- 安装 Ubuntu 22.04.2 LTS
- 安装软件包
|
|
下载代码
克隆仓库代码
|
|
内核编译
内核超频
修改文件 linux/drivers/clk/qcom/a53-pll.c
|
|
第一列为运行频率,第二列则为供电电压。
根据前面的规律,大致可以判断为每提升200Mhz增加10电压值,但是由于再往后就超出了芯片设计频率,同时要考虑功耗与发热,因此往后提升时要略增加一些电压值,1401600000后的数据 为根据以上规律添加
修改文件 linux/arch/arm64/boot/dts/qcom/msm8916.dtsi 在220行左右出现默认频率,在此之后进行增加,增加的频率需要在前一个文件内添加好
|
|
编译配置
|
|
make msm8916_defconfig 导入预先设置的编译参数 make menuconfig 配置选项
添加 Klipper USB 串口驱动
适用于能够发现USB设备, 但是在/dev下找不到serial目录及设备的问题
- 安装lsub sudo apt-get install usbutils
- 切换usb口到host模式(root运行) echo host > /sys/kernel/debug/usb/ci_hdrc.0/role
- 查看USB设备 运行lsusb命令, 应该可以看到对应的usb设备, 如果没有对应的usb设备应该是通讯的问题,固件的问题,或者板子本身不正常.
- 再以上问题都解决的情况下, 添加串口驱动
|
|
开始编译
|
|
以上命令直接一步生成deb文件包, 输入 ls ../ 即可看到
在 ubuntu 22.04 已经无法更新 make-kpkg 对应的软件包, 官方说法是已经太久没有维护,所以去掉了, 所以以下命令无法运行, 在一些早期版本中可能可以
|
|
编译完成后会生成3部分的文件
-
内核的deb包, 包括heades和image linux-headers-5.15.0-handsomekernel+_5.15.0-handsomekernel+-7_arm64.deb 和 linux-image-5.15.0-handsomekernel+_5.15.0-handsomekernel+-7_arm64.deb 在编译目录的上一级 ../
-
Image.gz linux/arch/arm64/boot/Image.gz
-
设备树dtb linux/arch/arm64/boot/dts/qcom/msm8916-handsome-openstick-xxxxxxxx, 根据你的设备选择
|
|
处理rootfs, 根分区
在原openstick项目发行的root分区包的基础上修改完成
下载原openstick debian底包
|
|
debian.zip包中, rootfs.img 就是根分区的img文件
使用simg2img转化成可以mount的格式
|
|
chroot 处理 rootfs
mount root.img
|
|
安装最新编译的内核
|
|
使用 chroot 进入挂载的系统,移除系统内原有的linux-image包,并安装刚刚生成的deb软件包,安装后删除deb文件
|
|
创建 rc.local 开机启动脚本
|
|
重新配置 locale
OpenStick 所使用的 debian 可能被精简过 所以有时会出现错误提示 warning: setlocale: LC_ALL: cannot change locale (en_US)
以下方法可以解决这个问题
|
|
可以选择 en_US.UTF-8
apt源修改
/etc/apt/sources.list.d/mobian.list 已失效,可直接删除即可
提取后续boot分区需要的文件
文件:/mnt/boot/initrd**.img 提前复制出来即可
结束chroot 结束umount
直接输入exit退出
|
|
使用simg2img转化回来
将 boot.img 转为刷机用的 rootfs.img 格式
|
|
rootfs.img 是 最终处理完成后的 root分区镜像文件
处理 boot 分区
以下以 ufi001c 设备为例, 其他设备可类推
需要的文件清单
- 编译环节产生的 Image.gz (linux/arch/arm64/boot/Image.gz)
- 编译环节产生的 设备树dtb (linux/arch/arm64/boot/dts/qcom/msm8916-handsome-openstick-ufi001c.dtb), 根据你的设备选择
- 修改rootfs后产生的 /boot/initrd**.img
生成boot
|
|
ufi001c-boot.img 是最终生成的 boot分区 镜像文件
至此 rootfs.img ufi001c-boot.img 均已生成, 替换debian.zip刷机包中的 rootfs.img boot.img 刷机即可