Hi all,
I just released the first barebox for 2026! v2026.01.0 is out.
This brings us some exciting new features. First to mention is that barebox
no longer can only be a EFI payload, but also act as an EFI loader. With this
barebox can now boot Debian images out of the box. A lot of work has been done
to get this 54 patches series and even more preparatory patch series into
barebox,
thanks Ahmad for not giving up on this.
Another change is that barebox now has device special files in /dev/ rather than
regular files that have a cdev beneath them. With this we no longer have a devfs
filesystem anymore and /dev/ simply becomes a regular directory in the initial
ramfs mount. Links are no longer special and we'll be able to create
/dev/disk/by-*/
entries.
barebox now also has "storage.removable" and "storage.builtin" boot aliases to
allow booting from the specified device class.
Finally the family of supported boards gets a new member: The Amazon Kindle
generation 6/7 are now support.
See below for migration guide and patches that went into this release.
Have Fun!
Migration guide for Release v2026.01.0
======================================
<config.h> removal for PowerPC
------------------------------
PowerPC was the last remaining user of per-board ``<config.h>`` files.
The alternative for out-of-tree boards is now to patch
``arch/powerpc/include/asm/config.h`` to include the board's config.h,
like the in-tree boards are already doing.
Filesystems
-----------
``{linux.bootargs}`` is replaced with ``root={linux.bootargs.root}
{linux.bootargs.rootopts}``
The variable linux.bootargs has been replaced by the two variables
linux.bootargs.root and linux.bootargs.rootopts, splitting the previous bootargs
into three parts. A nonexistent fixed "root=", then the root filesystem and then
additional optional params for this particular filesystem.
for example the previous::
linux.bootargs="root=/dev/nfs nfsroot=192.168.1.1:/rootfs"
becomes::
linux.bootargs.root="/dev/nfs"
linux.bootargs.rootopts="nfsroot=192.168.1.1:/rootfs"
Boards
------
ARM i.MX6 RIoTboard
^^^^^^^^^^^^^^^^^^^
The barebox update handler has been changed to write barebox to the
eMMC boot partitions rather than the user data area.
CONFIG_SHELL_NONE
-----------------
If there's nothing to do for a shell-less barebox, it will now attempt
to poweroff the system instead of busy-looping indefinitely.
This changes behavior for systems that rely on a watchdog to reset
a hanging barebox in this situation. If this breaks anything for you,
please reach out.
----------------------------------------------------------------
Ahmad Fatoum (173):
poller: activate POLLER_WARN_OVERTIME only on third strike
drivers: don't propagate of_alias_get_id's -ENODEV out of probe
bootm: allow custom struct image_handler::check_image callbacks
efi: payload: bootm: allow compiling without FIT support
efi: payload: x86: make handover vs startimage a runtime decision
mvebuimg: replace errant sizeof(4)
fs: qemu_fw_cfg: make use of the automount
fs: qemu_fw_cfg: handle non-existent opt/org.barebox.env key gracefully
defaultenv: don't abort defaultenv_load silently on error
defaultenv: add base and external defaultenv in pure_initcall
efi: payload: image: set LoaderTimeExecUSec for kernel images
efi: payload: fold setup_header.h into handover.c
test: populate qemu_bin, even if missing features
test: arm: qemu-sabrelite: drop -nographic
test: arm: add default board for multi_v5_v6_defconfig.yaml
ARM: sunxi: drop unneeded Makefile
test: exit directly when invoking QEMU states on non-QEMU targets
ARM: mmu: set up vectors prior to full MMU setup
environment: prefer non-removable over removable devices for autoprobe
memory: drop superfluous struct memory_bank::start/size parameters
memory: keep memory_banks sorted
usb: align with Linux usb_get_dr_mode API
usb: add support for barebox,dr_mode
kbuild: drop non-existent targets from CLEAN_FILES
sandbox: fix race with .old_version removal
ARM: lib64: rename pbl.o to delay.o
sandbox: setjmp: avoid conflict with noinline macro
openrisc: drop <config.h> usage
ARM: drop <config.h> usage
ppc: drop <config.h> usage
treewide: drop last remnants of <config.h>
mci: am654-sdhci: correctly configure SLOTTYPE_EMBEDDED
printf: define printk/no_printk in terms of prints
bug: add support for CONFIG_DEBUG_BUGVERBOSE
include: move sprintf prototypes to new linux/sprintf.h
console: move non-stdio elements to console.h
video: dw_mipi_dsi: drop unused and misleading dw_mipi_dsi_crtc_node()
video: Rockchip: add MIPI-DSI support
video: dw_mipi_dsi: activate pattern generator during enable as a hack
ARM: zynqmp: dts: mark power domain as dummy
ARM: rpi: make power domain optional
pmdomain: add Rockchip power domain support
of: add proper driver for simple-pm-bus
pmdomain: warn if deep probe enabled and driver missing
pmdomain: genpd_activate() automatically for deep probe platforms
net: arp: collect context into new struct pending_arp
net: reset pending ARP state when request is done
devinfo: print DMA offset and mask in devinfo
clk: rk3568: sync driver with Linux
ARM: mmu: include <asm/io.h> from <mmu.h>
driver: base: report driver remove before, not after operation
clk: vexpress: clk-sp810: sync with Linux
efi: add option to generate vfat file for barebox.efi
lib: import Linux UCS2 library functions
lib: wchar: reimplement in terms of Linux UCS2 helpers
libfile: use different memory types for os and initrd
memory: fix dangling if in for_each_reserved_region
efi: payload: enable build for sandbox
malloc: define malloc_add_pool outside of TLSF
cdev-alias: support referencing diskuuid without child partition
cdev-alias: fix memory leak in diskuuid handling
cdev-alias: add support for storage{.removable,.builtin}
boot: try builtin and removable media before net for boot.default
boot: assign names to bootentry providers
globalvar: suppress nvvar_save when no external environment was loaded
startup: bump down log message about lack of persistent environment
environment: allow board code to suppress external env loading
ARM: cpu: disable interrupts before MMU disabling
efi: payload: restructure Kconfig
efi: mode: add efi_get_runtime_services helper
filetype: move is_dos_exe into header
rtc-lib: implement rtc_calc_weekday
ARM64: support reserving the x18 platform register
poweroff: make header self-contained
cache: provide <asm/cache.h> for x86 and sandbox as well
resource: implement resource walker
test: self: implement resource walker selftest
commands: iomem: add support for printing gaps
test: py: add test for valid JSON output from iomem/clk_dump
memory: add helpers for iterating over memory regions
resource: implement release_region_range
bbu: detect devices when devicefile has no /dev/ prefix as well
treewide: replace open-coded variants of devpath_to_name
fs: implement new resolve_fsdevice_path helper
efi: payload: make EFI variable helpers usable for loader as well
fs: efivarfs: prepare for use with barebox as EFI loader
efi: handle: build for both EFI payload and loader
efi: provide populate $efi.payload_default_path depending on arch
efi: tidy up header includes for reuse
efi: types: add efi_intn_t/efi_uintn_t definition
efi: devicepath: make fully usable for loader
efi: guid: don't interleave protocol and event GUIDs
ARM64: mmu: implement mmu_disable completely in assembly
efi: guid: add some more GUIDs
efi: guid: move static GUIDs out of drivers
efi: gop: flesh out efi_graphics_output_protocol::blt definition
efi: payload: initrd: move into common efi code
efi: add missing EFIAPI to functions
resource: change MEMATTRS_NORMAL to MEMATTR_WB
bootm: add os_type field to struct image_data
startup: implement get_autoboot_state() helper
of: implement of_get_machine_vendor()
lib: smbios: add support for populating SMBIOS table
cdev: maintain partition index in struct cdev
efi: payload: initrd: fix type mismatch on 32-bit
efi: loader: switch over event/memory key type to efi_uintn_t
lib: vsprintf: print human-readable EFI GUIDs with %pUs
fs: fat: don't duplicate dentries when resolving differently cased paths
efi: loader: add memory accounting
efi: loader: add pool allocator
efi: types: add EFI_RUNTIME_SECTION
resource: assign memory banks a default type and attr
ARM: lds: add EFI runtime service section
ARM: move needed assembly routines into EFI runtime section
crypto: crc32: implement position independent CRC32
efi: loader: add support for tracing calls back into UEFI
efi: loader: add table utility functions
lib: add charset helpers
efi: loader: add object handling API
efi: loader: add devicepath support
efi: loader: add debug support
efi: loader: add boot services support
efi: loader: add support for runtime services before ExitBootServices
efi: loader: setup root node
efi: loader: add watchdog support
efi: loader: move PE implementation out of common code
efi: loader: protocol: add file protocol support
efi: loader: protocol: add Block IO support
efi: loader: protocol: implement efi_file_from_path
efi: loader: boot: implement LoadImage BootService
efi: loader: add EFI load option handling
efi: loader: protocol: add graphical output protocol support
efi: loader: protocol: add console support
efi: loader: protocol: add HII support
efi: loader: protocol: add unicode collation support
efi: loader: protocol: add random number generator protocol
efi: loader: protocol: add device_path_utilities
efi: loader: support formatting only first device path node to text
efi: loader: protocol: add efi_device_path_to_text support
restart: allow drivers to register runtime restart handler
poweroff: allow drivers to register runtime poweroff handler
ARM: psci: client: register runtime service poweroff handler
ARM: psci: client: register runtime service restart handler
hardening: disable some features when EFI runtime support is enabled
filetype: add new filetype for efi-stubbed ARM zImages
bootm: add global.bootm.efi toggle
efi: loader: add ESP boot entry provider
efi: loader: add rudimentary EFI boot manager
efi: loader: implement bootm handler
efi: runtime: add EFI variable support
efi: loader: populate OsIndicationsSupported/PlatformLang variables
ARM: don't disable MMU when EFI booting
efi: runtime: add runtime service support after ExitBootServices
efi: runtime: add relocation check
efi: loader: CONFIG_EFI_RT_VOLATILE_STORE
efi: loader: support ExitBootServices
efi: loader: pass along SMBIOS table
ARM: configs: add multi_v7/8_efiloader_defconfig
boot: allow prioritizing boot entry providers
test: py: strategy: add OS shell state
test: py: add simple SMBIOS tests
test: py: add simple EFI loader integration test
test: arm: add Labgrid env YAML for multi_v8_efiloader_defconfig
Documentation: devel: contributing: fix URL ReST syntax
sandbox: fix make dependency for sandbox
ARM64: dts: Layerscape: workaround v6.19-rc1 DT sync DWC3 breakage
mci: use partition table index for Linux mmcblkdev fixup
Documentation: turn more magic variable literals into references
scripts: .gitignore: add imx9image
scripts: pblimage: add to .gitignore
virtio: ring: fix stale data in queue after reset
scripts: Makefile.lib: suppress graph_port warnings for overlays
ARM: Rockchip: rk3576-prtpuk: suppress video graph warning
Alexander Kurz (1):
ARM i.MX6SL: Add Kindle generation 6/7 support
Alexander Shiyan (2):
commands: truncate: improve help text clarity
commands: truncate: fix multiple file handling with relative sizes
Bruno Knittel (2):
ARM: socfpga: arria10-reset-manager: release UART0
ARM: socfpga: arria10-init: setup uart earlier
Chali Anis (3):
treewide: rename remnants of struct device_d
pci: pci-tegra: fix null pointer assignation.
blspec: derive root prefix from blspec config path instead of mountpoint
Enrico Jörns (3):
state: helpful error message if state GUID cannot be found
block: don't error while flushing when write support is disabled
bootchooser: clarify error message for disabled barebox-state
Fabian Pflug (4):
block.h: renamed get_rootargs to get_root
fs: split rootargs into root and options
bootm: use new api to get kernel command line params
bootm: introduce bootm.root_param variable
Jan Luebbe (1):
boards: qemu-virt: disable system1 in state by default
Jonas Rebmann (3):
lib: base64: Fix out-of-bounds potential by respecting dst_len
test: self: add base64 selftests
ci: coverity: Run monthly, on branch next
Maud Spierings (2):
net: designware-imx: don't set txclk when mode is (r)mii
ARM: i.MX8M: Fix the RAM size calculation for DDR3
Michael Grzeschik (11):
include: linux: ioport.h: port resource_set_range from linux
simplefb-fixup: depend res fields on root size-cells and addr-cells
simplefb-fixup: add reserved memory-region entry for the
simple-framebuffer
simple-panel: parse for bus-format of the panel
video: fsl-ldb: add ported driver from linux kernel
video: lcdif_drv: add ported driver from linux
soc: imx: imx93: add ported source driver for pmdomain from linux
pmdomain: imx: imx93-blk-ctrl: add ported driver from linux
arm: dts: imx93: Add LCDIF & LDB nodes
clk: imx: clk-fracn-gppll: Add 355.6MHz config for video pll
clk: imx: clk-fracn-gppll: Add 135MHz config for video pll
Rouven Czerwinski (1):
Documentation: imx8mq-evk: warn for EVKB variant
Sascha Hauer (68):
dts: update to v6.18-rc5
k3: add keywriter lite support
dts: update to v6.18-rc7
test: tlv: fix memory leak
test: ramfs: close opened directory
commands: oftree: fix memory leak
bootargs: fix memory leak
fs: free inode->i_link
driver: call devinfo_del() during free_device_res()
driver: call free_device_res() from unregister_device()
dm: fix memory leak
nvmem: k3: add fuse support
ARM: K3: am62l: don't put sysfwdata into 1st stage image
ARM: k3: make some firmware files SoC specific
ARM: k3: am62l: Add dedicated config option for OP-TEE
ARM: k3: am62l: fix dependencies on k3img input files
driver: implement get_free_deviceid_from()
nvmem: fix device name setting
driver: fix device name clashes
eeprom: at24: reserve EEPROM names which have an alias
dts: update to v6.18
partitions: gpt: allow to create barebox state partitions
ARM: i.MX Riotboard: Use eMMC boot partition to boot
fs: get path in path_init()
fs: warn when mount reference count becomes negative
test: dirfs: use ramfs rather than devfs
ARM: i.MX8MM EVK: refactor early startup
ARM: i.MX8MN EVK: refactor early startup
fs: devfs-core: add devfs_create_link_node()
storage-by-alias: drop fake cdev
fs: implement mknod
commands: add mknod command
fs: ramfs: add device file support
cdev: add cdev_size() helper
fs: fix st_size for device files
fs: retire devfs as filesystem
fs: include cdevname in struct stat
fs: stat_print: get cdevname from stat
common: cdev-alias: rename struct
fs: replace cdev links with aliases
ls: use ~0 for FILE_SIZE_STREAM
partitions: gpt: pass epd context pointer to find_valid_gpt()
partitions: gpt: only write actual ptes size to device
partitions: gpt: factor out a function to write primary/alternate GPT
partitions: gpt: write inactive GPT first
partitions: gpt: fix GPT restauration from alternate GPT
clk: rockchip: rk3288: Drop CLK_NR_CLKS usage
dts: update to v6.19-rc1
partitions: gpt: refresh partition tables when necessary
of: replace of_alias_get_highest_id() with of_alias_get_free_id()
i2c: implement i2c_unregister_device()
eeprom: at24: unregister devices in error path
Merge branch 'for-next/arm' into next
Merge branch 'for-next/devfs' into next
Merge branch 'for-next/dts' into next
Merge branch 'for-next/efi' into next
Merge branch 'for-next/env' into next
Merge branch 'for-next/gpt' into next
Merge branch 'for-next/imx' into next
Merge branch 'for-next/k3' into next
Merge branch 'for-next/memleaks' into next
Merge branch 'for-next/misc' into next
Merge branch 'for-next/resource-walk' into next
Merge branch 'for-next/test' into next
Merge branch 'for-next/efi' into for-next/aa-efi-loader
Merge branch 'for-next/aa-efi-loader'
fs: tmpfile_create(): add missing mntget()
Release v2026.12.0
Sohaib Mohamed (3):
common: bbu: refactor flash operations into separate function
ARM: stm32mp: bbu: add NOR flash FIP update handler
ARM: stm32mp: add support for STM32MP157A Avenger96 board
Steffen Trumtrar (2):
ARM: i.MX8MP: skov: update variant-3 Rev.C
ARM: i.MX93: cpu_init: enable media+mlmix
zhengxiaojun (1):
mmc: resolve conflict between MMC_CAP_NONREMOVABLE and MMC_CAP_1_8V_DDR
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |