Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Draft:Ul2fs

From Wikipedia, the free encyclopedia
  • Comment: Zero independent sources that discus UL2FS; no indication of meeting Wikipedia's notability criteria. Helpful Raccoon (talk) 05:29, 3 October 2026 (UTC)

UL2FS
Full nameUnix friendly Linked List File System[1]
IntroducedSeptember 17, 2026; 16 days ago (2026-09-17)[2] with FUSE driver
Partition IDsEFI: Linux System Partition
Structures
Directory contentsTable
File allocationLinked list
Bad blocksNot implemented
Bootableyes[3]
Limits
Min volume size1408 bytes with 128 byte blocks, 28672 bytes with 4KiB blocks
Max volume size1 EiB for 4kiB blocks, 16EiB for 64KiB blocks, 2^112 bytes for 16EiB blocks
Max file size18,446,744,073,709,551,999 bytes (16 EiB-1)
File size granularity1 byte
Max no. of files4,294,967,294 (inodes)
Max filename length122 or 123 bytes
Max dirname lengthImplementation dependent
Max directory depthunlimited
Allowed filename
characters
any byte except 0x0 or /
Features
Dates recorded
  • Modified timestamp, creation timestamp
Date range1970-01-01 to 2106-02-07 (36812-02-20 if using extra fields in the inode)
Date resolution1 second
Attributeslink count
File system
permissions
POSIX bits + UID + GID
Transparent
compression
only at the block level
Transparent
encryption
only at the block level
Copy-on-writeno
Other
Supported
operating systems
Hardcore Linux (replaced ext4 in September 28, 2026; 5 days ago (2026-09-28)[4])
Websitehttps://github.com/AMAZING2545/HardcoreLinux/ (source at tools/src/axfs)

UL2FS(Unix friendly Linked List FileSystem) is a FUSE filesystem for Linux and other Unix operating system that support FUSE.

UL2FS was designed to be a simple filesystem that could replace Ext4 in embedded systems, since it has full POSIX permissions, Hard link and Symbolic link support, while having higher metadata density[5]. Its FAT-like design makes it easy to implement in Firmware, which might be appealing for low power devices.

Features

[edit]
  • Inodes
  • POSIX bits
  • Low metadata overhead
  • Hard links
  • Symbolic links

Structure [6]

[edit]

Boot sector

[edit]

UL2FS reserves the first block to the Superblock, which contains all informations to mount and use the filesystem.

Superblock
parameter size comment
JMP instruction 8 bytes X86 needs 3 bytes, RISC architectures generally need more[7]
block size 1 byte expressed as 2^x
volume name 32 bytes any byte except 0x0
reserved blocks 2 bytes does not include the superblock's block
FAT size 4 bytes the size of the allocation table in blocks
size 8 bytes size of the volume in blocks
inodes 4 bytes amount of inodes in blocks
root directory size 1 byte deprecated, must be set to zero
cylinders 2 bytes used only in legacy systems
heads 2 bytes used only in legacy systems
sectors-per-track 2 bytes used only in legacy systems
extended FAT size 2 bytes upper part of FAT size, generally ignored
used blocks 8 bytes generally ignored

UL2FS usually keeps only one copy of the superblock, but a implementation can store a copy in a reserved sector.citation needed

File Allocation Table

[edit]

main article: Design of the FAT file system#FAT.

UL2FS' FAT region behaves the same as other FAT filesystems, except that it uses 48-bit pointers instead of 28/32-bit of FAT32 or ExFAT. 48 bit pointers allow for very large volumes that can exceed Exabytes and Zettabytes.[8]

UL2FS only uses 0(free block) and -1(end of chain) as reserved entries in the FAT.[6]

Inode Region

[edit]

the inode table contains the inodes, which are structures that store file metadata and location on disk.[9]

Inode
name size comment
POSIX bits 2 bytes octal POSIX bits
user 2 bytes owner of the inode
group 2 bytes group owner of the inode
era 2 bytes now unused, can be split

in two to extend timestamps

created 4 bytes unsigned UNIX timestamp
modified 4 bytes unsigned UNIX timestamp
links 2 bytes link count
size 8 bytes file size in bytes
start 6 bytes first block in the chain

note: the inode does not store the file type (regular, directory, link).[10]

Directory Table

[edit]

Directories are stored as entries in special inodes that do not contain plain data.

each directory has at least two entries:

  • "." is a hard link to itself
  • ".." is a hard link to the parent (itself if it is the root directory)

each entry is stored in a 128-byte entry.

Directory entry
name size comment
filename 123 bytes any byte except 0x0 and /
attributes 1 byte 0 = regular, 1 = directory, 2 = symlink
inode 4 bytes pointer in the inode table

Data region

[edit]

the data region lies after the inode table and contains file data, directories and symlinks.

Performance

[edit]

No formal comparison is available right now

As for all FAT-like filesystems random seek is O(n) and sequential seek is O(1)citation needed

Support

[edit]

UL2FS can be built from source on any Linux distro that has FUSE support.[11]

UL2FS is the native filesystem of the Hardcore Linux project, as it is a subproject of it[12]

See also

[edit]

Design of the FAT file system

Unix filesystem

References

[edit]
  1. ↑ https://github.com/AMAZING2545/HardcoreLinux/issues/6
  2. ↑ https://github.com/AMAZING2545/HardcoreLinux/commit/9530fe1b978e88791d6ad9fd42988c93cff40ec2
  3. ↑ the superblock only occupies 76 bytes according to the reference implementation
  4. ↑ https://github.com/AMAZING2545/HardcoreLinux/releases/tag/v1.3.1
  5. ↑ UL2FS has 32 byte inodes, while Ext4 uses 128/256 byte inodes. source: https://archive.kernel.org/oldwiki/ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout.html (2016)
  6. 1 2 "Spec.md". Github.{{cite web}}: CS1 maint: url-status (link)
  7. ↑ https://support.arm.com/documentation/den0013/0400/Introduction-to-Assembly-Language/The-ARM-instruction-sets
  8. ↑ like FAT12/16/32/ex ul2fs uses the same fundamental linked list structure
  9. ↑ Tanenbaum, Andrew (2008). Modern Operating Systems, 3rd edition (3rd ed.). Pearson Education.
  10. ↑ there are not enough fields in the inode to store such info.
  11. ↑ the source code is plain POSIX C and depends only on libfuse
  12. ↑ AMAZING2545. "Release 1.3.1 · AMAZING2545/HardcoreLinux". GitHub. Retrieved 2026-10-01.{{cite web}}: CS1 maint: numeric names: authors list (link)