Spaß mit Arch Linux, Technik

Install JDK on Arch Linux – manually

I suppose the number of readers here that do use Arch Linux and do programming in Java is rather close to zero, but anyway I want to write this down for my own reference, so why not do it in English so others can benefit from it.

I recently bought an online course on Java developing because, well, I’d like to (re-)learn the language and I enjoy coding every now and then.

I did want to use the javafx classes, though, and that’s where the problems began: It started with code not compiling and the compiler complaining about the javafx classes not being there. I quickly found out that the javafx classes were a seperate package in the OpenJDK distribution.

So I figured I install the extra package and all is fine. Well, it wasn’t. I found out that there are javafx classes for version 8, but not for the actual version 10 of OpenJDK.

So I thought I downgrade to version 8, but then I read that Openjdk does not (yet) implement all of Java, that is, the JDK of Oracle would have the language complete, but OpenJDK wouldn’t.

So I thought: Why not drop OpenJDK all togehter and switch to the original. It’s not fully open source, yes, but heck, I wanted the whole thing and the recent thing, although I knew I would hardly ever need any features that are only in version 10 but not 8 and or only in Oracle’s JDK but not in OpenJDK’s.

So I looked at the AUR and found a recent package of Oracle’s JDK. Which I tried to install but didn’t work. I don’t want to go into detail, but it seemed that there was a version update from 10.0.2 to 10.0.3 and the link didn’t work any more.

So I downloaded the recent JDK from Oracle’s website and searched the internet for advice, what to do with it. I found Shahriar Shovon’s fine article on how to install Oracle JDK 10 on Arch Linux. For obvious reasons I chose the manual install.

That worked. And I could write my first small Java code samples with an editor and compile on the command line.

Then I wanted an IDE. Whether you install IntelliJ or Eclipse on Arch Linux, it will install a JDK alongside with it; OpenJDK.

So there I was, with an IDE, Oracle’s JDK in a custom directory (/opt) and OpenJDK 8 installed through pacman. And well, there was some conflicting. So I deleted the shell script I created when installing Oracle’s JDK manually under /etc/profile.d/ and turned Oracle’s JDK into dead data on the hard drive. I had OpenJDK 8, and I added openjfx8 and could have been content. But I wasn’t.

There must be some way to get the manually installed Java version integrate into Arch. And it was. For archlinux-java, the helper script for the selection of the default JDK to recognize any Java JDK, it must be installed under /usr/lib/jvm/  with a cetain directory name pattern, as I learned here.

So I renamed Oracle’s JDK directory into java-10-oracle  and moved it to usr/lib/jvm/ , and running archlinux-java status  suddenly listed Oracle’s JDK among the available JDKs.

archlinux-java set java-10-oracle  then set it to the system default, and all is fine now.

Whenever there is a new JDK coming out, all I need to do is download it, unpack it under /usr/lib/jvm/  and set it to default with archlinux-java . Pretty straight forward and I do not have to hassle with incorrect download links in the AUR.

Spaß mit Arch Linux, Technik

Erste Schritte – Zufallszahlen für die Festplatte

Arch Linux hat ein eigenes Wiki für die Dokumentation, ähnlich wie Ubuntu. Dort gibt es auch einen Beginner’s Guide, an dem ich mich orientiere. Dort ist auch die Download Seite verlinkt. Dort sucht man sich einen möglichst nahe gelegenen Mirror aus und das gewünschte ISO. Ich habe mich für das Dual ISO entschieden, weil ich mir zu dem Zeitpunkt noch nicht sicher war, ob der fragliche Laptop mit 64 Bit klarkommt und ich gerne Ausweichmöglichkeiten habe.

Ebenfalls im Beginner’s Guide verlinkt ist eine Seite mit Anweisung zur Vorbereitung eines USB Sticks als Bootmedium. Wenn man schon ein Linux System zur Verfügung hat, geht das ganz leicht mit

Wobei /dev/sdx durch die tatsächliche Devicedatei des USB Sticks ersetzt werden muß. Der Aufruf von sync am Ende sorgt dafür, daß die Daten auch tatsächlich gleich auf den USB Stick geschrieben werden.

Dann noch das BIOS auf dem Laptop ändern, damit vom USB Stick gebootet wird und nicht von der Windows Platte, Stick rein, booten, und nach kurzer Zeit meldet sich das Bootmenu mit mehreren Optionen:

  • Boot Arch Linux (x86_64)
  • Boot Arch Linux (i686)
  • Boot existing OS
  • RunMemtest86+ (RAM test)
  • Hardware Information (HDT)
  • Reboot
  • Power Off

Da ich die Dual ISO geladen hatte, kann ich nun auswählen zwischen der 64 Bit Version (x86_64) und der 32 Bit Version (i686). Das existierende OS, zu dem Zeitpunkt Windows, will ich nicht mehr booten. Von Interesse für mich ist noch die Hardware Information, da ich nicht weiß, ob ich die 64 Bit Version benutzen kann oder die 32 Bit Version brauche. Ich wähle also Hardware Information, gehe auf Processor und sehe da in der 17 Zeile x86_64 : Yes. Der Prozessor ist also 64 Bit fähig.

Jetzt am einfachsten nicht auf Exit gehen, sondern auf Reboot, da man sonst in eine Grub Konsole kommt und möglicherweise etwas desorintiert ist, denn das Boot menu ist verschwunden. Nach dem Reboot erscheint es wieder. Der Prozessor kann 64 Bit, also wird die 64 Bit Version (x86_64) ausgewählt und gebootet. Wir kommen direkt als root auf die Kommandozeile.

Der Beginner’s Guide empfiehlt nun, das passende Tastatur Layout zu laden. Mit loadkeys de bekommt man zwar Z und Y a udfie jeweils richtige Taste für das deutsche Keyboard, die Sonderzeichen bleiben allerdings dort, wo sie waren. Sprich: Man muß suchen, wenn man das amerikanische Layout nicht kennt. Das sollte mit etwas Geduld jedoch erträglich sein.

Die W-Lan Verbindung wird auch recht einfach eingerichtet. Mit

bekommt man den Namen des Interfaces heraus, mit

startet ein Einrichtungsassistent.

Im ersten Menu wählt man das W-LAN Netz aus, im zweiten Menu gibt man dem Kind einen Namen, im dritten Menu trägt man den Sicherheitsschlüssel ein, falls es sich nicht um ein offenes Netz handelt.

Mit  ping google.de  kann man prüfen, ob das Internet auch wirklich erreichbar ist. Falls nicht, kommt eine Fehlermeldung, falls ja, kommen immer neue Rückmeldungen, abbrechen kann man bekanntlich mit Strg-C.

Wie bereits erwähnt hatte ich beim Durchstöbern des Beginner’s Guide (und der dort verlinkten Seiten zur Verschlüsselung und LVM) beschlossen, die Festplatte komplett zu verschlüsseln und von einem USB Stick zu booten (LVM soll auch zum Einsatz kommen, aber so weit sind wir noch nciht). Der erste Schritt dazu ist, die komplette Festplatte mit Zufallswerten zu überschreiben.

Ziel ist es, am Ende, nach Installation des Systems keine Informationen zu den Auf der Festplatte befindlichen Daten zu geben. Würde die gesamte Festplatte einfach mit Nullen überschrieben, könnte man später erkennen, wo keine Daten gespeichert sind, und wo verschlüsselte Daten liegen. Durch das Überschreiben mit Zufallswerten gibt man den Angreifern keinen Ansatz, wo sie überhaupt nach Daten suchen sollen. Man könnte sogar behaupten, die Festplatte enthalte noch gar keine Daten und sei noch nicht einmal formatiert. Zumindest so lange, bis die Verschlüsselung geknackt ist. Einen Anhalt, gegen welche Angriffe die Verschlüsselung hilft und wo sie nicht hilft, gibt es auf der Arch Wiki Seite zur Festplattenverschlüsselung. Man sollte sich nicht naiv der Illusion hingeben, daß es eine 100%ige Sicherheit gibt, man kann es potentiellen Angreifern aber mit hinreichend starken Sicherheitsvorkehrungen zumindest den Spaß verderben.

Wie das Überschreiben der Platte mit Zufallszahlen geht, erfahren wir auf der Arch Wiki Seite zur sicheren Festplattenlöschung. Mit  fdisk -l  erfahren wir den Devicenamen der fraglichen Festplatte, in meinem Fall /dev/sda. Interessant ist ebenfalls die Plattengröße in Bytes, die Anzahl der Sektoren und die Sektorengröße, wie wir später erfahren werden.

Bei der Durchführung habe ich mich für das fortgeschrittene Beispiel entschieden. Dabei werden die Zufallswerte von OpenSSl erstellt, außerdem wir ein Fortschrittsbalken angezeigt:

Das erste Problem dabei ist, daß der Fortschrittsbalken das Programm pv voraussetzt, das auf dem Installationsstick nicht zur Verfügung steht. Auch ein  pacman -S pv  schafft keine Abhilfe, da pacman über keine Datenbankinformationen verfügt.

Eine Möglichkeit, dem Abzuhelfen wäre, den Fortschrittsbalken einfach wegzulassen:

Allerdings dauert so eine Überschreibung der Festplatte einige Zeit (in meinem Fall, 300 GB waren es etwa fünfeinhalb Stunden) und ein Fortschrittsbalken ist da schon hilfreich, um es zumindest ungefähr abschätzen zu können.

Also holen wir uns die Liste der Pakete vom Arch Server, um die Datenbank von pacman zu füllen, per pacman -Sy, dann installieren wir pv mittels pacman -S pv.

Das zweite Problem ist, daß die Plattengröße in dem Skript per  df -B1 /dev/sda  (in meinem Fall ist die Festplatte wie gesagt unter /dev/sda) bestimmt werden soll. Blöderweise (warum auch immer) zeigt mir df aber eine falsche Plattengröße an. Abhilfe kann geschaffen werden, indem man den von  fdisk -l  erhaltenen Wert per Hand einträgt. Das Ganze dann in eine Datei schreiben ( nano platteplaetten), die Datei mittels  chmod +x platteplaetten  ausführbar machen und per  ./platteplaetten  ausführen.

Der Vorgang kann einige Zeit dauern. Am Ende bekommt man eine Meldung, wie viele Sektoren überschrieben wurden. Die Festplatte ist nun mit Zufallszahlen überschrieben. Als nächstes steht die Einrichtung der verschlüsselten Partitionen an.

Update: Entschuldigung wegen der Code Listings. Irgendwie krieg ich das nicht hin, daß WordPress mir das nicht verhaut. Die entsprechenden Arch Wiki Seiten stellen es korrekt dar…

Update: Durch das wunderbare Plugin Crayon Syntax Highlighter, das auch im visuellen Editor von WordPress den Umgang mit Code erlaubt (sogar HTML!), sollten die Code Listings jetzt brauchbar sein. Falls ich was übersehen hab, bitte melden.

Spaß mit Arch Linux, Technik

Neue Serie: Spaß mit Arch Linux

Nachdem ich im zweiten Anlauf das 1. Theologische Examen bestanden und jetzt einen Monat frei habe, bevor es mit dem Vikariat losgeht, wollte ich mir ein bißchen mehr Zeit für Linux-Spielereien nehmen.

Ich benutze Linux seit ich mit dem Theologiestudium angefangen habe, also schon eine ziemlich lange Zeit. Mein erstes war ein SuseLinux, ich glaube irgendwas mit ner 8 oder ner 9 vorne. Nach einer Weile war ich damit nicht mehr zufrieden. Für neuere Versionen etwa von KDE oder Gnome hätte ich eine neue Suse Distribution kaufen müssen. Das wäre zwar mit ein wenig Aufwand auch so gegangen, aber erstens habe ich den Aufwand gescheut, alles zu Fuß aus den Quellen zu kompilieren, außerdem fürchtete ich, nicht alles zu begreifen und am Ende ein inkonsistentes System zu haben, das hier und da muckt, ohne daß ich wüßte, wo jetzt der Fehler liegt.

Also habe ich mich Gentoo Linux zugewandt. Die Idee, daß alles direkt für meine Hardware kompiliert wird fand ich damals recht ansprechend, und das Prinzip des rolling release find ich immer noch gut. Aber das Kompilieren dauert schon ne Weile, und wenn dann mal ein Update eines größeren Programms wie Open Office oder Firefox anstand, war der Rechner mehrere Stunden beschäftigt. Als der Rechner den Geist aufgab, hatte ich erst mal ne Weile kein Linux mehr, bis ich letztes Jahr auf einem Rechner meines Vaters Ubuntu installierte.

Ich mochte Unity nicht sonderlich, also wurde aus Ubuntu schnell Xubuntu. Mit dem arbeite ich heute noch. Den Ausschlag für Ubuntu gab, daß es irgendwie mainstreamig warund ich in der Examensvorbereitung etwas wollte, was einfach funktioniert, ohne viel rumzuprobieren.

Lange Rede kurzer Sinn, Xubuntu ist zwar toll und bleibt vorerst auch mein Produktivsystem, aaaber: Meine Frau hat einen alten Laptop, der unter Windows nur noch rummuckt. Den hab ich mir jetzt gegriffen. Der Plan: Daraus wird mein Versuchslabor für Arch Linux.

Windows wird platt gemacht und ich bau mir Stück für Stück ein nettes Arch System, das nicht zu Produktionszwecken dienen soll, sondern einfach, um Dinge auszuprobieren, ohne etwas Wichtiges zu zerschießen.

Wieso Arch? Nun, es bietet rolling releases wie Gentoo, kompiliert aber nicht alles aus Quellen. Man muß (oder darf) alles zu Fuß einrichten, ohne grafischen Installer. Und es gibt eine offenbar recht lebendige Community,w o man Hilfe finden kann. Man kann so ziemlich alles selbst einstellen (ähnlich wie bei LFS, hab ich vergessen, mit dem hatte ich auch mal rumgespielt) und trotzdem auf eine Paketverwaltung zurückgreifen.

Erst dachte ich, das geht auf die Schnelle, allerdings gibt es ja schon bei den ersten Schritten so wahnsinnig viele Möglichkeiten, aus denen man auswählen muß.

So habe ich mich dazu entschieden, daß die Festplatte des Laptops komplett verschlüsselt wird und ich via USB Stick booten werde, der dann ein passwortgeschütztes keyfile zum Platten entschlüsseln enthalten soll. Wenn ich es hinkriege (bzw es überhaupt möglich ist), soll der USB Stick daneben auch noch ein Rettungssystem enthalten (ich dachte an grml), das kann man immer brauchen, wenn mal wieder jemand im Bekanntenkreis seinen Windows Rechner zerschießt und die Daten retten will o. Ä., außerdem will ich den restlichen Platz als ganz normalen USB Speicher benutzen, also FAT32 formatiert, für Bilder, sonstige Daten, die man so runträgt… halt ganz normal das, wofür man nen USB Stick eigentlich hat.

Hier auf dem Blog will ich die einzelnen Schritte dokumentieren, vor allem für mich, aber vielleicht interessiert es ja auch den ein- oder anderen. Wenn nicht, postet Nordlicht zur Zeit gerade ein wenig Kunst (vielleicht werd ich davon was in meinem Linuxprojekt einbauen ;)) und Rauka Palatina hat gemeint, sie würde auch bald mal was schreiben.