Diverse Tipps und Tricks für Linux ARM boards

WSPRLINUX mit SDR Receiver:

dieser Tipp kommt von ON4CDJ:

für SDR Empfänger benutzt man gerne snd-alop von Linrad. Damit wird eine virtuelle Soundkarte, ein sogenanntes Loopback Device erzeugt welches aus den IQ Signalen des SDR ein normales NF Signal erzeugt wie es andere Programme üblicherweise brauchen.

Damit wsprlinux auf dieses Loopback Device zugreifen kann, muss man eine Option eingeben damit wsprlinux das Device finden kann.

wsprlinux greift nicht direkt auf die Soundkarte zu sondern nutzt das Linux Tool: arecord. Man kann zunächst per Hand in der Kommandozeile ausprobieren wie man mit arecord auf das Loopback Device zugreifen kann. Danach überträgt man die gefundenenen Optionen ins Setupfenster von wsprlinux.

Diese gesuchte Option wird in aller Regel so aussehen: -Dplughw:2,1  wobei die 2 und 1 von der Anzahl der Soundkarten abhängen welche man installiert hat, hier muss man evt noch genauer nachsehen.

In wsprlinux geht man ins Setup Fenster und trägt in die Eingabezeile "Sound Recording Options" diese Option ein, also   -Dplughw:2,1 (oder entsprechend).

Jetzt bekommt wsprlinux die NF und kann mit dem SDR Empfänger betrieben werden.

 

SD Image verkleinern:

WARNUNG:

1)  Folgende Arbeiten NUR ausführen wenn eine Sicherungskopie vorhanden ist !

2) Partitionsbezeichnungen prüfen, ansonsten könnte man sich Daten im PC überschreiben !

Packen eines Images von SD-Karte zum Up-/Download ins Internet:

hat man ein fertiges und gut funktionierendes Image auf seiner SD Karte, so möchte man dieses vielleicht auch anderen zukommen lassen.

Ist die SD Karte z.B. 16GB groß, so ist der Transfer via Internet nicht mehr möglich. Man muss das Image komprimieren. Allerdings wird man feststellen, dass es sich nicht so einfach komprimieren lässt. Der Platzgewinn mit z.B. Zip ist gering und es bleibt viel zu groß zur Übertragung. Das liegt daran, dass scheinbar unbenutzte Teile der SD Karte mit Datenmüll voll sind, welcher sich schlecht komprimieren lässt. Die folgende Vorgehensweise zeigt wie man das Image auf die kleinst mögliche Größe schrumpfen kann, ins Internet hochlädt, und wie jemand anderes das Image wieder auf seine SD Kartengröße expandieren kann.

Zunächst bootet man die SD Karte auf dem kleinen ARM Computer, dann:

Direkt am laufenden System am ARM Board:

Schritt 1: eigenen Datenmüll löschen

im Laufe der Zeit sammelt sich so einiges an. Als erstes muss man die SD Karte durchsehen und alle unbenutzten Dateien löschen. Diese befinden sich praktisch immer im Verzeichnis /home/benutzer, und hier muss man aufräumen.

Schritt 2: persönliche Daten entfernen

möglicherweise hat man mit WLAN gearbeitet, das WLAN Passwort will man nicht ins Internet hoch laden, daher sollte man alle WLAN Verbindungen löschen. Hatte man einen Internetbrowser benutzt, löscht man auch damit den Browsercache, Verlauf, Passwörter usw.

Schritt 3: feststellen des benötigen Speicherplatzes

Bezeichnung der SD Karte und Partitionen:

Die übliche Bezeichnung der SD Karte und Partitionen auf den kleinen ARM boards ist:

/dev/mmcblk0 ... SD Karte 0
/dev/mmcblk1 ... SD Karte 1 usw.
in der Regel hat die SD Karte die Nummer 0. Nur wenn noch ein anderes Speichermedium steckt, so kann sie eine andere Nummer bekommen.

/dev/mmcblk0p1 ... SD Karte 0, Partition 1 : diese Partition ist klein und enthält den Bootloader und Teile des Betriebssystems

/dev/mmcblk0p2 ... SD Karte 0, Partition 2 : diese Partition enthält das komplette Filesystem, und hier beginnen wir mit unseren Arbeiten zur Komprimierung.

mit dem Konsolenkommando:  df  -h  lassen wir die Belegung der Partitionen ausdrucken und achten dabei vor allem auf /dev/mmcblk0p1. Das ist in der Regel unsere Systempartition welche wir verkleinern müssen.
Beispiel:

Filesystem            Size    Used    Avail ...
/dev/mmcblk0p1   15G    5.1G    8.9G

wir sehen dass von der 15GB großen Partition nur 5.1GB tatsächlich benutzt werden. Dieses Werte brauchen wir in den folgenden Schritten.

 

Im Linux PC:

die nächsten Schritte müssen im PC gemacht werden (oder auf einem anderen ARM System, da die SD Karte für die folgenden Arbeiten nicht in Benutzung sein darf. Man steckt die Karte also mit einem Kartenlesen in seinen (Linux) PC und fährt mit dem folgenden Schritt fort:

Bezeichnung der SD Karte und Partitionen:

im PC sehen die Bezeichnungen anders aus, nicht so wie vorher am ARM System gezeigt.

Steckt man die Karte in den Linux-PC, so wird sie normalerweise sofort automatisch eingebunden. Wir schauen dann mit  df  -h  nach welche Bezeichnung sie hat. Die obige Karte wird dann so aussehen:
/dev/sdf1 ... SD Karte sdf, Partition 1
/dev/sdf2 ... SD Karte sdf, Partition 2

(anstelle 'f' kann auch irgendein anderer Buchstabe dort stehen. Diesen bitte genau aufschreiben und niemals verwechseln !!! Die anderen Buchstaben gehören den Festplatten des PCs und diese will man ja nicht verändern).

jetzt muss man die automatische Einbindung entfernen. Entweder im Dateimanager oder in der Konsole mit  umount  /dev/sdf1 und umount  /dev/sdf2

 

Schritt 4: Dateisystem prüfen, nullen und verkleinern

zunächst können die Daten beliebig in der Partition verteilt sein. Um einen möglichst großen Platz frei zu räumen, müssen alle Daten ganz nach vorne verschoben werden damit hinten alles frei wird.

In Schritt 3 haben wir festgestellt welchen Platz unsere Daten benötigen. Wir schrumpfen die Partition 2 also auf diesen Platz (+ etwas Reserve). Das geht mit dem Konsolenkommando (ich gehe davon aus, dass die Partition mit einem Linux Dateisystem ext2, ext3 oder ext4  formatiert ist, was in der Regel auch der Fall ist):

e2fsck  /dev/sdf2    (Prüfen des Dateisystems)

zerofree  /dev/sdf2    (nullen unbenutzter Sektoren. Dieses Tool muss in der Regel erst installiert werden).

resize2fs   -p   /dev/sdf2   5.5G    (Verkleinern auf 5,5 GB)

mit diesem Kommando packen wir alle Daten auf Partition 2 in einen 5.5GB großen Bereich. Da unsere Daten 5.1GB groß sind, sollte das klappen und wir haben noch 400MB Reserve.

 

Schritt 5: Partition verkleinern

dieser Schritt ist optional und ist nur erforderlich wenn das Image auf eine kleinere SD Karte geschrieben werden soll.

im letzten Schritt haben wir die Daten auf die ersten 5.5GB zusammengeschoben und den Platz hinten frei gemacht. Dadurch sind jetzt die Voraussetzungen erfüllt um die Partition ebenfalls zu verkleinern:

fdisk  /dev/sdf

aktuelle Größen anzeigen

mit 'p' zeigen wir die aktuelle Größe der Partitionen an. Hier steht z.B.:

Device Boot     Start         End             Blocks             Id             System
/dev/sdf1         3072         266239        131584           6              FAT16
/dev/sdf2         266240    31116287    15425024      83            Linux

wir möchten die 2te Partition verkleinern, also das Ende dieser Partition ändern. Den Start dürfen wir NICHT ändern, daher schreiben wir uns den Startblock auf, hier im Beispiel: 266240

Partition löschen:

delete mit Kommando: d
Partitionsnummer: 2

Partition neu anlegen:

neu mit Kommando: 'n'
eine primäre Partition mit Eingabe: 'p'
Partitionsnummer wieder: 2

und jetzt wichtig !!!
Start (first cylinder): gleiche Zahl wie vorher eingeben, im Beispiel also die 266240
End (last cylinder):  +5600M

Mit dieser Eingabe '+5600M' sagen wir, dass die Partition 5,6GB groß sein soll. Damit passt unser vorher auf 5,5GB geschrumpftes Dateisystem drauf.

Speichern und fdisk verlassen:

Speichern: 'w'
Verlassen: 'q'

 

Schritt 6: Imagedatei erstellen

nachdem wir jetzt alles gemacht haben um das Image so klein wie möglich zu halten können wir die Imagedatei erstellen:

dd  bs=1M  count=5900 if=/dev/sdf  of=test.img

zuvor haben wir die Partition 2 auf 5,6GB verkleinert. Die Partition 1 ist beispielsweise 130MB groß. Zusammen macht das 5,73GB. Wir geben etwas Reserve zu und erstellen eine Imagedatei mit 5,9 GB Größe.

Schritt 7: Imagedatei komprimieren

dazu gibt es viele Möglichkeiten. Ich benutze gzip:

gzip test.img

nun haben wir die fertige Datei  test.img.gz  und können diese hochladen oder was auch immer damit machen. Haben wir alle Schritte ausgeführt, dann wird das Image jetzt deutlich verkleinert sein.

 

Odroid C2 (und andere auf Basis von Ubuntu): Auto-Login

will man sich automatisch, also ohne Angabe von user und passwort einloggen, sodass der grafische Desktop sofort startet, so muss man (als root) folgende Datei ergänzen:

/usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf

An das Ende dieser Datei schreibt man mit einem Texteditor eine neue Zeile mit folgendem Inhalt dazu:

autologin-user=odroid

 

Odroid C2 (und andere auf Basis von Ubuntu): x11vnc (oder andere Programme) automatisch starten

(x11vnc muss natürlich installiert sein)

dazu benutzt man das Autostartmenü. Dieses befindet sich in Menü: "System" - "Einstellungen" - "persönlich" - "Startprogramme

Allerdings neigt x11vnc ab und zu abzustürzen. Daher ist es sinnvoll eine Schleife zu machen, welche x11vnc nach einem Absturz sofort wieder startet. Dazu geht man in das Home-Verzeichnis: /home/odroid und erstellt dort eine neue Datei mit dem Namen "vnc".

In diese Datei schreibt man folgendes:

while true; do x11vnc; done;

Dann speichert man die Datei und ändert die Zugriffsrechte mit:  chmod  755  vnc

Im oben beschriebenen Autostart klickt man "add" und für die gerade erstellte Datei hinzu.

Fertig.

Prüfung: um zu sehen ob es auch klappt bootet man neu. Danach schreibt man in einer Konsole:

ps  -e  |  grep  x11vnc

falls x11vnc wie erwartet läuft, wird eine Zeile ausgedruckt (ansonsten wird nichts ausgegeben).