The Basics
One of the first things you notice when using the GL.iNet MT1300 (Beryl) as more than a basic travel router is how fast you hit a wall:
14 MB free for configs, packages, logs, and plugins.
That’s not a bug — it’s how OpenWrt is designed on small embedded devices. The good news is that the MT1300 has a microSD slot, and OpenWrt has a battle-tested solution for this exact problem: extroot.
This post walks through a working, GL.iNet-compatible extroot setup that avoids the usual traps (NTFS/exFAT, late mounts, device-path failures).
The problem: why you only have ~14 MB
OpenWrt splits storage into layers:
/rom→ read-only firmware/overlay→ writable space (configs, installed packages)/→ union filesystem (rom + overlay)
On the MT1300, /overlay lives on internal flash:
/dev/mtdblock6 ≈ 15 MB
That space cannot be expanded internally. Installing VPNs, ad-blocking, download tools, or even logs quickly exhausts it.
The solution: extroot (overlay on SD card)
Extroot moves /overlay from internal flash to external storage.
After extroot:
- Internal flash still boots the router
- The SD card becomes
/overlay - You gain GBs of writable space
- The router behaves exactly the same
If the SD card is missing, OpenWrt safely falls back to the internal overlay.
Requirements
- GL.iNet MT1300 (Beryl)
- microSD card (8 GB+ recommended)
- Filesystem: ext4
- SSH access
- Stock GL.iNet firmware (OpenWrt-based)
Step 1: Format the SD card as ext4
Extroot does not work with NTFS or exFAT.
Insert the SD card and SSH into the router:
ssh root@192.168.8.1
Unmount the card if it’s auto-mounted:
umount /mnt/mmcblk0p1 2>/dev/null
Format it:
mkfs.ext4 /dev/mmcblk0p1
⚠️ This wipes the card.
Step 2: Install required packages
opkg update
opkg install block-mount kmod-fs-ext4 e2fsprogs
Step 3: Generate a proper fstab (critical)
Instead of hard-coding /dev/mmcblk0p1, use OpenWrt’s block system so the SD mounts early enough during boot.
block detect > /etc/config/fstab
Edit the file:
vi /etc/config/fstab
You’ll see an entry similar to:
config mount
option target '/mnt/mmcblk0p1'
option uuid 'XXXX-XXXX'
option fstype 'ext4'
option enabled '1'
Step 4: Convert that entry into extroot
Change the block to:
config mount
option target '/overlay'
option uuid 'XXXX-XXXX'
option fstype 'ext4'
option enabled '1'
option enabled_fsck '1'
Why UUID matters:
Device paths can change during early boot. UUID ensures the overlay mounts reliably before /overlay initializes.
Step 5: Copy your existing overlay
Mount the SD card temporarily:
mkdir -p /mnt/sd
mount /dev/mmcblk0p1 /mnt/sd
Copy everything from the current overlay (preserves permissions and symlinks):
tar -C /overlay -cvf - . | tar -C /mnt/sd -xvf -
Unmount it again:
umount /mnt/sd
Step 6: Enable fstab and reboot
/etc/init.d/fstab enable
reboot
Do not remove the SD card after this point.
Step 7: Verify success
After reboot, SSH back in and run:
df -h
What success looks like
/dev/mmcblk0p1 115G 200M 110G /overlay
overlayfs:/overlay
What failure looks like
/dev/mtdblock6 15M 1M 14M /overlay
If you see the second output, extroot didn’t activate (usually due to filesystem type or incorrect fstab entries).
Why this works
- ext4 supports permissions, symlinks, and overlay semantics
block detectensures the mount happens early- UUID-based mounting avoids race conditions at boot
- The internal flash remains untouched and bootable
What this unlocks
With extroot enabled, the MT1300 can comfortably run:
- AdGuard Home
- aria2 / rtorrent
- VPN stacks + extras
- Samba / media storage
- Heavy logging
- Home Assistant helpers
- “Travel server” setups
All without worrying about storage again.
Final notes
- Use a reliable SD card (SanDisk / Samsung)
- Avoid hot-removal after extroot is active
- ext4 is non-negotiable
- Journaled filesystem makes power loss safe for travel use