MLX-MKBFB(1)
π MLX-MKBFB(1) β the mlx-mkbfb page, bestie edition π
okay so real quick, this is a General Commands Manual situation and the star of the show is mlx-mkbfb. sit down, hydrate, and let's get into it π«Ά
β¨ NAME β¨
mlx-mkbfb β create, dump, check, and update BlueField BFB files. that's the whole job. she does it all π
πΈ SYNOPSIS πΈ
mlx-mkbfb [--help|-h]
mlx-mkbfb [options...] [INFILE(S)...] OUTFILE
mlx-mkbfb -[x|d|c] [options...] INFILE
mlx-mkbfb -f VERSION [options...] INFILE OUTFILE
like, four whole moods. pick your lane β¨
π¦ DESCRIPTION π¦
so BFB stands for BlueField Bootstream and these files are literally what boots BlueField SoCs. no cap. inside one of these babies you've got firmware images, kernel images, kernel arguments, and sometimes an entire initramfs just chilling in there. π
what are they for? booting the system, bestie. either they get pushed over the rshim device, or they get installed straight onto one of the two eMMC boot partitions. and if you're trying to install to, or dump BFB files from, the eMMC? that's a mlxbf-bootctl(8) job, not this one. different girl, different page π«Ά
now. the main character moment: when you're not using -x, -d, -c, or -f, mlx-mkbfb takes every INFILE plus whatever images you named in the Image Options, builds you a brand new BFB, and writes it to OUTFILE. and here's the tea β later images replace preceding ones. literally, whoever shows up last wins. example time:
mlx-mkbfb infile1.bfb infile2.bfb --bl2=bl2.bin outfile.bfb
so say the image bl31 exists in both infile1.bfb and infile2.bfb? then the bl31 from infile2.bfb is the one that gets emitted to outfile.bfb. sorry to infile1.bfb's bl31, it's not her era anymore π. but wait β since the argument --bl2 was specified, bl2.bin replaces any bl2 image in either infile1.bfb or infile2.bfb. she ate. π
π OPTIONS π
-d,--dumpβ prints you a listing of the images insideINFILE. a lil peek behind the curtain π-x,--extractβ extracts all the images fromINFILEand writes them to files in the current directory. everything. all of it. dumped right in your cwd π-c,--checkβ checks the integrity ofINFILE. vibe check, but for your bootstream β-p,--prefix PREFIXβ the prefix for files extracted by-x. default is"dump-". cute, customizable β¨-f,--filter VERSIONβ filters away all images fromINFILEthat aren't needed to bootVERSION. so it removes images with versions higher thanVERSION, and it also removes any images that get overridden with a later version. and by default this is done carefully, so that at least one compatible image is present inOUTFILEper ID inINFILE. she's thorough, she's responsible π-s,--strip VERSIONβ modifies-f. instead of filtering out everything unneeded, it only filters out the version specified byVERSION. heads up tho:-sand-fmay be different versions. plot twist π--no-carefulβ modifies-f. disables the "careful" image preservation, so everything matching the-s/-ffilter is removed.
β οΈ resulting images will likely not boot on their own. this is the chaotic option. respect her or don't, but she means it π
-v,--verboseβ more verbose output. she will yap (affectionately) π-e,--expertβ expert mode. orders the images withinOUTFILEto match the order they're specified on the command line by Image Options.
π« this option cannot be used with-x,-d, or-c. no mixing, bestie.
π Image Options π
when you run without -d, -x, or -c, the image options are what control which images get added to OUTFILE. every single image option is one of these three forms:
--image-name=IMAGE
--image-name-v0=IMAGE
--image-name-v1=IMAGE
if you don't specify a version (v0/v1), then 0 is the default. and those versions? they reflect which platform the image is meant for β v0 for BlueField 1 and v1 for BlueField 2. slay, platform-specific π
IMAGE is the path to the desired image. but here's the fun part: if IMAGE begins with "=", then IMAGE is taken as a literal string and inserted directly into the BFB file, minus that leading "=". for example:
--boot-args='=debug isolcpus=10'
that will insert those arguments into the BFB, and use them to boot the kernel image. iconic behavior tbh π₯
and listen, the list of image options is quite large. like, huge. to see an up-to-date list of images supported by the BFB format, just run:
mlx-mkbfb --help
π SEE ALSO π
mlxbf-bootctl(8) β her sister page, go say hi π«Ά
and that's the whole page, bestie!! this one's from way back in June 2020, living in the General Commands Manual, and yeah it's still MLX-MKBFB(1) at heart. go boot something beautiful. mwah πβ¨
π¦ where this page comes from
- fedora 43: rshim 2.5.2-1.fc43 Β· (GPL-2.0-only OR BSD-3-Clause) AND MIT
- fedora 43: rshim 2.5.3-1.fc43 Β· (GPL-2.0-only OR BSD-3-Clause) AND MIT
- fedora 44: rshim 2.5.3-4.fc44 Β· (GPL-2.0-only OR BSD-3-Clause) AND MIT
- fedora 44: rshim 2.7.1-1.fc44 Β· (GPL-2.0-only OR BSD-3-Clause) AND MIT
- opensuse-leap 16.0: rshim 2.3.8-bp160.1.4 Β· BSD-3-Clause OR GPL-2.0-only
- opensuse-leap 16.0: rshim 2.3.8-bp160.1.4 Β· BSD-3-Clause OR GPL-2.0-only
- opensuse-leap 16.0: rshim 2.3.8-bp160.1.4 Β· BSD-3-Clause OR GPL-2.0-only
- opensuse-leap 16.0: rshim 2.3.8-bp160.1.4 Β· BSD-3-Clause OR GPL-2.0-only
- ubuntu resolute: rshim 2.5.7+debian-1 Β· GPL-2.0-only OR BSD-3-Clause
- ubuntu stonking: rshim 2.5.8+debian-1 Β· GPL-2.0-only OR BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms