-
Notifications
You must be signed in to change notification settings - Fork 52
Setup Optware NG on ArmHardFloat (Odroid, Raspberry Pi, Banana Pi...)
This is a complete guide about how to install New Generation Optware on devices with ArmHardFloat cpu, tested on Odroid C1, XU4, Ubuntu 14.04 & 15.10 ####01) Download and create Optware environment
cd /
mkdir -p /opt
cd /opt
wget -O - http://ipkg.nslu2-linux.org/optware-ng/bootstrap/buildroot-armeabihf-bootstrap.sh | sh
####02) Add path
export PATH=$PATH:/opt/bin:/opt/sbin
####03) Install findutils package
ipkg install findutils
####04) Create init.d startup script, paste in terminal
cat >> /etc/init.d/optware.sh << 'EOF'
#!/bin/sh
### BEGIN INIT INFO
# Provides: optware-ng
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Daemonized version of deluge and webui.
# Description: Starts optware-ng installed services
# Author: TeHashX / contact@hqt.ro
### END INIT INFO
# Optware-NG Author: Alllexx
# Modified: TeHashX
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
SCRIPTNAME=optware
OPT='/opt/etc/init.d/rc.unslung'
case "$1" in
start)
echo "Starting Optware-NG installed services"
sleep 5
$OPT start
;;
stop)
echo "Stopping Optware-NG installed services"
$OPT stop
;;
restart|force-reload)
echo "Restarting Optware-NG installed services"
$OPT stop
sleep 2
$OPT start
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >\&2
exit 3
;;
esac
:
EOF
Press ENTER ####05) Make script executable
chmod +x /etc/init.d/optware.sh
####06) Create rc.func script, paste in terminal
cat >> /opt/etc/init.d/rc.func << 'EOF'
#!/bin/sh
ACTION=$1
CALLER=$2
ansi_red="\033[1;31m";
ansi_white="\033[1;37m";
ansi_green="\033[1;32m";
ansi_yellow="\033[1;33m";
ansi_blue="\033[1;34m";
ansi_bell="\007";
ansi_blink="\033[5m";
ansi_std="\033[m";
ansi_rev="\033[7m";
ansi_ul="\033[4m";
start() {
[ "$CRITICAL" != "yes" -a "$CALLER" = "cron" ] && return 7
[ "$ENABLED" != "yes" ] && return 8
echo -e -n "$ansi_white Starting $DESC... "
if [ -n "`pidof $PROC`" ]; then
echo -e " $ansi_yellow already running. $ansi_std"
return 0
fi
$PRECMD > /dev/null 2>&1
$PREARGS $PROC $ARGS > /dev/null 2>&1 &
#echo $PREARGS $PROC $ARGS
COUNTER=0
LIMIT=10
while [ -z "`pidof $PROC`" -a "$COUNTER" -le "$LIMIT" ]; do
sleep 1s;
COUNTER=`expr $COUNTER + 1`
done
$POSTCMD > /dev/null 2>&1
if [ -z "`pidof $PROC`" ]; then
echo -e " $ansi_red failed. $ansi_std"
logger "Failed to start $DESC from $CALLER."
return 255
else
echo -e " $ansi_green done. $ansi_std"
logger "Started $DESC from $CALLER."
return 0
fi
}
stop() {
case "$ACTION" in
stop | restart)
echo -e -n "$ansi_white Shutting down $PROC... "
killall $PROC 2>/dev/null
COUNTER=0
LIMIT=10
while [ -n "`pidof $PROC`" -a "$COUNTER" -le "$LIMIT" ]; do
sleep 1s;
COUNTER=`expr $COUNTER + 1`
done
;;
kill)
echo -e -n "$ansi_white Killing $PROC... "
killall -9 $PROC 2>/dev/null
;;
esac
if [ -n "`pidof $PROC`" ]; then
echo -e " $ansi_red failed. $ansi_std"
return 255
else
echo -e " $ansi_green done. $ansi_std"
return 0
fi
}
check() {
echo -e -n "$ansi_white Checking $DESC... "
if [ -n "`pidof $PROC`" ]; then
echo -e " $ansi_green alive. $ansi_std";
return 0
else
echo -e " $ansi_red dead. $ansi_std";
return 1
fi
}
reconfigure() {
SIGNAL=SIGHUP
echo -e "$ansi_white Sending $SIGNAL to $PROC... "
killall -$SIGNAL $PROC 2>/dev/null
}
for PROC in $PROCS; do
case $ACTION in
start)
start
;;
stop | kill )
check && stop
;;
restart)
check > /dev/null && stop
start
;;
check)
check
;;
reconfigure)
reconfigure
;;
*)
echo -e "$ansi_white Usage: $0 (start|stop|restart|check|kill|reconfigure)$ansi_std"
exit 1
;;
esac
done
EOF
Press ENTER ####07) Create rc.unslung script, paste in terminal
cat >> /opt/etc/init.d/rc.unslung << 'EOF'
#!/bin/sh
# Start/stop all init scripts in /opt/etc/init.d including symlinks
# starting them in numerical order and
# stopping them in reverse numerical order
#logger "Started $0${*:+ $*}."
ACTION=$1
CALLER=$2
if [ $# -lt 1 ]; then
printf "Usage: $0 {start|stop|restart|reconfigure|check|kill}\n" >&2
exit 1
fi
[ $ACTION = stop -o $ACTION = restart -o $ACTION = kill ] && ORDER="-r"
for i in $(/opt/bin/find /opt/etc/init.d/ -perm '-u+x' -name 'S*' | sort $ORDER ) ;
do
case "$i" in
S* | *.sh )
# Source shell script for speed.
trap "" INT QUIT TSTP EXIT
#set $1
#echo "trying $i" >> /tmp/rc.log
. $i $ACTION $CALLER
;;
*)
# No sh extension, so fork subprocess.
$i $ACTION $CALLER
;;
esac
done
EOF
Press ENTER ####08) Make scripts executable
chmod +x /opt/etc/init.d/*
####09) Install some precompiled Optware packages, ex. minidlna
ipkg install minidlna
####10) Enable automatically start on system reboot
update-rc.d optware.sh defaults
####11) Start all optware installed services
/etc/init.d/optware.sh start
If you reenter terminal or reboot the device, the path is lost, to make it permanent add optware path to /etc/profile.d, paste in terminal
echo 'PATH=$PATH:/opt/bin:/opt/sbin' >> /etc/profile.d/optware-path.sh
Now enjoy tones of precompiled packages from this list
Thanks @alllexx88 for New Generation Optware & @ryzhovau for scripts