R
RainerWP
Fortgeschrittenes Mitglied
- 17
Hi,
es gibt ja immer wieder Situationen bei denen man aus verschiedensten Gründen etwas testen will (Module beim Start laden, Dienste starten etc.).
Im Normalfall geht dies nur wenn die init.rc im boot.img oder system.img angepasst wird. Und das bedeutet jedesmal ein bischen Arbeit und flashen des Gerätes.
In Anlehnung an das Verfahren der Kollegen die "optware" für Embedded Devices entwickeln habe ich mir für das Loox (oder auch andere Odys Geräte) folgendes ausgedacht.
1. In jedes Custom Rom das hier entwickelt wird, wird die Datei rc.optware in /system/etc/init.d/ erstellt
Inhalt:
2. In der init.rc der boot.img muss das Skript /system/etc/init.d/rc.optware aufgerufen werden.
---> Wer weiß an welcher Stelle dies geschehen muss ?
3. Auf der SD-Karte liegt im Hauptverzeichniss die Datei optware.ini
Inhalt:
Dieser Eintrag legt den Pfad zum optware Verzeichnis auf der SD-Karte fest.
Ich habe bei mir z.B. folgende Struktur angelegt :
Wenn Punkt 1 - 3 erledigt sind werden jedesmal bei einem Neustart die entsprechenden Skripte ausgeführt.
Hier ein Beispiel für das Modul "hubenable.ko" (/sdcard/opt/etc/init.d/S01usb-hub)
Wäre toll wenn wir das für alle ROM hinkriegen würden
Wer hilft mit und bei was ?
Bis dann................
Rainer
es gibt ja immer wieder Situationen bei denen man aus verschiedensten Gründen etwas testen will (Module beim Start laden, Dienste starten etc.).
Im Normalfall geht dies nur wenn die init.rc im boot.img oder system.img angepasst wird. Und das bedeutet jedesmal ein bischen Arbeit und flashen des Gerätes.
In Anlehnung an das Verfahren der Kollegen die "optware" für Embedded Devices entwickeln habe ich mir für das Loox (oder auch andere Odys Geräte) folgendes ausgedacht.
1. In jedes Custom Rom das hier entwickelt wird, wird die Datei rc.optware in /system/etc/init.d/ erstellt
Inhalt:
Code:
#
#
# Starte Skripte in $OPTWAREINITD
# Skripte werden in numerischer Reihenfolge ausgefuehrt
#
# Datei mit dem Pfad zu dem optware Verzeichnis welches auf der SD-Karte liegt
#
OPTWAREDIR=`cat /sdcard/optware.ini`
#
# init.d Verezeichnis
#
OPTWAREINITD=$OPTWAREDIR"/etc/init.d"
#
# shell definieren
#
SH=/system/bin/sh
if [ -d $OPTWARE ]
then
for script in $OPTWAREINITD/S??*
do
[ ! -f "$script" ] && continue # Keine Symlink Dateien ausfuehren
$SH $script start
done
#
# Symbolischen Link auf /opt setzen
# macht das Tippen einfacher :-)
#
if [ ! -d /opt ]
then
/system/bin/busybox ln -s $OPTWAREDIR /opt
fi
else
#
# Kein optware Verzeichniss auf der SD-Karte vorhanden
#
exit
fi
2. In der init.rc der boot.img muss das Skript /system/etc/init.d/rc.optware aufgerufen werden.
---> Wer weiß an welcher Stelle dies geschehen muss ?
3. Auf der SD-Karte liegt im Hauptverzeichniss die Datei optware.ini
Inhalt:
Code:
/sdcard/optware
Ich habe bei mir z.B. folgende Struktur angelegt :
Code:
/sdcard/opt
/sdcard/opt/etc
/sdcard/opt/etc/init.d
/sdcard/opt/usr
/sdcard/opt/usr/local
/sdcard/opt/usr/local/bin
/sdcard/opt/usr/bin
/sdcard/opt/var
/sdcard/opt/var/log
/sdcard/opt/module
Wenn Punkt 1 - 3 erledigt sind werden jedesmal bei einem Neustart die entsprechenden Skripte ausgeführt.
Hier ein Beispiel für das Modul "hubenable.ko" (/sdcard/opt/etc/init.d/S01usb-hub)
Code:
#!/system/bin/sh
#
# Lade Modul "hubenable.ko"
#
get_status()
{
/system/bin/lsmod | /system/bin/grep "hubenable" > /dev/null
STATUS=$?
}
start ()
{
get_status
case $STATUS in
1)
echo "Lade hubenable"
/system/bin/insmod /sdcard/opt/modules/hubenable.ko
;;
0)
echo "Modul schon geladen"
;;
esac
}
stop()
{
get_status
case $STATUS in
0)
echo "Entlade hubenable"
/system/bin/rmmod hubenable
;;
1)
echo "Modul nicht geladen"
;;
esac
}
status()
{
get_status
case $STATUS in
0)
echo "Modul geladen"
;;
1)
echo "Modul nicht geladen"
;;
esac
}
force_reload()
{
stop
start
}
case $1 in
start)
start
;;
stop)
stop
;;
status)
status
;;
force_reload)
force_reload
;;
*)
echo "Usage: $0 start|stop|status|force_reload"
exit
;;
esac
Wäre toll wenn wir das für alle ROM hinkriegen würden
Wer hilft mit und bei was ?
Bis dann................
Rainer