Schlagwort-Archiv: terminal

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.

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 ^^

Guake Style Terminal für Windows

Problem:
Unter Gnome habe ich den Guake Terminal-Emulator schätzen gelernt, der sich per Hotkey über die GUI blenden lässt, ohne ein extra Terminal aufzurufen oder die Konsole wechseln zu müssen. Unter Windows wäre sowas auch ganz praktisch…

Lösung:
Tatsächlich hat ein findiger Entwickler unter Sourceforge ein Pendant names „Windows Quake Style Console“ veröffentlicht. Das Projekt ist zwar leider schon abgekündigt, aber die letzte Version ist brauchbar und zu finden unter:

http://sourceforge.net/projects/winqconsole/

Hint:
Obwohl F12 unter Windows nicht belegt ist wird er von WQSC nicht als Hotkey akzeptiert und die Standardbelegung Win+Tilde funktioniert in einem deutschsprachigen System nicht. Als Alternativen bieten sich F7 und F9 an.

Richtig chrooten unter Linux zur Reparatur

Problem:
Kurze Nachlässigkeit beim Updatevorgang und schon bootet der Rechner nach dem nächsten Neustart nicht mehr.

Lösung:
Es sollte ein Bootmedium zur Hand sein! Schön ist es, wenn man zB die GRML Bootdisk in GRUB eingebunden hat. Das vereinfacht die Prozedur natürlich ein wenig.

Wichtig: für eine 32bit Installation benötigt man auch ein 32bit Medium um die nachfolgenden Aktionen auszuführen. Kurzum: Die Architecture des Bootmediums muss stimmen!

Ich boote also das Rettungssystem ganz normal. Ich melde mich am System an, werde root und prüfe, wie die Partitionen des kaputten Systems lauten.
su root -
fdisk -l

Wenn die benötigten Partitionen bekannt sind, dann mountet man die Dateisysteme nach und nach an einen beliebigen Punkt. Ich finde /mnt passend. =)
# erstelle meinen Zielordner
mkdir -p /mnt/rescue
# auf /dev/sda2 befindet sich /
mount /dev/sda2 /mnt/rescue
# auf /dev/sda4 befindet sich /home
mount /dev/sda4 /mnt/rescue/home
# /dev wird für die Geräte benötigt
mount -o bind /dev /mnt/rescue/dev
# /proc wird auch benötigt
mount -t proc /proc /mnt/rescue/proc

Unterhalb von /mnt/rescue sind nun alle wichtigen Dinge gemountet und nun kann die Reparatur via chroot beginnen.
chroot /mnt/rescue /bin/bash
Ab hier sollten alle Systembefehle wie gewohnt verfügbar sein. Grub kann so zB neu geschrieben werden.
Nach der Reparatur einfach rebooten, sonst muss nichts beachtet werden.

OSX – DMG Datei via Terminal installieren

Problem:
Installation von einfachen DMG Dateien über die Kommandozeile via Remote Shell.

Lösung:
Im Prinzip meldet man sich via SSH am OSX Rechner an, lädt die Datei auf den Rechner und führt dann folgende Schritte aus

Man mountet die DMG
hdiutil mount ExampleApp.dmg

wechselt dann in das korrespondierende Verzeichnis in /Volume
cd /Volume/ExampleApp

kopiert die Applikation in den Zielordner
cp -R "Example App Demo.app" /Application

wechselt zurück und unmountet DMG Datei
cd -
hdutil unmount ExampleApp.dmg