Releases: 7Ji/ampart
ampart v1.4.1
ampart v1.4: build better, report better
- Introduced build system support for CMake and meson, distro packagers are encouraged to choose CMake over the old Makefile implementation
- It's now possible to generate web report even when esnapshot is empty, previously both dsnapshot and esnapshot must exist.
ampart v1.3: make naughty DTBs behave
Update from v1.2:
- It's now possible to modify DTBs with mismatched
phandle
andlinux,phandle
apperances, this makes it possible to modify EPT and DTB partitions on firmwares like Milton's Android 6 for BesTV R3300L - webreport mode will now send correctly partition's size=-1 (auto-fill)
- upon EPTs being modified, ampart will automatically tell kernel to re-read the partitions, this only works on mainline kernel and needs a kernel that has been patched with my patchset to add support, though: on vendor kernel this does nothing as the partitions are created by the MMC driver, not by the block subsystem
sha256sums:
fe8f9239e32c52b7fc0b2479716045eb9622410001f6aa76dacc80857e8e9008 ampart-v1.3-aarch64-ArchLinuxARM.gz
178715113d4d53e9f0f8e1cb29d2046d4b9b135e85a31fc645d88b9ce2c8d1ca ampart-v1.3-aarch64-static.gz
f0ca187aa8314c9fdffc1df630aac3a73cc72e971dec6c83131c5938f8e6f638 ampart-v1.3-x86_64-ArchLinux.gz
d58dadfffe6fa433f330a8255f830178e295b51616a2bc2a32e1ca30eed0a6dd ampart-v1.3-x86_64-static.gz
ampart v1.2: introducing web reporter
A new mode 'webreport' was added, users can now use ampart itself to generate URL that utilizes the brand-new ampart-web-reporter.
ampart /emmc/or/dump --mode webreport
A simple command like this will return a URL like the following if nothing went wrong.
https://7ji.github.io/ampart-web-reporter/?dsnapshot=logo::8388608:1%20recovery::25165824:1%20misc::8388608:1%20dtbo::8388608:1%20cri_data::8388608:2%20param::16777216:2%20boot::16777216:1%20rsv::16777216:1%20metadata::16777216:1%20vbmeta::2097152:1%20tee::33554432:1%20vendor::335544320:1%20odm::134217728:1%20system::1946157056:1%20product::134217728:1%20cache::1174405120:2%20data::18446744073709551615:4&esnapshot=bootloader:0:4194304:0%20reserved:37748736:67108864:0%20cache:113246208:1174405120:2%20env:1296039936:8388608:0%20logo:1312817152:8388608:1%20recovery:1329594368:25165824:1%20misc:1363148800:8388608:1%20dtbo:1379926016:8388608:1%20cri_data:1396703232:8388608:2%20param:1413480448:16777216:2%20boot:1438646272:16777216:1%20rsv:1463812096:16777216:1%20metadata:1488977920:16777216:1%20vbmeta:1514143744:2097152:1%20tee:1524629504:33554432:1%20vendor:1566572544:335544320:1%20odm:1910505472:134217728:1%20system:2053111808:1946157056:1%20product:4007657472:134217728:1%20data:4150263808:120919687168:4
The URL carries all needed data, so the device itself does not need to be online. The user can just copy the URL and open it in their browser.
A script that calls ampart can also just redirect stderr to /dev/null if they just want the URL, like the following:
URL=$(ampart /emmc/or/dump --mode webreport 2>/dev/null)
echo "Hey! Your URL is: ${URL}"
The web reporter can also be used by external sources, as long as the passed arguments are valid
ampart v1.1 - minor fixes and improvement of building
This is a little update with some minor changes:
-
Now the last partition in
dsnapshot
andesnapshot
modes will not be ended with an extra space, so if the external script want to compare the snapshot with an expected layout it would be easier and more staight-forward, the last if condition in the following example is now true:snapshot_expected='data::-1:4' log=$(ampart /dev/mmcblk2 --mode dsnapshot 2>/dev/null) readarray -d $'\b' -t snapshots <<< "$log" [[ "${snapshots[0]}" == "${snapshot_expected}" ]] && echo 'already adjusted'
in older versions the
"${snapshots[0]}"
here would contain an extra trailing space and you have to compare it with"${snapshot_expected} "
instead, which is counter-intuitive -
The project now builds with an automatically generated version which will be helpful for support
[root@bestv7Ji ~]# ampart --version ampart-ng (Amlogic eMMC partition tool) by 7Ji, version 1.1-16406fe-20221110
The version can be manually specified when building with
VERSION_CUSTOM
, e.g.make VERSION_CUSTOM=my_custom_version_number
This would be more helpful if you're building ampart with source files extracted from an archive, e.g. https://github.com/7Ji/ampart/archive/refs/tags/v1.0.tar.gz, Where there's no git info and the version will be empty and does not make sense
For downloading of the releases:
The ampart-v1.1-architecture-static/distro.xz
are compressed binaries, which contains only the compiled ampart binary itself. The static
one is staticlly linked, ~900KiB in size, it does not depend on any library in the environment; the distro
one is dynamically linked, ~100KiB in size, but it depends on an existing libc and zlib which has the same ABI as the build environment.
The ampart-git-v1.1-architecture.pkg.tar.xz/zstd
are ArchLinux packages, which can be installed via pacman -U
on an Arch-derived distro.
If you're using an Arch-derived distro, consider installing ampart through my AUR package: https://aur.archlinux.org/packages/ampart-git
Following https://github.com/7Ji/ampart#building, you can build ampart on essentially any x86-64 or aarch64 hosts, which is recommended as these releases here could be incompatible if the libc and zlib on your host is different from my build environment
ampart v1.0
Ampart is stable for a long time and should be considered ready for public uses, and its API will stay unchanged for a long time, it's time to announce the release of the first stable version of ampart
As ampart links with zlib, whose version could be different depending on your system, most of the binaries here are for specific systems only. The static releases should be compatible with all systems but their size is way larger.
The ampart-architecture-static/distro.xz
are compressed binaries, which contains only the compiled ampart binary itself. The static
one is staticlly linked, ~900KiB in size, it does not depend on any library in the environment; the distro
one is dynamically linked, ~100KiB in size, but it depends on an existing libc and zlib which has the same ABI as the build environment.
The ampart-git-version-architecture.pkg.tar.xz/zstd
are ArchLinux packages, which can be installed via pacman -U
on an Arch-derived distro.
If you're using an Arch-derived distro, consider installing ampart through my AUR package: https://aur.archlinux.org/packages/ampart-git
Following https://github.com/7Ji/ampart#building, you can build ampart on essentially any x86-64 or aarch64 hosts, which is recommended as these releases here could be incompatible if the libc and zlib on your host is different from my build environment
ampart-v0.1.1
This adds an emergency s905x4 check to refuse to write tables on s905x4 devices
The CE and EE releases are now correctly built against the corresponding toolchains, so you won't have wrong glibc errors
ampart-v0.1
This is the first stable release of ampart, but it's only stable in my opinion, should you use it or not rely on your own decision
It has been tested on the following devices as I only have these devices:
- BesTV R3300L (S905L, gxl)
- Xiaomi mibox3/3c (S905-H, gxbb) (with --offset 4M)
You're suggested to download the corresponding versions according to your OS, but you can also download the -static releases if you're using other versions of the OS and can't properly run the dynamic ones.
Since I can't test on all possible device, you are with your own luck if you're using other devices and OSs.