Tự build mainline kernel mới từ mẫu APKBUILD có sẵn trên pmaports của postmarketOS gitlab

LuxiTD
2/6/2022 9:40Phản hồi: 0
Tự build mainline kernel mới từ mẫu APKBUILD có sẵn trên pmaports của postmarketOS gitlab
Bài này hướng dẫn sơ sơ cách tự renew mainline kernel để nâng cấp lên version cao hơn cho Nexus 7 2012 wifi grouper rev.E1565, hỗ trợ Waydroid và fix drm cho n7, bài mang tính chất tham khảo để ghi nhớ lại một số bước chính dựa trên hướng dẫn của trang postmarketos wiki, có thể áp dụng cho các thiết bị khác

https://wiki.postmarketos.org/wiki/Upgrade_kernel_aports

Bài đọc khá khó hiểu nhưng sẽ rõ ràng khi thao tác và hỏi đáp trên postmarketos matrix. Bắt đầu nào!!
Đầu tiên, bạn sẽ có mẫu APKBUILD trên gitlab là linux-postmarketos-grate (vì nexus 7 2012 đã sát nhập kernel vào bản kernel-5.15.0-rc4-postmarketos-grate từ đầu năm 2022) và config-postmarketos-grate.armv7

https://gitlab.com/postmarketOS/pmaports/-/blob/master/device/testing/linux-postmarketos-grate/APKBUILD

image.png
Thay đổi 2 dòng pkgver=5.17.0 và pkgrel=1

dòng _commit="999564eab65e01ef0099b6e533b2c388b1f02439" phải lên github của grate-driver/linux tìm commit mới nhất trên master branch, mà đã thông qua tốt, điền vào. Đừng chọn dòng có đấu X đỏ

kernel-5.19.0-rc8 và pkgrel=0:
_commit="1adff051e7931baf427b7342acab81bc9aec7959"

image.png

image.png

image.png

Mở terminal cài pmbootstrap như hướng dẫn

Quảng cáo


https://wiki.postmarketos.org/wiki/Installing_pmbootstrap

Đầu tiên chạy pmbootstrap init để lấy mẫu APKBUILD và config-postmarketos-grate.armv7 về máy local

$ pmbootstrap init

Channel []: edge

Vendor []: asus

Device codename []: grouper

Quảng cáo


Kernel []: e1565-mainline

Enable this package? (y/n) [y]: y

Username []: user

User interface []: xfce4 ← hoặc phosh thì đổi ở đây

Extra packages []: nano,thunar,xvkbd,matchbox-keyboard,iwd

Choose default locale installation [en_US.UTF-8]: en_US.UTF-8

Device hostname (short form, e.g ‘foo’) []: asus-grouper-xfce4

Build outdate packages during ‘pmbootstrap install’? (y/n) [y]: y

$ pmbootstrap status

Ở user, git clone linux kernel về:

$ git clone https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git linux
$ cd linux
$ git remote add grate-driver
https://github.com/grate-driver/linux.git

Tải về patch mới:

$ git fetch grate-driver

Dùng git tag để tìm tag mới nhất, nếu trong tag có nhiều commit thì tìm commit cuối có thể hoạt động để build kernel

$ git tag | grep grate-grate_defconfig-default-gcc

$ git log grate-grate_defconfig-default-gcc

Điền commit vào APKBUILD, đổi pkgver=5.17.0, pkgrel=1
Kiểm tra phiên bản mới của các commit trong git log để tìm ra commit mới nhất có thể build kernel

$ git checkout -b postmarketos-upgrade

kernel-5.17.0
$ git reset --hard 999564eab65e01ef0099b6e533b2c388b1f02439

Điền commit vào APKBUILD, đổi pkgver=5.19.0_rc8, pkgrel=0
kernel-5.19.0-rc8
$ git reset --hard 1adff051e7931baf427b7342acab81bc9aec7959

Updating files: 100% (2009/2009), done.
HEAD is now at 1adff051e793 Revert "pwm: tegra: Optimize period calculation"

Thêm một số bản vá nếu có của mainline kernel

$ git am $(pmbootstrap -q config work)/cache_git/pmaports/device/testing/linux-postmarketos-grate/*.patch
fatal: could not open '/home/<username>/.local/var/pmbootstrap/cache_git/pmaports/device/main/linux-postmarketos-grate/*.patch' for reading: No such file or directory

$ pmbootstrap kconfig check linux-postmarketos-grate

Chạy pmbootstrap checksum để tạo mới APKBUILD

$ pmbootstrap checksum linux-postmarketos-grate
Update package index for x86_64 (4 file(s))
Download http://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/apk-tools-static-2.12.9-r3.apk
(native) install alpine-base
(native) install abuild build-base ccache git [15:10:37] (native) generate abuild keys
(native) generate checksums for linux-postmarketos-grate
NOTE: chroot is still active (use 'pmbootstrap shutdown' as necessary)
DONE!

Thế là đã tạo mẫu APKBUILD mới trên local để build mainline kernel, new version

File config-postmarketos-grate.armv7 lấy config trong release của https://github.com/grate-driver/linux/releases

Hoặc lấy APKBUILD và config-postmarketos-grate.armv7 trên repo gitlab của Svyatoslav Ryhel( aka Clamor-S)

APKBUILD: https://gitlab.com/postmarketOS/pmaports/-/blob/02855386c28d4ebe17d6589bc0e36f32d87ada1b/device/testing/linux-postmarketos-grate/APKBUILD

config-postmarketos-grate.armv7: https://gitlab.com/postmarketOS/pmaports/-/blob/eed9f8e79091043b995c9ec7ef220585453c8a2a/device/testing/linux-postmarketos-grate/config-postmarketos-grate.armv7

image.png

Chọn bản build cho GCC (default), bản CLANG phải cài thêm: autoconf, automake, bash, clang, clang-dev, dpkg, gcc, git, lld, make, musl-dev

$ pmbootstrap chroot
~/# apk add abuild build-base ccache git devicepkg-dev mkbootimg postmarketos-base ccache-cross-symlinks gcc-aarch64 g++-aarch64 crossdirect ncurses-dev bash bc bison elfutils-dev flex gmp-dev installkernel linux-headers openssl-dev perl sed binutils-aarch64 gcc-armv7 g++-armv7 binutils-armv7


$ pmbootstrap --details-to-stdout build linux-postmarketos-grate --force

$ pmbootstrap --details-to-stdout install

Các bước cài đặt vào máy sẽ theo hướng dẫn bài này:

https://tinhte.vn/thread/postmarketos-nexus-7-2012-wifi-3g-rev-e1565-kernel-5-15-0-rc4-next-20121011-postmarketos-grate.3179205/

pmbootstrap log:

https://pastebin.ubuntu.com/p/xjDsVtbFc6

APKBUILD:

https://pastebin.ubuntu.com/p/HFSD33h5y3/

config-postmarketos-grate.armv7

https://pastebin.ubuntu.com/p/pbzGFg5jsw/

Link image trên Google drive: https://drive.google.com/drive/u/0/folders/1B27V9Od0g4pvKfWRIhK_CnJFXG8VCcXK

Default user: user
Default passwd: 147147
Chia sẻ

Xu hướng

Xu hướng

Bài mới








  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2025 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019