ymdzq / OFRP-device_xiaomi_elish

小米平板5 Pro 橙狐设备树 (Xiaomi Pad 5 Pro)
60 stars 8 forks source link

[question]請問內核獲取問題 #6

Closed skysumbra closed 1 year ago

skysumbra commented 1 year ago

ex:pixel phone

分解使用boot_a ,但結果的東西很少,手機也沒有recovery.img,所以嘗試分解vendor_boot_a.img 和 vendor_kernel_boot_a.img

user@user-VirtualBox:~/Desktop/AIK-Linux-mirror-master$ ./unpackimg.sh boot_a.img 

Android Image Kitchen - UnpackImg Script
by osm0sis @ xda-developers

Supplied image: boot.img

Setting up work folders...

Image type: AOSP

Signature with "AVBv2" type detected.

Splitting image to "split_img/"...
ANDROID! magic found at: 0
BOARD_KERNEL_CMDLINE 
BOARD_PAGE_SIZE 4096
BOARD_HEADER_VERSION 4
BOARD_HEADER_SIZE 1584

Warning: No ramdisk found to be unpacked!

Done!
user@user-VirtualBox:~/Desktop/AIK-Linux-mirror-master$ ./unpackimg.sh vendor_boot_a.img 

Android Image Kitchen - UnpackImg Script
by osm0sis @ xda-developers

Supplied image: vendor_boot_a.img

Setting up work folders...

Image type: AOSP_VNDR

Signature with "AVBv2" type detected.

Splitting image to "split_img/"...
VNDRBOOT magic found at: 0
BOARD_VENDOR_CMDLINE swiotlb=noforce dyndbg="func alloc_contig_dump_pages +p" earlycon=exynos4210,0x10A00000 console=ttySAC0,115200 androidboot.console=ttySAC0 printk.devkmsg=on cma_sysfs.experimental=Y cgroup_disable=memory rcupdate.rcu_expedited=1 rcu_nocbs=all stack_depot_disable=off page_pinner=on swiotlb=1024 disable_dma32=on at24.write_timeout=100 log_buf_len=1024K bootconfig
BOARD_VENDOR_BASE 0x10000000
BOARD_NAME 
BOARD_PAGE_SIZE 2048
BOARD_KERNEL_OFFSET 0x00008000
BOARD_RAMDISK_OFFSET 0x01000000
BOARD_TAGS_OFFSET 0x00000100
BOARD_HEADER_VERSION 4
BOARD_HEADER_SIZE 2128
BOARD_DTB_SIZE 0
BOARD_DTB_OFFSET 0x01f00000

Unpacking ramdisk (as root) to "ramdisk/"...

Compression used: lz4-l
80282 blocks

Done!

./unpackimg.sh vendor_kernel_boot_a.img 
Android Image Kitchen - UnpackImg Script
by osm0sis @ xda-developers

Supplied image: vendor_kernel_boot_a.img

Setting up work folders...

Image type: AOSP_VNDR

Signature with "AVBv2" type detected.

Splitting image to "split_img/"...
VNDRBOOT magic found at: 0
BOARD_VENDOR_CMDLINE 
BOARD_VENDOR_BASE 0x10000000
BOARD_NAME 
BOARD_PAGE_SIZE 2048
BOARD_KERNEL_OFFSET 0x00008000
BOARD_RAMDISK_OFFSET 0x01000000
BOARD_TAGS_OFFSET 0x00000100
BOARD_HEADER_VERSION 4
BOARD_HEADER_SIZE 2128
BOARD_DTB_SIZE 580030
BOARD_DTB_OFFSET 0x01f00000

Unpacking ramdisk (as root) to "ramdisk/"...

Compression used: lz4-l
41406 blocks

Done!

3份 split_img 內容如下

user@user-VirtualBox:~/Desktop/AIK-Linux-mirror-master$ ls -alh ./boot/split_img/
total 24M
drwxrwxr-x 2 user user 4.0K  四  29 21:01 .
drwxrwxr-x 4 user user 4.0K  四  29 21:01 ..
-rw-rw-r-- 1 user user    1  四  29 21:01 boot.img-cmdline
-rw-rw-r-- 1 user user    3  四  29 21:01 boot.img-header_version
-rw-rw-r-- 1 user user    5  四  29 21:01 boot.img-imgtype
-rw-rw-r-- 1 user user  24M  四  29 21:01 boot.img-kernel
-rw-rw-r-- 1 user user    9  四  29 21:01 boot.img-origsize
-rw-rw-r-- 1 user user    5  四  29 21:01 boot.img-os_patch_level
-rw-rw-r-- 1 user user    6  四  29 21:01 boot.img-os_version
-rw-rw-r-- 1 user user    6  四  29 21:01 boot.img-ramdiskcomp
-rw-rw-r-- 1 user user    0  四  29 21:01 boot.img-ramdisk.cpio.empty
-rw-rw-r-- 1 user user    6  四  29 21:01 boot.img-sigtype
user@user-VirtualBox:~/Desktop/AIK-Linux-mirror-master$ 
user@user-VirtualBox:~/Desktop/AIK-Linux-mirror-master$ ls -alh ./vendor_boot_a/split_img/
total 22M
drwxrwxr-x 2 user user 4.0K  四  29 21:01 .
drwxrwxr-x 4 user user 4.0K  四  29 21:11 ..
-rw-rw-r-- 1 user user   11  四  29 21:01 vendor_boot_a.img-base
-rw-rw-r-- 1 user user    1  四  29 21:01 vendor_boot_a.img-board
-rw-rw-r-- 1 user user    0  四  29 21:01 vendor_boot_a.img-dtb
-rw-rw-r-- 1 user user   11  四  29 21:01 vendor_boot_a.img-dtb_offset
-rw-rw-r-- 1 user user    3  四  29 21:01 vendor_boot_a.img-header_version
-rw-rw-r-- 1 user user   10  四  29 21:01 vendor_boot_a.img-imgtype
-rw-rw-r-- 1 user user   11  四  29 21:01 vendor_boot_a.img-kernel_offset
-rw-rw-r-- 1 user user    9  四  29 21:01 vendor_boot_a.img-origsize
-rw-rw-r-- 1 user user    5  四  29 21:01 vendor_boot_a.img-pagesize
-rw-rw-r-- 1 user user   11  四  29 21:01 vendor_boot_a.img-ramdisk_offset
-rw-rw-r-- 1 user user    6  四  29 21:01 vendor_boot_a.img-sigtype
-rw-rw-r-- 1 user user   11  四  29 21:01 vendor_boot_a.img-tags_offset
-rw-rw-r-- 1 user user  364  四  29 21:01 vendor_boot_a.img-vendor_cmdline
-rw-rw-r-- 1 user user    6  四  29 21:01 vendor_boot_a.img-vendor_ramdiskcomp
-rw-rw-r-- 1 user user  21M  四  29 21:01 vendor_boot_a.img-vendor_ramdisk.cpio.lz4
user@user-VirtualBox:~/Desktop/AIK-Linux-mirror-master$ 
user@user-VirtualBox:~/Desktop/AIK-Linux-mirror-master$ ls -alh ./vendor_kernel_boot_a/split_img/
total 6.6M
drwxrwxr-x 2 user user 4.0K  四  29 21:12 .
drwxrwxr-x 4 user user 4.0K  四  29 21:14 ..
-rw-rw-r-- 1 user user   11  四  29 21:12 vendor_kernel_boot_a.img-base
-rw-rw-r-- 1 user user    1  四  29 21:12 vendor_kernel_boot_a.img-board
-rw-rw-r-- 1 user user 567K  四  29 21:12 vendor_kernel_boot_a.img-dtb
-rw-rw-r-- 1 user user   11  四  29 21:12 vendor_kernel_boot_a.img-dtb_offset
-rw-rw-r-- 1 user user    3  四  29 21:12 vendor_kernel_boot_a.img-header_version
-rw-rw-r-- 1 user user   10  四  29 21:12 vendor_kernel_boot_a.img-imgtype
-rw-rw-r-- 1 user user   11  四  29 21:12 vendor_kernel_boot_a.img-kernel_offset
-rw-rw-r-- 1 user user    9  四  29 21:12 vendor_kernel_boot_a.img-origsize
-rw-rw-r-- 1 user user    5  四  29 21:12 vendor_kernel_boot_a.img-pagesize
-rw-rw-r-- 1 user user   11  四  29 21:12 vendor_kernel_boot_a.img-ramdisk_offset
-rw-rw-r-- 1 user user    6  四  29 21:12 vendor_kernel_boot_a.img-sigtype
-rw-rw-r-- 1 user user   11  四  29 21:12 vendor_kernel_boot_a.img-tags_offset
-rw-rw-r-- 1 user user    1  四  29 21:12 vendor_kernel_boot_a.img-vendor_cmdline
-rw-rw-r-- 1 user user    6  四  29 21:12 vendor_kernel_boot_a.img-vendor_ramdiskcomp
-rw-rw-r-- 1 user user 6.0M  四  29 21:12 vendor_kernel_boot_a.img-vendor_ramdisk.cpio.lz4

例如這樣的內容,要找出dtb 和kernal 使用,是從下面的/vendor_kernel_boot_a/split_img/ 這分嗎??

ymdzq commented 1 year ago

内核应该是boot.img-kernel,dtb应该是vendor_kernel_boot_a.img-dtb。 BOARD_HEADER_VERSION=4或者说pixel比较复杂,因为如果没有recovery分区的话,很可能属于vendor_boot-as-recovery, 拿小米手机打比方的话,可以参考一下https://forum.xda-developers.com/t/vendor_boot-roms.4575777/ https://github.com/orgs/D8100-9000-TWRP-Device-Tree/repositories

skysumbra commented 1 year ago

目前練習的裝置是有這樣架構,推測新的裝置都會是有vendor boot的分區架構,即出廠系統就是android 13 (TM)的,為了接下來的升級android 14 (UDC) 做準備