mirror of
https://github.com/adron-s/mtik_initrd_hacks.git
synced 2025-12-09 23:34:39 +01:00
Trying to add support 7.0b1. So far, unsuccessful!
Unpacking the 7.0b1 npk file into its parts and pack it back work fine. But the fake /init does not start. Perhaps some additional compilation flags are required.
This commit is contained in:
parent
e70bb37609
commit
26f20be410
17 changed files with 101 additions and 56 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -5,3 +5,6 @@ bins/*
|
|||
finder/kernel-extractor
|
||||
finder/finder
|
||||
ros/*
|
||||
init/init.objdump
|
||||
init/oldinit.objdump
|
||||
|
||||
|
|
|
|||
18
README.md
18
README.md
|
|
@ -6,7 +6,7 @@ All that you do is at your own risk!
|
|||
The author has not liable for any of you actions and their consequences!
|
||||
This code is presented as is and is solely for educational purposes ONLY!
|
||||
|
||||
0) Use RouterOS 6.44!
|
||||
0) Use RouterOS 6.44 or 7.0b1!
|
||||
1) Upload content of ./for_ftp_upload/* to target RouterOS device via FTP
|
||||
2) Netboot with kernel-new.elf
|
||||
3) telnet x.x.x.x 22111
|
||||
|
|
@ -14,3 +14,19 @@ This code is presented as is and is solely for educational purposes ONLY!
|
|||
Все что вы делаете, вы делаете на свой страх и риск!
|
||||
Автор не несет никакой ответственности за ваши действия и их последствия!
|
||||
Данный код представляется as-is и исключительно в учебных целях!
|
||||
|
||||
For Developers:
|
||||
Place routeros-XXX.mpk to ./ros/
|
||||
cd ./finder
|
||||
./Build.sh
|
||||
cd ..
|
||||
./unpack-npk.sh ./ros/routeros-7.0beta1-arm.npk
|
||||
./unpack-kernel.sh
|
||||
cd ./init
|
||||
./compile_for_arm.sh
|
||||
cd ..
|
||||
Make the necessary changes to the ./cpio-fs(compile add add busybox, etc...)
|
||||
In the end, when everything is ready, to get ./bins/kernel-new.elf, run: ./pack-kernel.sh
|
||||
Upload content of ./for_ftp_upload/* to target RouterOS device via FTP(to /flash/rw/disk/)
|
||||
Put ./bins/kernel-new.elf to your tftp and Netboot from it
|
||||
telnet x.x.x.x 22111
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1,28 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
/bin/busybox --install -s /bin
|
||||
|
||||
reset
|
||||
echo ""
|
||||
echo "Starting system...."
|
||||
|
||||
mount -v proc /proc -n -t proc
|
||||
mount -v sysfs /sys -n -t sysfs
|
||||
mount -v devtmpfs /dev -n -t devtmpfs
|
||||
|
||||
echo "Done. Enjoy the power of linux."
|
||||
echo
|
||||
echo "Reboot is not working!"
|
||||
echo "So just type an exit if you want for reboot."
|
||||
echo
|
||||
|
||||
sh
|
||||
|
||||
echo "Reboot(r) or start RouterOS(s) ?"
|
||||
ANSV="r"
|
||||
read -n1 ANSV
|
||||
|
||||
[ "${ANSV}" == "r" ] && exit 0
|
||||
|
||||
echo "Ok. Ok. Let's run an RouterOS"
|
||||
/oldinit
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
cpio-fs/init
BIN
cpio-fs/init
Binary file not shown.
BIN
cpio-fs/oldinit
BIN
cpio-fs/oldinit
Binary file not shown.
BIN
cpio-fs/order
BIN
cpio-fs/order
Binary file not shown.
24
ftp_upload.sh
Executable file
24
ftp_upload.sh
Executable file
|
|
@ -0,0 +1,24 @@
|
|||
#!/bin/sh
|
||||
|
||||
WORKDIR="/home/prog/openwrt/lede-all/new-lede-rb941/source"
|
||||
|
||||
HOST="172.20.1.1"
|
||||
USER="admin"
|
||||
PASS=${FTP_UPLOAD_PASS}
|
||||
[ -z ${PASS} ] && {
|
||||
echo "just do# export FTP_UPLOAD_PASS=xYz"
|
||||
exit 1
|
||||
}
|
||||
FILE=./bins/kernel-new.elf
|
||||
FAKEFNAME="linux_t1.bin"
|
||||
[ "$HOST" = "127.0.0.1" ] && {
|
||||
cat $FILE > /var/lib/tftpboot/$FAKEFNAME
|
||||
exit 0
|
||||
}
|
||||
ftp -inv $HOST << EOF
|
||||
user $USER $PASS
|
||||
put $FILE $FAKEFNAME
|
||||
bye
|
||||
EOF
|
||||
|
||||
exit 0
|
||||
|
|
@ -3,18 +3,27 @@
|
|||
#(C) Sergey Sergeev aka adron, 2019
|
||||
#
|
||||
|
||||
OPENWRT_DIR=/home/prog/openwrt/lede-all/2019-openwrt-all/openwrt-ipq806x
|
||||
export STAGING_DIR=$OPENWRT_DIR/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-7.4.0_musl_eabi
|
||||
OPENWRT_DIR=/home/prog/openwrt/lede-all/2019-openwrt-all/LAST/openwrt
|
||||
export STAGING_DIR=$OPENWRT_DIR/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-9.2.0_glibc_eabi
|
||||
TOOLCHAIN_PREFIX="arm-openwrt-linux-"
|
||||
#export STAGING_DIR=$OPENWRT_DIR/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-9.2.0_musl_eabi
|
||||
#TOOLCHAIN_PREFIX="arm-openwrt-linux-muslgnueabi"
|
||||
#OPENWRT_DIR=/home/prog/openwrt/lede-all/2019-openwrt-all/openwrt-ipq806x
|
||||
#export STAGING_DIR=$OPENWRT_DIR/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-7.4.0_musl_eabi
|
||||
#TOOLCHAIN_PREFIX=arm-openwrt-linux
|
||||
#OPENWRT_DIR=/home/prog/openwrt/lede-all/2019-openwrt-all/openwrt-ipq4xxx
|
||||
#export STAGING_DIR=${OPENWRT_DIR}/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-7.4.0_musl_eabi
|
||||
|
||||
GCC=$STAGING_DIR/bin/arm-openwrt-linux-gcc
|
||||
OD=$STAGING_DIR/bin/arm-openwrt-linux-objdump
|
||||
OC=$STAGING_DIR/bin/arm-openwrt-linux-objcopy
|
||||
LD=$STAGING_DIR/bin/arm-openwrt-linux-ld
|
||||
GCC=$STAGING_DIR/bin/${TOOLCHAIN_PREFIX}-gcc
|
||||
OD=$STAGING_DIR/bin/${TOOLCHAIN_PREFIX}-objdump
|
||||
OC=$STAGING_DIR/bin/${TOOLCHAIN_PREFIX}-objcopy
|
||||
LD=$STAGING_DIR/bin/${TOOLCHAIN_PREFIX}-ld
|
||||
|
||||
$GCC -static ./init.c -o ../cpio-fs/init
|
||||
$OC --strip-all ../cpio-fs/init ../cpio-fs/init
|
||||
|
||||
exit 0
|
||||
|
||||
cd ../
|
||||
./pack.sh
|
||||
./pack-kernel.sh
|
||||
./ftp_upload.sh
|
||||
|
|
|
|||
10
init/init.c
10
init/init.c
|
|
@ -2,7 +2,6 @@
|
|||
* (C) Sergey Sergeev aka adron, 2019
|
||||
*/
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
|
@ -22,20 +21,20 @@ void my_system(char *cmd, char *arg1, char *arg2){
|
|||
}
|
||||
|
||||
void daemonized_OWL(void){
|
||||
//int a = 0;
|
||||
int a = 0;
|
||||
while(1){
|
||||
/*if(a++ % 10 == 0){
|
||||
if(a++ % 10 == 0){
|
||||
printf("OWL is here! %d\n", a);
|
||||
}*/
|
||||
}
|
||||
my_system("/bin/busybox", "sh", "/flash/rw/disk/OWL.sh");
|
||||
sleep(1);
|
||||
}
|
||||
}
|
||||
|
||||
extern char** environ;
|
||||
|
||||
int main(int argc, char *argv[]){
|
||||
pid_t pid;
|
||||
int a = 0;
|
||||
//char *new_argv[] = { "/bin/busybox", "sh", "/etc/rc.d/rc.S", NULL };
|
||||
argv[0] = "/oldinit";
|
||||
|
||||
|
|
@ -51,5 +50,6 @@ int main(int argc, char *argv[]){
|
|||
|
||||
//execvp(new_argv[0], new_argv);
|
||||
execvp(argv[0], argv);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
18
init/oldinit_analiz.sh
Executable file
18
init/oldinit_analiz.sh
Executable file
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
#(C) Sergey Sergeev aka adron, 2019
|
||||
#
|
||||
|
||||
OPENWRT_DIR=/home/prog/openwrt/lede-all/2019-openwrt-all/openwrt-ipq806x
|
||||
export STAGING_DIR=$OPENWRT_DIR/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-7.4.0_musl_eabi
|
||||
#OPENWRT_DIR=/home/prog/openwrt/lede-all/2019-openwrt-all/openwrt-ipq4xxx
|
||||
#export STAGING_DIR=${OPENWRT_DIR}/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-7.4.0_musl_eabi
|
||||
|
||||
GCC=$STAGING_DIR/bin/arm-openwrt-linux-gcc
|
||||
OD=$STAGING_DIR/bin/arm-openwrt-linux-objdump
|
||||
OC=$STAGING_DIR/bin/arm-openwrt-linux-objcopy
|
||||
LD=$STAGING_DIR/bin/arm-openwrt-linux-ld
|
||||
|
||||
$OD ../cpio-fs/oldinit -x > ./oldinit.objdump
|
||||
$OD ../cpio-fs/init -x > ./init.objdump
|
||||
|
||||
|
|
@ -14,15 +14,14 @@ OBJDUMP=$STAGING_DIR/bin/arm-openwrt-linux-objdump
|
|||
OBJCOPY=$STAGING_DIR/bin/arm-openwrt-linux-objcopy
|
||||
LD=$STAGING_DIR/bin/arm-openwrt-linux-ld
|
||||
|
||||
cd cpio-fs
|
||||
#find . 2>/dev/null | cpio --quiet -o --format='newc' > ../bins/x1.cpio
|
||||
ROOT=$(pwd)
|
||||
cd ./cpio-fs
|
||||
find . 2>/dev/null | cpio --quiet -o --format='newc' | \
|
||||
xz --check=crc32 --lzma2=dict=512KiB > ../bins/kernel.p3-new.xz
|
||||
#cat ../initramfs.cpio | xz --check=crc32 --lzma2=dict=512KiB > ../bins/kernel.p3-new.xz
|
||||
cd ..
|
||||
xz --check=crc32 --lzma2=dict=512KiB > ${ROOT}/bins/kernel.p3-new.xz
|
||||
cd ${ROOT}
|
||||
|
||||
cat ./bins/kernel.p2.xz ./bins/kernel.p3-new.xz > ./bins/kernel-new.combo
|
||||
${OBJCOPY} --update-section initrd=./bins/kernel-new.combo ./kernel.elf ./kernel-new.elf
|
||||
|
||||
cat ./kernel-new.elf > /var/lib/tftpboot/linux_t1.bin
|
||||
#cat ./bins/kernel.p2.xz ./bins/kernel.p3.xz > ./bins/kernel-new.combo
|
||||
${OBJCOPY} --update-section initrd=./bins/kernel-new.combo ./bins/kernel.elf ./bins/kernel-new.elf
|
||||
|
||||
#cat ./bins/kernel-new.elf > /var/lib/tftpboot/linux_t1.bin
|
||||
|
|
@ -84,6 +84,14 @@ truncate_kernel_p3(){
|
|||
rm ./bins/kernel.p3-stripped.xz
|
||||
}
|
||||
|
||||
extract_kernel_cpiofs(){
|
||||
local ROOT=$(pwd)
|
||||
rm -Rf ./cpio-fs
|
||||
mkdir ./cpio-fs
|
||||
cd ./cpio-fs
|
||||
xzcat ${ROOT}/bins/kernel.p3.xz | cpio -idv
|
||||
}
|
||||
|
||||
unpack_kernel_bin
|
||||
|
||||
( xz -dc --single-stream > ./bins/initramfs.cpio && cat > ./bins/p3-garbage.bin ) < ./bins/kernel.p3.xz
|
||||
|
|
@ -94,9 +102,4 @@ unpack_kernel_bin
|
|||
|
||||
extract_kernel_elf
|
||||
|
||||
exit 0
|
||||
|
||||
rm -Rf cpio-fs
|
||||
mkdir cpio-fs
|
||||
cd cpio-fs
|
||||
cpio -idv < ../bins/initramfs.cpio
|
||||
#extract_kernel_cpiofs
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
#!/bin/sh
|
||||
|
||||
TARGET=./ros/routeros-arm-6.44.npk
|
||||
#TARGET=./ros/routeros-arm-6.44.npk
|
||||
#TARGET=./ros/routeros-7.0beta1-arm.npk
|
||||
TARGET=${1}
|
||||
FS_BEGIN_OFFSET=4096
|
||||
|
||||
get_squashfs_size(){
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue