HowTo – Install CACert Root Certificates in Debian

Problem:
Seit neustem haben sich die Maintainer des Debian Paketes ca-certificates dazu entschieden, die Root Zertifikate von CACert aus dem Paket zu entfernen.
Dazu existiert auch ein entsprechender Bugreport.
Die Maintainer folgen nun dem Mozilla Zertifikatsspeicher – und genau in diesen Speicher haben es die CACert Stammzertifikate (aus Kostengründen) nie geschafft. Details dazu finden sich bei CAcert.

ca-certificates (20140223) unstable; urgency=medium

Debian will no longer ship cacert.org certificates.

Update mozilla/certdata.txt to version 1.97.
Certificates added (+), removed (-), and renamed (~):
+ "ACCVRAIZ1"
+ "Atos TrustedRoot 2011"
+ "E-Tugra Certification Authority"
+ "SG TRUST SERVICES RACINE"
+ "T-TeleSec GlobalRoot Class 2"
+ "TWCA Global Root CA"
+ "TeliaSonera Root CA v1"
+ "Verisign Class 3 Public Primary Certification Authority"
~ "Verisign Class 3 Public Primary Certification Authority"_2
(both Verisign Class 3 CAs now included with duplicate CKA_LABEL fix)
- "Entrust.net Secure Server CA"
- "Firmaprofesional Root CA"
- "GTE CyberTrust Global Root"
- "RSA Root Certificate 1"
- "TDC OCES Root CA"
- "ValiCert Class 1 VA"
- "ValiCert Class 2 VA"
- "Wells Fargo Root CA"

-- Michael Shuler Sun, 23 Feb 2014 15:21:39 -0600

Lösung:
Wir müssen nun die Root Zertifikate selbst installieren um einen Zustand wie vor dem Removal zu haben.
Als User root muss folgendes durchgeführt werden

# Erstellen eines eigenen Zertifikatspeichers unter /usr/local
mkdir -p /usr/local/share/ca-certificates
# Download der Stammzertifikate von CACert
wget http://www.cacert.org/certs/root.crt -O /usr/local/share/ca-certificates/cacert-root.crt
wget http://www.cacert.org/certs/class3.crt -O /usr/local/share/ca-certificates/cacert-class3.crt
# Symlinks in /etc/ssl/certs erstellen
ln -s /usr/local/share/ca-certificates/cacert-root.crt /etc/ssl/certs/cacert-root.crt
ln -s /usr/local/share/ca-certificates/cacert-class3.crt /etc/ssl/certs/cacert-class3.crt
# Zertifikatsspeicher aktualisieren
update-ca-certificates

Nun sind die CACert Zertifikate wieder vertrauenswürdig.

HowTo – Ext3 FS für den Einsatz mit einem USB Stick optimieren

Problem:
Ich möchte einen 2GB USB-Stick mit ext3 formatieren und dauerhaft mit einer Fritzbox nutzen. Gibt es mögliche Optimierungen für diesen UseCase?

Lösung:
Ja, bzw. sollte! =)
Die Partitionierung und Formatierung kann der Bequemlichkeit halber mit gparted durchgeführt werden. Soweit – sogut.
Im Anschluss sollte man die manpage des Tools “tune2fs” studieren, um das jeweilige Filesystem (je Partition!) zu tunen.
Nach der Erstellung und Formatierung der Partition mittels gparted hat man folgenden Zustand:

user@hostname:~$ sudo tune2fs -l /dev/sde1
tune2fs 1.42.9 (4-Feb-2014)
Filesystem volume name: rootfs
Last mounted on:
Filesystem UUID: d34e5d7a-e3c6-4cbe-8ac4-39b979352331
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 128016
Block count: 512000
Reserved block count: 25600
Free blocks: 485301
Free inodes: 128005
First block: 1
Block size: 1024
Fragment size: 1024
Reserved GDT blocks: 256
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 2032
Inode blocks per group: 254
Filesystem created: Sun Mar 23 14:17:53 2014
Last mount time: n/a
Last write time: Sun Mar 23 14:17:58 2014
Mount count: 0
Maximum mount count: -1
Last checked: Sun Mar 23 14:17:53 2014
Check interval: 0 ()
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: d0ba6c40-c20c-40b9-bd25-08a7a32940a4
Journal backup: inode blocks

Ich lege euch ans Herz, die nachfolgend verwendeten Optionen in Eurem Fall DOPPELT zu prüfen. Ich warne ausdrücklich und gebe keine Garantie auf Richtigkeit – das jedoch gilt ja eh für den ganzen Blog. tune2fs kann auch nachträglich verwendet werden. In einem solchen Fall sollte man sich immer vergewissern, dass ein aktuelles Backup vorliegt.
Das Device ist natürlich entsprechend den Gegebenheiten anzupassen.


sudo tune2fs -m 0 -o journal_data_writeback,^acl,^user_xattr -c 0 -i 52w /dev/sde1

Ausgabe:

tune2fs 1.42.9 (4-Feb-2014)
Die maximale Anzahl von Einhängungen wird auf -1 gesetzt
Das Intervall zwischen zwei Checks wird auf 31449600 Sekunden gesetzt
Der Prozentsatz reservierter Böcke wird auf 0% (0 Blöcke) gesetzt

Ich erläutere kurz, was ich mir hier gedacht habe:

# reservierter Speicher auf null setzen, sollte bei einem RootFS sinnvoll gesetzt werden
-m 0
# Entfernen von acl und xattr, und das FS Journal wird nicht so streng gehandhabt
# dadurch arbeitet der Stick etwas schneller im Vergleich zum Standard
# INFORMIERT EUCH ÜBER DIE AUSWIRKUNG DER OPTION!!
-o journal_data_writeback,^acl,^user_xattr
# automatischen fsck nach x Tagen deaktivieren
-c 0
# alle 52 Wochen wird aber ein fsck forciert, fürs Gewissen ;-)
-i 52w

HowTo – OSX Mavericks Bootmedium erstellen

Problem:
OSX Mavericks gibt es bekanntlich ja nur als App- bzw iTunes-Store Download oder eben vorinstalliert. Eine Installation zB per DVD ist wohl nicht vorgesehen. Ich hätte aber gerne eine bootbare DVD zur Hand.

Lösung:
Es gibt hierzu 2 Lösungen


# Mount the installer image
hdiutil attach /Applications/Install OS X Mavericks.app/Contents/SharedSupport/InstallESD.dmg -noverify -nobrowse -mountpoint /Volumes/install_app

# Convert the boot image to a sparse bundle
hdiutil convert /Volumes/install_app/BaseSystem.dmg -format UDSP -o /tmp/Mavericks

# Increase the sparse bundle capacity to accommodate the packages
hdiutil resize -size 8g /tmp/Mavericks.sparseimage

# Mount the sparse bundle for package addition
hdiutil attach /tmp/Mavericks.sparseimage -noverify -nobrowse -mountpoint /Volumes/install_build

# Remove Package link and replace with actual files
rm /Volumes/install_build/System/Installation/Packages
cp -rp /Volumes/install_app/Packages /Volumes/install_build/System/Installation/

# Unmount the installer image
hdiutil detach /Volumes/install_app

# Unmount the sparse bundle
hdiutil detach /Volumes/install_build

# Resize the partition in the sparse bundle to remove any free space
hdiutil resize -size `hdiutil resize -limits /tmp/Mavericks.sparseimage | tail -n 1 | awk '{ print $1 }'`b /tmp/Mavericks.sparseimage

# Convert the sparse bundle to ISO/CD master
hdiutil convert /tmp/Mavericks.sparseimage -format UDTO -o /tmp/Mavericks

# Remove the sparse bundle
rm /tmp/Mavericks.sparseimage

# Rename the ISO and move it to the desktop
mv /tmp/Mavericks.cdr ~/Desktop/Mavericks.iso

HowTo – STLinux Toolchain (sh4) selbst erstellen

Problem:
Ich möchte für meinen Receiver etwas kompilieren.
Folgende relevante Systeminfos habe ich vom Receiver:

hostname:~# uname -r
2.6.32.59_stm24_0211

Dazu benötige ich also die sh4 Toolchain von STLinux.

Lösung:
Ich lade die ISO mit der STLinux Toolchain runter, mounte das ISO File, generiere mittels alien aus allen im ISO befindlichen *.rpm Dateien entsprechende *.tgz Dateien. Im Anschluss entpacke ich alle *.tgzs und habe alle notwenigen Dateien um CrossCompiles durchzuführen.

Wichtig: Das mitgelieferte Install-Script bietet zwar einen Schalter für die Installation unter Debian, jedoch funktionierte dieses nicht unter Debian Sid und wirft entsprechend Fehler. Ich möchte behaupten, dass die hier eingesetzte Methode die Bessere ist. Schliesslich wird damit Paketsystem-Inkonsistenzen vorgebeugt und ist sehr einfach zu handeln.

UPDATE: STLinux-2.4-sh4-20140404.iso ist verfügbar! Bitte entsprechend anpassen! ;-)


# installation von dependencies (evtl ist das mehr als zwingend nötig)
sudo apt-get install alien fakeroot
# ISO runterladen
wget ftp://ftp.stlinux.com/pub/stlinux/2.4/iso/STLinux-2.4-sh4-20121121.iso -O /tmp
# Mount Ziel erstellen
mkdir /tmp/loop
# mounten der ISO
sudo mount -o loop,ro /tmp/STLinux-2.4-sh4-20121121.iso /tmp/loop
# Arbeitsordner für alien erstellen und dahin wechseln
mkdir -p /tmp/alien/TGZ && cd /tmp/alien/TGZ
# alle in der ISO befindlichen RPMs zu TGZs wandeln - tip: get a beer!
find /tmp/loop/* -name *.rpm -exec fakeroot alien -t {} ;
# Verzeichniswechsel nach /tmp/alien
cd /tmp/alien
# entpacken aller generierten TGZs
find /tmp/alien/TGZ -name '*.tgz' -exec tar xvzf {} ;
# Toolchain ans gewünschte Ziel tranferieren, in meinem Fall /opt/toolchains
sudo mv /tmp/alien/opt/STM/STLinux-2.4 /opt/toolchains
# OPTIONAL: Packen der Toolchain um diesen Vorgang nicht nochmal wiederholen zu müssen ;-)
sudo tar -cvzf Toolchain-STLinux-2.4-sh4-20121121.tgz -C /opt/toolchains STLinux-2.4

Usecase: Ich hab mir ein einfaches Bashscript für den Buildprozess erstellt und exportiere dort die entsprechenden Variablen.

# erst die exports
export CC="sh4-linux-gcc"
export CXX="sh4-linux-g++"
export PATH=$PATH:/opt/toolchains/STLinux-2.4/devkit/sh4/bin
export TOOLCHAIN=/opt/toolchains/STLinux-2.4/devkit/sh4
# und hier wird der Build durchgeführt
make V=1 CROSS=$TOOLCHAIN/bin/sh4-linux-

Ich hoffe damit kann jmd etwas anfangen, Erfahrungen und Kommentare sind hierzu ausdrücklich erwünscht! ;-)

CUPS Weboberfläche im Netzwerk freigeben

Problem:
Ich habe einen Druckserver und möchte das Webinterface vom lokalen Netzwerk aus nutzen.

Lösung:
Früher durfte man die cupsd.conf bearbeiten, heute aber kann man das Webinterface via sudo cupsctl --remote-admin im Netzwerk freigeben.
Wen die Paranoia plagt, der kann nach getaner Arbeit das Webinterface wieder fürs Netz deaktivieren.sudo cupsctl --no-remote-admin

Debian für OSCam Installation vorbereiten

Zuerst müssen die benötigten Pakete installiert werden

sudo apt-get install cvs autoconf libccidmake patch ncurses-bin gcc g++ flex bison pkg-config libpng3 tar bzip2 gzip zlib1g-dev lib32z1 libssl-dev libpcsclite-dev libusb-dev

Dann müssen die Sources heruntergeladen werden

cd /opt/sources
svn co http://streamboard.de.vu/svn/oscam/trunk oscam-devel

Jenachdem was man vor hat, kann man nun noch das Script von den Entwicklern entsprechend anpassen und ablegen. Dort findet sich auch die umfangreich zu konfigurierende cmake-Befehlskette für die Kompilierung selbst.

Debian für Freetz Kompilierung vorbereiten

Problem:
Ich möchte mir ein freetz Image für den Router erstellen – was muss ich tun?

Lösung:
Zuerst sucht man sich ein Plätzchen für die Quellen, ich nutze dazu /opt/sources – dort dürfen nur die User der Gruppe src schreiben. Mit “id” kann man prüfen, ob man Mitglied der Gruppe ist.

sudo mkdir /opt/sources
sudo chmod 775 /opt/sources
sudo chgrp src /opt/sources
cd /opt/sources

Jetzt müssen noch einige Pakete installiert werden

sudo apt-get install subversion zlib1g-dev libacl1-dev libncurses5-dev libcap-dev autoconf automake libtool bison flex libc6-dev-i386 gcc-multilib lib32ncurses5-dev

Nun kanns schon losgehn

cd /opt/sources
# Entwicklertrunk ist mir am liebsten ;-)
svn co http://svn.freetz.org/trunk freetz-devel
cd freetz-devel
make menuconfig
make

FIX: Standby bei Debian jessie/sid funktioniert nicht

Problem:
Mein Laptop läuft auf Debian Testing (Jessie) und seit dem Upgrade funktioniert die Energieverwaltung nicht mehr richtig. Ich möchte, dass der Laptop in den Standby Modus geht – sowohl wenn ich den Deckel schließe als auch wenn ich die Hotkeys (z.B. Fn + F5) verwende. Übers Terminal, mittels pm-suspend getriggert, passiert Erwartetes einwandfrei.

Lösung:
Ich habe eben hier gefunden.

apt-get install systemd-shim systemd-ui

Das hat genügt, die vermissten Funktionen (Standby via LID und Hotkey) waren SOFORT verfügbar!

Das Paket systemd-ui ist nicht essentiell – ich fand aber ein zugehöriges Frontend verlockend. Dieses scheint zum jetzigen Zeitpunkt jedenfalls nocht nicht zu funktionieren

user@host:~$ sudo systemadm

** (systemadm:9050): CRITICAL **: file /home/kay/data/src/systemd-ui/src/systemadm.vala: line 335: uncaught error: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such method `Subscribe' (g-dbus-error-quark, 19)

(systemadm:9050): GLib-GObject-CRITICAL **: g_object_ref_sink: assertion `G_IS_OBJECT (object)' failed

(systemadm:9050): Gtk-CRITICAL **: gtk_widget_show_all: assertion `GTK_IS_WIDGET (widget)' failed


Debian Filename: pool/main/s/systemd-ui/systemd-ui_2-2_amd64.deb

Diesen Pfad solltet ihr bei der genannten Version ebenfalls sehen – bei mir gibts den jedenfalls nicht! :D
/home/kay/data/src/systemd-ui/src/systemadm.vala

Oracle Java Package erstellen unter Debian

Problem:
Oracles Java wird benötigt, ist aber in keinem Repo verfügbar.

Lösung:
Ich habe hier schon einen anderen Beitrag zur manuellen Installation von Java verfasst, dieser ist hiermit ungültig und sollte NICHT MEHR VERWENDET WERDEN!!

Um die Dinge der Installation rückgängig zu machen, empfiehlt sich die Ausführung folgender Befehle als root

Achtung, hier wird die 64bit Version genutzt! Für 32bit müssen die Pfade (amd64 –> i386) entsprechend angepasst werden!


update-alternatives --remove java /usr/lib/jvm/java-7-oracle/bin/java
update-alternatives --remove javac /usr/lib/jvm/java-7-oracle/bin/javac
update-alternatives --remove javaws /usr/lib/jvm/java-7-oracle/bin/javaws
update-alternatives --remove javadoc /usr/lib/jvm/java-7-oracle/bin/javadoc
update-alternatives --remove javah /usr/lib/jvm/java-7-oracle/bin/javah
update-alternatives --remove javap /usr/lib/jvm/java-7-oracle/bin/javap
update-alternatives --remove java_vm /usr/lib/jvm/java-7-oracle/jre/bin/java_vm
update-alternatives --remove jvisualvm /usr/lib/jvm/java-7-oracle/bin/jvisualvm
update-alternatives --remove policytool /usr/lib/jvm/java-7-oracle/jre/bin/policytool
update-alternatives --remove ControlPanel /usr/lib/jvm/java-7-oracle/jre/bin/ControlPanel
update-alternatives --remove iceweasel-javaplugin.so /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so
update-alternatives --remove firefox-javaplugin.so /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so
update-alternatives --remove mozilla-javaplugin.so /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so
update-alternatives --remove midbrowser-javaplugin.so /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so
update-alternatives --remove iceape-javaplugin.so /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so
update-alternatives --remove xulrunner-javaplugin.so /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so
update-alternatives --remove xulrunner-addons-javaplugin.so /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so

Im Anschluss sollte das aktuellste, verfügbare Paket java-package installiert werden

apt-get install java-package

Ich habe die Debian Backports eingebunden (Howto) und habe daher zusätzlich folgenden apt-get Schalter genutzt.
-t wheezy-backport
Nun ist das Tool make-jpkg bereitgestellt, mit welchem künftig das Installationspaket / Update generiert werden wird! =)

Zuerst lädt mal auf der Java-Webseite das aktuelle Paket für die verwendete Architekture (i386/amd64) herunter. Dann führt man als User (!! Wichtig, als root wirds mit Fehler enden !!)

make-jpkg jdk-7u51-linux-x64.tar.gz

aus.

Am Ende erhält man daraus ein Paket, in meinem Fall oracle-java7-jdk_7u51_amd64.deb
Dieses kann als root wie gewohnt installiert werden!

dpkg -i oracle-java7-jdk_7u51_amd64.deb

Im Anschluss sollte man sich vergewissern, welche Applikationen denn für die Bereitstellung von “java” noch installiert sind. Diese kann man eigentlich alle Deinstallieren sofern keine Abhängkeit zu anderen Paketen besteht.
update-alternatives --list java zeigt die installiert-/registrierten Binaries. Welchem zu deinstallierendem Debian Paket die jeweilige Binary gehört, kann mit “dpkg -S” rausgefunden werden.

Hier ein Beispiel:

user@host:~$ update-alternatives --list java
/usr/lib/jvm/jdk-7-oracle-x64/jre/bin/java
user@host:~$ dpkg -S /usr/lib/jvm/jdk-7-oracle-x64/jre/bin/java
oracle-java7-jdk: /usr/lib/jvm/jdk-7-oracle-x64/jre/bin/java

Ergebnis: oracle-java7-jdk wäre nun ein Ergebnis – aber das ist in diesem Fall auch gut so! ;-)