系統準備
- 安裝 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 刷機即可