Fact-checked by Grok 2 weeks ago

Das U-Boot

Das U-Boot, commonly known as the Universal Boot Loader, is an open-source designed for systems, providing low-level initialization, diagnostic capabilities, and the ability to load operating systems such as on a wide range of architectures including , x86, and . Originating in 1999 as "8xxROM" for PowerPC-based systems developed by Wolfgang Denk at DENX Software Engineering, it evolved into PPCBoot and was later unified under the name Das U-Boot to support multiple processor architectures, becoming a for deployments. The project transitioned to an open-source model hosted on and later , where it is actively maintained by a global community of developers under the GNU General Public License version 2 (GPLv2). Key features of Das U-Boot include a (CLI) for interactive control, support for booting from various storage media and networks, and integration with Device Trees since to enable hardware-agnostic configurations and reduce codebase fragmentation across platforms. It also incorporates secure boot mechanisms, essential for (IoT) devices, to establish a by validating and integrity during the boot process. As of 2025, Das U-Boot remains the most widely adopted in , powering devices from to systems, with ongoing development ensuring compatibility with emerging standards.

Introduction

Overview and Purpose

Das U-Boot, also known as the Universal Boot Loader, is an open-source that serves as both a first- and second-stage for devices. It performs essential low-level hardware initialization tasks and loads operating systems, such as kernels, onto the target hardware. The primary purpose of Das U-Boot is to provide a flexible mechanism in resource-constrained environments, allowing systems to boot from various media types including flash storage, network, or removable devices. It supports interactive configuration through a (CLI), enabling users to inspect, modify, and troubleshoot the boot process in real-time. Key capabilities include broad multi-architecture support for processors such as , x86, , and PowerPC, making it adaptable to diverse hardware platforms. Das U-Boot achieves UEFI compliance through adherence to the Embedded Base Boot Requirements (EBBR) specification, facilitating standardized booting in modern embedded systems. Additionally, it integrates with device trees—a for describing hardware components—to enable portable and maintainable hardware configurations. Das U-Boot originated from PPCBoot and was initially released in October 1999 by DENX Software Engineering as a for PowerPC-based systems.

Licensing and Development

Das U-Boot is released under the GNU General Public License version 2 (GPLv2) or any later version, a that allows users to freely use, study, modify, and distribute the software, provided that any derivative works are also licensed under the same terms and the source code is made available. This licensing framework ensures the project's openness while requiring compliance with source disclosure for modifications, fostering collaborative development in systems. The project was initially developed by DENX Software Engineering, a company founded by Wolfgang Denk in 1999, who served as the primary coordinator for its early releases and growth into a standard for devices. Over time, maintenance has transitioned to a global open-source community, with contributions coordinated through the official at [email protected] and the primary Git repository hosted at source.denx.de/u-boot/u-boot.git, enabling and collaborative . Development follows a patch-based model typical of projects, where contributors submit changes via email to the for review and integration by maintainers, ensuring code quality and compatibility across supported . Releases are managed by a team of maintainers, including Simon Glass, who oversees merges and coordinates stable versions, such as the biannual updates that incorporate new features and fixes. This process emphasizes rigorous testing and documentation to support the project's evolution. In October 2025, the project joined the to provide legal protection, financial stability, and improved governance. The U-Boot community is vibrant and diverse, comprising developers from various organizations worldwide who contribute board ports, drivers, and enhancements. As of 2025, the project supports platforms from over 200 board manufacturers across multiple architectures like , PowerPC, and , with resources including active discussion forums on the mailing list and comprehensive documentation at docs.u-boot.org to aid contributors and users.

Core Functionality

Boot Process

The boot process of Das U-Boot begins with a , where the processor's executes initial code to load the first-stage , typically the Secondary Program Loader (SPL) in memory-constrained environments. The SPL performs essential early initialization, such as setting up the to enable SDRAM access, before loading the full U-Boot image into . This staged approach allows Das U-Boot to fit within limited on-chip while delegating more complex tasks to the second stage. Once the full U-Boot is loaded and relocated to for execution, it retrieves environment variables from persistent storage, such as , to configure the sequence. Key variables include bootcmd, which defines the automated command script executed after a configurable delay (defaulting to 2 seconds if no user input is detected), and bootargs, which specifies command-line parameters passed to the operating . These variables enable scripted booting, such as loading a image directly from storage or via network protocols like TFTP, and support fallback mechanisms to ensure reliability. In the core loading phase, U-Boot scans available boot devices—prioritized by variables like boot_targets (e.g., mmc0, usb, pxe)—to detect and load the image, often using formats like FIT (Flattened Image Tree) for bundled components including the , device tree, and initramfs. If a suitable bootflow is found, such as an extlinux configuration on a filesystem, U-Boot transfers to the by jumping to its after setting up necessary addresses and arguments. For , TFTP retrieves the image from a remote , providing flexibility in deployment scenarios. Failure handling during the boot process incorporates retry mechanisms, where U-Boot attempts subsequent boot devices or methods upon errors in scanning or loading, and supports timers to reset the system if hangs occur, preventing indefinite stalls. If all automated attempts fail or user intervention is detected during the boot delay, U-Boot enters an interactive command-line mode, allowing manual commands to diagnose and resume booting. This design ensures robustness in embedded systems with varying hardware reliability.

Hardware Initialization

Das U-Boot performs hardware initialization in a phased manner, beginning with minimal setup to enable basic operations and progressing to more comprehensive configuration. The process starts in the pre-relocation phase, handled primarily in the board_init_f() function within common/board_f.c, where essential components such as the CPU, clocks, reset controllers, and memory (including calibration) are initialized to allow code relocation. This phase also sets up the console via UART and performs architecture-specific low-level initialization, ensuring the system can execute further steps without external dependencies. Following relocation to upper memory, the post-relocation phase in board_init_r() from common/board_r.c expands on this foundation by initializing additional peripherals, including , I2C for inter-integrated circuit communication, UART for serial interactions beyond the console, and storage controllers like or to access boot media. Clocks are further tuned during this stage to optimize peripheral , while sequences ensure stable voltage rails for active components. These steps prepare the hardware for loading payloads, with the sequence triggered via initcall_run_list() to invoke registered initialization functions in a priority-ordered manner. Board-specific support is implemented through dedicated board files in the U-Boot source tree, typically under board/<vendor>/<board>/, which define configurations like pin multiplexing (pinmux) to route signals to appropriate peripherals, routines for enabling regulators and sequencing supplies, and sensor calibration parameters for components such as or voltage monitors. These files, often including functions like board_early_init_f() and board_init(), allow customization for diverse hardware variants without altering core U-Boot logic, ensuring portability across vendors. To handle multiple architectures, U-Boot employs abstractions in its initialization code, tailoring the sequence to the target platform. For ARM systems, this includes DDR (DRAM) initialization often in the SPL (Secondary Program Loader) stage to calibrate memory timings before full U-Boot execution. On x86, the process emulates BIOS-like behavior, initializing legacy hardware interfaces and memory mapping in a flat model. For RISC-V, initialization adheres to SBI (Supervisor Binary Interface) compliance, setting up the hart (hardware thread) states and trap handlers to interface with firmware like OpenSBI if present. This multi-architecture design uses conditional compilation and arch-specific directories (e.g., arch/arm/, arch/x86/, arch/riscv/) to invoke the appropriate low-level routines. Post-initialization diagnostics in U-Boot include built-in self-tests (BIST) for verifying hardware integrity, such as the mtest command for testing, which scans regions for errors using patterns like walking ones and zeros. Peripherals can undergo similar checks via driver-specific tests, often integrated into () routines configurable per board, ensuring faults in storage controllers or GPIO are detected before proceeding to boot. These tests run selectively to minimize boot time, focusing on critical components like and key peripherals.

Command-Line Interface

Das U-Boot provides an interactive (CLI) primarily accessed via a serial console, allowing users to debug, configure, and control the bootloader during runtime. Tools such as minicom on hosts are commonly used to connect to the , typically at baud rates like 115200, enabling direct interaction with the U-Boot after hardware initialization. The CLI supports a variety of built-in commands categorized by function, including information-gathering tools like bdinfo for displaying board details such as and clock speeds, and md for dumping contents at a specified . operations are handled by commands such as mw to write values to locations and cp to copy data between regions, facilitating low-level and data manipulation. Network-related commands include ping for connectivity testing and tftpboot for loading files over TFTP, essential for remote updates or loading. management is central to , with printenv displaying variables like boot parameters and setenv allowing modifications, such as setting bootargs for arguments; changes persist only after saving to via saveenv. commands like bootm load and execute from , supporting formats such as zImage or FIT images. Scripting in the CLI enhances , using shell parser (enabled via CONFIG_HUSH_PARSER) which supports Bourne-like syntax for conditional logic with if-then-else-fi constructs, loops via , , or until, and (e.g., var=value). Scripts are written as plain-text .cmd files containing sequences of CLI commands and control structures, then compiled to binary .scr format using the mkimage tool for execution with the source or run command; this allows automated tasks like conditional based on without interactive input. For example, a script might check a with if test $boot_source = "net" ; then tftpboot ... ; fi before loading a . Extensibility of the CLI is achieved by integrating custom commands directly into the source code using the U_BOOT_CMD macro in a new handler function, which registers the command structure for compilation into the ; this enables board-specific or vendor-added functionality, such as tools, while maintaining with the .

Supported Features

File Systems and Storage

Das U-Boot supports several file systems for accessing storage on block devices, enabling the loading of boot images, device trees, and other files during the boot process. The primary file systems include , which offers both read and write capabilities through configuration options like CONFIG_FS_FAT, allowing operations such as loading images from cards or eMMC devices. , , and are also compatible, with read-only access enabled via CONFIG_FS_EXT4 for basic file listing and loading, while full read-write support—covering features like extents and larger block sizes—has been available since 2012 (v2012.01), requiring additional configurations such as CONFIG_EXT4_WRITE for write operations. Other supported file systems include for raw flash (via CONFIG_FS_UBIFS), for NOR and flash (via CONFIG_FS_JFFS2), and for modern removable media (via CONFIG_FS_EXFAT). provides read-only support for optical media like CD-ROMs, useful for booting from ISO images in setups, though it is less commonly used in modern flash-based systems. Storage media access in Das U-Boot focuses on block devices commonly found in systems. (MMC) and (SD) cards, including eMMC variants, are handled via the mmc command, which supports initialization, reading, writing, and partitioning operations on these devices. and NOR flash memory are supported through dedicated commands: nand for raw access, including bad block management and erasure, and sf for SPI NOR flash, enabling probe, read, write, and erase functions. Partitioning schemes include both (MBR) via the mbr command for creating or verifying legacy layouts, and () through the part command, which allows listing, setting UUIDs, and managing partition details for larger modern storage. Key operations for file systems include fsload, a generic command that reads files from supported file systems into memory, setting the filesize for subsequent commands. Fstype detection is handled by the file system , which identifies the type (e.g., FS_TYPE_EXT or FS_TYPE_FAT) using functions like fs_get_type and fs_get_type_name, allowing automatic mounting without explicit specification. Support for dynamic partitions includes compatibility with resized file systems, such as those adjusted by host tools like resize2fs, provided the partition tables ( or MBR) are updated accordingly and U-Boot's block device drivers recognize the changes post-initialization. Limitations in file system handling stem from the bootloader's constrained environment. Early versions lacked full journaling support for /, leading to potential inconsistencies during writes without replay mechanisms, though modern implementations mitigate this via configurable journal entry limits (e.g., CONFIG_EXT4_MAX_JOURNAL_ENTRIES) at the cost of increased heap memory requirements for large partitions. Write operations on , in particular, demand substantial dynamic allocation—up to 128 MB for a 4 TB partition—to handle , restricting use on resource-limited devices. For large files, early U-Boot builds were confined to 32-bit addressing, but recent versions incorporate 64-bit LBA support (via CONFIG_LBA64), enabling access to files and partitions beyond 2 TB without fragmentation issues.

Boot Sources and Networking

Das U-Boot supports booting from multiple local sources, enabling flexible deployment in environments. Common local boot include SD cards, which are widely used for their portability and compatibility with development boards; drives for higher-capacity storage in systems with disk interfaces; and USB storage s, allowing quick loading without permanent installation. These sources typically involve loading images, device trees, or Flattened Image Tree (FIT) bundles directly into via commands like fatload or ext4load after detection. Additionally, raw booting from SPI NOR is supported for FIT images, where U-Boot reads the image directly from the flash without an intermediate , suitable for minimalistic or secure boot scenarios on resource-constrained . For network-based booting, Das U-Boot provides one-time boot capabilities via (PXE), which relies on DHCP to discover boot servers and retrieve configuration. The pxe command initiates this process by sending DHCP requests to obtain an , boot file name, and server details, followed by downloading the boot image using TFTP. This enables remote provisioning without local media, ideal for server farms or automated deployments. If DHCP fails, U-Boot falls back to older protocols like RARP for address resolution in legacy networks. The networking stack in Das U-Boot is built around protocols, providing essential functionality for boot-time operations without a full stack. It includes a DHCP client for dynamic assignment and configuration, with the dhcp command handling lease acquisition and optional image autoloading via TFTP. TFTP serves as the primary mechanism for transferring boot images, ramdisks, and device trees from a remote , using simple request-response exchanges over port 69. Diagnostic tools like the ping command allow basic connectivity testing to verify network reachability before transfers. For compatibility, BOOTP is supported as an alternative to DHCP for assignment in environments lacking DHCP servers, via the bootp command. RARP provides a fallback for address resolution when DHCP or BOOTP are unavailable. Das U-Boot has long supported tagging, including through environment variables like setenv vlan derived from protocols such as CDP, enabling operation on segmented networks without reconfiguration. Starting from v2024, it incorporates support, allowing PXE and TFTP operations over addresses alongside IPv4, with commands like dhcp adapting to dual-stack environments. These enhancements broaden compatibility with modern infrastructure while maintaining the bootloader's lightweight footprint. Security in Das U-Boot's networking is limited to basic checks, reflecting its focus on boot efficiency over comprehensive . TFTP transfers can be verified post-download using the md5sum command to compute and compare checksums against known values, ensuring image against transmission errors or tampering. However, no native support for full TLS or encrypted protocols exists, as the prioritizes UDP-based simplicity; users must rely on network-level or post-transfer validation for .

Device Tree and Configuration

Das U-Boot employs the Flattened Device Tree (FDT) as a standard mechanism for describing configurations, enabling a single to support multiple boards by providing runtime adaptability. The FDT is a of a hierarchical composed of and properties that detail system components, such as CPUs, regions, and peripherals like UARTs, I2C controllers, and devices. Each typically includes a "compatible" property to match drivers, along with attributes like "reg" for address ranges and "interrupts" for signal mappings, allowing U-Boot to instantiate and configure devices declaratively without hard-coded assumptions. This description is passed to the operating system during boot, ensuring consistency between and OS perceptions. In U-Boot's integration process, the Device Tree Blob (DTB)—the binary FDT file—is parsed at runtime using the libfdt library, which enables probing and modification of the tree to suit specific hardware. For board variants, U-Boot supports applying device tree overlays, which are supplemental DTBs that patch the base tree by targeting symbols and altering properties, such as enabling or disabling peripherals or adjusting pinmux settings. Overlays are compiled with the device tree compiler using the -@ flag to generate symbol information, then loaded and applied via commands like fdt apply ${fdtovaddr}, often within a Flattened Image Tree (FIT) for automated handling. U-Boot further modifies DTB properties as needed, for instance, updating the "fdt" address cell to reflect relocation after memory initialization, ensuring the kernel receives an accurate, tailored hardware map. This process allows dynamic adaptation without rebuilding the firmware for minor hardware differences. Board-specific configurations in U-Boot are managed through files in the include/configs/ directory, which define macros for hardware details like memory layouts and boot parameters, often included via Kconfig selections. The Kconfig system, introduced in U-Boot version 2014.10, facilitates feature selection—including device tree support—through declarative menu options in Kconfig files, generating a board's defconfig (e.g., via make <board>_defconfig) that produces headers like include/configs/<board>.h for compilation. Options such as CONFIG_OF_CONTROL enable FDT usage, while board Kconfig entries specify default DTB files or overlay paths, streamlining customization for diverse platforms. The device tree compiler (dtc) is integral to this workflow, converting human-readable Device Tree Source (.dts) files into compact DTB binaries suitable for embedding or loading. U-Boot includes dtc as a build-time , sourced from the upstream , allowing developers to compile base trees, overlays, or custom DTBs with commands like dtc -I dts -O dtb -o output.dtb input.dts; advanced builds may use make dtbs to generate multiple variants. This ensures the FDT remains synchronized with hardware changes, with U-Boot optionally embedding a default DTB via CONFIG_OF_EMBED or loading external ones for flexibility.

Development and Configuration

Source Code and Build Process

The source code for Das U-Boot is hosted in a repository maintained by the DENX team, accessible via git clone [https](/page/HTTPS)://source.denx.de/u-boot/u-boot.git. A mirror is also available on at ://github.com/u-boot/u-boot. The repository follows a modular directory structure to organize code across architectures, boards, and functionalities. Key top-level directories include /arch, which contains architecture-specific files such as CPU initialization and low-level code for supported platforms like (/arch/arm), x86 (/arch/x86), and (/arch/riscv); /board, housing vendor- and board-specific implementations including preloader code and hardware initialization routines; /cmd, implementing the built-in command-line commands like bootm for booting images and printenv for environment variables; /drivers, providing modular drivers for peripherals such as GPIO, I2C, USB, and network interfaces; and /include, storing common header files, configuration macros, and definitions shared across the codebase. This organization facilitates portability and maintainability, allowing developers to extend support for new hardware by adding or modifying files in relevant directories. Das U-Boot employs a Kbuild-based build system, inspired by the , which relies on Make to orchestrate compilation, linking, and assembly. Cross-compilation is essential for most targets and is enabled by setting the CROSS_COMPILE to the prefix of the target toolchain, such as arm-linux-gnueabi- for architectures using . The build process produces primary output files including u-boot.bin, a flat suitable for direct flashing to ROM or , and optionally u-boot-nodtb.bin without device tree data. For systems requiring a staged , the Secondary Program Loader (SPL) variant generates spl/u-boot-spl.bin, a compact initial loader that handles early hardware setup before transferring control to the full U-Boot image. This SPL approach is particularly used on low-memory boards where the main U-Boot image exceeds initial constraints. To build Das U-Boot from source, developers first clone the repository and navigate to the root directory. Configuration is performed using make <board>_defconfig, where <board> specifies a supported board or SoC variant (e.g., am335x_evm_defconfig for TI AM335x evaluation modules), which generates a tailored .config file from predefined Kconfig options. Compilation follows with make, optionally prefixed with CROSS_COMPILE=<toolchain-prefix>- and ARCH=<architecture> for cross-builds (e.g., make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-). The process outputs the necessary binaries in the root and spl/ directories, ready for flashing via tools like JTAG, TFTP, or vendor-specific programmers. For debugging, options like V=1 enable verbose output to trace the build steps. Building Das U-Boot requires several host dependencies to ensure compatibility and functionality. A GCC-based cross-compiler matching the target architecture is mandatory, along with (version 4.2 or later) and binutils for assembling and linking. U-Boot uses its bundled (dtc) for compiling device tree source (DTS) files into flattened device tree (FDT) binaries used in and description. (version 3.4.2 or later) may be needed for parsing certain configurations, while 3 is required for scripts in the build system. On low-memory boards utilizing SPL, the build automatically detects and incorporates the SPL stage if enabled in the configuration.

Customization Options

Das U-Boot supports extensive customization to adapt it to specific platforms or functional requirements, primarily through compile-time configurations and board-specific adaptations. For to new or unsupported boards, developers add a board-specific defconfig file, which defines initial options tailored to the hardware, such as type and memory layout. This is typically created by starting with an existing defconfig for a similar board and modifying it using tools like [make menuconfig](/page/Menuconfig) followed by make savedefconfig to generate a minimal stored in the board's directory. Additionally, Device Tree Source (DTS) files are integrated to describe the hardware topology, while driver patches are applied to enable support for custom peripherals, ensuring compatibility with the board's and interfaces. These steps allow U-Boot to initialize and boot on diverse systems without altering the core . Feature toggles in Das U-Boot are managed via the Kconfig system, which uses CONFIG_ prefixed macros to enable or disable subsystems, commands, and drivers at build time. For instance, CONFIG_CMD_NET enables networking commands like tftp and ping, while other options such as CONFIG_CMD_I2C activate I2C-related functionality. Developers interact with these options through the menuconfig interface, accessed via make menuconfig, which provides a menu-driven way to select features based on dependencies and hardware needs, generating a .config file that integrates with the build process. This modular approach allows tailoring U-Boot's footprint and capabilities, such as including support for specific file systems or boot protocols, without including unnecessary code. Environment customization permits setting default boot variables and behaviors through text-based configuration files, enhancing flexibility for deployment. The default environment is defined in a .env file (or equivalent, based on CONFIG_ENV_SOURCE_FILE), located in the board directory, which specifies variables like bootcmd for boot scripts or ethaddr for network addresses in a simple var=value format, supporting includes for shared settings across variants. For secure boot scenarios, images can be signed using cryptographic tools to create verified boot FIT (Flattened Image Tree) images, where a private key signs the payload and a public key verifies integrity during loading, preventing unauthorized modifications. This is configured via options like CONFIG_FIT_SIGNATURE and integrated into the build to produce signed binaries for trusted execution environments. Debugging capabilities are customized by enabling specific CONFIG options to facilitate and on target hardware. The CONFIG_DEBUG_UART option provides early serial output before the full console is initialized, using a dedicated UART base address (e.g., CONFIG_DEBUG_UART_BASE) to print diagnostic messages via during stages like SPL. For more advanced tracing, options like CONFIG_LOG enable a system with levels (e.g., CONFIG_LOG_MAX_LEVEL) to output debug traces from drivers and subsystems, aiding in identifying issues without external debuggers. These features are selected in and help developers iterate on custom ports efficiently.

History

Origins and Evolution

Das U-Boot originated as the 8xxROM bootloader, developed by Magnus Damm in 1999 specifically for PowerPC 8xx embedded systems. This initial project focused on providing a compact, reliable firmware for initializing hardware and loading operating systems on Motorola's MPC8xx processors, which were popular in industrial and networking applications at the time. In October 1999, Wolfgang Denk, founder of DENX , relocated the codebase to and renamed it PPCBoot to comply with the platform's naming rules, which prohibited numeric prefixes. By 2000, PPCBoot had released its first versions, such as PPCBoot-0.4.1 in July, emphasizing portability across PowerPC variants. Early expansions included multi-board support by the end of 2001 with PPCBoot-1.1.3, enabling compatibility with diverse hardware like MPC8240, MPC8260, 4xx, and 63xx series CPUs across multiple vendor boards. Throughout this period, the project maintained a strong focus on seamless integration with the , handling low-level hardware setup, memory configuration, and kernel parameter passing to facilitate embedded deployments. The transition to Das U-Boot occurred in November 2002, when PPCBoot-2.0.0 was merged with ARMBoot and renamed U-Boot-0.1.0 to reflect its broadening architecture support beyond PowerPC, including initial x86 and compatibility. This renaming, incorporating the article "" for "the," underscored its evolution into a bootloader. As an open-source project under the GPL from its SourceForge inception, it rapidly attracted a growing of developers, leading to the first stable release, U-Boot-1.0.0, in 2003, which solidified its role in embedded systems booting. The project later transitioned from SourceForge's CVS to a repository around 2012, hosted initially on a DENX server and later mirrored on , enhancing collaborative development.

Major Releases and Milestones

Das U-Boot adopted a quarterly release schedule in 2014, with each major version named according to the release year and month (e.g., vYYYY.MM), typically issued on the of the target month following a 21-day merge window and release candidate previews shared via the project's mailing lists. Changelogs and statistics for each release are generated using tools like gitdm, detailing contributions, lines of code changed, and developer involvement. Early significant releases included v2010.06 in June 2010, which introduced the Secondary Program Loader (SPL), a minimal initial loader designed to initialize memory and load the full U-Boot image on resource-constrained embedded systems. In April 2014, v2014.04 added the sandbox architecture, enabling U-Boot to run as a native application on x86 Linux hosts for testing and development without physical hardware. More recently, v2023.01 in January 2023 brought enhancements to RISC-V support, including improved boot flow handling and device tree integration for broader compatibility with RISC-V platforms. The latest release, v2025.10 on October 6, 2025, included Python tooling improvements, resynchronization of device trees with Linux v6.16-dts, and support for new RISC-V platforms. Key milestones in the project's include the first stable release in 2003. By May 2004, U-Boot supported products from 216 board manufacturers across various architectures, reflecting early widespread adoption. Post-2023 releases have emphasized patches, such as mitigations for known overflows and enhancements, alongside optimizations for ARM64 architectures, including faster initialization for high-core-count systems.

Applications

Embedded Systems and Devices

Das U-Boot serves as a foundational bootloader in diverse embedded hardware ecosystems, enabling reliable initialization and operating system loading for resource-constrained devices. In Internet of Things (IoT) applications, it initializes peripherals and storage on compact modules like the CompuLab IOT-GATE-iMX8 Plus, facilitating secure boot processes in connected sensors and gateways. Network routers, such as those from GL.iNet, leverage Das U-Boot for firmware recovery and multi-stage booting, ensuring robust handling of network interfaces and storage media during power-on. Single-board computers (SBCs), often positioned as alternatives to the , integrate Das U-Boot to support flexible prototyping and deployment; for instance, Khadas SBCs like the VIM3 utilize it for mainline booting on architectures. In automotive electronic control units (ECUs), it provides essential low-level hardware setup on processors like the AM62x, which targets automotive and industrial applications requiring deterministic boot sequences. As the default bootloader, Das U-Boot integrates seamlessly with embedded Linux build systems, including the for customizable ARM-based images and for efficient cross-compilation of minimal systems. It also supports booting -based platforms, such as legacy Android Things deployments on ARM devices, through standardized boot image handling. Key advantages of Das U-Boot in these contexts include its small , often under 1 MB when configured minimally, allowing deployment on devices with limited and storage. The Secondary Loader (SPL) component enables sub-second boot times by performing essential hardware initialization before handing off to the full , optimizing for requirements. Its cross-platform portability stems from support for multiple architectures like , PowerPC, and , with design principles emphasizing rapid builds and . Vendor adoption is extensive, with Das U-Boot backing hardware from over 200 manufacturers through community-maintained board ports; prominent examples include NXP's i.MX series, where pre-built U-Boot images are provided in processor SDKs for rapid prototyping. Texas Instruments similarly offers pre-built binaries in its Processor SDK Linux for Jacinto and Sitara families, streamlining integration in automotive and industrial ECUs.

Notable Projects and Integrations

Das U-Boot has been integrated into the avionics software stack of 's rocket, serving as a universal for embedded systems on microcontrollers and microprocessors throughout the vehicle. This usage was publicly disclosed in 2020 during discussions by the software engineering team. The project features a custom port of Das U-Boot tailored for Macs, enabling booting on devices such as the and series starting from 2022. This port leverages device tree overlays to handle initialization specific to Apple's ARM-based SoCs, allowing U-Boot to chainload from the m1n1 first-stage developed by the project. Official documentation details the build and installation process, emphasizing its role in providing a flexible secondary for open-source operating systems on these platforms. In x86 environments, Das U-Boot serves as a for firmware, replacing traditional / stages on supported boards like and Alder Lake-based systems. This integration allows U-Boot to handle post- initialization, including booting of distributions, and has been tested on platforms such as emulations. For networking applications, extensively uses Das U-Boot as its primary for wireless routers and embedded gateways, providing rich configuration options for firmware flashing and recovery across various architectures. Similarly, OS incorporates Das U-Boot with verified boot support, utilizing the FIT image format to ensure secure chain-of-trust during startup on devices. Recent integrations highlight Das U-Boot's adaptability to modern and open hardware. On the 5, released in 2023, U-Boot provides an open-source alternative for custom development and Yocto-based embedded deployments, with upstream support including drivers for the RP1 southbridge and PCI peripherals. As of November 2025, provides full support including U-Boot for 5. For RISC-V platforms, the StarFive VisionFive 2 development board employs Das U-Boot to boot on its JH7110 SoC, managing initialization for the quad-core 64-bit processor and integrated peripherals like Ethernet and display outputs.

Security

Built-in Security Features

Das U-Boot incorporates secure boot capabilities to ensure the and of images loaded during the boot process. This is achieved through cryptographic using or ECDSA signatures on Flattened Image Tree (FIT) images, enabled by the CONFIG_FIT_SIGNATURE Kconfig option. Images are signed with a private key offline, and occurs at runtime using corresponding public keys embedded in the device tree () or stored in , preventing the execution of unauthorized or tampered code from the initial system reset. Multi-stage supports image chaining, where a master key verifies initial components, and secondary keys handle subsequent stages, facilitating secure updates. Verified boot extends beyond the to the operating via integration with dm-verity, which mounts signed root filesystems and detects any modifications by verifying hashes against expected values. This mechanism ensures that the entire boot chain, including the and , remains tamper-proof. For ARM-based utilizing TrustZone, Das U-Boot integrates with OP-TEE (Open Portable Trusted Execution Environment) to provide secure execution environments, particularly for handling variable services through the CONFIG_EFI_MM_COMM_TEE option, isolating sensitive operations from the main bootloader context. Additional protections include support for measured boot using TPM 2.0 (), where boot components are hashed and the results extended into the TPM's Platform Configuration Registers (PCRs) for attestation, configurable via relevant Kconfig options and device tree bindings. This feature, available in recent versions, enables remote of the boot process . Das U-Boot also achieves compliance with Secure Boot by verifying signatures of EFI images against stored certificates (PK, KEK, DB, DBX), with variables managed in tamper-resistant storage like RPMB partitions, aligning with 2.10 specifications and added progressively since around 2019. Environment variables, which store persistent , can be secured through AES-CBC when loaded from files, though this requires explicit configuration during image preparation. For early boot stages, options like CONFIG_SPL_FIT_SIGNATURE enable signature in the Secondary Program Loader (SPL), with keys specified in the device tree to harden the initial load phase.

Notable Vulnerabilities and Mitigations

In early 2025, multiple vulnerabilities were disclosed in Das U-Boot's handling of filesystems, which are commonly used for image parsing in embedded boot processes. Specifically, CVE-2025-26726 involves a in the SquashFS directory table parsing logic, while CVE-2025-26727 affects inode parsing, both potentially allowing memory corruption through crafted filesystems. These issues, identified by Threat Intelligence using AI-assisted analysis, were reported in February 2025 and addressed via upstream patches in Das U-Boot version 2025.04. Additionally, CVE-2024-57258, multiple integer overflows in memory allocation when processing crafted filesystems (disclosed in February 2025, with patches integrated in early 2025 releases such as v2025.01), could lead to heap corruption when processing malformed images. These flaws primarily impact systems booting from -based storage, such as certain development boards and devices. In August 2025, CVE-2025-45512 was disclosed, revealing a lack of signature verification in Das U-Boot v1.1.3, allowing attackers to install crafted firmware images and potentially bypass secure boot mechanisms in affected legacy systems. This issue affects older versions and was not applicable to modern releases. Earlier vulnerabilities include a stack-based buffer overflow in the network stack's IP packet defragmentation implementation, designated CVE-2022-30790, which enables arbitrary out-of-bounds writes via specially crafted fragmented packets. Disclosed in 2022 by NCC Group researchers, this issue affects U-Boot versions prior to 2022.07 and was mitigated in subsequent releases through improved bounds checking in the hole descriptor handling. For network-related denial-of-service (DoS) risks, CVE-2018-18439 exposes a buffer overflow in the TFTP client, allowing remote attackers to crash the bootloader by sending oversized packets from a malicious server; this was fixed in U-Boot 2018.09 and later via enhanced packet size validation. In 2020, CVE-2020-10648 permitted bypassing verified boot protections by supplying a crafted Flattened Image Tree (FIT) image, potentially allowing arbitrary code execution during boot; it was resolved in U-Boot 2020.04 with stricter image validation. Mitigation strategies for these vulnerabilities emphasize upstream patching, where the U-Boot project integrates fixes directly into release candidates, such as v2025.01-rc1 for the issues and v2023.10 for accumulated fixes. Linux distributions and embedded vendors often employ version pinning to enforce secure releases, avoiding unpatched older variants in builds. Scanning tools, including fuzzers like ForAllSecure's , have been instrumental in uncovering these flaws by generating malformed inputs for filesystem and parsers; U-Boot itself supports builds via its documentation for automated testing of commands and loaders. No widespread exploits of these vulnerabilities have been reported as of November 2025, with impacts largely confined to environments and custom systems where boot or loading is enabled.

References

  1. [1]
    About Das U-Boot
    Das U-Boot, or the Universal Boot Loader, originated in 1999 as “8xxROM” for PowerPC systems. Under Wolfgang Denk, it transitioned to SourceForge as PPCBoot.
  2. [2]
    U-Boot - DENX Software Engineering
    Jul 30, 2021 · U-Boot is a bootloader for Embedded Linux, a de-facto standard, and is considered a rich, flexible, and actively developed open source  ...
  3. [3]
    u-boot/u-boot: "Das U-Boot" Source Tree - GitHub
    This directory contains the source code for U-Boot, a boot loader for Embedded boards based on PowerPC, ARM, MIPS and several other processors.Projects · Releases · Pull requests 217 · Actions
  4. [4]
    UEFI on U-Boot — Das U-Boot unknown version documentation
    The implementation of UEFI in U-Boot strives to reach the requirements described in the “Embedded Base Boot Requirements (EBBR) Specification - Release v2.Missing: compliance | Show results with:compliance
  5. [5]
    Devicetree Control in U-Boot
    This feature aims to make it possible for a single U-Boot binary to support multiple boards, with the exact configuration of each board controlled by a ...
  6. [6]
    Obtaining the source — Das U-Boot unknown version documentation
    The source of the U-Boot project is maintained in a Git repository. You can download the source via git clone https://source.denx.de/u-boot/u-boot.git
  7. [7]
    Sending patches — Das U-Boot unknown version documentation
    For a patch that is fixing a bug or regression of some sort, please use the master branch of the mainline U-Boot git repository located at https://source.denx.
  8. [8]
    Board-specific doc — Das U-Boot unknown version documentation
    No readable text found in the HTML.<|separator|>
  9. [9]
    Booting from TPL/SPL — Das U-Boot unknown version documentation
    U-Boot typically goes through the following boot phases where TPL, VPL, and SPL are optional. While many boards use SPL only few use TPL.
  10. [10]
    Environment Variables - The U-Boot Documentation
    U-Boot supports user configuration using environment variables which can be made persistent by saving to persistent storage, for example flash memory.Missing: stages | Show results with:stages
  11. [11]
    Standard Boot Overview - The U-Boot Documentation
    Standard boot provides a built-in way for U-Boot to automatically boot an Operating System without custom scripting and other customisation.
  12. [12]
    U-Boot overview - stm32mpu - ST wiki
    Das U-Boot ("the Universal Boot Loader" or U-Boot) is an open-source bootloader that can be used on STMicroelectronics boards to initialize the platform and ...Das U-Boot · U-Boot overview · U-Boot command line interface...<|control11|><|separator|>
  13. [13]
    Board Initialisation Flow - The U-Boot Documentation
    This is the intended start-up flow for boards. This should apply for both xPL and U-Boot proper (ie they both follow the same rules).Missing: hardware | Show results with:hardware
  14. [14]
    Boot process - Embedded Artists Developer Site
    In order to do this the U-Boot has to do some initial hardware initialization such as basic processor (CPU) setup, initialize clocks and timers, initialize ...
  15. [15]
    Pinctrl and Pinmux - The U-Boot Documentation
    This function is necessary for parsing the “pinmux” property in DTS, and for pin-muxing against a pinmux group.Missing: management | Show results with:management
  16. [16]
    How to configure U-Boot for your board - stm32mpu - ST wiki
    Many existing ressources explain the porting of U-Boot on a new board. This article only provides basic guidelines for STM32 Arm® Cortex® MPUs .Missing: pinmux | Show results with:pinmux
  17. [17]
    x86 — Das U-Boot unknown version documentation
    This document describes the information about U-Boot running on x86 targets, including supported boards, build instructions, todo list, etc.
  18. [18]
    RISC-V — Das U-Boot unknown version documentation
    This document outlines the U-Boot boot process for the RISC-V architecture. RISC-V is an open-source instruction set architecture (ISA) based on the principles ...Missing: multi | Show results with:multi
  19. [19]
    How can I test the RAM for data corruption on an ARM-based system?
    May 17, 2012 · To test the memory with uboot (it is much smaller than the linux kernel) have a look at the integrated mtest command. It allows you to specify ...
  20. [20]
    SK-AM62: How to enable Power-On Self Test (POST) - TI E2E
    May 16, 2023 · Also, I want to test the peripherals in uboot. For the memory test, I have done the mtest in uboot and the memtester in kernel. Are there any other tests I ...Power-On-Self-Test(POST) RAM memory before loading u-bootLinux/AM5728: 4GB DDR test from U-boot - Processors forum - TI E2EMore results from e2e.ti.com
  21. [21]
    U-Boot Design Principles
    At the moment, U-Boot supports boards with just 128 KiB ROM or with 256 KiB NOR flash.
  22. [22]
    Use U-Boot — Das U-Boot unknown version documentation
    U-Boot can be used for booting from TPL/SPL, block maps, device firmware upgrades, environment variables, device tree overlays, and command-line parsing.Missing: interface | Show results with:interface
  23. [23]
    Using Minicom {linux host}: uboot terminal will not open when ...
    Sep 8, 2023 · 1- turn on the board while the serial debug is connected to a host computer. 2-minicom -D /dev/ttyUSB0 command on the host computer. 3-while the ...Missing: Das CLI
  24. [24]
    [PDF] U-Boot Reference Manual | Digi International
    4.1 Overview​​ U-Boot has a set of built-in commands for booting the system, managing memory, and updating an embedded system's firmware. By modifying U-Boot ...
  25. [25]
    Environment Variables — Das U-Boot unknown version documentation
    ### Summary of Environment Variables, printenv, setenv, and CLI Configuration in U-Boot
  26. [26]
    Command-line Parsing - Hush shell - The U-Boot Documentation
    There are two different command-line parsers available with U-Boot: the old “simple” one, and the much more powerful “hush” shell.Missing: interface | Show results with:interface
  27. [27]
    for command — Das U-Boot unknown version documentation
    The for command is used to loop over a list of values and execute a series of commands for each of these. The counter variable of the loop is a shell variable.
  28. [28]
    Implementing shell commands - The U-Boot Documentation
    Commands are added to U-Boot by creating a new command structure. This is done by first including command.h, then using the U_BOOT_CMD() or the U_BOOT_CMD_ ...
  29. [29]
    Implement custom u-boot command - Stack Overflow
    Mar 29, 2020 · I want to add custom command command to u-boot be it a simple hello world command. After searching I found this link Yocto u-boot Custom Commands.
  30. [30]
    fatload command — Das U-Boot unknown version documentation
    The fatload command is used to read a file from a FAT filesystem into memory. You can always use the load command instead.
  31. [31]
    Ext4 File System — Das U-Boot unknown version documentation
    Overview. U-Boot supports access of both ext2 and ext4 filesystems, either in read-only mode or in read-write mode.
  32. [32]
    Reading from ISO9660 in U-Boot
    ... U-Boot need an ISO9660-filesystem driver for that? Is there any other way? > > > > With Debian I can see the actual files (linux and initrd) ...<|separator|>
  33. [33]
    mmc command — Das U-Boot unknown version documentation
    The mmc command is used to control MMC(eMMC/SD) device. The 'mmc info' command displays information (Manufacturer ID, OEM, Name, Bus Speed, Mode, ...) of MMC ...Missing: NAND | Show results with:NAND
  34. [34]
    sf command — Das U-Boot unknown version documentation
    The sf command is used to access SPI flash, supporting read/write/erase and a few other functions. Probe . The flash must first be probed with sf probe before ...
  35. [35]
    mbr command — Das U-Boot unknown version documentation
    The mbr command lets users create or verify the MBR (Master Boot Record) partition layout based on the provided text description.
  36. [36]
    part command — Das U-Boot unknown version documentation
    The `part` command manages disk partition commands, including setting UUID, listing partitions, start, size, number, type and type UUID.
  37. [37]
    File system API — Das U-Boot unknown version documentation
    Returns filesystem type representing the current filesystem, or FS_TYPE_ANY for any unrecognised filesystem.
  38. [38]
    Filesystems in U-Boot
    Jun 28, 2025 · U-Boot supports a fairly wide variety of filesystems, including ext4, ubifs, fat, exfat, zfs, btrfs. These are an important part of bootloader functionality.Missing: Das CONFIG_FS
  39. [39]
    Embedded Handbook/Bootloaders/Das U-Boot - Gentoo Wiki
    Aug 23, 2025 · Aside from a few odd/legacy boards, most of the current device support in u-boot should follow the Linux kernel devicetree and u-boot driver ...
  40. [40]
    PXE Boot and extlinux.conf - The U-Boot Documentation
    This allows U-Boot based systems to be controlled remotely using the same PXE based techniques that many non U-Boot based servers use. The sysboot command and ...
  41. [41]
    PXE Bootmeth — Das U-Boot unknown version documentation
    The file is retrieved from a network server using the TFTP protocol. When invoked on a bootdev, this bootmeth searches for the file and creates a bootflow ...
  42. [42]
    Ethernet Driver Guide — Das U-Boot unknown version documentation
    The networking stack in Das U-Boot is designed for multiple network devices to be easily added and controlled at runtime. This guide is meant for people who ...
  43. [43]
    [PATCH v5 09/19] net: ipv6: Incorporate IPv6 support into u-boot net ...
    Dec 2, 2022 · [PATCH v5 09/19] net: ipv6: Incorporate IPv6 support into u-boot net subsystem. Viacheslav Mitrofanov v.v.mitrofanov at yadro.com
  44. [44]
    TDA4VM: VLAN configuration for eth0 interface in u-boot - TI E2E
    Since setting VLAN in device tree is not supported will the setenv vlan command work in u-boot? If yes will it work without any issues with the flashing of ...Missing: Das | Show results with:Das
  45. [45]
    U-Boot md5sum command - Technical Support - Toradex Community
    May 2, 2018 · In the Toradex u-boot version the command for md5sum calculation is disabled (refer to CONFIG_CMD_MD5SUM ). Is there a reason which prevents me from enabling ...Missing: Das networking security TFTP
  46. [46]
    Compiled-in Device Tree / Platform Data - The U-Boot Documentation
    Device tree is the standard configuration method in U-Boot. It is used to define what devices are in the system and provide configuration information to these ...
  47. [47]
    Device Tree Overlays — Das U-Boot unknown version documentation
    Device tree overlays manipulate symbols from previous device trees, using a different syntax. They can be applied in U-Boot automatically or manually.
  48. [48]
    Kconfig in U-Boot
    Das U-Boot · Develop U-Boot; Kconfig in U-Boot; View page source ... Now we have too many defconfig files compared with the number of the supported boards.
  49. [49]
    Directory hierarchy — Das U-Boot unknown version documentation
    Directory path. Usage. /arch. Architecture-specific files. /arch/arc. Files relating to ARC architecture. /arch/arm. Files relating to ARM architecture.
  50. [50]
    Building with GCC — Das U-Boot unknown version documentation
    For building U-Boot you need a GCC compiler for your host platform. If you are not building on the target platform you further need a GCC cross compiler.
  51. [51]
    Best Practices for Board Ports - The U-Boot Documentation
    Best Practices for Board Ports · Implement Standard Boot to ensure that most operating systems will be supported by the platform. · The platform defconfig file ...
  52. [52]
    System configuration — Das U-Boot unknown version documentation
    ### Summary of Kconfig Usage, CONFIG_ Options, and menuconfig in U-Boot
  53. [53]
    U-Boot Verified Boot — Das U-Boot unknown version documentation
    Verified boot uses cryptographic algorithms to 'sign' software images. Images are signed using a private key known only to the signer, but can be verified using ...
  54. [54]
    Logging in U-Boot — Das U-Boot unknown version documentation
    The following options are used to enable logging at compile time: CONFIG_LOG - Enables the logging system. CONFIG_LOG_MAX_LEVEL - Max log level to build ...Missing: Kconfig menuconfig<|separator|>
  55. [55]
    StarFive VisionFive2 — Das U-Boot unknown version documentation
    To enable the debug UART in SPL, too, use the following settings: CONFIG_DEBUG_UART=y CONFIG_DEBUG_UART_NS16550=y CONFIG_DEBUG_UART_BASE=0x10000000 ...Missing: options | Show results with:options
  56. [56]
    Introduction to Das U-Boot, the universal open source bootloader
    Aug 29, 2004 · U-Boot has its origins in the 8xxROM project, a boot loader for 8xx PowerPC systems by Magnus Damm. When bringing that project to Sourceforge in ...
  57. [57]
    [PDF] U-Boot from Scratch - Fosdem
    Current name is termed as Das U-Boot. ➔. Flexible and opensource bootloader ... ML: u-boot@lists.denx.de. ➔. IRC: #u-boot. ➔. Lin: https://www.linkedin ...
  58. [58]
    The Universal Boot Loader (“Das U-Boot”) - Emblogic
    Nov 2002: PPCBoot-2.0.0 (last release of PPCBoot) (PPC: 8xx, 824x, 826x, 7xx, 74xx, 4xx; ARM: StrongARM, ARM7, ARM9, XScale; >106 boards) => Start U-Boot ...
  59. [59]
    Das U-Boot: Universal Boot Loader - GitHub
    Jun 23, 2016 · Das U-Boot (or just U-Boot for short) is an open source, primary boot loader used in embedded devices to package the instructions to boot the device's ...
  60. [60]
    Release Cycle — Das U-Boot unknown version documentation
    U-Boot v2026.01-rc1 was released on Mon 27 October 2025. Please note that the following dates are planned only and may be deviated from as needed ...Missing: initial | Show results with:initial
  61. [61]
    Release Statistics for U-Boot v2010.06
    Release Statistics for U-Boot v2010.06 · Processed 402 changesets from 100 developers · 31 employers found · A total of 42673 lines added, 22618 removed (delta ...Missing: SPL | Show results with:SPL
  62. [62]
    Sandbox — Das U-Boot unknown version documentation
    It starts up TPL (first-stage init), then VPL, then runs SPL and finally U-Boot proper, following the normal flow for a verified boot. At present, no ...
  63. [63]
  64. [64]
    U-Boot v2025.10 released - LWN.net
    Oct 6, 2025 · Version 2025.10 of the U-Boot boot loader has been released with new features, including Python tooling improvements, cleanups for implicit ...
  65. [65]
    GL.iNet: Important Notice of U-boot issue - Routers
    Apr 8, 2025 · This announcement addresses the startup failure and firmware recovery issues via U-Boot on the GL-MT2500/GL-X3000/GL-XE3000 devices.Missing: SBC | Show results with:SBC
  66. [66]
    AM62Px Platforms — Das U-Boot unknown version documentation
    The AM62Px is an extension of the existing Sitara AM62x low-cost family of application processors built for Automotive and Linux Application development.Boot Flow · Sources · Build Procedure
  67. [67]
    Yocto Project Board Support Package (BSP) Developer's Guide
    UBOOT_* : Defines various U-Boot configurations needed to build a U-Boot image. In this example, a U-Boot image is required to boot the BeagleBone device.Example Filesystem Layout · Developing a Board Support... · Requirements and...
  68. [68]
    The Buildroot user manual
    The make command will generally perform the following steps: download source files (as required);; configure, build and install the cross-compilation toolchain, ...Missing: Das | Show results with:Das
  69. [69]
    Android Bootmeth — Das U-Boot unknown version documentation
    Android boots from eMMC, requiring a valid partition table. It reads boot mode from misc partition, then reads kernel, boot arguments, and vendor ramdisk.
  70. [70]
    Boot time optimisation Apalis IMX8QM - Toradex Community
    Jun 4, 2024 · Review Early Boot Stages: Focus on optimizing the bootloader stages (SPL and U-Boot). ... Achieving sub-second boot times often requires ...
  71. [71]
    Board-specific doc - The U-Boot Documentation
    Das U-Boot. Board-specific doc; View page source. Board-specific doc . ACER ... Chromebook Samus · Highbank · Calxeda Highbank/Midway board support · HiSilicon.
  72. [72]
    i.MX8 Boot process and creating a bootable image - NXP Community
    Jan 19, 2024 · This document intends to provide an overview of the i.MX8 Boot process and walk you through the process of creating a bootable image.Solved: Re: uboot Unknown image format! - NXP CommunitySolved: Build bootable imx8qx-mek image - NXP CommunityMore results from community.nxp.com
  73. [73]
    3.1. U-Boot — Processor SDK Linux Automotive Documentation
    ... spl/u-boot-spl”. For AM654x, the symbol file is located in the following ... From release to release, the u-boot environemt variables may change ...
  74. [74]
    SpaceX Software: Not So Different From Everyday Apps | BlueLabel
    Jul 2, 2020 · Das U-boot. This is used as a universal boot loader for the embedded systems running on the MCUs and MPUs throughout the ship. Sometimes ...
  75. [75]
    Das U-Boot - Asahi Linux Documentation
    U-Boot is the default payload for m1n1 stage 2, and is used to provide a standard preboot environment familiar to AArch64 developers.
  76. [76]
    U-Boot for Apple Silicon Macs
    To enable the debug UART the base address needs to be adjusted and the CONFIG_DEBUG_UART option needs to be enabled. The table below gives the correct base ...
  77. [77]
    [OpenWrt Wiki] Das U-Boot
    Jan 1, 2024 · Das U-Boot is a universal, flexible, and actively developed bootloader. It can be loaded as a second stage or flashed as the main bootloader.
  78. [78]
    U-Boot - The Chromium Projects
    Das U-Boot is the boot loader used by Chromium OS on ARM. This page provide some basic information about our use of it. See the official U-Boot page for more ...
  79. [79]
    Using U-Boot on Raspberry Pi 5 with Yocto and OpenEmbedded
    Feb 9, 2025 · In this post, we will walk you through the steps to achieve this using the Yocto LTS release Scarthgap and the community-driven meta-raspberrypi BSP layer.
  80. [80]
    Measured Boot — Das U-Boot unknown version documentation
    U-Boot can perform a measured boot, the process of hashing various components of the boot process, extending the results in the TPM and logging the component's ...Missing: post- | Show results with:post-
  81. [81]
    UEFI SecureBoot in U-Boot | Blog - Linaro
    Sep 19, 2023 · UEFI SecureBoot is a verification mechanism ensuring that code launched by a computer's firmware is cryptographically verified.
  82. [82]
    VU#166743 - Das U-Boot AES-CBC encryption implementation ...
    Sep 8, 2017 · Das U-Boot's AES-CBC encryption feature uses a zero (0) initialization vector. This allows an attacker to perform dictionary attacks on encrypted data.
  83. [83]
    U-Boot FIT Signature Verification
    The signature feature allows the hash to be signed with a private key such that it can be verified using a public key later.