OpenWrt
1. Instruction of OpenWrt
OpenWrt: Wrt stands for Wireless router.
2. Different download methods
2.1. Select firmware for a specific hardware
You can search in Table of Hardware: Firmware downloads page to figure out if there are some specific firmware that can be used in your hardware.
2.2. Firmware selector and customized settings
In firmware-selector page, you can select a firmware and do some customized settings for the selector. Specifically, you can "Customize installed packages and/or first boot script".
In Expanding root partition and filesystem, it explains how to expand OpenWrt root partition and filesystem on x86 target.
The firmware-selector page can be used to pre-install packages into your customized firmware, simplifying the filesystem resizing process.
2.3. Stable release
In OpenWrt Downloads page, you can find the most recent release.
2.4. All releases
Skilled users can also select firmware in Index of (root) / releases page which contains all releases.
3. Different firmware variants
OpenWrt Downloads page https://downloads.openwrt.org/
There are many kinds of firmware, let's take x86_64 target as example, here is the firmware list extracted from this link:
generic-ext4-combined-efi.img.gz
generic-ext4-combined.img.gz
generic-ext4-rootfs.img.gz
generic-squashfs-combined-efi.img.gz
generic-squashfs-combined.img.gz
generic-squashfs-rootfs.img.gz
rootfs.tar.gz
Let's break down each of these OpenWrt image types, focusing on their purpose and typical use cases, particularly for the generic
(x86/x86-64) target.
All of these are compressed with gzip
(indicated by .gz
), so you'll need to decompress them first before writing to a disk or using in a VM.
3.1. generic-ext4-combined-efi.img.gz
generic-ext4-combined-efi.img.gz
Type: Combined disk image with an
ext4
root filesystem, designed for UEFI booting.Contents: Includes the OpenWrt kernel, bootloader (configured for UEFI), and the entire root filesystem formatted as
ext4
. It's a full disk image, meaning it contains partition tables and all necessary boot information.Characteristics:
Ext4 Root: The entire root partition is writable and formatted with
ext4
. This allows you to use the full capacity of your target disk (e.g., USB drive, SSD) for installing packages, storing logs, and other data. There's no separate read-only base.UEFI Boot: Configured to boot on modern systems that use UEFI firmware.
Combined: Self-contained and ready to be written directly to a raw disk.
Use Cases:
Preferred for modern x86 PCs/mini-PCs: If you're installing OpenWrt on a physical computer with UEFI firmware and want to utilize the full disk space for OpenWrt.
Virtual Machines (UEFI): Suitable for creating UEFI-based VMs in hypervisors that can import raw disk images (though specific VM formats like
.qcow2
are often more convenient).
How to Use: Decompress the
.gz
file. Then, usedd
(Linux/macOS) or a tool like Rufus/Win32 Disk Imager (Windows) to write the.img
file to a USB stick or an SSD. You'll boot your system in UEFI mode.
3.2. generic-ext4-combined.img.gz
generic-ext4-combined.img.gz
Type: Combined disk image with an
ext4
root filesystem, designed for BIOS (Legacy) booting.Contents: Similar to
generic-ext4-combined-efi.img.gz
, but the bootloader is configured for older BIOS (or Legacy BIOS compatibility mode on UEFI systems). It contains the kernel, bootloader, and anext4
root filesystem.Characteristics:
Ext4 Root: Full writable
ext4
root partition.BIOS Boot: Configured to boot on systems using traditional BIOS firmware.
Combined: Self-contained and ready to be written directly to a raw disk.
Use Cases:
Older x86 PCs/mini-PCs: For systems that only support BIOS booting.
Virtual Machines (BIOS): For creating BIOS-based VMs.
How to Use: Decompress the
.gz
file. Usedd
or a similar disk imager tool to write the.img
file to your target disk. Boot your system in BIOS mode.
3.3. generic-ext4-rootfs.img.gz
generic-ext4-rootfs.img.gz
Type: Raw image containing only the
ext4
root filesystem.Contents: This file is literally just the
ext4
filesystem. It does not include the kernel, bootloader, or partition tables.Characteristics:
Ext4 Root: Writable
ext4
filesystem.Not Bootable on its own: You cannot directly flash this to a disk and expect it to boot. It's just a filesystem partition image.
Use Cases:
Custom Installations: When you want to manually create partitions, install your own bootloader (like GRUB), and then place the OpenWrt root filesystem onto one of those partitions.
Chroot Environments: For setting up an OpenWrt environment within an existing Linux system.
Disk Image Modification: If you're building a custom disk image and want to inject a pre-made root filesystem.
How to Use: Typically, you would write this image to a pre-existing partition after manually setting up the kernel and bootloader on another partition.
3.4. generic-squashfs-combined-efi.img.gz
generic-squashfs-combined-efi.img.gz
Type: Combined disk image with a
SquashFS
root filesystem and an overlay, designed for UEFI booting.Contents: Includes the kernel, UEFI bootloader, the read-only
SquashFS
partition, and a small writable partition (oftenext4
on x86, used as the OverlayFS upper layer).Characteristics:
SquashFS Root with OverlayFS: The base system is read-only
SquashFS
for robustness and compression. All your changes and installed packages are stored in a separate, writable overlay (which isext4
on x86 generic targets).OverlayFS
merges these two."Factory Reset" Capable: You can easily revert to the original OpenWrt state by erasing the overlay partition.
UEFI Boot: Configured for UEFI systems.
Combined: Self-contained and ready to be written to a raw disk.
Use Cases:
Robust Installations: If you want the reliability and easy reset capabilities of the standard OpenWrt setup on a modern x86 machine.
Test Environments: Great for testing configurations, as you can easily reset if something goes wrong.
VMs (UEFI): Suitable for UEFI-based VMs if you prefer this filesystem layout.
How to Use: Decompress and write the
.img
file to your target disk usingdd
or a disk imager. Boot your system in UEFI mode.
3.5. generic-squashfs-combined.img.gz
generic-squashfs-combined.img.gz
Type: Combined disk image with a
SquashFS
root filesystem and an overlay, designed for BIOS booting.Contents: Similar to
generic-squashfs-combined-efi.img.gz
, but with a BIOS-compatible bootloader. It includes the kernel, BIOS bootloader,SquashFS
base, and writable overlay.Characteristics:
SquashFS Root with OverlayFS: Read-only base with writable overlay.
"Factory Reset" Capable: Easy to revert.
BIOS Boot: Configured for traditional BIOS systems.
Combined: Self-contained and ready for raw disk writing.
Use Cases:
Older x86 PCs/mini-PCs: For systems that only support BIOS booting, where you want the robust OpenWrt filesystem.
VMs (BIOS): For creating BIOS-based VMs if you prefer this filesystem layout.
How to Use: Decompress and write the
.img
file to your target disk. Boot your system in BIOS mode.
3.6. generic-squashfs-rootfs.img.gz
generic-squashfs-rootfs.img.gz
Type: Raw image containing only the
SquashFS
root filesystem (with the overlay mechanism assumed).Contents: Just the compressed, read-only
SquashFS
filesystem itself. No kernel, bootloader, or partition information.Characteristics:
SquashFS Root: The read-only SquashFS partition.
Not Bootable on its own: Like
generic-ext4-rootfs.img.gz
, this is not a bootable image directly.
Use Cases:
Custom Installations: For scenarios where you manually handle kernel loading and partition setup, then place this SquashFS onto a dedicated partition.
Building Custom Firmware: As a component in a more complex custom firmware build process.
How to Use: Requires advanced manual setup to integrate into a bootable system.
3.7. rootfs.tar.gz
rootfs.tar.gz
Type: A standard tar archive of the root filesystem.
Contents: Contains all the files and directories that make up the OpenWrt root filesystem, compressed into a tarball. It does not include the kernel, bootloader, or any disk-specific layout (like partition tables).
Characteristics:
Flexible Format: Can be extracted anywhere on a compatible Linux filesystem.
Not Directly Bootable: Cannot be directly booted from, as it lacks a kernel and bootloader.
Use Cases:
Chroot Environments: Excellent for creating an OpenWrt chroot environment within an existing Linux system for development or testing.
Manual Installations: For very specific, highly customized installations where you want to manually populate a partition with the OpenWrt files.
Containerization: As a base for OpenWrt in a container (e.g., LXC).
How to Use: Decompress (
tar -xzf rootfs.tar.gz
) and extract the contents to a target directory or partition. You would then need to manually configure the kernel and boot process to use this root filesystem.
3.8. summary
In summary:
combined.img.gz
files are for direct disk writing and booting. Chooseefi
for UEFI, noefi
for BIOS.ext4
gives you full disk writability.squashfs
gives you the robust, resettable OpenWrt overlay system.rootfs.img.gz
androotfs.tar.gz
are for advanced, manual, or custom setups.
For most users installing OpenWrt on a PC or VM, you'll likely want one of the combined
images, choosing ext4
for maximum flexibility or squashfs
for the traditional OpenWrt robustness, and matching efi
or non-efi
to your system's boot mode.
4. ext4 and SquashFS image types
4.1. SquashFS Image
For embedded devices with limited flash memory
SquashFS is a compressed, read-only filesystem. It's the default and most common filesystem used for OpenWrt images, especially on embedded devices with limited flash memory (like most routers).
4.1.1. How it works in OpenWrt
OpenWrt employs a clever trick to make a read-only SquashFS partition appear writable to the user. It uses an OverlayFS (or a similar mechanism like mini_fo
) to combine the read-only SquashFS root filesystem with a small, writable JFFS2 (or UBIFS for NAND flash) partition.
/rom
(SquashFS): This is the base, read-only part of the filesystem. It contains the core OpenWrt system, pre-installed packages, and default configurations./overlay
(JFFS2/UBIFS): This is a small, writable partition where all changes, new packages, and custom configurations are stored./
(OverlayFS): The user sees a single, merged filesystem at/
where changes appear to be applied directly. When you modify a file that exists in/rom
, a copy of that file is placed in/overlay
and the system uses the modified version.
4.1.2. Advantages of SquashFS
Space Efficiency: Due to compression, SquashFS images are significantly smaller than uncompressed filesystems, which is vital for devices with limited flash memory.
Resilience and "Factory Reset" Capability: Because the base system on SquashFS is read-only, it's very robust. If your writable
/overlay
partition gets corrupted or you mess up your configuration, you can easily perform a "factory reset" by simply erasing the/overlay
partition. This reverts the system to its initial state from the read-only SquashFS, providing a reliable recovery mechanism.Speed: Reading from a compressed filesystem can sometimes be faster, especially if the decompression is optimized and the underlying storage is slow.
4.1.3. Disadvantages of SquashFS
Limited Writable Space: The
/overlay
partition is typically small. While sufficient for common configurations and a few extra packages, it can become a limitation if you want to install many large packages or store a lot of data."Wasted" Space on Modifications: When a file in the read-only SquashFS is modified, the original file remains in SquashFS, and a modified copy is created in
/overlay
. This means you effectively have two copies of the file, consuming more space in/overlay
than if the file was directly modified on a fully writable filesystem.Less Flexible Partition Resizing: While it's possible to expand the root filesystem with SquashFS, it's often more complex than with a pure ext4 setup, as you're dealing with two distinct filesystems (SquashFS and JFFS2/UBIFS) and the OverlayFS mechanism.
4.2. ext4 Image
Often for x86 and Devices with Larger Storage
ext4
is a journaling filesystem widely used in Linux distributions. In OpenWrt, ext4
images are typically found for platforms with larger storage, such as x86-based systems (e.g., mini PCs, VMs) or single-board computers (SBCs) that boot from SD cards or eMMC.
4.2.1. How it works in OpenWrt
An ext4
image usually means the entire root filesystem is a single, writable ext4 partition. There's no separate read-only base or overlay.
4.2.2. Advantages of ext4
Full Writable Space: The entire partition space allocated to
ext4
is available for installation of packages, logs, and user data. This is a significant advantage for devices with large storage, as you can easily utilize the full capacity of an SD card or SSD.Simpler Management: Since it's a single, writable filesystem, operations like resizing the root partition to fill the entire disk are generally simpler and more straightforward than with SquashFS + OverlayFS.
Better for Data-Intensive Applications: If you plan to run applications that generate a lot of logs, store large files (e.g., Docker containers, file sharing services), or install many packages,
ext4
is usually a better choice due to its direct access to all available storage.No "Wasted" Space from Modifications: Files are modified in place, so there's no duplication of files as seen with the OverlayFS model.
4.2.3. Disadvantages of ext4
No Built-in "Factory Reset" via File System: Unlike SquashFS, there's no inherent "factory reset" mechanism by simply erasing an overlay. If you corrupt your
ext4
filesystem or configuration, a full reflash of the image is usually required to restore the system to a clean state. You'd need to manually backup/restore configurations.Larger Image Size:
ext4
images are uncompressed, making them larger than equivalent SquashFS images. This isn't an issue for x86 or SBCs with ample storage but makes them unsuitable for routers with tiny flash memory.Less Robust Against Corruption (Compared to Read-Only): While
ext4
is a robust journaling filesystem, a power loss or system crash during a write operation could potentially lead to filesystem corruption, requiring manual recovery tools (fsck
). The read-only nature of SquashFS offers a higher degree of inherent resilience for the core system.
4.3. Summary
Root Filesystem
Compressed, Read-Only (with Writable Overlay)
Writable
Storage Layout
/rom
(SquashFS) + /overlay
(JFFS2/UBIFS)
Single ext4
partition
Space Efficiency
High (due to compression)
Lower (uncompressed)
Writable Space
Limited (only /overlay
)
Full partition capacity
"Factory Reset"
Easy (erase /overlay
)
Requires re-flashing or manual restore
Resilience
High (core is read-only)
Standard (journaling helps, but not read-only)
Use Cases
Most routers, embedded devices with small flash
x86, SBCs, devices with large storage
Complexity
OverlayFS can be conceptually more complex
Simpler, direct filesystem
4.4. Terminology
4.4.1. JFFS2 / UBIFS
JFFS2(Journalling Flash File System version 2) , It's a specialized file system designed specifically for use with flash memory devices, particularly in embedded systems like routers (where OpenWrt is commonly used).
Despite the emergence of UBIFS, JFFS2 remains widely used in many embedded systems, particularly for smaller NOR flash devices where its simplicity and robustness are still highly valued.
UBIFS(Unsorted Block Image File System) , a prominent successor of JFFS2 .
UBIFS is a modern, log-structured file system specifically designed for larger unmanaged NAND flash memory devices. It was developed by Nokia engineers and made its way into the Linux kernel (2.6.27 and later).
While JFFS2 was a groundbreaking flash file system, UBIFS addresses many of its limitations, particularly for larger NAND flash storage, making it a "next-generation" solution.
The UBI Layer: The Foundation of UBIFS
A key distinguishing feature of UBIFS is that it doesn't directly interact with the raw flash (Memory Technology Device - MTD). Instead, it sits on top of an intermediate layer called UBI (Unsorted Block Images). This two-layer architecture is fundamental to UBIFS's advantages.
In essence, UBIFS, by leveraging the UBI layer, provides a more robust, performant, and scalable flash file system solution compared to JFFS2, particularly well-suited for modern NAND flash-based embedded systems.
Underlying Layer
UBI (handles wear leveling, bad blocks)
MTD (handles raw flash, JFFS2 does its own wear leveling)
Mount Time
Much faster (on-media index, fastmap)
Slower (scans entire flash to build in-memory index)
Memory Consumption
Lower (index on media)
Higher (index built in RAM)
Scalability
Scales much better with larger flash sizes
Performance degrades with larger flash
Write Performance
Generally faster (write-back caching, UBI optimizations)
Slower (write-through)
Volume Management
Built-in (via UBI)
No direct volume management
Bad Block Handling
Transparently handled by UBI layer
Handled by JFFS2 itself (can be less robust for large NAND)
Wear Leveling Scope
Global across all UBI volumes
Per-JFFS2 partition
4.4.2. NOR / NAND flash
NOR(Not OR) flash: Its name comes from the way its memory cells are arranged, which resembles a NOR logic gate.
NAND(Negative-AND) flash: Its name comes from the series connection of its memory cells, which resembles a NAND logic gate.
Architecture
Cells connected in parallel (like NOR gate)
Cells connected in series (like NAND gate)
Access Type
Random access (byte-addressable)
Sequential access (page/block addressable)
Read Speed
Very Fast (for random reads, XIP)
Slower (for random reads), Faster for sequential
Write/Erase Speed
Slower (byte/word-level write, larger block erase)
Faster (page write, block erase)
Execute-In-Place (XIP)
Yes (code can run directly from flash)
No (code must be "shadowed" to RAM first)
Density
Lower (larger cell size, more complex wiring)
Higher (smaller cell size, simpler wiring)
Cost per Bit
Higher
Lower
Reliability
Very High (fewer bit errors, less prone to bad blocks)
Good (requires ECC for error correction)
Bad Blocks
Generally ships with 0 bad blocks, rarely develops new ones
Can ship with bad blocks, prone to developing more
Endurance (P/E Cycles)
Higher (e.g., 100K-1M)
Lower (e.g., 500-10K for MLC/TLC, 100K+ for SLC/3D)
Wear Leveling
Less critical (managed by file system if needed)
Crucial (managed by FTL/UBI to prolong life)
Management
Simpler, often direct interface
More complex (requires FTL, UBI layer, ECC)
Typical Capacity
MBs to a few GBs
GBs to TBs
Common Use Cases
Boot code (BIOS/firmware), embedded code, small OS, network router firmware, microcontrollers, IoT devices
Mass storage (SSDs, USB drives, SD cards), smartphones, tablets, high-capacity data logging
In conclusion, NOR flash is the workhorse for code execution and low-capacity, high-reliability firmware storage, where fast random reads and XIP are essential. NAND flash, on the other hand, is the dominant technology for mass data storage where high capacity, low cost, and fast sequential transfers are key. Many modern devices, like smartphones, use both: NOR for the initial boot code, and NAND for the operating system and user data.
Last updated
Was this helpful?