Schlagwort-Archiv: Linux

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 – 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! 😀
/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! 😉

Dropbox lässt sich auf Debian nicht updaten

Problem:
Ich wollte eben Dropbox unter Debian Wheezy updaten, nach dem Update geht leider Dropbox nicht mehr an.
Ein dropbox start in der Konsole zeigt das Problem.

VerificationError: importing '/home/myuser/pylinux/__pycache__/_cffi__xa0c4f46bx1d95b4de.so': No module named _cffi__xa0c4f46bx1d95b4de

Auf anderen Rechnern hat das Update funktioniert.

Lösung:
Siehe Bugreport
http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1183618.html
Offensichtlich passiert das nur, wenn die bisherige Installation veraltet / zu alt ist.


sudo rm -rf /var/lib/dropbox/.dropbox-dist
dropbox start -i

Und schon läufts wieder!

Freetz Trunk lässt sich nicht auf Debian Testing compilen

Problem:
Ich wollte mal wieder mein Freetz-Image aktualisieren, also ab in die Sources und ein „svn update“ durchgeführt – soweit sogut. Im Anschluss führe ich make clean aus und folgende Meldung erscheint.

boss@devil:/opt/freetz-box/freetz-devel$ make clean
ERROR: The header file sys/acl.h was not found in /usr/(local/)include.
ERROR: The header file sys/capability.h was not found in /usr/(local/)include.
Makefile:133: *** Some build prerequisites are missing! Please install the missing packages before trying again. Schluss.

Lösung:
Ich habe apt-file nach den fehlenden Dateien befragt und dadurch die Lösung erhalten. Es muss die Installation der folgenden Pakete durchgeführt werden, im Anschluss funktioniert der Freetz-Buildtree wieder wie gewohnt!

apt-get install libacl1-dev libcap-dev

Happy Freetzing!

Wann und wieso die Dateien nicht mehr vorhanden waren, habe ich nicht weiter untersucht. Geht ja wieder alles ^^