mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
move platform specific base-files into target/linux/<targetname>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5621 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
11
target/linux/ar7-2.4/base-files.mk
Normal file
11
target/linux/ar7-2.4/base-files.mk
Normal file
@@ -0,0 +1,11 @@
|
||||
define Build/Compile
|
||||
$(call Build/Compile/Default)
|
||||
$(TARGET_CC) -o $(PKG_BUILD_DIR)/adam2patcher $(PLATFORM_DIR)/src/adam2patcher.c
|
||||
endef
|
||||
|
||||
define Package/base-files/install-target
|
||||
mkdir -p $(1)/sbin
|
||||
$(CP) $(PKG_BUILD_DIR)/adam2patcher $(1)/sbin
|
||||
endef
|
||||
|
||||
|
||||
89
target/linux/ar7-2.4/base-files/bin/firstboot
Executable file
89
target/linux/ar7-2.4/base-files/bin/firstboot
Executable file
@@ -0,0 +1,89 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2006 OpenWrt.org
|
||||
|
||||
rom=$(awk '/squashfs/ {print $2}' /proc/mounts)
|
||||
jffs=$(awk '/jffs2/ {print $2}' /proc/mounts)
|
||||
|
||||
dupe() { # <new_root> <old_root>
|
||||
cd $1
|
||||
echo -n "creating directories... "
|
||||
{
|
||||
cd $2
|
||||
find . -xdev -type d
|
||||
echo "./dev ./jffs ./mnt ./proc ./tmp ./sys"
|
||||
# xdev skips mounted directories
|
||||
cd $1
|
||||
} | xargs mkdir -p
|
||||
echo "done"
|
||||
|
||||
echo -n "setting up symlinks... "
|
||||
for file in $(cd $2; find . -xdev -type f;); do
|
||||
case "$file" in
|
||||
./rom/note) ;; #nothing
|
||||
./etc/config*|\
|
||||
./etc/resolv.conf|\
|
||||
./usr/lib/ipkg/info) cp -af $2/$file $file;;
|
||||
*) ln -sf /rom/${file#./*} $file;;
|
||||
esac
|
||||
done
|
||||
for file in $(cd $2; find . -xdev -type l;); do
|
||||
cp -af $2/${file#./*} $file
|
||||
done
|
||||
echo "done"
|
||||
}
|
||||
|
||||
pivot() { # <new_root> <old_root>
|
||||
mount -o move /proc $1/proc && \
|
||||
pivot_root $1 $1$2 && {
|
||||
mount -o move $2/dev /dev
|
||||
mount -o move $2/tmp /tmp
|
||||
mount -o move $2/sys /sys
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
mountdp() { # <device> <mount_point> <ignored> <fs>
|
||||
dev=$1; mnt=$2; shift 2; opt=$*
|
||||
mount $dev $mnt $opt
|
||||
dupe $mnt $rom
|
||||
pivot $mnt /rom
|
||||
}
|
||||
|
||||
ramoverlay() {
|
||||
mkdir -p /tmp/root
|
||||
mountdp /tmp/root /mnt -o bind
|
||||
}
|
||||
|
||||
[ "${0##*/}" = "firstboot" ] && {
|
||||
[ -z "$rom" ] && {
|
||||
echo "You do not have a squashfs partition; aborting"
|
||||
echo "(firstboot cannot be run on jffs2 based firmwares)"
|
||||
exit 1
|
||||
}
|
||||
|
||||
[ "$1" = "switch2jffs" ] && {
|
||||
mtd erase OpenWrt
|
||||
mount -o remount,ro none / # try to avoid fs changing while copying
|
||||
mount -o bind / /mnt
|
||||
mount /dev/mtdblock/4 /rom/jffs -t jffs2
|
||||
echo -n "copying files ... "
|
||||
cp -a /mnt/* /rom/jffs
|
||||
umount /mnt
|
||||
echo "done"
|
||||
pivot /rom /mnt
|
||||
mount -o move /mnt /tmp/root
|
||||
pivot /jffs /rom
|
||||
exit 0
|
||||
}
|
||||
|
||||
# script run manually
|
||||
[ \! -z "$jffs" ] && {
|
||||
echo "firstboot has already been run"
|
||||
echo "jffs2 partition is mounted, only resetting files"
|
||||
dupe $jffs $rom
|
||||
exit 0
|
||||
}
|
||||
|
||||
mtd erase OpenWrt
|
||||
mountdp /dev/mtdblock/4 /jffs -t jffs2
|
||||
}
|
||||
14
target/linux/ar7-2.4/base-files/etc/config/network
Normal file
14
target/linux/ar7-2.4/base-files/etc/config/network
Normal file
@@ -0,0 +1,14 @@
|
||||
# Network configuration file
|
||||
|
||||
config interface loopback
|
||||
option ifname lo
|
||||
option proto static
|
||||
option ipaddr 127.0.0.1
|
||||
option netmask 255.0.0.0
|
||||
|
||||
config interface lan
|
||||
option ifname eth0
|
||||
option proto static
|
||||
option ipaddr 192.168.1.1
|
||||
option netmask 255.255.255.0
|
||||
|
||||
13
target/linux/ar7-2.4/base-files/etc/init.d/adam2
Executable file
13
target/linux/ar7-2.4/base-files/etc/init.d/adam2
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# ADAM2 patcher for Netgear DG834 and compatible
|
||||
# Copyright (C) 2006 OpenWrt.org
|
||||
|
||||
START=00
|
||||
start() {
|
||||
MD5="$(md5sum /dev/mtdblock/0 | awk '{print $1}')"
|
||||
[ "$MD5" = "0530bfdf00ec155f4182afd70da028c1" ] && {
|
||||
mtd unlock adam2
|
||||
/sbin/adam2patcher /dev/mtdblock/0
|
||||
}
|
||||
rm -f /etc/init.d/S00adam2 /sbin/adam2patcher >&- 2>&-
|
||||
}
|
||||
11
target/linux/ar7-2.4/base-files/etc/preinit
Executable file
11
target/linux/ar7-2.4/base-files/etc/preinit
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
|
||||
mount none /proc -t proc
|
||||
|
||||
[ -f /etc/preinit.arch ] && . /etc/preinit.arch
|
||||
[ -z "$FAILSAFE" ] || {
|
||||
echo /bin/true > /proc/sys/kernel/hotplug
|
||||
telnetd -l /bin/login <> /dev/null 2>&1
|
||||
}
|
||||
mount_root ${FAILSAFE:+failsafe}
|
||||
exec /sbin/init
|
||||
28
target/linux/ar7-2.4/base-files/sbin/mount_root
Executable file
28
target/linux/ar7-2.4/base-files/sbin/mount_root
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh
|
||||
size=$(awk '/Mem:/ {l=5242880;print((s=$2/2)<l)?$2-l:s}' /proc/meminfo)
|
||||
mount none /tmp -t tmpfs -o size=$size
|
||||
|
||||
if [ "$1" != "failsafe" ]; then
|
||||
mtd unlock linux
|
||||
mount | grep jffs2 >&-
|
||||
if [ $? = 0 ] ; then
|
||||
if [ $(cat /proc/mtd | wc -l) = 6 ]; then
|
||||
mtd erase OpenWrt
|
||||
else
|
||||
mount -o remount,rw /dev/root /
|
||||
fi
|
||||
else
|
||||
. /bin/firstboot
|
||||
echo "switching to jffs2"
|
||||
mount /dev/mtdblock/4 /jffs -t jffs2
|
||||
pivot /jffs /rom || {
|
||||
echo "jffs2 unusable; using ramdisk"
|
||||
ramoverlay
|
||||
}
|
||||
fi
|
||||
fi
|
||||
|
||||
mount none /tmp -t tmpfs -o remount,nosuid,nodev,mode=1777
|
||||
mkdir -p /dev/pts
|
||||
mount none /dev/pts -t devpts
|
||||
mount -t sysfs none /sys 2>&-
|
||||
59
target/linux/ar7-2.4/src/adam2patcher.c
Normal file
59
target/linux/ar7-2.4/src/adam2patcher.c
Normal file
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* patcher.c - ADAM2 patcher for Netgear DG834 (and compatible)
|
||||
*
|
||||
* Copyright (C) 2006 Felix Fietkau
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/stat.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int fd;
|
||||
char *ptr;
|
||||
uint32_t *i;
|
||||
|
||||
if (argc != 2) {
|
||||
fprintf(stderr, "Usage: %s <filename>\n", argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (((fd = open(argv[1], O_RDWR)) < 0)
|
||||
|| ((ptr = mmap(0, 128 * 1024, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)) == (void *) (-1))) {
|
||||
fprintf(stderr, "Can't open file\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
i = (uint32_t *) &ptr[0x3944];
|
||||
if (*i == 0x0c000944) {
|
||||
fprintf(stderr, "Unpatched ADAM2 detected. Patching... ");
|
||||
*i = 0x00000000;
|
||||
msync(i, sizeof(*i), MS_SYNC|MS_INVALIDATE);
|
||||
fprintf(stderr, "done!\n");
|
||||
} else if (*i == 0x00000000) {
|
||||
fprintf(stderr, "Patched ADAM2 detected.\n");
|
||||
} else {
|
||||
fprintf(stderr, "Unknown ADAM2 detected. Can't patch!\n");
|
||||
}
|
||||
|
||||
close(fd);
|
||||
}
|
||||
Reference in New Issue
Block a user