Raspberry PI Image auf eine kleinere SD Karte schreiben

Das Raspbian bring von haus aus bereits alles mit, um die Root-Partition zu vergrössern.
Was aber, wenn ein Image z.B. von einer 32GB Karte auf eine 16GB Karte übertragen werden soll ?!?

Ich hab sowas schon öfter gemacht, Sektor Sizes, Beginn und Ende der Partitionen herumgerechnet, dann verkleinert, und schliesslich alles wieder zusammengesetzt. Aber es geht auch einfacher.

Der erste Trick versteckt sich im „-P“ Parameter. Dadurch werden auch für die Partitionen loop devices angelegt :

losetup /dev/loop0 -v -P EntpacktesImage.img

-> Jetzt gibt es ein loop0, loop0p1 und ein loop0p2 !!

Der nächste Trick besteht darin, dass mindestens eine Partition gemountet bleiben muss, sonst „verschwinden“ die Partition loop devices :

mkdir -p /mnt/1
mount /dev/loop0p1 /mnt/1

Danach erst darf die autogemountete 2. Patition ausgehängt werden :

umount /dev/loop0p2

Filesystem repair + Verkleinern :

e2fsck -f /dev/loop0p2
resize2fs /dev/loop0p2 10G

Loop Device wieder aushängen :

losetup -d /dev/loop0

Anmerkung :
1) Das Image kann dann – am besten unter Linux mit dd – auf eine kleinere Karte geschrieben werden.
Wie zu erwarten – tritt natürlich beim Schreiben eine Fehlermeldung auf „no space left on device“ …
Diese kann ignoriert werden. danach mit fdisk die root Partition wieder löschen und neu anlegen – auf die volle Grösse.
(oder alternativ – einfach den PI mit der neuen Karte starten, und dann mit raspi-config die Partition wieder vergrössern)

2) Unter Windows mit Win32Diskimager kann die Datei NICHT geschrieben werden. Denn das image hat noch die ursprüngliche Grösse, und dieses Programm lässt das nicht zu….

TP-Link TL-WR741 Erweiterung

1-Wire Temperaturfühler ist offenbar möglich via OSS-Button GPIO.
D.h. hinter dem Taster einfach den SMD-Kondensator entfernen, dann D und GND direkt am Taster anlöten. (Via Durchgangsprüfer findet man ganz einfach heraus, was was ist). +3,3 V einfach von vorne von einer LED nehmen.

Pakete installieren :

opkg update
opkg install kmod-w1 kmod-w1-gpio-custom kmod-w1-master-gpio kmod-w1-slave-therm - 3.10.49-1

Damit das auch funktioniert, müssen die Module in der richtigen Reihenfolge und das eine mit den richtigen Parametern gestartet werden. Dazu hab ich einfach das in ein Init-Script gepackt :

sleep 30

rmmod gpio_button_hotplug

rmmod gpio-buttons
rmmod wire
rmmod w1_therm
rmmod w1_gpio
insmod w1-gpio-custom bus0=0,12,0 # GPIO12 = QoS button
insmod w1-gpio
insmod w1_therm

Auslesen lässt sich der Fühler dann mit :

cat /sys/devices/w1_bus_master1/28-xxxxxxxxxx/w1_slave | grep "t=" | cut -d"=" -f2

(das xxxxxx ist natürlich durch die echte Seriennummer zu ersetzen)

Zusätzlich hab ich noch 2 LAN LEDs angezapft, damit ich via H-Brücke ein Bistabiles Relais schalten kann :

Rasperry PI Relais Platine

Hab mir eine billige Relais Platine bei Amazon aus China bestellt; 4 Euro + 2 Euro Versand.
Die Relais laufen mit 5V, d.h. die können direkt vom GPIO Header des Raspberry PI, d.h. ohne extra Netzteil versorgt werden.

Sind 8 Wechsler Kontakte, die jeweils 10A schalten können !!
D.h. bei fachmänischer berührungssicherer Montage auch Netzspannung.

Bei einem neueren PI (1+, 2, 3) genügen sogar die „erweiterten“ GPIOs. d.h. die 26 „original“ PI GPIOs können frei bleiben. nur die +5V müssen von weiter oben „geklaut“ werden, auch ein Flachbandkabel von einem alten PC (für die Floppy Laufwerke) ist recht einfach möglich :

Die einzelnen Eingänge können gefahrlos direkt an die gewünschten GPIOs angeschlossen werden. Denn :
Das sind Opto-Eingänge (gegen +5V geschaltet). D.h. einmal die interne LED im Optokoppler (etwa 1,4 V) + eine Rote LED (etwa 1,6V) und ein 1kOhm Widerstand. Macht bei hochohmiger Beschaltung eine Spanung von 5-3=2Volt. und wenn der Pin vom PI gegen masse gezogen wird einen Strom von max. 2mA. Somit alles im grünen Bereich.
Kleiner „Schönheitsfehler“ : Sind die GPIOs noch nicht initialisiert, dann glimmen die LEDs ganz leicht.
Möchte man was „heikles“ damit schalten, so sollte zumindest der GPIO, der als Serielle Schnittstelle verwendet werden kann, vermieden werden. (Um „wilde“ Schaltvorgänge beim booten zu vermeiden).

Raspberry PI – neuester Schmäh

Beim Raspbian Jessie hab ich mich damals sehr darüber gefreut, dass ssh per default eingeschaltet ist. So benötigt(e) man plötzlich keinen Monitor o.ä. mehr. Einfach nur im DHCP Server die IP Adresse heraussuchen – SSH via User „pi“ und Passwort „raspberry“ – und schon konnte man alles machen, was man haben möchte.

Heute – Raspbian Jessie Lite heruntergeladen – PI startet – Ping geht – SSH nix.

So eine Enttäuschung.

Aber zum glück haben die Macher vom Raspbian ein wenig weiter gedacht… einfach auf die boot-Partition (das was man unter Windows auch sieht) eine Datei (ohne Erweiterung) anlgegen – mit dem Namen „ssh“. Schon klappts. 🙂

Raspberry PI Docker Engine


apt-get update && apt-get install apt-transport-https
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo "deb [arch=armhf] https://apt.dockerproject.org/repo raspbian-jessie testing" > /etc/apt/sources.list.d/docker.list
apt-get update
apt install docker-engine