Extroot still not working on Netgear WNR2200

Hello,

extroot not working on Netgear WNR2200 (8/64), 19.07.7.
Going thru https://openwrt.org/docs/guide-user/additional-software/extroot_configuration
No matter what you doing you will get:

Sun Jul 25 16:10:24 2021 user.info kernel: [    6.145804] init: - preinit -
Sun Jul 25 16:10:24 2021 kern.info kernel: [    7.082294] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
Sun Jul 25 16:10:24 2021 kern.info kernel: [    8.719597] eth1: link up (1000Mbps/Full duplex)
Sun Jul 25 16:10:24 2021 kern.info kernel: [    8.724291] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
Sun Jul 25 16:10:24 2021 user.info kernel: [   10.526463] mount_root: loading kmods from internal overlay
Sun Jul 25 16:10:24 2021 user.info kernel: [   10.576633] kmodloader: loading kernel modules from //etc/modules-boot.d/*
Sun Jul 25 16:10:24 2021 user.info kernel: [   10.585349] kmodloader: done loading kernel modules from //etc/modules-boot.d/*
Sun Jul 25 16:10:24 2021 kern.notice kernel: [   11.362770] jffs2: notice: (457) jffs2_build_xattr_subsystem: complete building xattr subsystem, 1 of xdatum (0 unchecked, 1 orphan) and 1 of xref (1 dead, 0 orphan) found.
Sun Jul 25 16:10:24 2021 user.info kernel: [   11.378983] block: attempting to load /tmp/jffs_cfg/upper/etc/config/fstab
Sun Jul 25 16:10:24 2021 user.info kernel: [   11.389935] block: extroot: device not present, retrying in 5 seconds
Sun Jul 25 16:10:24 2021 user.err kernel: [   16.726768] block: extroot: cannot find device with UUID d3638ca4-1b3c-4f34-97d8-560a4544f029
Sun Jul 25 16:10:24 2021 kern.notice kernel: [   16.775645] jffs2: notice: (455) jffs2_build_xattr_subsystem: complete building xattr subsystem, 1 of xdatum (0 unchecked, 1 orphan) and 1 of xref (1 dead, 0 orphan) found.
Sun Jul 25 16:10:24 2021 user.info kernel: [   17.147527] block: attempting to load /tmp/jffs_cfg/upper/etc/config/fstab
Sun Jul 25 16:10:24 2021 user.info kernel: [   17.157841] block: extroot: device not present, retrying in 5 seconds
Sun Jul 25 16:10:24 2021 user.err kernel: [   22.494763] block: extroot: cannot find device with UUID d3638ca4-1b3c-4f34-97d8-560a4544f029
Sun Jul 25 16:10:24 2021 user.info kernel: [   22.505038] mount_root: switching to jffs2 overlay
Sun Jul 25 16:10:24 2021 kern.warn kernel: [   22.551831] overlayfs: upper fs does not support tmpfile.
Sun Jul 25 16:10:24 2021 user.warn kernel: [   22.564155] urandom-seed: Seeding with /etc/urandom.seed
Sun Jul 25 16:10:24 2021 kern.info kernel: [   22.724984] eth1: link down
Sun Jul 25 16:10:24 2021 user.info kernel: [   22.746026] procd: - early -
Sun Jul 25 16:10:24 2021 user.info kernel: [   22.749197] procd: - watchdog -
Sun Jul 25 16:10:24 2021 user.info kernel: [   23.465230] procd: - watchdog -
Sun Jul 25 16:10:24 2021 user.info kernel: [   23.478011] procd: - ubus -
Sun Jul 25 16:10:24 2021 kern.notice kernel: [   23.572265] random: ubusd: uninitialized urandom read (4 bytes read)
Sun Jul 25 16:10:24 2021 kern.notice kernel: [   23.692064] random: ubusd: uninitialized urandom read (4 bytes read)
Sun Jul 25 16:10:24 2021 kern.notice kernel: [   23.791641] random: ubusd: uninitialized urandom read (4 bytes read)
Sun Jul 25 16:10:24 2021 user.info kernel: [   23.800059] procd: - init -

delay_root is not working. Extroot will not mount no matter what delay you set.

export PREINIT=1
mount_root

looks like a solution, you will get your overlay mounted as USB, but in fact, you also get jffs2 overlay which loads first and your extroot is useless, cause all configs will still load from jffs2 and you will get hell of a mess in configs.

This bug was reported YEARS ago:
https://dev.archive.openwrt.org/ticket/15267
https://dev.archive.openwrt.org/ticket/22956.html
https://equk.co.uk/2015/07/13/netgear-wnr2200-openwrt-usb-support/ and https://github.com/equk/openwrt

Yes, LEDs and USB power are OK, but USB devices STILL initializing long after preinit stage, and nothing will solve that.

Now I'm trying build latest stable from source with simple preinit script:

#!/bin/sh
/usr/sbin/modprobe ath9k

as 83_load_ath9k_mod

1 Like
block info; uci show fstab
/dev/mtdblock4: UUID="89198e0c-69d0dd73-a790496f-de9c607a" VERSION="4.0" MOUNT="/rom" TYPE="squashfs"
/dev/mtdblock5: MOUNT="/overlay" TYPE="jffs2"
/dev/sda1: UUID="d3638ca4-1b3c-4f34-97d8-560a4544f029" VERSION="1.0" TYPE="ext4"
fstab.@global[0]=global
fstab.@global[0].anon_swap='0'
fstab.@global[0].anon_mount='0'
fstab.@global[0].auto_swap='1'
fstab.@global[0].auto_mount='1'
fstab.@global[0].delay_root='5'
fstab.@global[0].check_fs='0'
fstab.@mount[0]=mount
fstab.@mount[0].target='/mnt/sda1'
fstab.@mount[0].uuid='d3638ca4-1b3c-4f34-97d8-560a4544f029'
fstab.@mount[0].enabled='0'
fstab.overlay=mount
fstab.overlay.uuid='d3638ca4-1b3c-4f34-97d8-560a4544f029'
fstab.overlay.target='/overlay'

1 Like

aaand this doesnt help, still "block: extroot: device not present, retrying in 5 seconds" on boot.

mount /dev/sda1 /mnt
rm -f /mnt/.extroot-uuid /mnt/etc/.extroot-uuid
umount /mnt
reboot

Did you try this?

Yes and no. This is clear install with format via mkfs.
There is no UID mismarch error or file named .extroot-uuid on this device.

1 Like

fstab.overlay.enabled=1 ?

Tried, does not help.
Also, according to https://openwrt.org/docs/guide-user/storage/fstab its default to 1 when omitted.
As we can see, there is mount attempt in preinit at boot.

1 Like
  • try device instead of uuid
  • try another usb stick
1 Like

Tried /dev/sda1 instead of UID, error is the same.
Tried another USB stick, error is the same.

I wonder, is

#!/bin/sh
/usr/sbin/modprobe ath9k

still correct script for preinit? This was from 2015, and I'm not sure is it a correct path for modprobe and if it even working.

lsblk -o name,mountpoint,tran,fstype,label,size,fsavail /dev/sda1
fdisk -l /dev/sda1
mount /dev/sda1 /mnt; find /mnt -maxdepth 2 -type d

Sorry, I was not totally correct in term of "not working".
USB stick can be mounted without problems, including as extroot, but only after full boot.

If the partition containing your extroot isn't mounted during boot, but you can mount it without problems from a shell

this is the problem. Extroot cant be used properly, because system uses jffs2 in first place and all changes saved to USB will not be used on next boot. It's just useless and, in my opinion, not working as intended.

export PREINIT=1
mount_root

even with this trick it will still mount jffs2 first.

What we need is force USB stick init in preinit stage for root mount, not after it.

you won't have the filesystem drivers at this stage... what is the harm in posting the debugging info requested?

1000's of 19.x users do not experience the same issues you do... this means either you have a device quirk... or you are not doing something correctly...

1 Like

what is the harm in posting the debugging info requested?

no harm, will post later, im using this device now and dont have enough space for usb support packages. I need to reset device every time.

1000's of 19.x users do not experience the same issues you do... this means either you have a device quirk... or you are not doing something correctly...

yep, but if you check links in first post, you will see that this problem was on WNR2200 from long time ago, marked as "fixed", but it is not fixed.

dunno, https://dev.archive.openwrt.org/ticket/22956.html perfectly shows that it possible.

1 Like

with a modified preinit stage on rom (in 2016)...

suggest you upgrade (get-a-new) the device..., build your own image or forget extroot
(if this issue is still present as you describe... it's quirky enough not to warrant fix and 8m is getting long in the tooth anyway)

already did. But I cannot apply patch from 2016 to current branch. Placing preinit script only also has no effect.

Well, I have no problems with build from source, but I def cant find how to fix this in source code (not a programmer). Only idea I have is contact with EQUK with request to look into it again...

2 Likes

that patch is from pre-dts days... and all it really does is ping the 5v usb power gpio or similar...

you may wish to check recent commits for that board or dts on github and ping those people...

the dts-ath79 incarnation of support for that board was added in;

commit f85d56bb034d8017bdb6b4bb493eb076a21d11b3

and the ar71 fixes you refer to were etither not 'ported' or applicable under ath79

as a last resort... you can create a new bug report on flyspray (referencing the earlier stuff and regression on ath79 porting) but I wouldn't hold your breath... especially if the committer is an infrequent contributor and the board is uncommon.

2 Likes

Well, I didn't receive any answer from EQUK and already replaced my WNR2200 by a new router (on which extroot is working as intended).

I will try to open bug report if I can find some time later to do it.

For now: problem is not resolved (at least in 19.07 branch).

1 Like