My Week in Code #11
Hello everyone. Another light week here. Let’s go over everything.
BeagleY-AI SD Card support
While hacking on my BeagleY-AI, I found that my HP SD card did not work with BeagleY-AI for some reason. On digging a bit further, some SD cards were not working on BeagleY-AI due to some issues with signal voltage switching on the am62x platform. This has now been fixed, as seen in the following patch series. By switching out the Linux kernel to mainline, I was able to get the HP SD card to work. So, the SD card compatibility of BeagleY-AI will improve soon.
BeagleBoard Rust Imager
BeagleBoard Rust imager got lots of love this week.
AppimageLauncher Problem
As pointed out by Jason here, the BeagleBoard Rust imager appimage is not usable with AppimageLauncher. The issue seems to be that appimagetool uses ZSTD
compression now, while AppimageLauncher
does not support it yet. Moreover, it seems like AppimageLauncher
makes the appimage unusable. For now, the recommendation is to either remove AppimageLauncher
or at least deactivate it for the BeagleBoard Rust imager.
More information regarding the upstream issue can be found here.
SD Card Flashing Performance Improvements
While the SD card flashing worked, it was much slower than the original bb-imager. After some tinkering with the buffer size while flashing and using parallel decompression of xz images, SD card flashing should be much faster (flashing time decreases by 57%).
It is still a bit slower than the original bb-imager (about 1 min), but it seems related to the internals of QFile
, so that would be much more work than just a day.
Debian Packages
BeagleBoard Rust imager now builds Debian packages in CI using cargo-deb. While the goal is to eventually have an upstream package using debcargo, there is not much point until bb-imager-rs
hits v1.0.0. Additionally, since debcargo only seems to support building stuff already present in cartes.io, it does not seem suitable for experimental builds (although I could be wrong about that).
Experimental Builds
Builds from the latest main
branch are now pushed to Package Registry rather than just being stored as build artifacts. This makes grabbing the latest development version of bb-imager-rs
much simpler.
Note: Only the most recent build is kept around.
UEFI Process Args in Rust std
Initial support for Rust std::process
was merged upstream a while back. However, at the time, it was missing support for passing arguments to the spawned process to keep the PR easier to review. Finally, the support for arguments has now been merged to make the API somewhat feature-complete.
UEFI process is one of the more important APIs since it is used by Rust to spawn tests, thereby bringing us closer to being able to run all of Rust’s testing infrastructure on UEFI. This will help make Rust much easier to use in the UEFI space.
Ending Thoughts
That is all for the week. Hopefully, this series helps keep people updated about my work and attracts potential contributors.
Consider supporting me if you like my work.