Ubuntu + Windows + .dotfiles

1. Open “Update & Security” > “For Developers” > activate the “Developer Mode”.

2. Under “Programs” > “Programs and Features”, click “Turn Windows Features On or Off”.

3. Enable the “Windows Subsystem for Linux (Beta)” option in the list and click “OK”.

4. After an “reboot”, you open the command line (cmd) and type “bash” and press [Enter].

5. Enter a “Username” and a “Password. (you need the password for “sudo”-commands)

6. Now you can open “Bash on Ubuntu on Windows”.

7. Install “git” via:

sudo apt-get install git

8. Get the “.dotfiles” via:

cd ~ ; git clone https://github.com/voku/dotfiles.git; cd dotfiles

9. Install dependencies via:

./firstInstallDebianBased.sh

10. Install zsh (optional, but recommended).

11. Use the “.dotfiles” via:

./bootstrap.sh

12. Download, install and configure “ConEmu” …

… a alternative “Command Line GUI” for Windows. Instead of the default GUI we have UTF-8 support with “ConEmu”, so we can use chars like “✓”.

-> http://conemu.github.io

After you have installed it, we can force “bash” to “zsh” in the configuration.

13. Add some “symlinks” for easier navigation via: e.g.

sudo ln -s /mnt/c /c
sudo ln -s /mnt/d /d

14. Add the current “hostname” into the “/etc/hosts”-file.

sudo su
echo "127.0.0.1 $(hostname)" >> /etc/hosts
exit

Now you can edit your “.dotfiles”-settings and tweak your configuration.

Here is my example-config: https://github.com/voku/dotfiles#add-custom-commands-without-creating-a-new-fork

 

Kurztipp: mysqldump + Views

Problem: “DEFINER”

Jeder MySQL-Dump welcher mit dem Befehl “mysqldump” erstellt wird beinhalte die Einstellung zum “DEFINER”.

z.B.: DEFINER=`root`@`localhost` SQL SECURITY DEFINER

Dies bedeutet, dass man diesen SQL-Dump nicht einfach z.B. auf dem Ziel-Server nutzen kann, da die Applikation wahrscheinlich / hoffentlich keinen Root-Zugriff auf die Datenbank hat.

Lösung: via “grep”

Als schnelle Lösung für diese Problem entferne ich einfach den entsprechenden DEFINER-Eintrag.

mysqldump -u your_user --skip-comments --skip-opt --complete-insert --databases your_db | grep -v 'SQL SECURITY DEFINER' > ~/your_dump.sql

http://gist.suckup.de/tpl_default.php?pid=1#sec_fb936cf7878c32a5f0b0

Tipp im Tipp

Falls man mit Windows arbeiten muss, empfehle ich die Git-Bash (MinGW + GIT) zu installieren und das “mysql/bin” Verzeichnis im Windows PATH (System -> Erweiterte Systemeinstellungen -> Umgebungsvariablen) einzutragen. So kann man den oben genannten Befehl (und vieles mehr) auch unter Windows nutzen!

 

Links & Quellen:

– http://dev.mysql.com/doc/refman/5.1/de/create-view.html
– http://www.sitepoint.com/mysql-views/
– http://www.mingw.org/
– http://msysgit.github.io/

Aero Shake deaktivieren

“Als ‘Schütteln’ definiert die Windows 7-Shell eine mindestens dreimalige Bewegung eines aktiven Fensters in annähernd gegengesetzte Richtung – etwa “Rechts – Links – Rechts” oder “Oben – Unten – Oben” in kurzem Zeitabstand” – www.pcwelt.de 

 

… ich habe das schütteln der Fenster (Aero Shake) irgendwie noch nicht ganz verstanden, da ich diese Funktion manchmal unbeabsichtigt ausführe. ;)

 

Download:

 DisableAeroShake.reg

 EnableAeroShake.reg

Screenshots von Android via shell

Wenn man auf seinem Android beispielsweise einen Kernel mit 24bpp Unterstützung installiert, kann man auch wenn man root-Rechte hat, keine Screenshot via App machen. Um dies zu umgehen kann man die “Android Debug Bridge (adb)” verwenden.

sudo apt-get install ffmpeg
/opt/android-sdk-linux_x86/platform-tools/adb pull /dev/graphics/fb0 fb0
ffmpeg -vframes 1 -vcodec rawvideo -f rawvideo -pix_fmt rgb32 -s 320x480 -i fb0 -f image2 -vcodec png image.png

 

Das gleich Verfahren kann man auch unter Windows anwenden und wer lieber mit einer GUI arbeitet, sollte sich einmal QtADB anschauen. ;)

SSH-Server auf deinem Android (CyanogenMod)

In dem “CyanogenMod” (CM) ist bereits ein SSH-Server eingebaut (Dropbear), dieser ist jedoch standardmäßig abgeschaltet. Hier zeige ich kurz wie du diesen unter Linux / Windows nutzen kannst und dich somit ohne Kabel mit deinem Android (funktioniert nach meinen Tests, nur im lokalen W-Lan) verbinden kannst …  ;-)

 

1.) Android: Vorbereitungen

adb shell

(adb shell)

mkdir /data/dropbear
cd /data/dropbear
dropbearkey -t dss -f dropbear_dss_host_key
dropbearkey -t rsa -f dropbear_rsa_host_key

 

2.1) Linux: Vorbereitungen (Debian / Ubuntu)

2.1.1) Installiere den SSH-Client

sudo aptitude install ssh-client

2.1.2) SSH-Schlüssel generieren

ssh-keygen -t rsa

2.1.3) Übertrage den SSH-Schlüssel (öffentlich / public) zu Android

adb push ~/.ssh/id_rsa.pub /data/dropbear/.ssh/authorized_keys

 

2.2) Windows: Vorbereitungen
PuTTY Download Page

2.2.1) Download “PuTTYgen”

2.2.2) SSH-Schlüssel generieren

Klick auf “Generate” und füge die Zeichenkette, welche du nun im Fenster von puttygen siehst (Beispiel: “ssh-rsa AAAAB3…hclQ==rsa-key-20100227”) in eine Text-Datei auf deinem Desktop ein -> “id_rsa.pub” und speichere (beschütze) deinen “private key”!!!

2.2.3) Übertrage den SSH-Schlüssel (öffentlich / public) zu Android

adb push  C:\Users\[USER]\Desktop\id_rsa.pub /data/dropbear/.ssh/authorized_keys

 

3.) Android: SSH-Server aktivieren

adb shell

(adb shell)

chmod 600 /data/dropbear/.ssh/authorized_keys
echo "/system/xbin/busybox sh" > /data/dropbear/.profile
chmod 755 /data/dropbear /data/dropbear/.ssh
chmod 644 /data/dropbear/dropbear*host_key
chown root.root /data/dropbear/.ssh/authorized_keys
killall dropbear
dropbear -v -s -g

 

4.1) Linux: Verbindung herstellen

-> SSH mit public-key Authentifizierung

 

4.2) Windows: Verbindung herstellen

PuTTY Download Page

4.2.1) Download “putty”

4.2.2) Verbindung zu Android aufbauen

Connection: > “SSH” > “Auth” > wähle deinen gespeicherten “private key” aus …

Session: > gib die IP-Adresse von deinem Android ein und drücke auf Enter

 

 

weitere Infos findest du hier:
Howto: Connect to Device with SSH – CyanogenMod Wiki

Der Bootvorgang – Wie fährt ein PC hoch…

1.) Einleitung

Der Begriff „Bootvorgang“ bezeichnet das Starten des Rechners, das Auswählen eines Betriebssystems und das Starten desselben. Der Begriff „Booten“ geht auf das englische Wort „bootstrap – Stiefelanzieher“ zurück.
Der Bootvorgang wird durch Reset initiiert. Reset tritt Beispielsweise auf, wenn der Strom eingeschaltet wird, die damit zusammenhängenden Vorgänge werden in Kapitel 2 beschrieben. Im Laufe des Bootvorganges gibt es später drei verschiedene Möglichkeiten, das Betriebssystem zu finden und zu laden – abhängig davon, wo sich der Code des Betriebssystems befindet:
1.) Der Code befindet sich auf einer Diskette, auf die direkt zugegriffen werden kann.
2.) Der Code befindet sich auf einer Festplatte.
Und das darauf folgende starten des Betriebssystems.


2.) Start

2.1) Reset
Beim Einschalten des Stromes wird „Reset“ ausgelöst, dabei handelt es sich um einen Hardwareinterrupt. Interrupts treten dann auf, wenn ein korrekter Programmablauf nicht mehr möglich oder wünschenswert ist. Alle Interrupts haben eine Priorität. Treten also mehrere Interrupts gleichzeitig auf, so werden sie nach Priorität geordnet ausgeführt, es sei denn, der Interrupt mit der höheren Priorität stoppt die weitere Programmausführung.
„Reset“ ist der Interrupt mit der höchsten Priorität: Er wird in jedem Fall ausgeführt. Das Reset Signal kann auch ausgelöst werden, ohne dass die Stromzufuhr unterbrochen wird. Dieser Fall wird als Warmstart bezeichnet. Den durch den Beginn der Stromzufuhr initiierten Start nennt man Kaltstart.


2.2) ROM
ROM (Read Only Memory) dabei handelt es sich um einen Speicherbaustein, aus dem nur Daten gelesen, in den aber keine Daten geschrieben werden können. Die gespeicherten Daten werden
bereits bei der Produktion der Bausteine festgelegt und können im Nachhinein nicht mehr oder nur mit speziellen Geräten verändert werden. Das ROM verliert seine Daten nicht, wenn keine Stromzufuhr angeschlossen ist. Sobald Reset gegeben wurde, wird die Hardwareinterrupt gestartet, wodurch prozessorinterne Register auf prozessorspezifische Startwerte gesetzt werden und versetzt so den gesamten Prozessor in den Startzustand. In der Regel wird anschließend der Inhalt des ROM in den RAM (Arbeitsspeicher) gespiegelt, da der Zugriff auf Speicherinhalte dort schneller gewährt werden kann. Zuletzt wird der Befehlszähler (Program Counter) auf den Beginn dieses Codes gesetzt, dadurch wird gewährleistet, dass der im ROM befindliche Code als erstes und ohne Voreinstellungen ausgeführt wird.


2.3) BIOS
Im ROM steht der Code des Basic Input Output Systems (BIOS). Dies ist ein Programm, das die Hardware überprüft und einfachste Hardwareunterstützung zur Verfügung stellt. Außerdem hat das BIOS die Aufgabe, den Start eines Betriebssystems zu ermöglichen und zu initiieren. Das BIOS führt nach seinem Start zunächst Hardwaretests durch, diese Tests werden „Power On Self Tests“ (POST) genannt. Während dieser Tests wird nach Hardware gesucht und gefundene Hardware überprüft, außerdem sucht das BIOS nach passenden Treibern. Zudem können durch diese Tests Fehler (z.B. defekte Festplatte) schneller erkannt werden.


Der POST lässt sich in einzelne Schritte einteilen. Die folgenden Schritte sind Teil jedes POST:
1. Überprüfung der Funktionsfähigkeit der CPU (bei Multiprozessor-Systemen: der ersten CPU)
2. Überprüfung der CPU-nahen Bausteine
3. Überprüfung des CMOS-RAM (Prüfsummen-Bildung)
4. Überprüfung des CPU-nahen Cache-Speichers
5. Überprüfung der ersten 64 Kilobyte des Arbeitsspeichers
6. Überprüfung des Grafik-Speichers und der Grafik-Ausgabe-Hardware


Danach kann die Grafik in Betrieb genommen werden. Die weiteren Tests werden daher meist auf dem Bildschirm sichtbar gemacht:
– Überprüfung des restlichen Arbeitsspeichers – dieser Schritt kann bei manchen BIOS durch einen Tastendruck übersprungen werden
– Überprüfung der Tastatur
– Überprüfung von weiterer Peripherie, u.a. Diskettenlaufwerke und Festplatten.
Anschließend lädt das BIOS veränderbare Daten z.B. Datum und Uhrzeit in einen Speicher. Diese Daten befinden sich auf einem kleinen Speicherbaustein, der durch eine Batterie konstant mit Strom versorgt wird. So können auch während eines Spannungsabfalls im restlichen System keine Daten verloren gehen. In diesem Speicher sind auch die benutzerdefinierten BIOS-Optionen gespeichert. Während des Startvorgangs kann der Benutzer in das Konfigurationsmenü gelangen, so dass man diese Dateien teilweise selber anpassen kann. Zuletzt sucht das BIOS nach einem bootfähigen Speichermedium. Ein Speichermedium kann zum Beispiel eine Festplatte, eine USB-Stick oder eine Diskette sein.


Jede Diskette ist in mehrere Sektoren unterteilt, von denen jeder einzelne 512 Byte umfasst. Eine Diskette wird genau dann als bootfähig bezeichnet, wenn…
1.) …von ihr ein vollständiges Betriebssystem geladen werden kann.
2.) …durch den auf ihr gespeicherten Code ein Betriebssystem von einer anderen Quelle geladen werden kann.
Den ersten Sektor einer bootfähigen Diskette nennt man Bootsektor.
Bei der Suche nach bootfähigen Speichermedien geht das BIOS nach einer Reihenfolge vor, die in BIOS festgelegt werden kann.


3.) Speichermedien

3.1) Booten von Diskette
Disketten sind nur in Sektoren aufgeteilt (im Gegensatz zu Festplatten). Der erste Sektor einer bootfähigen Diskette ist der Bootsektor, er ist 512 Byte lang und endet mit den 2 Byte der Magic Number. In den übrigen 510 Byte des Bootsektors befindet sich nun ein Programm, das den Start des Betriebssystems initiiert. Das eigentliche Betriebssystem befindet sich in den restlichen Sektoren der Diskette.
Das BIOS lädt (wenn die Magic Number stimmt) die ersten 510 Byte der Diskette in den Arbeitsspeicher und daraufhin wird dieser Code ausgeführt.


3.2) Booten von Festplatten
Die Grundstruktur aller Festplatten ist gleich: Metallscheiben mit magnetisierbarer Oberfläche rotieren mit hoher Geschwindigkeit in einem hermetisch abgeschlossen Gehäuse. Die Bits sind als Wechsel in der Magnetisierung der Scheibenoberfläche gespeichert. Schreib-/Leseköpfe (Engl. Heads) bewegen sich dicht über der Oberfläche nach innen und außen. Die Daten sind auf kreisförmigen Spuren abgelegt, die man auch als Tracks bezeichnet. Diese Anordnung unterscheidet sich grundlegend von der bei Schallplatten und CDs verwendeten: Hier gibt es pro Seite nur eine lange Aufzeichnungsspur in Form einer Spirale. Jede Spur einer Festplatte ist wiederum in einzelne Abschnitte aufgeteilt, den Sektoren (Engl. Sectors). Jeder Sektor fasst 512 Byte. Die Ansteuerung eines Sektors erfolgt über die Elektronik der Festplatte, der steuernde PC hat mit der Aufteilung in Sektoren nichts zu tun. Die meisten Festplatten benutzen die Ober- und Unterseite der Scheiben und verfügen über mehrere Magnetscheiben. Die Schreib-/Leseköpfe für alle Oberflächen sind als Einheit montiert, sie können sich nicht unabhängig bewegen. Deshalb liegen die Spuren auf den Plattenoberflächen exakt übereinander. Ein Satz von übereinander liegenden Spuren trägt den Namen Zylinder (Engl. Cylinder). Wie bereits erwähnt sind Festplatten in Abschnitte unterteilt, die mit den Koordinaten [cylinder, head, sector] angesprochen werden können. Zusätzlich kann eine Festplatte in Partitionen unterteilt werden.
Die im BIOS enthaltenen Treiber sind jedoch sehr stark minimiert, daher kann das BIOS nur auf begrenzten Festplattenplatz zugreifen. Die BIOS-Treiber können nur die Zylinder 0 bis 1023 der Festplatte ansprechen (8-GByte), auslesen und erkennen nicht mehr als zwei Partitionen, auf jeder der Partitionen kann ein Betriebssystem installiert werden. Die folgenden Ausführungen gelten nur für IDE-Festplatten, bei SCSI-Festplatten mit ihrem eigenen BIOS gibt es derlei Probleme nicht. Partitionen, von denen ein Betriebssystem geladen werden kann, heißen bootfähige oder aktive Partitionen.


CHS-Modus:
Bis etwa 1997 wurde für die Adressierung der Festplatte das CylinderHeadSector-Verfahren genutzt. Dadurch kann jeder 512 Byte Sektor durch die Angabe des Zylinder, des Kopfes und des Sektors genau lokalisiert werden. Die Köpfe geben dabei die Magnetscheibe und deren Seite an und die Zählung wird wie bei den Zylindern mit 0 angefangen.


CHS
CHS


(Zylinder) x  (Lese-Schreibköpfe) x (Sektoren) x (Sektoren Größe)
1024 x 255 x 63 x 512 Byte
= 8.422.686.720 Byte = 8.225.280 kByte = 8.032,5 MByte = 7,8 GByte


LBA-Modus:
Da heutige Festplatten wesentlich größere Kapazitäten haben, verwendet man zur Adressierung die “Linear Block Address”. Diese Adresse ist vier Byte (32Bit) lang und numeriert alle Sektoren einer Festplatte der Reihe nach durch. Dadurch ergibt sich eine maximale Gesamtkapazität von:
(Sektoren) x (Sektoren Größe)
2^32 x 512 Byte
= 2048 GByte = 2 TeraByte


Für die Verwaltung der Partitionen liegt in dem äußersten Zylinder jeder Festplatte der Master Boot Record (MBR). Der Master Boot Record enthält alle Informationen, die für den Bootvorgang benötigt werden. Er ersetzt in den nun folgenden Vorgängen das BIOS. Beim Booten von einer Festplatte wird das BIOS nicht mehr benötigt, sobald der im MBR enthaltene Code
gestartet wurde.


Jede Partition funktioniert ähnlich wie eine Diskette: sie beginnt mit einem Bootsektor, in dem sich ein Programm befindet, das vom MBR gestartet wird. Die sogenannte Master-Boot-Routine wird nun durchlaufen, Standardmäßig prüft dieser Code zunächst die Einträge in der Partitionstabelle und sucht eine primäre Partition, die als aktiv (bootfähig) markiert ist. Dann lädt der Master-Boot-Code den physikalisch ersten Sektor der aktiven Partition, den Bootsektor.


Der Master Boot Record
Der MBR enthält von Fabrik aus einen Code, der das weitere Hochfahren steuert. Dieser Code wird Master Boot Code (MBC) genannt. Mit dem MBC kann von Festplatte gebootet werden, wenn nur eine aktive Partition existiert. Außerdem enthält der MBR eine Datei, in der alle Partitionen verzeichnet sind – diese wird Partitionstabelle genannt. Der MBR befindet sich übrigens im ersten Sektor der Festplatte, da ein Sektor jedoch nur 512 Bytes aufweist, müssen sich Bootcode und Partitionstabelle diesen Platz teilen: In den ersten 446 Bytes wird der Programmcode des Bootloaders ausgelagert, und in den nächsten 64 Bytes wird die  Partitionstabelle untergebracht. Die letzten zwei Bytes enthalten den Code AA55h, der zur Identifizierung des MBRs selber dient.
Die Partitionstabelle enthält je Partition: (16 Byte lange Einträge)
– Boot-Flag (1 Byte) – Markiert die Partition als aktiv. Das könnte man auch mit einem Bit ausdrücken, in der Tabelle wird dennoch ein Byte freigehalten.
– Kopfnummer des Partitionsbeginns (1 Byte)
– Sektor und Zylindernummer des Boot-Sektors (2 Byte)
– Systemcode (1 Byte) – Bezeichnet den Typ der Partitionen: NTFS, unformatiert…
– Kopfnummer des Partitionsendes (1 Byte)
– Sektor und Zylindernummer des letzten Sektors der Partition (2 Byte)
– relative Sektornummer des Startsektors (4 Byte)
– Anzahl der Sektoren in der Partition (4 Byte) – Der MBC lädt die Partitionstabelle und wählt den aktiven Sektor aus. Anschließend lädt er den Inhalt des Bootsektors der ausgewählten Partition. Der dort gespeicherte Code wird gestartet und somit der Start des Betriebssystems initiiert.


Der Bootsektor
Innerhalb einer Partition gibt es einen weiteren Sektor, dessen Position immer gleich ist: der Bootsektor. Er liegt im ersten Sektor der Partition und ist damit leicht über die Einträge in der Partitionstabelle zu ermitteln.


Multiboot
Wenn die Festplatte mehrere verschiedene Betriebssysteme auf mehreren aktiven Partitionen enthält, ist der Master Boot Code (MBC) überfordert. In diesem Fall wird ein Bootmanager benötigt. Ein Bootmanager ist eine erweiterte Version des MBC. Er liest die Partitionstabelle ein und gibt über den Bildschirm eine Liste der als aktiv markierten Partitionen aus. Der Benutzer wählt eine dieser Partitionen aus. Der Bootmanager lädt den Bootsektor der ausgewählten Partition und startet den dort gespeicherten Code. Moderne Bootmanager enthalten eigene Treiber. Dadurch sind sie nicht auf die eingeschränkten BIOS Treiber angewiesen und können zum Beispiel auch Betriebssysteme starten, die sich auf der dritten oder vierten Partition befinden. Die 446 Bytes vom MBR welche für den Bootloader reserviert sind, reichen definitiv nicht aus, um eine vernünftigen Bootloader darin unterzubringen. Daher dient dieser Code in der Regel nur dazu, einen zweiten Code zu laden, der sich auf einer der Partitionen befindet. Diesen zweiten Bootloader bezeichnet man als Secondary Bootloader. Typische Bootloader für Linux-Systeme sind LILO und Grub.


Beispiel für einen Bootmanager: GRUB
GRUB (ein Akronym für GRand Unified Bootloader (engl. “Großer vereinheitlichter Bootloader”)) – GRUB ist der Linux Standard, dessen wichtigste Vorteil dieses Bootmanagers ist seine Flexibilität, verwendet, wie auch andere moderne Bootmanager, eigene Treiber, um nicht auf die Hardwareunterstützung durch das BIOS angewiesen zu sein. Dadurch sind nicht nur die BIOS Beschränkungen außer Kraft gesetzt. GRUB kann mit den eigenen Treibern die kernelspezifischen Formate des zu bootenden Betriebssystems verwenden. So können sehr viele Systeme geladen werden, auch ohne dass die physikalischen Adressen des Codes bekannt sind. Dadurch wird andererseits das Programm sehr groß und der Code passt nicht mehr im Ganzen in den MBR. Deshalb wurde GRUB in zwei Teile unterteilt ist:
GRUB Stages 1 & 2.
GRUB Stage 1 – hat dabei hauptsächlich die Aufgabe, Stage 2 zu laden und auszuführen.
GRUB Stage 2 – befindet sich auf der Festplatte. Da das Programm meist Teil einer Linux Distribution ist, befindet sich Stage 2 in der Regel auf der entsprechenden Linux Partition.
Bootvorgang_Linux
Bootvorgang_Linux
Beim Chainloading spricht GRUB die einzelnen Bootloader oder Bootsektoren der Betriebssysteme an und übergibt ihnen den Systemstart.
title=Windows Vista
      rootnoverify (hd?,?)
      chainloader +1
      makeactive


Beispiel für einen Bootmanager: Vista
Für ältere Betriebssysteme greift der Windows Boot Manager auf die als Windows Legacy OS Loader gekennzeichneten Objekte zurück, hierbei handelt es sich im Grunde um den Verweis auf einen weiteren Bootsektor. An diesen Boot-Loader wird dann die Kontrolle des weiteren Startvorgangs übergeben. Windows 2000/XP/2003 werden so beispielsweise gestartet.
Und hier kommt dann wieder die altbekannte boot.ini ins Spiel. Denn für den Start der alten Windows-Versionen wird einfach der ntldr aktiviert, der wiederum die boot.ini ausliest.
Die bisher in der boot.ini abgelegten Informationen finden sich nun im so genannten Boot Configuration Data Store (BCD). Diese Binärdatei ist meist im Verzeichnis \boot der Startpartition. Änderungen an der Boot-Konfiguration lassen sich nur noch über das Kommandozeilen-Tool (als Administrator) bcdedit.exe durchführen.
Bevor wir nun irgendwelche Änderungen an der BCD vornehmen, sollte mittels bcdedit
/export sicherung – ein Backup angelegt werden und bei Bedarf mittels bcdedit
/import sicherung – diese wieder einspielen.


Code:
bcdedit /create {legacy} /d “Windows XP”
bcdedit /set {legacy} device partition=D:
bcdedit /set {legacy} osdevice partition=D:
bcdedit /set {legacy} path \ntldr
bcdedit /displayorder {legacy} /addlast


Linux als Boot-Option:
Will man zusätzlich Linux installieren und trotzdem dem Windows Boot-Manager verwenden (Tipp: es ist ggf. leichter dies mit GRUB zu realisieren, wie bereits zuvor gezeigt wurde) ist das auch nicht allzu schwer. Man sollte jedoch bei der Installation von Linux lediglich darauf achten, dass der Bootloader von Linux nicht in den MBR geschrieben wird sondern in die Linux-Partition.


Code:
dd if=/dev/xxx of=/bootloader.bin bs=512 count=1
Ersetze das xxx durch das Device, auf dem Linux installiert ist, also beispielsweise sda1. Die Datei bootloader.bin kopierst du z.B. auf einen USB-Stick. Das direkte Mounten und Beschreiben der NTFS-Partition von Vista ist nicht unbedingt empfehlenswert. Starte nun Windows und kopieren die bootloader.bin auf die Windows-Partition. Mit den folgenden Befehlen erzeugst du den Boot-Eintrag:


Code:
bcdedit /create /d “Linux starten” /application bootsector
Du bekommst jetzt die neue GUID angezeigt, die du für die folgenden Befehle verwenden können.


Code:
bcdedit /set {neueGUID} device boot
bcdedit /set {neueGUID} path \bootloader.bin
bcdedit /displayorder {neueGUID} /addlast


4.) Der Betriebssystemstart

4.1) Der Bootstrap Loader
In diesem Kapitel wird das Programm beschrieben, das sich im Bootsektor eines bootfähigen Speichermediums befindet. Dieses Programm heißt Bootstrap Loader oder abgekürzt Bootloader. Es ist ein Teil des zu ladenden Betriebssystems; die folgenden Vorgänge sind also Betriebssystem-spezifisch. Die Aufgabe des Bootloaders besteht darin,die einzelnen Bestandteile des Betriebssystemkerns (Kernel) in vorherbestimmte Positionen im Arbeitsspeicher zu laden und ihren Start zu initiieren. Außerdem stellt er eine primitive Laufzeit-Umgebung bereit, so dass der Kernel, falls nötig, kompiliert werden kann. Der Bootloader ist meistens zu groß, um komplett in den ersten 510 Byte der Diskette/ Partition gespeichert werden zu können. Daher sind viele Bootloader in zwei Teile unterteilt, von denen einer im Bootblock und der andere auf dem Rest der Festplatte (oder Diskette) gespeichert ist. Hierbei übernimmt der zweite und größere Teil die Aufgabe des Bootloaders, während der erste Teil den zweiten Teil lädt. Besonders typisch ist diese Vorgehensweise für das Betriebssystem DOS. Bei DOS werden die beiden Teile des Bootloaders als Bootblock 1 und Bootblock 2 bezeichnet.


4.2) Bootstrap
Als Bootstrap (zu Deutsch Schnürsenkel) wird das Starten des Betriebssystems bezeichnet. Der Bootstrap Loader ist nach diesem Vorgang benannt worden, da er den Bootstrap initiiert. Der Bootstrap beginnt mit dem Start des Bootstrap Loaders und endet mit dem Start des ersten User Programms.

Screencasts direkt vom Android

In diesem kleinen HowTo möchte ich kurz zeigen, wie man Screencasts von seinem Android erstellen kann.


1.) “droid VNC server”-App installieren

Bevor wir das besagt App über den Market installieren können, müssen wir das Smartphone rooten, dass heißt uns vollen Zugriff auf das Gerät verschaffen. (z.B. für Samsung Spica: Android 2.2 Froyo (CyanogenMod))


2.) per ADB einen Port weiterleiten

Wie die “Android Debug Bidge” im allgemeinen funktioniert habe ich bereis in einem anderem Blog-Post erwähnt -> Android Debug Bridge (adb) – HowTo

In diesem Fall rufen wir folgenden Befehl auf, um einen TCP-Port von Andoid direkt mir einem TCP-Port von unserm Betriebssystem zu verbinden.


adb forward tcp:5901 tcp:5901


weite Infos findest du hier -> developer.android.com/guide/developing/tools/adb.html#forwardports


3.) VNC-Viewer + CamStudio installieren (für Windows)

Nun müssen wir uns nur noch einen VNC-Programm und ein Bildschirm-Recorder installieren, ich habe mich z.B. für “RealVNC Viewer” und “CamStudio” entschieden. Besonders schön finde ich, dass man sein Android auch per VNC steuern kann und so während des Aufnahme das Smartphone gar nicht in die Hand nehmen muss… :-)


Demo:

Jabber – XMPP + StudiVZ – Facebook

Was ist Jabber?

XMPP (früher Jabber) ist ein Nachrichten-Protokoll (Instant Messaging), so dass heute eigentlich niemand mehr auf ICQ, MSN etc. angewiesen ist. Es gibt viele Servern (z.B. jabber.ccc.de oder jabber.org) welche Jabber nutzen, bei diesen Servern kann man sich kostenlos einen Account erstellen und damit auch Kontakten auf anderen Jabber-Servern kontaktieren. Es gibt viele Vorteile gegenüber proprietären Lösungen, z.B. kann man die Kommunikation verschlüsseln, man kann seinen eigenen Jabber-Server installieren, man kann Chat-räume (mit Passwortschutz) anlegen, sich mehrfach anmelden und fast jeder hat bereits einen Jabber-Account (auch wenn es die wenigsten wissen). Ich will an dieser Stelle gar nicht weiter auf die Vor- und Nachteile eingehen, dass haben andere bereits getan. -> blog.jbbr.net/against-icq/ & de.wikipedia.org/wiki/ICQ#Kritik


Wer sich noch gar nicht nach einer Alternative zu ICQ umgesehen hat, sollte einmal auf der folgenden Webseite schauen, wie man ein Jabber kompatibles Chat-Programm installiert. -> einfachjabber.de/oslist

Und wer direkt im Browser chatten möchte, kann sich z.B. folgende Webseite anschauen www.meebo.com oder einen Jabber-Server nutzen, welcher einen Web-Chat anbietet. z.B.: -> www.ubuntu-jabber.de


Bei den Programmen muss man zwischen Programmen unterscheiden, welche voll auf Jabber ausgelegt sind (z.B. psi) und denen, wo man zusätzliche andere Protokolle nutzen kann (Multi-Protokoll-Clients). In Kombination mit einem dafür ausgelegtem Jabber-Server, welcher sogenannte Transports (Gateways) anbiete (leider tun dies aus rechtlichen Gründen nicht alle) kann man dann auch ICQ, AIM, Yahoo Messenger, MSN uvm. direkt über Jabber erreichen. Dabei sollte man jedoch beachten, dass eventuelle Änderungen z.B. von ICQ die Verbindung zwischen “PC” -> “Transport” -> “ICQ” behindern können. -> www.swissjabber.ch/index.php/Transports & de.wikipedia.org/wiki/XMPP-Transport



Jabber-Transport
Jabber-Transport



Hier noch eine Übersicht über einige Jabber-Server + Transports. So sieht man z.B. schnell, dass gmx-Server Transports anbietet. -> www.jabberes.org/servers/servers_by_times_online.html


Wer nutzt Jabber?

Wer bereits über eine Gmail (Google-Mail), GMX oder Web.de E-Mail Adresse verfügt kann diese Adresse als Jabber Account benutzen. Jeder der bei GMX oder Web.de angemeldet ist hat daher bereits einen Jabber-Account, Benutzername und Passwort sind identisch. Zudem benötigt man (normalerweise) nur eine Adresse, um mit allen anderen Jabber-Usern zu kommunizieren, somit ist man nicht mehr auf einen zentralen Server (Dienst) angewiesen. Normalerweise habe ich in Klammern geschrieben, da z.B. “Facebook” oder auch “StudiVZ / SchülerVZ / MeinVZ” Jabber anbieten, dies jedoch nicht nach dem Standard betreiben, so dass man zwar mit seinen Kontakten z.B. seinen Facebook-Freunden chatten kann,  jedoch nicht zu anderen Servern kommunizieren kann.



Jabber-Network
Jabber-Network


Wie nutze ich Jabber?

1.) Entscheidung

Wie bereits in der Einführung beschrieben, benötigen wir als erstes einen Client (Chat-Programm), daher müssen wir uns entscheiden, ob wir voll auf den Jabber-Dienst setzen und ICQ etc. über Transports erreichen oder ICQ etc. parallel im Client einrichten möchten. Positiv an den Transports ist, dass man (normalerweise) nur noch einen Account benötigt, die Verbindung zu anderen Accounts wie ICQ oder MSN erledigt dann der Jabber Server automatisch, nachdem man dies einmal eingestellt hat. Wie bereits beschrieben bieten dies jedoch nicht alle Jabber-Server bzw. Clients an. Falls du auf dieses Feature verzichtest, solltest du dir auch einmal den Client (Instant Messenger) “Pidgin” anschauen -> auf der folgenden Seite findest du eine Liste mit den unterstützten Protokollen und viele weitere Tipps zur Konfiguration, so kann man z.B. Twitter, Identi.ca oder auch Skype in Pidgin einbinden. -> wiki.ubuntuusers.de/pidgin


2.) Account anlegen

Um einen Account auf einem Server anzulegen, braucht man meistens nur den soeben erwähnten Client. Dann musst du dir einen Benutzernamen und eine Domain auf dem Server aussuchen, wobei die Domain meist vorgegeben ist. Die Kombination aus Benutzernamen und Domain wird dann deine persönliche Jabber ID (JID), mit der dich andere im Netzwerk anschreiben können. Aufgebaut ist eine JID ähnlich einer E-Mail Adresse, beispielsweise “voku@jabber.ccc.de”. Eine gute Anleitung findet man z.B. hier -> www.ubuntu-jabber.de/Konto-erstellen


3.) Account nutzen

Natürlich kann man auch andere Anbieter nutzen, welche Jabber-Dienste anbieten. Hier eine kleine Übersicht + Konfiguration.


GoogleTalk per Jabber:

Entweder man verwendet den Client von Google: GogleTalk (Windows XP oder höher erforderlich) oder einfach einen alternativen Client. (z.B.: Username@gmail.com)

  • Benutzer: Username
  • Domain: gmail.com bzw. googlemail.com
  • Jabber ID: Username@gmail.de
  • Passwort: “dein normales Google-Passwort”
  • Port: 5222 (Standard – muss ggf. nicht angegeben werden)


GMX per Jabber:

Wie bereits erwähnt bietet GMX, Transports (Gateways) in folgende Netze an z.B.: ICQ, Aim, MSN, Yahoo dies muss jedoch auch die Client-Software mitmachen.

Auch hier kann man wieder den hauseigenen Messenger nutzen: GMX-Messenger (Windows XP oder höher erforderlich) “einfach” installieren und loslegen, für andere Clients: (z.B.: Username@gmx.de)

  • Benutzer: Username
  • Domain: gmx.de bzw. gmx.net
  • Jabber ID: Username@gmx.de
  • Passwort: “dein normales GMX-Passwort”
  • Verbindungsserver: xmpp-gmx.gmx.net
  • Port: 5222 (Standard – muss ggf. nicht angegeben werden)


Web.de per Jabber:

Und auch hier kann man einen Windows-Client direkt von Web.de nutzen: WEB.DE-Messenger (Windows XP oder höher erforderlich) oder einen anderen Client nutzen. (z.B.: Username@web.de)

  • Benutzer: Username
  • Domain: web.de
  • Jabber ID: Username@web.de
  • Passwort: “dein normales Web.de-Passwort”
  • Verbindungsserver: xmpp-webde.gmx.net
  • Port: 5222 (Standard – muss ggf. nicht angegeben werden)


studiVZ & meinVZ per Jabber:

Der sogenannte “Plauderkasten” kann nun auch per Jabber direkt vom Desktop genutzt werden. :-) Aber wie gesagt, nicht zu anderen Jabber-Servern. -> developer.studivz.net/2010/06/30/xmpp-chat-beta/ (z.B.: test@test.de)

  • Benutzer: test\40test.de
  • Domain: vz.net
  • Jabber ID: test\40test.de@vz.net
  • Passwort: “dein normales vz-Passwort”
  • Verbindungsserver: jabber.vz.net
  • Port: 5222 (Standard – muss ggf. nicht angegeben werden)


schülerVZ per Jabber:

Der sogenannte “Plauderkasten” kann nun auch per Jabber direkt vom Desktop genutzt werden. :-) Aber wie gesagt, nicht zu anderen Jabber-Servern. -> developer.studivz.net/2010/06/30/xmpp-chat-beta/ (z.B.: test@test.de)

  • Benutzer: test\40test.de
  • Domain: schuelervz.net
  • Jabber ID: test\40test.de@schuelervz.net
  • Passwort: “dein normales vz-Passwort”
  • Verbindungsserver: jabber.schuelervz.net
  • Port: 5222 (Standard – muss ggf. nicht angegeben werden)


Facebook per Jabber:

Der “Facebook-Chat” kann ebenfalls per Jabber direkt vom Desktop genutzt werden, aber vorher muss man sich einen Nutzernamen aussuchen http://www.facebook.com/username/ (z.B.: lars.moelleken)

  • Benutzer: lars.moelleken
  • Domain: chat.facebook.com
  • Jabber ID: lars.moelleken@chat.facebook.com
  • Passwort: “dein normales facebook-Passwort”
  • Port: 5222 (Standard – muss ggf. nicht angegeben werden)


4.) Fertig

Chatten und hinzufügen von Kontakten funktioniert wie man dies bei ICQ etc. gewohnt ist, mit dem kleinen Unterschied, dass man die Nutzer Jabber IDs benutzt, also nutzer@server. An dieser Stelle möchte ich noch einmal darauf hinweisen, dass Facebook & VZ-Netzwerk einen geschlossenen Jabber-Dienst anbieten, so dass man nicht zu anderen Jabber-Servern kommunizieren kann.

Android Debug Bridge (adb) – HowTo


In diesem Blog-Post beschreibe ich ein wenig die Funktionen der “Android Debug Bridge” (adb), dies ist ein Programm um von einen PC (Linux, Windows, MAC) mit dem Android-Handy zu kommunizieren, ich habe in diesem HowTo Windows verwendet. Adb ist im “Android-SDK” enthalten.

1. Vorbereitung

Als erstes müssen wir uns die Android-SDK herunterladen und installieren.


1.1) Treiber
Wenn du dein Handy noch nie mit deinem PC verbunden hast, musst du ggf. auch noch die Treiber installieren.


Windows XP” -> “SAMSUNG New PC Studio” -> Download-Link

Windows 7” -> “SAMSUNG Kies“ -> Download-Link


1.2) Download


1.3) Installation
android-sdk*.zip entpacken wir als erstes, dann kopieren wir “android-sdk-windows” nach C:\ und starten den darin enthaltenen “SDK Manager.exe”.



ADB
ADB


1.4) USB Debug aktivieren
USB debug auf dem Handy aktivieren…
Einstellungen – Anwendung – Entwicklung: „USB-Debugging“
…und danach dein Android per USB mit dem PC verbinden.


2.) ADB-Kommandos

Nun starten die die Windows-Kommandozeile…



cmd
cmd



… und können nun folgende Befehle ausführen.
# in folgndes Verzeichnis wechseln
cd C:\android-sdk-windows\platform-tools
# ADB-Hile anziegen lassen
adb -h
# zeigt die angeschlossenen Android-Geräte an
adb devices
# Android wird neu-gestartet
adb reboot
# Android wird im Recovery-Modus gestartet
adb reboot recovery
# dumping Debug Information (~ tail -f /var/log/everything.log) ;-)
adb logcat
# der allgemine Befehl für Kommandos
adb [-s ] 
# startet die Android-Konsole, dann kannst
adb [-s ] shell
# zeigt das Android-Logfile an (~tail -f /var/log/everything)
adb logcat
V —> Verbose (lowest priority)
D —> Debug
I —> Info
W —> Warning
E —> Error
F —> Fatal
S —> Silent (highest priority, on which nothing is ever printed)
# z.B. alle Error-Meldungen anziegen lassen
adb logcat *:E
radio  —> View the buffer that contains radio/telephony related messages.
events —> View the buffer containing events-related messages.
main   —> View the main log buffer (default)
# z.B. alle Event-Meldungen anziegen lassen
adb logcat -b events
# installiert ein App von deinem PC aus
adb install \
# Upload eine Datei von deinem PC (localfile) zum Handy
adb push  
# Download eine Datei von Handy zu deinem PC
adb pull  


In dem CyanogenMod – Wiki gibt es noch weitere hilfreiche Befehle: http://wiki.cyanogenmod.com/index.php?title=ADB


— die nachfolgenden Befehle werden in der “adb shell” ausgeführt —


Dabei können die meisten der folgenden Befehle können auch in anderen Linux-Systemen verwendet werden… :-)


# zeigt das Android-Logfile an (~tail -f /var/log/everything)
logcat
# zeigt Kernel-Debug Infos an
dmesg
# zeigt die System-Apps an (ls = dir unter Windows)
ls /system/app/
# zeigt die installierten Apps an
ls /data/app/
# zeigt Daten auf deiner SD-Karte an
ls /mnt/sdcard/
# zeigt den Inhalt einer Datei an oder kopiert diese auch, wenn nötig
cat lall.txt
cat lall.txt > lall_copy.txt
# zeigt an wer du bist ;-)
whoami
# zeigt die laufenden Prozesse an
ps 
#zeigt die Systemauslastung an
top | tail
# zeigt alle eingehängten Partitionan an
mount
# grep filtert z.B. Ausgaben
mount | grep system
# root-Rechte erhalten (su = substitute user)
su
# alle Partition können nun beschrieben werden
remount rw
# z.B. die Partition /system kann nun beschrieben werden (read & write)
remount rw /system
# die Partition /system kann nun nicht mehr beschrieben werden (read only)
remount ro /system
# z.B. löscht ein System-App (rm = del unter Windows)
rm /system/app/
# löscht ein installiertes App
rm /data/app/


PS: Da ich den “Cyanogenmod” bei mir installiert habe, stehen mir noch viele weitere Programme wie z.B. einen SSH-Server (dropbear), wget… zur Verfügung, :-) die hier gezeigten Befehle sollten aber auch ohne diesen Mod funktionieren.

Droopy – Datenübertragung per HTTP

Das Python-Skript Droopy wird auf dem Zielrechner ausgeführt, so dass hier ein kleiner HTTP-Server gestartet wird, der eine einfache Seite mit Uploadformular enthält. Nun muss man nur noch dessen IP-Adresse zusammen mit der Portnummer in die Adresszeile des Browsers eingeben und kann Dateien verschicken (egal ob Windows, Mac, Linux …). Einzige Voraussetzung auf dem Zielrechner ist Python!


Download: droopy

wget http://stackp.online.fr/wp-content/uploads/droopy
mkdir uploads


Usage: droopy [options] [PORT]

Options:
  -h, --help                            show this help message and exit
  -m MESSAGE, --message=MESSAGE         set the message
  -p PICTURE, --picture=PICTURE         set the picture
  -d DIRECTORY, --directory=DIRECTORY   set the directory to upload files to
  --save-config                         save options in a configuration file
  --delete-config                       delete the configuration file and exit


Beispiel: droopy

python2 droopy -d uploads -m "Hi, schick mir doch mal ein paar Dateien... :-)" -p ~/Bilder/gemma-atkinson-108-06.jpg


droopy-Beispiel
droopy-Beispiel