Ubuntu 16.04 Installation auf einem Trekstor SurfTab wintron 7.0 – Teil 1

Die Migros hat aktuell ein Trekstor SurfTab wintron 7.0 für 39.90 (statt 59.90) im Angebot, da meine Arbeitskollegen sich so eines organisiert haben, habe ich auch gleich zugeschlagen. Auf dem SurfTab läuft ein Windows 8.1, ich habe aber nicht vor, es damit laufen zu lassen. Vielmehr soll eine Linux Variante auf das Tablet geladen werden. Vorläufig versuche ich es mal mit einem Ubuntu 16.04. Gerne zeige ich euch die Hürden und Tücken bei der Installation auf.

Das Tablet hat einem 64 bit Prozessor, offenbar kommt das Tablet aber nur mit einem 32-bit UEFI Bootloader zu recht, Ubuntu 16.04 64 Bit wird aber mit einem 64 Bit Bootloader ausgeliefert. Ihr müsst zuerst das Ubuntu ISO File auf einen USB-Stick schreiben. Dafür gibt es verschiedene Varianten. Zuerst versuchte ich es mit dem Ubuntu „Startmedienersteller“, allerdings konnte ich anschliessend den Stick nicht read+write mounten und konnte deshalb auch den neuen Bootloader nicht drauf kopieren. (-o remount,rw hat nicht funktioniert). Deshalb habe ich unetbootin gefunden und dieses benutzt um das Ubuntu ISO auf den USB Stick zu kopieren.

  • Zuerst den USB Stick neu formatieren, ich habe hier mal eine FAT32 Partition erstellt, da ich nicht sicher war, ob das Surftab von einer Ext4 Partition booten kann.
  • Die neue Partition mounten (wichtig! da sonst unetbootin meckert)
  • unetbootin starten, das ISO File auswählen. Als Typ USB-Laufwerk und dann euren Stick auswählen. Mit OK den Vorgang starten.

UNetbootin

Nun muss der 32-Bit UEFI Bootloader auf den Stick kopiert werden. Ich habe den hier verwendet. Den USB Stick mounten und die Datei in den Ordner „EFI/BOOT/“ kopieren.

Weiter müssen die Pakete „grub-efi-ia32“ und „grub-efi-ia32-bin“ auf dem USB Stick vorhanden sein. Während der Installation versucht Ubuntu diese Pakete zu installieren, allerdings sind diese nicht in dem ISO-File vorhanden. Die Files können einfach ins Root Verzeichnis des USB Sticks kopiert werden.

Anschliessend das Surftab vom USB Stick booten und wie gewohnt die Installation von Ubuntu starten. Am besten schliesst Ihr einen USB Hub an, mit einer Tastatur und Maus sowie einem WLAN Dongle (da die onboard WLAN Karte nicht erkannt wird).
Mit ESC kommt ins BIOS des Tablets, dort müsst Ihr die Bootreihenfolge ändern, damit vom USB Stick gebootet wird.

Damit habt Ihr mal Ubuntu Installiert und könnt davon booten. Nun funktionieren aber noch ein paar Sachen nicht. Diese versuche ich in einem zweiten Teil herauszufinden und werden dann wieder davon berichten.

Trekstore Surftab mit Ubuntu 16.04

Folgendes läuft z.B. nicht nach der Installation: internes WLAN, Touchscreen und wohl auch noch weiters.

NGINX Cluster mit corosync + pacemaker

Für einen Reverse Proxy basierend auf NGINX habe ich kürzlich ein Cluster mit corosync und pacemaker erstellt. Das Setup läuft auf einem Ubuntu Server 14.04 LTS mit 2 Nodes.

Zuerst muss auf beiden Nodes corosync und pacemaker installiert werden:

apt-get install corosync pacemaker

Bei corosync habe ich mich für UDP Unicast Transport entschieden, möglich wäre auch ein Multicast Setup. Dazu habe ich die corosync Konfiguration wie folgt angepasst:

totem {
[...]
        crypto_cipher: none
        crypto_hash: none
        interface {
                # The following values need to be set based on your environment
                ringnumber: 0
                bindnetaddr: {ip des aktuellen Node}
                mcastport: 5405
        }
        transport: udpu
}
nodelist {
        node {
                ring0_addr:{ip oder hostname Node 1}
                nodeid: 1
        }
        node {
                ring0_addr: {ip oder hostname Node 2}
                nodeid: 2
        }
}
quorum {
        provider: corosync_votequorum
        two_node: 1
}

[...]

Anschliessend muss corosync und pacemaker auf beiden Nodes gestartet werden:

service corosync start
service pacemaker start

und dann kann mit crm_mon der Status des Clusters überprüft werden.

Last updated: Fri May 29 14:12:26 2015
Last change: Fri May 29 08:53:56 2015 via crm_resource on rproxy-node1

Stack: corosync
Current DC: rproxy-node1 (1) - partition with quorum
Version: 1.1.10-42f2063

2 Nodes configured

Online: [ rproxy-node1 rproxy-node2 ]

mit crm configure können dann entsprechend Ressourcen erstellt werden. In meinem Beispiel habe ich je eine IPv4 und eine IPv6 Ressource erstellt

primitive res_ipv6 ocf:heartbeat:IPv6addr params ipv6addr="{ipv6_addr}" cidr_netmask="{cidr_netmask}" nic="{nic}"

primitive res_ip ocf:heartbeat:IPaddr2 params ip="{ipv4_addr}" cidr_netmask="{cidr_netmask" nic="{nic}"

nach commit sind dann auf einem der beiden Nodes die VIP’s zugewiesen:

Last updated: Fri May 29 14:24:05 2015
Last change: Fri May 29 08:53:56 2015 via crm_resource on rproxy-node1
Stack: corosync
Current DC: rproxy-node1 (1) - partition with quorum
Version: 1.1.10-42f2063
2 Nodes configured
2 Resources configured

Online: [ rproxy-node1 rproxy-node2 ]
 Resource Group: rg_export
     res_ip     (ocf::heartbeat:IPaddr2):       Started rproxy-node1 
     res_ipv6   (ocf::heartbeat:IPv6addr):      Started rproxy-node1

Hier im Beispiel habe ich noch eine Resource Group erstellt, damit die beiden Ressourcen zusammen migriert werden, falls ein Node ausfällt.

Wichtig für die Konfiguration von nginx, damit auf eine nicht vorhandene (die IP ist nur auf dem aktuellen Node vorhanden) IPv4 Adresse gebinded werden kann muss:

net.ipv4.ip_nonlocal_bind=1

gesetzt werden werden. Die IPv6 VIP kann einfach auf den loopback Interface konfiguriert werden.

Man könnte einen NGINX auch direkt als Ressource definieren, ich hab das aber vorläufig mal nicht so gemacht sondern starte den NGINX Server normal als Service in Ubuntu:

service nginx start