Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:koarrl_alzraspi

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:koarrl_alzraspi [2019/07/11 13:45]
koarrl [---- Debian-stable installieren ----]
de:koarrl_alzraspi [2019/10/10 18:12] (aktuell)
koarrl [Thermometer-Testtool]
Zeile 1: Zeile 1:
 ====== koarrl: Alzheim-RaspberryPi 2 oder 3  ====== ====== koarrl: Alzheim-RaspberryPi 2 oder 3  ======
  
-(last edit: 2019-07-11)+(last edit: 2019-10-10- BAUSTELLE .. wird aber bald fertig ... \\ 
 + 
 +Neuerdings läuft das Ding unter Raspbian-10,​ aber ohne systemd.\\ 
 +Warum? Siehe [[https://​ihatesystemd.com/​]]
  
 ==== ---- Debian-stable (Raspbian 10 - buster) installieren ---- ==== ==== ---- Debian-stable (Raspbian 10 - buster) installieren ---- ====
Zeile 99: Zeile 102:
 === SDcard einsetzen, Raspberry Pi einschalten === === SDcard einsetzen, Raspberry Pi einschalten ===
 (Beim ersten Booten bläst sich die Root-Partition auf den maximal verfügbaren Platz der SDcard auf!) \\ (Beim ersten Booten bläst sich die Root-Partition auf den maximal verfügbaren Platz der SDcard auf!) \\
-ACHTUNG! Nicht alle 2G-SD-Karten sind genau gleich groß, etwas zu große Images auf kleinere Karten zurückzuspielen macht später Ärger.+ACHTUNG! Nicht alle SD-Karten sind genau gleich groß, etwas zu große Images auf kleinere Karten zurückzuspielen macht später Ärger. ​Es spricht aber nichts dagegen, fixe Größen für Boot- und Rootpartition einzuführen. Eine dritte Daten-Partition am Ende kann dann den restlichen Platz auf der SD-Karte ausfüllen. 
 + 
 +Beispiel - das ist ein selbstgebasteltes Debian 10/​SysV-Lite-Image (Update-Stand 2019-10-09) 
 +  
 +  # fdisk -l '​buster-lite-sysv-all(pi2)-8G-20191009_2.img'​ 
 +  .. blabla .. 
 +  Device ​                                      ​Boot ​  ​Start ​     End  Sectors ​ Size Id Type 
 +  buster-lite-sysv-all(pi2)-8G-20191009_2.img1 ​        ​8192 ​  ​532480 ​  ​524289 ​ 256M  c W95 FAT32 (LBA) 
 +  buster-lite-sysv-all(pi2)-8G-20191009_2.img2 ​      ​540672 ​ 4734975 ​ 4194304 ​   2G 83 Linux 
 +  buster-lite-sysv-all(pi2)-8G-20191009_2.img3 ​     4734976 15278079 10543104 ​   5G 83 Linux 
 + 
 +Dieses Image läßt sich 1:1 auf größere SD-Karten dd-en. \\ 
 +Dann muß man nur die Partition 3 löschen und ab dem alten Startsektor (hier: 4734976) bis zum physikalischen Ende der SD-Karte neu anlegen. Unmounten, mit mkfs.ext4 neu formatieren,​ fertig! \\ 
 +Für das alltägliche Backup genügt es, die Root-Partition (p2), die genau 2GiB (4194304 Sektoren a 512 bytes) groß ist, zu sichern. Auf der FAT-Partition ändert sich aber im Zuge von Kernelupdates auch etwas!
  
 Erster login - z.B. von einem Laptop mit zurechtgebogener eth-Schnittstelle. \\ Erster login - z.B. von einem Laptop mit zurechtgebogener eth-Schnittstelle. \\
Zeile 217: Zeile 233:
 ... und wieder rebooten! ... ... und wieder rebooten! ...
  
 +Was hängt eigentlich beim Pi2 am USB-Bus?
 +
 +  148F:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
 +  0424:ec00 SMSC9512/​9514 Fast Ethernet Adapter
 +  0424:9514 SMC9514 USB Hub
 +  1d6b:0002 Linux Foundation 2.0 root hub
  
  
Zeile 330: Zeile 352:
 Dank gebührt den Schreibern von [[https://​wiki.archlinux.org/​index.php/​Autofs]] . Dank gebührt den Schreibern von [[https://​wiki.archlinux.org/​index.php/​Autofs]] .
  
-=== Minimalistischen cgi-fähigen ​Webserver aufsetzen ===+=== Webserver ​lighttpd ​aufsetzen ===
  
-Wir nehmen, da es kein Debian-Paket mehr gibt, die Sourcen, um thttpd im Letztstand zu bauen, von hier: \\ +Paket installieren:
-[[https://​acme.com/​software/​thttpd/​thttpd-2.29.tar.gz]] +
-     +
-Davon gibt es eine Koarl-mod: thttpd-2.29c (kleine Umbauten) \\ +
- +
-  * Makefile.in modifiziert +
-  * verwendet user:group www-data:​www-data +
-  * server root = /var/www +
-  * initscript dazu: thttpd.sh +
-     +
-Einfach auf dem Pi compilieren (Achtung, ARM-Architektur,​ am Host würde man die gnu-eabi-Toolchain brauchen):​ +
-<​html><​pre><​p style="​color:​magenta;​ background-color:​ black; font-size: 11px">​  +
-pi@raspberrypi:​~ $ ./configure --prefix=/​usr/​local +
-pi@raspberrypi:​~ $ make +
-pi@raspberrypi:​~ $ sudo make install +
- +
-</​p></​pre></​html>​ +
-Ja, das dauert ein Weilchen. Ungeduldige starten den Webserver dann mit folgender Commandline:+
 <​html><​pre><​p style="​color:​orange;​ background-color:​ black; font-size: 11px"> ​ <​html><​pre><​p style="​color:​orange;​ background-color:​ black; font-size: 11px"> ​
-root@raspberrypi:​~# ​/​usr/​local/​sbin/​thttpd ​-d /var/www -c "​**"​+root@raspberrypi:​~# ​apt-get install lighttpd
  
 </​p></​pre></​html>​ </​p></​pre></​html>​
-Oder besser und dauerhaft per initscript (dieses thttpd.sh hier ist beigepackt in V2.29d) 
  
-<​html><​pre><​p style="​colorgrey; background-colorwhite; font-size: 11px"><​file thttpd> +Dieser Server läuft defaultmäßig mit user:gruppe www-data:www-data. \\ 
-#!/bin/sh+Für einen Pi empfiehlt es sich, die "server root" auf eine RAMdisk unter /var/www zu legen. \\ 
 +/etc/fstab sieht also etwa so aus:
  
-### BEGIN INIT INFO +  proc                    /proc           ​proc ​   defaults ​                       0  0 
-# Provides: ​         thttpd webserver +  ​PARTUUID=0634f60c-01    /boot           ​vfat ​   defaults ​                       0  ​
-# Required-Start:​ +  ​PARTUUID=0634f60c-02    /               ​ext4 ​   defaults,​noatime ​               ​ 
-# Required-Stop: ​    ​umountroot +  ​PARTUUID=0634f60c-03    /DATA           ​ext4 ​   defaults,​noatime ​               0  1 
-# Should-Stop: ​       +  ​none ​                   /​var/​www ​       tmpfs   ​uid=root,​gid=www-data,​size=2M ​  ​0 ​ 0
-# X-Start-Before: ​   checkroot +
-# Default-Start: ​    3 4 5 +
-# Default-Stop:      ​0 1 6 +
-# Short-Description:​ handle thttp daemon (locally built version 2.29d needed!) +
-# Description: ​       +
-### END INIT INFO+
  
-set -e+Folgende Konfigurationen gehören (eventuell) geändert: \\ 
 +1. in /​etc/​lighttpd/​lighttpd.conf
  
-# Include core init functions if needed +  server.document-root ​       = "/var/www" 
-. /lib/lsb/init-functions+  server.port ​                = 8080 
 +  static-file.exclude-extensions = ( "​.php",​ "​.pl",​ "​.fcgi",​ "​.cgi"​ )
  
-# server config might be found here ... +2- in /etc/lighttpd/conf-available/10-cgi.conf: \\
-CONFIGFILE=/etc/default/thttpd +
-SRV_VER=`/usr/​local/​sbin/​thttpd ​-V`+
  
-case "${1:-}" in+  alias.url += ( "/cgi-bin/" ​=> "/​var/​www/​cgi-bin/"​ ) 
 +   
 +3. - Symlink anlegen ​in /​etc/​lighttpd/​conf-enabled auf /​etc/​lighttpd/​conf-available/​10-cgi.conf !
  
-    start) 
-        echo "​Starting thttpd webserver $SRV_VER"​ 
-        if [ -f $CONFIGFILE ]; then 
-            /​usr/​local/​sbin/​thttpd -C $CONFIGFILE 
-        else 
-            /​usr/​local/​sbin/​thttpd -d /var/www -c "​**"​ 
-        fi 
-        ;; 
- 
-    stop) 
-        PID=`pidof thttpd` 
-        echo "​Stopping thttpd webserver"​ 
-        [ -n "​$PID"​ ] && kill -9 $PID 
-        ;;        ​ 
- 
-    restart | force-reload) 
-        $0 stop 
-        $0 start 
-        ;; 
-        ​ 
-    status) 
-        echo -n "​thttpd webserver"​ 
-        [ -z "​`pidof thttpd`"​ ] && echo -n " NOT" 
-        echo " running!"​ 
-        exit 0 
-        ;; 
- 
-    *) 
-        echo "​Usage:​ ${0:-} {start|stop|restart|force-reload|status}"​ >&2 
-        exit 1 
-        ;; 
-esac 
-</​file></​p></​pre></​html>​ 
- 
- 
-NEU: der hungrige systemd muß nun gefüttert werden, das Initscript ist im alten LSB-Stil. Siehe [[https://​wiki.debian.org/​LSBInitScripts]] 
-<​html><​pre><​p style="​color:​orange;​ background-color:​ black; font-size: 11px">​ 
-root@raspberrypi:​~#​ cp thttpd.sh /​etc/​init.d/​thttpd 
-root@raspberrypi:​~#​ chown root:root /​etc/​init.d/​thttpd 
-root@raspberrypi:​~#​ chkconfig -add thttpd 
- 
-</​p></​pre></​html>​ 
-Kontrolle: wird das thttpd-Initscript in den Runlevels 2,3,4,5 gestartet? 
-(welche runlevels? Siehe Kommentar-Header im Startscript) 
-<​html><​pre><​p style="​color:​orange;​ background-color:​ black; font-size: 11px">​ 
-root@raspberrypi:​~#​ chkconfig -l  
-..... 
-thttpd ​                   0:off  1:off  2:on  3:on  4:on  5:on  6:off  S:on  
-.... 
- 
-</​p></​pre></​html>​ 
 Und nun? Das Server-Root-Verzeichnis mit anzeigbaren Test-Files befüllen (index.html,​ cgi-bin/​helloCGI,​ ...) \\  Und nun? Das Server-Root-Verzeichnis mit anzeigbaren Test-Files befüllen (index.html,​ cgi-bin/​helloCGI,​ ...) \\ 
-Damit werden statische HTML-Seiten und beliebige cgi-scripts geliefert ​(Sicherheit = egal!) ​\\    +Damit werden statische HTML-Seiten und beliebige cgi-scripts geliefert \\    
-Der Webserver wird ab jetzt nach jedem Reboot gemäß ​dem Initscript ​gestartet!+Der Webserver wird ab jetzt nach jedem Reboot gemäß ​/​etc/​init.d/​lighttpd ​gestartet.
  
 === Headless-System weiter abschlanken === === Headless-System weiter abschlanken ===
Zeile 478: Zeile 428:
 <​html><​pre><​p style="​color:​orange;​ background-color:​ black; font-size: 11px">​ <​html><​pre><​p style="​color:​orange;​ background-color:​ black; font-size: 11px">​
 root@raspberrypi:​~#​ iw list root@raspberrypi:​~#​ iw list
- 
-</​p></​pre></​html>​ 
-Zeige existente WLANs an: 
-<​html><​pre><​p style="​color:​orange;​ background-color:​ black; font-size: 11px">​ 
-root@raspberrypi:​~#​ iwlist wlan0 scan | grep ESSID 
  
 </​p></​pre></​html> ​ </​p></​pre></​html> ​
Zeile 499: Zeile 444:
 2. wpa_passphrase muß mindestens 9 Zeichen lang sein. \\ 2. wpa_passphrase muß mindestens 9 Zeichen lang sein. \\
 3. beacon_int muß zwischen 15 und 65535 [Sekunden] betragen. \\ 3. beacon_int muß zwischen 15 und 65535 [Sekunden] betragen. \\
-Dieses kommentarbereinigte,​ minimalistische File hier läuft am RPi3:+Dieses kommentarbereinigte,​ minimalistische File hier läuft am RPi2 und auch 3. \\ 
 +AchtungDas Weglassen der "Zeile driver=xyz"​ erspart viel Ärger!
  
 <​html><​pre><​p style="​color:​ grey; background-color:​ white; font-size: 11px"><​file hostapd.conf>​ <​html><​pre><​p style="​color:​ grey; background-color:​ white; font-size: 11px"><​file hostapd.conf>​
Zeile 506: Zeile 452:
  
 interface=wlan0 interface=wlan0
-driver=nl80211 +ssid=rpi-wlan
-ssid=rpi3-wlan+
 hw_mode=g hw_mode=g
 channel=4 channel=4
Zeile 539: Zeile 484:
 </​p></​pre></​html> ​ </​p></​pre></​html> ​
  
 +Anmerkung: Wird ein USB-WLAN-Stick ab- und wieder angesteckt, lebt er erst wieder nach folgenden Aktionen:
 +<​html><​pre><​p style="​color:​orange;​ background-color:​ black; font-size: 11px">​
 +root@raspberrypi:​~#​ /​etc/​init.d/​hostapd restart
 +[ ok ] Stopping advanced IEEE 802.11 management: hostapd.
 +[ ok ] Starting advanced IEEE 802.11 management: hostapd.
 +root@raspberrypi:​~#​ /​etc/​init.d/​dhcpcd restart
 +sending signal TERM to pid 2246
 +waiting for pid 2246 to exit
 +DUID 00:​01:​00:​01:​24:​9e:​78:​0f:​b8:​27:​eb:​8a:​98:​9b
 +eth0: IAID eb:8a:98:9b
 +eth0: adding address fe80::​ca7a:​83ab:​3e68:​ed1c
 +ipv6_addaddr1:​ Operation not supported
 +wlan0: IAID 00:66:94:c2
 +wlan0: adding address fe80::​44c6:​6f2d:​1292:​4c13
 +ipv6_addaddr1:​ Operation not supported
 +wlan0: using static address 10.0.0.1/24
 +wlan0: adding route to 10.0.0.0/24
 +forked to background, child pid 3985
 +root@raspberrypi:​~#​
 +
 +</​p></​pre></​html> ​
 === DHCP-Server aufsetzen === === DHCP-Server aufsetzen ===
 ggfs Paket installieren und dann den Dienst gleich einmal stoppen. Originales Configfile sichern. ggfs Paket installieren und dann den Dienst gleich einmal stoppen. Originales Configfile sichern.
Zeile 569: Zeile 535:
 interface=wlan0 interface=wlan0
 no-dhcp-interface=eth0 no-dhcp-interface=eth0
-dhcp-range=interface:​wlan0,​10.0.0.2,10.0.0.5,infinite+dhcp-range=interface:​wlan0,​192.168.4.2,192.168.4.3,infinite
  
 </​file></​p></​pre></​html>​ </​file></​p></​pre></​html>​
Zeile 808: Zeile 774:
 Leider hängt sich manchmal beim Umstecken etwas auf, dann hilft nur noch reboot. Leider hängt sich manchmal beim Umstecken etwas auf, dann hilft nur noch reboot.
  
-<​html><​pre><​p style="​color:​ grey; background-color:​ white; font-size: 11px"><​file ​TIC-hwclock>+<​html><​pre><​p style="​color:​ grey; background-color:​ white; font-size: 11px"><​file ​tictest>
 #!/bin/bash #!/bin/bash
 # **************************************************************************** # ****************************************************************************
 # #
-# tict: a tool for old Dallas DS1994 checking+      tictest: a tool for old Dallas DS1994 checking
 # #
-# by koarrl 2019-04-24+      ​by koarrl 2019-07-12 (Raspbian 10) 
 +
 +#       can deal with duplicate entries in owfs tree (tekes the first one)
 # #
 # **************************************************************************** # ****************************************************************************
Zeile 820: Zeile 788:
 usage() usage()
 { {
- echo "​usage:​ `basename $0` { r | s | t }" +        ​echo "​usage:​ `basename $0` { r | s | t }" 
- echo " ​ r .. read time & date from TIC" +        echo " ​ r .. read time & date from TIC" 
- echo " ​ s .. write system time to TIC & start it, report success or failure"​ +        echo " ​ s .. write system time to TIC & start it, report success or failure"​ 
- echo " ​ t .. halt TIC internal clock (save battery)"​+        echo " ​ t .. halt TIC internal clock (save battery)"​
 } }
  
 waittic() waittic()
 { {
- NOWTIC=`ls -1 /media/owfs | grep 04.` +        ​NOWTIC=`ls -1 /media/owfs | grep 04. | head -1
- if [ -z "​$NOWTIC"​ ]; then +        if [ -z "​$NOWTIC"​ ]; then 
- echo -n "​Insert TIC please " +                echo -n "​Insert TIC please " 
- while ((1)); do +                while ((1)); do 
- sleep 0.5 +                        sleep 0.5 
- NOWTIC=`ls -1 /media/owfs | grep 04.` +                        NOWTIC=`ls -1 /media/owfs | grep 04. | head -1
- [ -n "​$NOWTIC"​ ] && { echo; break; } +                        [ -n "​$NOWTIC"​ ] && { echo; break; } 
- echo -n "​."​ +                        echo -n "​."​ 
- done +                done 
- fi +        fi 
- echo "TIC found: "​$NOWTIC+        echo "TIC found: "​$NOWTIC
 } }
  
 getstate() getstate()
 { {
- SEC1=`cat $TICMOUNT/​$NOWTIC/​udate` +        ​SEC1=`cat $TICMOUNT/​$NOWTIC/​udate` 
- sleep 1.1 +        sleep 1.1 
- SEC2=`cat $TICMOUNT/​$NOWTIC/​udate` +        SEC2=`cat $TICMOUNT/​$NOWTIC/​udate` 
- if [ $((SEC2-SEC1)) != 0 ]; then +        if [ $((SEC2-SEC1)) != 0 ]; then 
- STATE=running +                STATE=running 
- else +        else 
- STATE=stopped +                STATE=stopped 
- fi+        fi
 } }
  
Zeile 859: Zeile 827:
 [ -z $1 ] && { usage; exit; } [ -z $1 ] && { usage; exit; }
 [ -d $TICMOUNT ] || { echo "owfs needed, but not found! Sorry.";​ exit; } [ -d $TICMOUNT ] || { echo "owfs needed, but not found! Sorry.";​ exit; }
-[ -n `ls -1 $TICMOUNT | grep 04.` ] && waittic+[ -n `ls -1 $TICMOUNT | grep 04. | head -1` ] && waittic
  
 case "​$1"​ in case "​$1"​ in
- r) +        ​r) 
- echo "​Reading time from TIC ..." +                echo "​Reading time from TIC ..." 
- getstate +                getstate 
- echo "TIC ...... "`cat $TICMOUNT/​$NOWTIC/​date`"​ ($STATE)"​ +                echo "TIC ...... "`cat $TICMOUNT/​$NOWTIC/​date`"​ ($STATE)"​ 
- echo "​System ... "​`date` +                echo "​System ... "​`date` 
- ;; +                ;; 
- s) +        s) 
- echo "​Setting time and starting TIC ..." +                echo "​Setting time and starting TIC ..." 
- echo 1 > $TICMOUNT/​$NOWTIC/​readonly/​clock +                echo 1 > $TICMOUNT/​$NOWTIC/​readonly/​clock 
- echo > $TICMOUNT/​$NOWTIC/​date +                echo > $TICMOUNT/​$NOWTIC/​date 
- echo 0 > $TICMOUNT/​$NOWTIC/​readonly/​clock +                echo 0 > $TICMOUNT/​$NOWTIC/​readonly/​clock 
- echo 1 > $TICMOUNT/​$NOWTIC/​running +                echo 1 > $TICMOUNT/​$NOWTIC/​running 
- getstate +                getstate 
- echo "TIC ...... "`cat $TICMOUNT/​$NOWTIC/​date`"​ ($STATE)"​ +                echo "TIC ...... "`cat $TICMOUNT/​$NOWTIC/​date`"​ ($STATE)"​ 
- echo "​System ... "​`date` +                echo "​System ... "​`date` 
- ;; +                ;; 
- t) +        t) 
- echo "​Stopping TIC ..." +                echo "​Stopping TIC ..." 
- echo 0 > $TICMOUNT/​$NOWTIC/​running +                echo 0 > $TICMOUNT/​$NOWTIC/​running 
- ;; +                ;; 
- *) +        *) 
- ;;+                ;;
 esac esac
 </​file></​p></​pre></​html>​ </​file></​p></​pre></​html>​
 +
 +=== Thermometer-Testtool ===
 +
 +Damit kann man DS1820 und 18B20 funktionsprüfen. \\
 +
 +<​html><​pre><​p style="​color:​ grey; background-color:​ white; font-size: 11px"><​file thermo>
 +#!/bin/sh
 +# ****************************************************************************
 +#
 +#   ​thermo
 +#
 +#   just a test for DS1820 | DS18B20 onewire thermometers
 +#
 +#   V0.01 by koarrl, 2019-09-19
 +#
 +# ****************************************************************************
 +
 +show_data()
 +{
 +cd $MYTHERM
 +echo " ​   address = "`cat address`
 +echo " latesttemp = "`cat latesttemp`
 +echo "​temperature = "`cat temperature`
 +echo " ​  ​temphigh = "`cat temphigh`
 +echo " ​   templow = "`cat templow`
 +}
 +
 +THERMOUNT="/​media/​owfs" ​                        # this is the owfs mountpoint
 +
 +# determine if DS1820 is connected, take the first one if multiple do exist
 +
 +if [ -d $THERMOUNT/​10.????????????​ ]; then
 +    MYTHERM=`ls -d $THERMOUNT/​10.* | head -n1`
 +    echo "-- DS1820 --"
 +    show_data
 +fi
 +
 +# determine if DS18B20 is connected, take the first one if multiple do exist
 +
 +if [ -d $THERMOUNT/​28.????????????​ ]; then
 +    MYTHERM=`ls -d $THERMOUNT/​28.* | head -n1`
 +    echo "-- DS18B20 --"
 +    show_data
 +fi
 +
 +if [ -z "​$MYTHERM"​ ]; then
 +    echo "​Sorry,​ neither a DS1820 nor a DS18B20 found!"​
 +fi
 +</​file></​p></​pre></​html>​
 +
 +Es hat sich gezeigt, daß mehrere Thermometer einzeln an mehrere Portpins angeschlossen werden können. \\
 +Sie scheinen dann extra und über ihre unique number identifizierbar im owfs-Baum auf. \\
 +Allerdings muß dann /​boot/​config.txt entsprechend editiert werden (z.B.):
 +
 +  dtoverlay=w1-gpio,​gpiopin=4
 +  dtoverlay=w1-gpio,​gpiopin=5
 +
 +
  
de/koarrl_alzraspi.1562845541.txt.gz · Zuletzt geändert: 2019/07/11 13:45 von koarrl