initial brax3 device makefiles
* boots and works fine Signed-off-by: erascape <erascape@proton.me>
This commit is contained in:
commit
59281ccd87
67 changed files with 3271 additions and 0 deletions
167
ramdisk-overlay/scripts/panic/telnet
Executable file
167
ramdisk-overlay/scripts/panic/telnet
Executable file
|
@ -0,0 +1,167 @@
|
|||
#!/bin/sh
|
||||
|
||||
PREREQ=""
|
||||
prereqs() {
|
||||
echo "$PREREQ"
|
||||
}
|
||||
case $1 in
|
||||
# get pre-requisites
|
||||
prereqs)
|
||||
prereqs
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
USB_FUNCTIONS=rndis
|
||||
ANDROID_USB=/sys/class/android_usb/android0
|
||||
GADGET_DIR=/config/usb_gadget
|
||||
LOCAL_IP=192.168.2.15
|
||||
EXPLICIT_BUSYBOX="/bin/busybox"
|
||||
TELNET_DEBUG_PORT=23
|
||||
|
||||
write() {
|
||||
echo -n "$2" >"$1"
|
||||
}
|
||||
|
||||
# This sets up the USB with whatever USB_FUNCTIONS are set to via configfs
|
||||
usb_setup_configfs() {
|
||||
G_USB_ISERIAL=$GADGET_DIR/g1/strings/0x409/serialnumber
|
||||
|
||||
mkdir $GADGET_DIR/g1
|
||||
write $GADGET_DIR/g1/idVendor "0x18D1"
|
||||
write $GADGET_DIR/g1/idProduct "0xD001"
|
||||
mkdir $GADGET_DIR/g1/strings/0x409
|
||||
write $GADGET_DIR/g1/strings/0x409/serialnumber "$1"
|
||||
write $GADGET_DIR/g1/strings/0x409/manufacturer "Halium initrd"
|
||||
write $GADGET_DIR/g1/strings/0x409/product "Failed to boot"
|
||||
|
||||
if echo $USB_FUNCTIONS | grep -q "rndis"; then
|
||||
NETWORK_FUNCTION=""
|
||||
for function in ncm.usb0 rndis.usb0 rndis_bam.rndis; do
|
||||
if mkdir $GADGET_DIR/g1/functions/$function; then
|
||||
NETWORK_FUNCTION=$function
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$NETWORK_FUNCTION" ]; then
|
||||
echo "Error: No USB network gadget function available" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
echo $USB_FUNCTIONS | grep -q "mass_storage" && mkdir $GADGET_DIR/g1/functions/storage.0
|
||||
|
||||
mkdir $GADGET_DIR/g1/configs/c.1
|
||||
mkdir $GADGET_DIR/g1/configs/c.1/strings/0x409
|
||||
write $GADGET_DIR/g1/configs/c.1/strings/0x409/configuration "$USB_FUNCTIONS"
|
||||
|
||||
if echo $USB_FUNCTIONS | grep -q "rndis"; then
|
||||
ln -s $GADGET_DIR/g1/functions/$NETWORK_FUNCTION $GADGET_DIR/g1/configs/c.1
|
||||
fi
|
||||
echo $USB_FUNCTIONS | grep -q "mass_storage" && ln -s $GADGET_DIR/g1/functions/storage.0 $GADGET_DIR/g1/configs/c.1
|
||||
|
||||
echo "$(ls /sys/class/udc | grep -v dummy | head -1)" > $GADGET_DIR/g1/UDC
|
||||
}
|
||||
|
||||
# This sets up the USB with whatever USB_FUNCTIONS are set to via android_usb
|
||||
usb_setup_android_usb() {
|
||||
G_USB_ISERIAL=$ANDROID_USB/iSerial
|
||||
write $ANDROID_USB/enable 0
|
||||
write $ANDROID_USB/functions ""
|
||||
write $ANDROID_USB/enable 1
|
||||
usleep 500000 # 0.5 delay to attempt to remove rndis function
|
||||
write $ANDROID_USB/enable 0
|
||||
write $ANDROID_USB/idVendor 18D1
|
||||
write $ANDROID_USB/idProduct D001
|
||||
write $ANDROID_USB/iManufacturer "Halium initrd"
|
||||
write $ANDROID_USB/iProduct "Failed to boot"
|
||||
write $ANDROID_USB/iSerial "$1"
|
||||
write $ANDROID_USB/functions $USB_FUNCTIONS
|
||||
write $ANDROID_USB/enable 1
|
||||
}
|
||||
|
||||
# This determines which USB setup method is going to be used
|
||||
usb_setup() {
|
||||
mkdir /config || true
|
||||
mount -t configfs none /config || true
|
||||
|
||||
if [ -d $ANDROID_USB ]; then
|
||||
usb_setup_android_usb $1
|
||||
elif [ -d $GADGET_DIR ]; then
|
||||
usb_setup_configfs $1
|
||||
fi
|
||||
}
|
||||
|
||||
usb_info() {
|
||||
# make sure USB is settled
|
||||
echo "########################## usb_info: $1"
|
||||
sleep 1
|
||||
write $G_USB_ISERIAL "$1"
|
||||
}
|
||||
|
||||
inject_loop() {
|
||||
INJ_DIR=/init-ctl
|
||||
INJ_STDIN=$INJ_DIR/stdin
|
||||
|
||||
mkdir $INJ_DIR
|
||||
mkfifo $INJ_STDIN
|
||||
echo "This entire directory is for debugging init - it can safely be removed" >$INJ_DIR/README
|
||||
|
||||
echo "########################## Beginning inject loop"
|
||||
while :; do
|
||||
while read IN; do
|
||||
if [ "$IN" = "continue" ]; then break 2; fi
|
||||
$IN
|
||||
done <$INJ_STDIN
|
||||
done
|
||||
rm -rf $INJ_DIR # Clean up if we exited nicely
|
||||
echo "########################## inject loop done"
|
||||
}
|
||||
|
||||
usb_setup "halium-initrd telnet 192.168.2.15"
|
||||
|
||||
USB_IFACE=notfound
|
||||
/sbin/ifconfig rndis0 $LOCAL_IP && USB_IFACE=rndis0
|
||||
if [ x$USB_IFACE = xnotfound ]; then
|
||||
/sbin/ifconfig usb0 $LOCAL_IP && USB_IFACE=usb0
|
||||
fi
|
||||
# Report for the logs
|
||||
/sbin/ifconfig -a
|
||||
|
||||
# Unable to set up USB interface? Reboot.
|
||||
if [ x$USB_IFACE = xnotfound ]; then
|
||||
usb_info "Halium initrd Debug: ERROR: could not setup USB as usb0 or rndis0"
|
||||
dmesg
|
||||
sleep 60 # plenty long enough to check usb on host
|
||||
reboot -f
|
||||
fi
|
||||
|
||||
# Create /etc/udhcpd.conf file.
|
||||
echo "start 192.168.2.20" >/etc/udhcpd.conf
|
||||
echo "end 192.168.2.90" >>/etc/udhcpd.conf
|
||||
echo "lease_file /var/udhcpd.leases" >>/etc/udhcpd.conf
|
||||
echo "interface $USB_IFACE" >>/etc/udhcpd.conf
|
||||
echo "option subnet 255.255.255.0" >>/etc/udhcpd.conf
|
||||
|
||||
# Be explicit about busybox so this works in a rootfs too
|
||||
echo "########################## starting dhcpd"
|
||||
$EXPLICIT_BUSYBOX udhcpd
|
||||
|
||||
# Non-blocking telnetd
|
||||
echo "########################## starting telnetd"
|
||||
# We run telnetd on different ports pre/post-switch_root This
|
||||
# avoids problems with an unterminated pre-switch_root telnetd
|
||||
# hogging the port
|
||||
$EXPLICIT_BUSYBOX telnetd -b ${LOCAL_IP}:${TELNET_DEBUG_PORT} -l /bin/sh
|
||||
|
||||
# For some reason this does not work in rootfs
|
||||
usb_info "Halium initrd Debug telnet on port $TELNET_DEBUG_PORT on $USB_IFACE $LOCAL_IP - also running udhcpd"
|
||||
|
||||
ps -wlT
|
||||
ps -ef
|
||||
netstat -lnp
|
||||
cat /proc/mounts
|
||||
sync
|
||||
|
||||
# Run command injection loop = can be exited via 'continue'
|
||||
inject_loop
|
Loading…
Add table
Add a link
Reference in a new issue