Hello,

Thanks for the interest and support! Since the journaling system is now
fully integrated into the ext2 superblock, there are no more files or inode
IDs to set up — it’s automatic once the hints are in place.
However, one must:
 - Reserve space outside the ext2 filesystem.
-  Write the journaling hints into the ext2 superblock without disturbing
normal operation.
I recommend shrinking the ext2 filesystem by 8 MiB. That’s tiny from ext2’s
point of view, but plenty for the journal. This means the journal will live
immediately after ext2 stops on disk.

1. Shrink the ext2 filesystem by 8 MiB
We’ll work directly on the image, so make a backup first.
 - Find the ext2 partition start offset
$parted -sm debian-hurd.img unit B print
Example output:
2:1000341504B:4194303999B:3193962496B:ext2::;
The first number after 2: is the byte offset where the ext2 partition
starts (1000341504 here).

-Attach the ext2 partition as a loop device
sudo losetup -o 1000341504 --show -f debian-hurd.img

This prints something like /dev/loop0 (use whatever it returns).
Check current block count (these are 4 KiB ext2 blocks)

sudo tune2fs -l /dev/loop0 | grep 'Block count'

Example:
Block count:              1035776

Shrink by 8 MiB

    8 MiB = 8192 KiB → 8192 / 4 = 2048 ext2 blocks

    New block count = 1035776 − 2048 = 1033728

sudo e2fsck -f /dev/loop0 (accept everything it asks)
sudo resize2fs /dev/loop0 1033728

Replace 1033728 with your calculated value.
Verify
sudo tune2fs -l /dev/loop0 | grep 'Block count'
The number should be exactly 2048 less than the original.
Detach loop device
sudo losetup -d /dev/loop0

2  Write the journaling hint to the superblock

The ext2 superblock is 1024 bytes from the start of the partition.
The journaling hint is at offset *264 bytes* from the start of the
superblock.

You can verify ext2 magic first (0x53ef) like so:

xxd -g1 -s $((1000342528 + 0x38)) -l 2 debian-hurd.img

(needs to print "53 ef")

Instead of doing all the byte math manually, use the attached script:
Show current hint
./journal-hint.sh debian-hurd.img show
enable journaling hint:
./journal-hint.sh debian-hurd.img on
(This assumes the journal lives in the last 8 MiB of partition 2 (safe
after the shrink))
Disable journaling hint
./journal-hint.sh debian-hurd.img off

The script verifies ext2 magic before touching anything.
If the magic doesn’t match, it bails to prevent corruption.

Safety first:
Always work on a copy of your disk image.
If the script writes incorrect offsets, the low-level writer will overwrite
whatever is there, potentially corrupting your system!
Make sure the journal location is outside the filesystem by following the
shrink procedure above.

Status:
debian-hurd-20230608.img — tested and works great.
debian-hurd-20250622.img — functional, but scanning sometimes stalls;
working on a fix.

Let me know if something needs clarification.
Thank you once again!

Attachment: journal-hint2.sh
Description: application/shellscript

Reply via email to