Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ugoos X3 BL有锁版 支持使用 Mainline U-boot #782

Closed
livelier opened this issue Dec 7, 2022 · 6 comments
Closed

Ugoos X3 BL有锁版 支持使用 Mainline U-boot #782

livelier opened this issue Dec 7, 2022 · 6 comments
Labels
documentation Improvements or additions to documentation essence Recommended essence posts

Comments

@livelier
Copy link
Contributor

livelier commented Dec 7, 2022

目前已测试此版主线支持的内核版本有 5.15.81 6.0.11,仅测了支持情况,其他问题及其他内核版本未测试。
欢迎手里有 X3 并且是有BL锁的盒子,来测试,验证是否为个例支持。

方法1

  • 第1步 更新 x3 安卓固件到 0.4.2 或 0.5.4 二选一。注意BL无锁版,不要尝试,会锁掉BL,并且不能降级!

  • 第2步 写入 eMMC 不使用 Mainline u-boot

替换 u-boot 文件

/boot/u-boot.emmc
/boot/u-boot.ext
/boot/u-boot-ugoos-x3.bin
/usr/lib/u-boot/ugoos-x3-u-boot.bin.sd.bin

写入 eMMC

armbian-install -m no -a yes ( 写入完成后,已经可以正常使用 eMMC )

  • 第3步 写入 Mainline u-boot
MYBOX_UBOOT="/usr/lib/u-boot/ugoos-x3-u-boot.bin.sd.bin"
DEV_EMMC="/dev/mmcblk2"
dd if=${MYBOX_UBOOT} of="${DEV_EMMC}" conv=fsync bs=1 count=444
dd if=${MYBOX_UBOOT} of="${DEV_EMMC}" conv=fsync bs=512 skip=1 seek=1

方法2

  • 第1步 修改 /usr/sbin/armbian-install 在353-354行之间增加:
    elif [[ "${FDTFILE}" == "meson-sm1-ugoos-x3.dtb" ]]; then
        BLANK1="4"
        BOOT="256"
        BLANK2="0"

BLANK1="108" # Tencent Aurora 3Pro: Must skip [ 108 MiB ]
BOOT="512" # A total of [ 768 MiB ] can be used in this block, gave up [ 768-512=256 MiB ]
BLANK2="562" # Can set the rootfs partition after [ 1182 MiB ] of the total disk, [ 1182-108-512=562 MiB ]
else
BLANK1="68"
BOOT="256" # S905x3: A total of [ 1120 MiB ] can be used in this block, and the remaining [ 864 MiB ] can be used.

替换 u-boot 文件

/boot/u-boot.emmc
/boot/u-boot.ext
/boot/u-boot-ugoos-x3.bin
/usr/lib/u-boot/ugoos-x3-u-boot.bin.sd.bin
  • 第2步 写入 eMMCMainline u-boot

写入 eMMC
armbian-install -m yes -a no

附件

Mainline U-boot 下载链接
ugoos-x3-mainline-u-boot

Android Firmware BL有锁版 下载链接
ugoos-x3-android-firmware-0.4.2
ugoos-x3-android-firmware-0.5.4

BL无锁版x3未做测试,目前已知固件版本 0.3.9 ~ 0.5.4 都是BL有锁版。
BL无锁版x3恢复安卓,建议使用原有BL无锁的固件版本。

@livelier livelier changed the title Ugoos X3 有锁版 支持使用 Mainline U-boot Ugoos X3 BL有锁版 支持使用 Mainline U-boot Dec 7, 2022
@ophub
Copy link
Owner

ophub commented Dec 7, 2022

安卓固件你有没,提供个下载链接。

使用 ampart 工具是固定跳过 117MB 后都可以使用,不分设备都一样。

@ophub ophub added documentation Improvements or additions to documentation essence Recommended essence posts labels Dec 7, 2022
@7Ji
Copy link
Contributor

7Ji commented Dec 8, 2022

使用主线后,保留的空间还能够减少到多少,未测试

使用 ampart 工具是固定跳过 117MB 后都可以使用,不分设备都一样。

用主线的话可以压榨更多空间,哪怕非主线下data::-1:4这个快照实际上也有比117MiB起更多的空间(4MiB+32MiB, 100MiB+16MiB,以及其他重要分区内的无数据部分,比如reserved分区内0x480000后的预留空位,bootloader中的实际数据结尾后)(小米设备是例外,小米设备分区间预留0B,需要配合ampart--gap-reserved 0, --gap-partition 0参数且即使原厂bootloader也能拉到69MiB)。当然117MiB确实是任何设备上都能保证连续分区安全的最小起始点。

SM1/S905X3对应的bootloader在基本保持默认的uboot kconfig的情况下以约763KiB的大小打出来的u-boot.bin在打包成bootloader后最多1.5MiB(我手头的HK1Box是1.5MiB,BPi M5是1.2MiB),所以实际上可以调整到以2MiB作为分区起始点(fdisk下是以第4096个扇区作为分区开始点)而完全没有问题(如果不追求对齐到1MiB可以拉到更靠前),并且约1.5MiB后的512KiB如果不分区的话也可以用来存放env而不浪费,u-boot编译时设置env存储在mmc设备2分区0,偏移0x180000,大小0x80000就好,以后编辑启动环境就比重新编译简单多了

[root@hk17ji ~]# fdisk -l /dev/mmcblk2
Disk /dev/mmcblk2: 116.48 GiB, 125069950976 bytes, 244277248 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
Disklabel type: dos
Disk identifier: 0xd2cac74f

Device         Boot Start       End   Sectors   Size Id Type
/dev/mmcblk2p1       4096 244277247 244273152 116.5G 83 Linux
[root@hk17ji ~]# cat /etc/fw_env.config 
/dev/mmcblk2    0x180000        0x80000
[root@hk17ji ~]# fw_printenv bootcmd
bootcmd=sysboot mmc 2 ext2 0x8000000 /boot/extlinux/extlinux.conf

其实还有个挺有用的内核选项CONFIG_CMDLINE_PARTITION,自己编译内核的话可以打开。kernel.org有对应文档,用安卓bootloader的话可以整,一般设备用不到所以没有必要。可以直接在内核命令行上手动对块设备划定分区,而不在块设备里保存任何分区表,这样就可以超过MBR的四分区上限且不用因扩展分区而浪费空间,而不动用比较危险的GPT(Amlogic的bootloader的范围很明显和GPT重叠了所以是不可能用的),把边边角角的小空间全给划分。同时,在保有EPT分区表的情况下从eMMC上启动主线内核,并且让任意多主线/非主线内核的系统和安卓在eMMC上共存也就变得可行了。

@livelier
Copy link
Contributor Author

livelier commented Dec 8, 2022

@ophub o大,固件下载链接已更新。

@7Ji 感谢 7大 详尽讲解。已测试,此版主线在x3盒子上最小起点为 4M

root@armbian:~# lsblk
NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
mmcblk2      179:0    0 57.9G  0 disk
├─mmcblk2p1  179:1    0  255M  0 part /boot
└─mmcblk2p2  179:2    0 57.7G  0 part /var/log.hdd

@ophub
Copy link
Owner

ophub commented Dec 8, 2022

4 M就是极限了,前4m写u-boot

@livelier
Copy link
Contributor Author

livelier commented Dec 8, 2022

刚好主线的ENV也写在前4M内😂

@CompMas
Copy link

CompMas commented Nov 28, 2023

Ничего не понял! Но мне очень нужно... Объясните, пожалуйста!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation essence Recommended essence posts
Projects
None yet
Development

No branches or pull requests

4 participants