Stop Using Git!

Muss man nicht kommentieren, einfach gucken ;)

Posted in General, Linux, Nerd Stuff | Leave a comment

Short Tip: Fix yum

Manchmal kommt es vor das man ein RedHat basiertes OS updaten möchte mit yum update. Dies klappt nicht, es wird einfach nichts ausgegeben auf der Konsole, ebenfalls wird nichts geloggt. Nach zwei Tagen beendet man den vergessenen Befehl und probiert ein yum clean all. Hier passiert ebenfalls nichts, also mit SIGKILL abschiessen, mit strace neu starten. Hier wird ersichtlich das yum am lesen der rpmdb scheitert. Diese kann man wie folgt neu bauen:

find /var/lib/rpm -name "__db.*" -delete
rpm --rebuilddb

Danach funktioniert auch yum wieder.

Posted in General, Linux, Short Tips | Leave a comment

Short Tip: Vergessene Kerneloptionen finden unter Gentoo

Es gibt bestimmte Software unter Gentoo welche bestimmte Optionen im Kernel verlangt, z.b. CONFIG_KVM_AMD=y auf AMD basierten Servern wenn man Qemu mit KVM nutzen möchte. Beim installieren der Pakete meldet sich auch emerge und weist darauf hin dass diese Optionen fehlen. Um diese im nachhinein wiederzufinden gibt es ein kleines Python Script(Quelle):

#!/usr/bin/env python
# Checks installed packages using linux-info.eclass for necessary kernel options
 
import portage
 
vartree = portage.db[portage.root]['vartree']
 
all_cpvs = vartree.dbapi.cpv_all()
settings=portage.config()
 
for cpv in all_cpvs:
    inherit = vartree.dbapi.aux_get(cpv, ['INHERITED'])[0]
    if 'linux-info' in inherit:
        _, pv = portage.catsplit(cpv)
        cpvpath=vartree.dbapi.getpath(cpv)+'/'+pv+'.ebuild'
        print('Checking: '+cpv)
        portage.doebuild(cpvpath, 'clean', settings=settings, tree='vartree', vartree=vartree)
        portage.doebuild(cpvpath, 'pretend', settings=settings, tree='vartree', vartree=vartree)
        portage.doebuild(cpvpath, 'setup', settings=settings, tree='vartree', vartree=vartree)

Es gibt nun verschiedene Möglichkeiten die gefundenen Optionen zu aktivieren:

1) genkernel --menuconfig oder make --menuconfig aufrufen, mit / nach der Option suchen, dorthin navigieren und diese dann aktivieren

2) Die Option an das Ende der aktuellen Config schreiben, diese liegt immer als .config unter /usr/src/linux, oder, wenn man genkernel nutzt, unter /etc/kernels/kernel-config-{ARCH}-{VERSION}-hardened. Dies kann zu Problemen führen wenn die Option noch weitere Abhängigkeiten hat die erst erfüllt werden müssen, dies fällt aber beim kompilieren auf und wird mit einer Fehlermeldung quittiert.

Posted in General, Linux, Puppet | Leave a comment

!moar !moar FreeBSD Short Tips

Installation von ipmitool um Sensoren auszulesen, ipmi Kernelmodul live + persistent laden:

pkg -y install ipmitool
kldload ipmi
echo 'ipmi_load="YES"' >> /boot/loader.conf
ipmitool sensor list
Posted in General, Linux, Short Tips | Leave a comment

IO Scheduler via Puppet managen

Ich habe hier seit einiger Zeit suboptimale Lösungen mit vielen Execs oder file_line oder Bash Scripten im Einsatz gehabt, hier nun eine hübsche Lösung von mir. Folgendes Code Snippet modifiziert die grub1 oder grub2 Config und fügt den passenden elevator Kernelparameter hinzu, außerdem setzt es den gewünschten Scheduler live für alle Blockdevices:

# Copyright 2015 Tim Meusel
$elevator = $::virtual ? { 
    'kvm'       => 'noop',
    'physical'  => 'deadline',
    'openvzhn'  => 'deadline',
  }
  kernel_parameter { 'elevator':
    ensure => present,
    value  => $elevator,
  }
  $blockdevices = split($::blockdevices, ',')
  $blockdevices.each |$blockdevice| {
    exec {"set-elevator-${blockdevice}":
      command => "/bin/echo ${elevator} > /sys/block/${blockdevice}/queue/scheduler",
      unless  => "/bin/grep --quiet '\[${elevator}\]' /sys/block/${blockdevice}/queue/scheduler",
    }   
  }
Posted in General, Linux, Puppet | Leave a comment

!moar FreeBSD Short Tips

Jeder gute Linux Administrator nutzt htop, dies gibt es auch (eingeschränkt) unter FreeBSD. Dafür muss man zunächst einige anpassungen am System machen:

echo "linproc /compat/linux/proc linprocfs rw,late 0 0" >> /etc/fstab
mkdir -p /usr/compat/linux/proc
ln -s /usr/compat /compat
mount linproc

Danach kann es aus den Ports gebaut werden:

cd /usr/ports/sysutils/htop/
make install clean
Posted in General, Linux, Short Tips | Leave a comment

FreeBSD vs GNU Core Utils

Man kennt das ja, man hat eine Datei welche als Loop Block Device agiert und will diese erweitern:

dd oflag=append conv=notrunc if=/dev/zero of=/customers/24/test bs=1MB count=1024

Dummerweise kann die dd Version in FreeBSD kein oflag, weshalb man zu hässlichen Workarounds greifen muss:

 dd if=/dev/zero of=/customers/24/test conv=notrunc seek=$(ls -s /customers/24/test | cut -f1 -d ' ' -) bs=1M
Posted in General, Linux, Short Tips | Leave a comment

FreeBSD Short Tips

Hier einige Tips aus dem FreeBSD Alltag:
Anzeigen der Routing Table:

netstat -r

Routing Table ohne Hostnamen:

netstat -rn

DHCP auf einem Interface konfigurieren (persistent + live):

echo 'ifconfig_igb1="DHCP"' >> /etc/rc.conf
/etc/rc.d/netif restart

Netzwerkeinstellungen prüfen (In der Linux Welt ist ifconfig mittlerweile deprecated und man sollte ip nutzen):

ifconfig

FreeBSD im Singleuser Mode booten und mit folgenden Befehlen das root Passwort ändern (getestet mit root on ZFS):

adjkerntz -i # nur bei verstellter Uhrzeit notwendig
mount -u /
/etc/rc.d/hostid start
zfs mount -a
passwd

FreeBSD Paketlisten aktualisieren + einspielen (nur FreeBSD, ohne Ports):

freebsd-update fetch
freebsd-update install

Default Route live löschen + neue anlegen:

route delete default 192.168.0.1
route add default 10.10.10.10/16

Default Route persistent ändern:

echo 'defaultrouter="88.198.253.2"' >> /etc/rc.conf

Persistente Netzwerkkonfiguration inklusive ggf. notwendigen Routingänderungen live nehmen:

/etc/rc.d/netif restart
/etc/rc.d/routing stop
/etc/rc.d/routing start

DNS Server einstellen (hier gibt es keinen Unterschied zu Linux):

echo 'nameserver 8.8.8.8' > /etc/resolv.conf

Ports Liste initial herunterladen und auschecken (Ports sind Userland Tools siehe auch):

 portsnap fetch extract update

Bash aus den Ports kompilieren:

cd /usr/ports/shells/bash
make install clean

Beim Bau einiger Ports kann es zu einer Fehlermeldung kommen weil der Kernel Sourcecode fehlt:
===> lsof-4.89.e,8 requires kernel sources.

Dies löst man mit (Release Version in der URL ggf anpassen):

svn checkout https://svn0.us-west.FreeBSD.org/base/releng/10.1/ /usr/src

Bash benötigt einen zusätzlichen Mount:

mount -t fdescfs fdesc /dev/fd
echo "fdesc /dev/fd fdescfs rw 0 0" >> /etc/fstab

Default Shell vom User root auf Bash ändern:

chsh -s /usr/local/bin/bash root

Prüfen welche Shell gesetzt ist:

grep root /etc/passwd

FreeBSD bietet auch Binärpakete an, dazu kann man das Repository updaten und dann darin suchen:

pkg update
pkg search paketname

Alternativ suchen und nur passende Paketnamen anzeigen, ohne Versionsnummer:

pkg search -o paketname

Natürlich kann man auch in den Ports suchen mit whereis (hilfreich wenn man den Namen einer Datei/Binary kennt und den zugehören Port sucht):

whereis binaryname

Aber auch nativ mit make nach dem Namen des Ports suchen:

cd /usr/ports/
make searh name=portname

Installieren von Binärpaketen ist ebenfalls einfach:

pkg install paketname

Init Skripte von zusätzlich installierten Diensten findet man nicht unter /etc/init.d/:

/usr/local/etc/rc.d/proftpd status
Posted in General, Linux, Short Tips | Leave a comment

postscreen: close database /var/lib/postfix/postscreen_cache.db: No such file or directory

Wenn man postscreen unter Debian 7 und 8 nutzt, kommt es im Regelfall zu folgender Fehlermeldung:
Jun 20 13:45:44 mail01 postfix/postscreen[6086]: close database /var/lib/postfix/postscreen_cache.db: No such file or directory (possible Berkeley DB bug)

Wie fixed man das ganze?

systemctl stop postfix
cd /var/lib/postfix
mkdir -p /var/spool/postfix/var/lib/postfix
mv postscreen_cache.db /var/spool/postfix/var/lib/postfix
ln -s /var/spool/postfix/var/lib/postfix/postscreen_cache.db
systemctl start postfix
Posted in General, Linux | 2 Comments

Kaufempfehlung für Selbstbaurouter und HTPC

Ein Freund hat mich nach meiner Meinung gefragt bezüglich eines kleinen x86 basierten Routers für Zuhaus sowie einen kleinen HTPC:
Den HTPC gibt es hier.Durch den flachen Towerkühler ermöglicht man einen guten Luftfluss (im Vergleich zu Top Down Kühlern), kann allerdings ein flaches gehäuse nutzen was aktuellen TV Sideboards entgegen kommt. Der Arbeitsspeicher mit 8GB ist ordentlich dimensioniert um genug Puffer für Caching + Reserven zu haben. Dank des zweiten Ram Slots kann die Kapazität langfristig verdoppelt werden. Die CPU bietet alle aktuellen Hardwarefeatures, unter anderem AES-NI, SSE4.2 und AVX2, dank der geringen Taktfrequenz und der kleinen Architektur ergibt sich eine niedrige TDP. Dies sorgt für einen geringen Stromverbrauch, somit kann man den HTPC auch 24/7 benutzen als Music Player. Die 2,5″ Festplatte ist ebenfalls energiesparend durch den Formfaktor, die Umdrehungszahl sowie die geringe Anzahl der Platter. Die 2TB Kapazität sollten ausreichend sein für einige Filme + Musik. Das Mainboard kommt vom Hersteller MSI welcher ebenfalls für stromsparende Boars bekannt ist, es bietet neben dem notwendigen GBit Port und HDMI Anschluss auch weitere Sata Ports, somit kann später der interne Storage aufgerüstet werden. Ein PCIe Port für eine dedizierte GPU ist ebenfalls vorhanden. Die 3,5″ Festplatte inklusive Hotswap Rahmen ermöglicht Backups sowie einen guten Datenaustausch zwischen anderen Rechnern.

Die Routerkonfiguration gibt es hier. Die Basis bildet das Mainboard mit dem fest verbauten Atom Prozessor. Das Board ist schon einige Jahre alt und benötigt minimal mehr Strom als aktuellere Kontrahenten, dafür ist es wesentlich günster, der Aufpreis für neuere Boards würde sich nicht amortisieren. Der Dualcore verfügt über genug Leistung für Routing, Firewalling und ggf Caching sowie VPNs. Es verfügt über zwei Intel NICs und läuft komplett passiv. Die SSD ist besonders langlebig und geräuschlos, sie bietet außerdem genug Random IO Leistung für Caching. Die 4GB Ram sing groß genug für SoHo Router, kann aber bei Bedarf noch erweitert werden, dank der SO-Dimm Bauart benötigt er ebenfalls wenig Energie. Das 90w PSU ist möglichst klein dimensioniert um einen hohen Wirkungsgrad zu erreichen. Das Highlight ist der Access Point mit einer langen Liste an Features. Heraus sticht der simultane Support für 300mbit via 2,4GHz + 1,3GBit via 5Ghz sowie seine außergewöhnlich große Reichweite.

Für Fragen oder Anmerkungen dazu bin ich immer dankbar.

Posted in General, Internet found pieces | Leave a comment