postmarketOS Samsung Galaxy 3G SM-A500H Duos 2015 samsung-a53g aarch64 kernel 5.15.0
LuxiTD
3 thángBình luận: 22
postmarketOS Samsung Galaxy 3G SM-A500H Duos 2015 samsung-a53g aarch64 kernel 5.15.0
Reference Model on wiki:
https://en.m.wikipedia.org/wiki/Samsung_Galaxy_A5_(2015)
Samsung Galaxy A5 (2015) - Wikipedia
en.m.wikipedia.org


Bài này có 3 đề mục chính:
  1. Tìm hiểu về cách hệ thống boot
  2. Tìm hiểu về dts trong lk2nd và linux-panel-drivers
  3. Tìm hiểu cách cài pmOS rootfs.img vào samsung-a53g

I. Cách thức hệ thống boot:

Bắt đầu nào, từ khi Google tạo phần cứng tương thích dùng nhân Linux để chạy Android, Google vẫn giữ fastboot để flash lại firmware nếu có trục trặc, lỗi hệ thống hoặc nâng cấp mới. Khi các hãng lấy về, họ chỉ giữ nguyên Android system, còn lại bỏ fastboot và cập nhật, thay đổi firmware bằng chính phần mềm của họ. Trong đó có Samsung, dùng Kites3 như iTunes để quản lý máy, user data, upgrade firmware. Về kỹ thuật thì lại có Odin chạy trên Windows dùng để reflash/update firmware. Cộng đồng nguồn mở đã tạo 1 công cụ gần giống Odin, chạy trên Linux, gọi là Heimdall (dùng để flash lk2nd)

Quảng cáo


II. Về lk2nd và linux-panel-drivers

Chắc ai cũng nghe qua Fuchsia OS của Google. Dựa trên nhân Zircon( little kernel từ Code Aurora), thì lk2nd chính là viết tắt của secondary little kernel (là bản fork của little kernel như Zircon), cộng đồng nguồn mở đã fork thành công và đang phát triển lk2nd trên nhiều thiết bị. Mục đích là đem fastboot về các thiết bị đã bị loại bỏ fastboot, mà chạy phần mềm chính hãng. Chỉ có người trong cuộc mới hiểu người trong kẹt

Đem fastboot quay lại nhằm flash boot.img của pmOS để load kernel và rootfs để có thể dùng Linux mobile trên thiết bị di động
https://github.com/msm8916-mainline/lk2nd

GitHub - msm8916-mainline/lk2nd: Secondary little kernel (lk) bootloader for Qualcomm MSM8916/MSM8974/... devices

Secondary little kernel (lk) bootloader for Qualcomm MSM8916/MSM8974/... devices - GitHub - msm8916-mainline/lk2nd: Secondary little kernel (lk) bootloader for Qualcomm MSM8916/MSM8974/... devices
github.com


linux-panel-drivers chính là các dtb phát sinh khi cài lk2nd, có dòng panel ss_dsi dùng để hiển thị hình ảnh trên gpu chipset, hiện tại chỉ có 1 số model và variant được hỗ trợ, cần được thêm vào nhiều hơn
https://github.com/msm8916-mainline/linux-mdss-dsi-panel-driver-generator

GitHub - msm8916-mainline/linux-mdss-dsi-panel-driver-generator: Generate Linux DRM panel kernel driver based on QCOM MDSS DSI device tree

Generate Linux DRM panel kernel driver based on QCOM MDSS DSI device tree - GitHub - msm8916-mainline/linux-mdss-dsi-panel-driver-generator: Generate Linux DRM panel kernel driver based on QCOM MDS...
github.com


Sơ đồ boot như sau:

Secondary little kernel(lk2nd) → [ initramfs + vmlinuz + config + extra (/pmOS_boot của pmOS) → rootfs + firmware + kernel modules (/pmOS_root giao dien Phosh của pmOS) ]

III. Cách cài postmarketOS vào 3G SM-A500H/DS samsung-a53g

Quảng cáo


https://wiki.postmarketos.org/wiki/Samsung_Galaxy_A5_2015_(samsung-a5ulte)
Samsung Galaxy A5 2015 (samsung-a5) - postmarketOS
wiki.postmarketos.org


Hiện tại, trên trang chủ wiki của pmOS ngoài hỗ trợ community cho Samsung Galaxy A5 bản quốc tế SM-A500F và bản EU SM-A500FU (2 mã samsung-a5lte và samsung-a5ulte), đã hỗ trợ 3G SM-A500H/DS (samsung-a53g) trong file lk2nd/dts/msm8916/msm8216-samsung-r08.dts. không cần phải chỉnh sửa gì thêm

Theo tìm hiểu thì dùng Qualcomm-msm8916 có 5 nhánh nhỏ

https://patchwork.ozlabs.org/project/devicetree-bindings/patch/1450371534-10923-20-git-send-email-mtitinger+renesas@baylibre.com/
[19/26] devicetree: bindings: Document qcom, msm-id and qcom, board-id - Patchwork
patchwork.ozlabs.org


  • qcom-id-msm8916 206 ← a5lte và a5ulte
  • qcom-id-msm8016 247
  • qcom-id-msm8216 248 ← a53g là dòng này
  • qcom-id-msm8116 249
  • qcom-id-msm8616 250

Cài Alpine Linux trên Virutalbox:

Quảng cáo


Upgrade lên bảng mới nhất và cài các tool

# sudo apk update && apk upgrade

# sudo apk add git python3 dtc libfdt py3-libfdt gcc-arm-none-eabi heimdall make

# git clone https://github.com/msm8916-mainline/lk2nd.git

GitHub - msm8916-mainline/lk2nd: Secondary little kernel (lk) bootloader for Qualcomm MSM8916/MSM8974/... devices

Secondary little kernel (lk) bootloader for Qualcomm MSM8916/MSM8974/... devices - GitHub - msm8916-mainline/lk2nd: Secondary little kernel (lk) bootloader for Qualcomm MSM8916/MSM8974/... devices
github.com


# cd lk2nd

# sudo make TOOLCHAIN_PREFIX=arm-none-eabi- msm8916-secondary

Sau khi built xong sẽ có lk2nd.img trong lk2nd/build-msm8916-secondary

Upgrade lên ROM Android 6.0.1

Đưa máy về Download mode bằng nhấn tổ hợp phím Power + Volume down + Home, sau đó nhấn Volume up

Kết nối 3G SM-A500H/DS vào PC/Laptop, chọn USB là Samsung devices trên menu của Virtualbox

# sudo heimdall flash --BOOT lk2nd.img

Vì lk2nd đã quản lý boot nên không cần flash -boot.img nữa, tham khảo ở đây
https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_410/412_(MSM8916)
Qualcomm Snapdragon 410/412 (MSM8916) - postmarketOS
wiki.postmarketos.org


Chọn mirror gần với khu vực đang ở theo hướng dẫn dưới đây:
https://wiki.postmarketos.org/wiki/Mirrors
Mirrors - postmarketOS
wiki.postmarketos.org


# sudo apk add pmbootstrap

No need TravMurav branch because master support samsung-a5 now. Thanks to Minecrell and TravMurav ^_^!

/***------------------------
Build samsung-a5.img kernel 5.14.0 từ TravMurav branch trên gitlab postmarketos

# pmbootstrap init

Choose: edge → samsung → a5lte → manline modem → y → user → phosh → nano → en_US.UTF-8 → sm-a500-phosh → y

Add Travmurav branch for a53g support:

# cd $(pmbootstrap config aports)

# git remote add TravMurav https://gitlab.com/TravMurav/pmaports.git

Nikita Travkin / pmaports

postmarketOS package build recipes (used to be in the pmbootstrap repository)
gitlab.com


# git fetch TravMurav

# git checkout TravMurav/gt510lte

-----------------------------***/

# pmbootstrap init

Channel []: edge

Vendor []: samsung

Device codename []: a5

Kernel []: mainline-modem

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

Username []: user

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

Extra packages []: nano

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

Device hostname (short form, e.g ‘foo’) []: sm-a500h-phosh

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

# pmbootstrap status

Trước khi build image thì chroot vào cài các package về local để tạo máy ảo, khỏi phải download và tạo khi build image

# 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

# pmbootstrap --details-to-stdout install

*** SET LOGIN PASSWORD FOR: 'user' ***
(rootfs_samsung-a5) % passwd user
New password: 147147
Retype new password: 147147

# pmbootstrap export

Image ở thư mục này: /home/[username]/.local/var/pmbootstrap/chroot_native/home/pmos/rootfs/samsung-a5.img

Boot ở đây: /home/[username]/.local/var/pmbootstrap/chroot_rootfs_samsung_a5/boot

# sudo fastboot flash userdata samsung-a5.img

# sudo fastboot erase system

# sudo fastboot reboot

Edit phoc.ini

# sudo apk add xorg-server

# sudo cvt 720 1280 58.6

# sudo nano /usr/share/phosh/phoc.ini

[output: DSI-1]
modeline = 74.50 720 768 840 960 1280 1283 1293 1326 -hsync +vsync
mode = 720x1280
scale = 2

Build image log: https://www.mediafire.com/file/h3r98udh1ndm5lr

Voila! Enjoy postmarketOS-Phosh trên 3G SM-A500H/DS

Full sources:
https://drive.google.com/folderview?id=1GVVLiGVojGf074vAvZoboN7e7cZE-Asi
pmOS Samsung Galaxy 3G SM-A500H/DS - Google Drive
drive.google.com


default user is user, passwd is 147147

If you want to mount sparse image working with fastboot, you have to de-sparse it to working with gparted. Methods is img2simg/simg2img

# sudo apk gparted img2simg simg2img

# sudo simg2img samsung-a5.img samsung-a5-de-sparse.img

# sudo modprobe loop

# sudo losetup -f

# sudo losetup /dev/loop0 /path/to/samsung-a5-de-sparse.img

# sudo partprobe /dev/loop0

# sudo gparted /dev/loop0

Unmount image:

# sudo losetup -d /dev/loop0

Drop unallocated disk for ext4, here is example:

# sudo fdisk -l /path/to/samsung-a5-de-sparse.img

Disk samsung-a5-de-sparse.img: 6144 MB, 6144000000 bytes, 12000000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ea37d
Device Boot Start End Blocks Id System
samsung-a5-de-sparse.img 2048 9181183 4589568 b W95 FAT32

truncate --size=$[(9181183+1)*512] /path/to/samsung-a5-de-sparse.img

https://askubuntu.com/questions/1174487/re-size-the-img-for-smaller-sd-card-how-to-shrink-a-bootable-sd-card-image#1174509

"Re-size" the .img for smaller SD-card. How to SHRINK a bootable SD card image

Context I have a 16 GB SD card with a Linux based OS for a Raspberry Pi. Most of the space is empty. I want to share the SD .img with other people but if I use the command dd if=/dev/sdXX of=/home/
askubuntu.com


Drop unallocated disk for f2fs
https://wiki.ubuntu.com/Touch/Deploying
Touch/Deploying - Ubuntu Wiki
wiki.ubuntu.com


Sparse image to working with Android fastboot

# sudo img2simg samsung-a5-de-sparse.img samsung-a5-sparse.simg

# sudo mv samsung-a5-sparse.simg samsung-a5-sparse.img

We're on matrix:
https://app.element.io/#/room/#main:postmarketos.org
Element
app.element.io

https://app.element.io/#/room/#devel:postmarketos.org
Element
app.element.io

https://app.element.io/#/room/#lowlevel:postmarketos.org
Element
app.element.io

https://app.element.io/#/room/#mainline:postmarketos.org
Element
app.element.io

https://app.element.io/#/room/#porting:postmarketos.org
Element
app.element.io






22 bình luận
Like bài của bác vì độ tâm huyết 😁
Cũng muốn dùng thử 1 con điện thoại, tablet linux mà như này thì hơi rắc rối 😆
Đợi khi nào có sản phẩm thương mại vung tiền mua cho gọn 😃)
LuxiTD
ĐẠI BÀNG
2 tháng
@SilverWolf501 Thật sự thi chẳng tâm huyết gì, chỉ muốn tất cả các thiết bị của mình chạy không phụ thuộc vào 1 hãng nào như Google. Samsung, Apple, Xiaomi, Oppo, v.v...
Cười vô mặt
@LuxiTD Em thấy thế là tâm huyết với linux rồi 😁
LuxiTD
ĐẠI BÀNG
2 tháng
@SilverWolf501 Vay la chua thay nhung nguoi con tam huyet hon tren #matrix: postmarketos rui :D
LuxiTD
ĐẠI BÀNG
2 tháng
Neofetch
IMG_20210920_234141_1.jpg
imhoa2238
ĐẠI BÀNG
2 tháng
@LuxiTD À cái máy chỉ chạy ở 995mhz
Có cách nào để cho nó chạy max 1.2 ghz k nhỉ (khoảng 1ghz -> 1.2ghz)
LuxiTD
ĐẠI BÀNG
2 tháng
@imhoa2238 Build lại kernel, vào gitlab sửa 2 file config-postmarketos-qcom-msm8916.* https://gitlab.com/postmarketOS/pmaports/tree/master/main/linux-postmarketos-qcom-msm8916 Rồi download mainline kernel của Linus Torvalds, import config vào kernel menuconfig, sửa lại cpu freqs, có thể bỏ ngưỡng 60 độ shutdown. Vì chạy hơn 1Ghz thường quá nhiệt, phải chạy temp_throttle vì trên 60 độ máy sẽ tự động shutdown

Hoặc tham khảo "postmarketos envkernel"

Plasma-mobile đã build xong và có trên gdrive thư mục 20210926
imhoa2238
ĐẠI BÀNG
2 tháng
@LuxiTD T mong nó tốt hơn so vs phosh
LuxiTD
ĐẠI BÀNG
2 tháng
@imhoa2238 Thấy bọn core devs nó bảo là tốt hơn thật. Da test plasma-build, khong thich lam. Nut xem ung dung dang chay bi crash, wifi co ve khong chay, UI giut giut, khong friendly lam








  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2021 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: 209 Đường Nam Kỳ Khởi Nghĩa, Phường 7, Quận 3, TP.HCM
  • Số điện thoại: 02862713156
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019