Asus RT-N16: chroot page faults

Branden Waldner scruffy99 at gmail.com
Sun Jul 25 14:31:52 PDT 2021


Hi list,
I'm hoping it's okay to post here, since I don't want to setup a forum account.

I've been messing around trying to get a full regular linux distro on
a usb to chroot in to.
Originally I had problems figuring what version of mips I was supposed
to use, but managed to work out what it was and that I needed floating
point unit emulation built in to the kernel.

I found a reference to it here:
https://openwrt.org/docs/guide-developer/building_kernels_for_debian_binaries,
but not here: https://openwrt.org/docs/guide-user/services/chroot
where it could probably be mentioned as well to help with
discoverability.
The config to enable fpu emulation has also changed in the openwrt
build system from latest stable from the menuconfig accessible
CONFIG_MIPS_FPU_EMULATOR=y to the unlisted option
CONFIG_KERNEL_MIPS_FP_SUPPORT=y.

Following this, I could get the chroot _working_, but not in a
properly functioning state. Most programs would segmentation fault
before they could complete, but not at the same position.

Checking the dmesg log I could that it was throwing a page fault.

// example page fault
do_page_fault(): sending SIGSEGV to http for invalid read access from 7fefc000
epc = 7fefc000 in
ra  = 77940ab8 in libstdc++.so.6.0.28[77886000+1d1000]

// cat /proc/self/maps
00400000-00449000 r-xp 00000000 1f:04 4          /bin/busybox
00458000-00459000 r-xp 00048000 1f:04 4          /bin/busybox
00459000-0045a000 rwxp 00049000 1f:04 4          /bin/busybox
77e3e000-77e60000 r-xp 00000000 1f:04 302        /lib/libgcc_s.so.1
77e60000-77e61000 r-xp 00012000 1f:04 302        /lib/libgcc_s.so.1
77e61000-77e62000 rwxp 00013000 1f:04 302        /lib/libgcc_s.so.1
77e62000-77efa000 r-xp 00000000 1f:04 300        /lib/libc.so
77f09000-77f0c000 rwxp 00097000 1f:04 300        /lib/libc.so
77f0c000-77f0d000 rwxp 00000000 00:00 0
7fa15000-7fa36000 rw-p 00000000 00:00 0          [stack]
7fefb000-7fefc000 r-xp 00000000 00:00 0
7ffc7000-7ffc8000 r--p 00000000 00:00 0          [vvar]
7ffc8000-7ffc9000 r-xp 00000000 00:00 0          [vdso]

I really don't have any Idea what is going on though and am hoping for
some advice.

One thing I have been unsure about it that the build system
documentation mentions that "you won't be able to install kernel
packages from the official repositories when you make changes here"
when introducing the kernel configuration options. Since I've been
selecting to build in the (extra) filesystem and usb support, I don't
know if it has just been pulling in the kernel packages or building
locally or if that information is just not applicable.

I am also unsure if it also isn't just an issue with the binaries I'm
trying to use being built incompatibly. I tried debian mipsel and a
couple of (older) gentoo stage 3 archives.

Again, I'm hoping that it was okay to post here, that I didn't
mess/mix anything up, and that there is some interest in it.

Branden



More information about the openwrt-devel mailing list