I have a Huawei EchoLife EG8145V5 for which I am trying to build some software. It has a built-in Linux distro of some sort, but I would like to add to it, as there is "plenty" of storage space available. The system is built around BusyBox.
However, to build the software, I need to set up a build environment that matches the CPU architecture, and this is where I come up short, as I am unable to find a kernel that I can use with QEMU. I did find one kernel, but it did not produce a compatible binary.
The only thing I know is what I get from cat /proc/cpuinfo
:
processor : 0
model name : ARMv7 Processor rev 1 (v7l)
BogoMIPS : 1594.16
Features : swp half thumb fastmult edsp thumbee tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x4
CPU part : 0xc09
CPU revision : 1
CPU physical :0
processor : 1
model name : ARMv7 Processor rev 1 (v7l)
BogoMIPS : 1594.16
Features : swp half thumb fastmult edsp thumbee tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x4
CPU part : 0xc09
CPU revision : 1
CPU physical :1
Hardware : Hisilicon A9
Revision : 0000
Serial : 0000000000000000
I am unable to find the kernel image itself stored anywhere, which would make this a whole lot easier. So, what should be my next step? Anything else I can do to find the details I need to set up a good qemu dev environment?
I do have a setup based around the cortex-a9
and the vexpress-a9
machine, plus some kernel I found somewhere (can't remember where) and it is working to some degree. It's just that dynamically linked binaries won't work, even after patching it with patchelf --set-soname
and patchelf --set-soname
- I either get segfault or permission denied.
EDIT 1:
I did manage to find the kernel config. It's a bit too long to paste here, but are there any lines I should look for that should lead me on the right track?
EDIT 2:
I've managed to extract the busybox binary from the router. file busybox
produces this:
ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /mnt/jffs2/app/output/ld-linux.so.3, for GNU/Linux 2.6.26, BuildID[sha1]=736041808c34871ed689d38e7cacfe18b1e65736, stripped