Hardware

...now browsing by category

in dieser Kategorie werden Erfahrungsberichte über
diverse Hardware unter Linux (speziell Fedora und
RedHat Enterprise Linux) abgelegt.

 

Blaues Video im Flash-Player

Mittwoch, Juli 18th, 2012

To fix blue video on Linux Flashplayer run the following code as root and reboot.

cat << EOF > /etc/profile.d/nv_no_overlay.sh
export VDPAU_NVIDIA_NO_OVERLAY=1
EOF

mkdir -p /etc/adobe
cat << EOF > /etc/adobe/mms.cfg
# tell the flashplayer to use hw to display video content:
AVHardwareDisable = 0
FullScreenDisable = 0
EnableLinuxHWVideoDecode = 1
EOF

Linux-Software RAID: Intent Bitmap aktivieren

Freitag, März 2nd, 2012

In der „Intent Bitmap“ merkt sich der md-Treiber welche Blöcke noch nicht gesynced sind, dadurch muss im Falle eines „unclean“ Shutdowns nicht das gesamte RAID resynced werden.

Der Superblock muss persistent und der Status muss aktiv sein, prüfen mit

mdadm -D /dev/md1 | egrep "(Persistence|State) :"
# erwarteter Output:
#    Persistence : Superblock is persistent
#          State : active

Aktiviert werden die „Intent Bitmap“s mit dem folgenden Kommando:

mdadm /dev/md1 -Gb internal --bitmap-chunk=262144

Aus Performance Gründen sollte die Chunk Size möglichst groß sein, weil die Tabelle vor jedem Schreibzugriff aktualisiert werden muss. (262144 steht für 256MB)

Überprüfen:

cat /proc/mdstat 
#Personalities : [raid1] 
# md0 : active raid1 sdb1[1] sda1[0]
#       104320 blocks [2/2] [UU]
#       
# md1 : active raid1 sdb2[1] sda2[0]
#       1465031488 blocks [2/2] [UU]
#       bitmap: 3/3 pages [12KB], 262144KB chunk

Deaktiviert werden die „Intent Bitmap“s mit dem folgenden Kommando:

mdadm /dev/md1 -Gb none

LUKS Partitionen verwalten

Freitag, März 2nd, 2012

Das folgende script erleichtert die Verwaltung von verschlüsselten Partitionen.

Angelegt wird die Partition durch Eingabe des Kommandos „luks.sh add private“.

Hier wird ein LV als Container angelegt, darin liegt die Partition mit einem Filesystem verschlüsselt. Die Partition wird eingetragen, nach einem Reboot kann die Partition durch Eingabe des Komandos: „luks.sh mount private“ und des Passworts gemounted werden.

Download: luks.sh

#!/bin/bash

# luks (c) Hans-Helmar Althaus 
#
#  Version 1.0 - 24.02.2012
#

# this is convention, we mount volumes in $fsbase/fsN
fsbase="/export"

# keylen and cipher to use on crypted device
cipher="aes-cbc-essiv:sha256"
keylen=256

# filesystem type and size to use on crypted device
fstype="ext4"
fssize="64G"

# try to determine system volume group:
vg=$(vgdisplay | grep "VG Name" | head -1 | awk '{print $3}')

# try to determine next unused volume mount point,
# according to our convention $fsbase/fsN for mount points.
fsnum=1
while [ -d "${fsbase}/fs${fsnum}" ]; do
  fsnum=$((${fsnum}+1))
done

##################################################################################
# shell functions ################################################################
##################################################################################

function luks_add_fs() { # add LUKS-Volume
  name=$1
  lvcreate -L${fssize} ${vg} -n ${name} || return 1
  cryptsetup luksFormat -c ${cipher} -s ${keylen} /dev/${vg}/${name} || return 2
  echo "# show: cryptsetup luksDump /dev/${vg}/${name}"
  cryptsetup luksOpen /dev/${vg}/${name} luks-${name} || return 3
  echo "# show: dmsetup info luks-${name}"
  echo "# show: cryptsetup status /dev/mapper/luks-${name}"
  mkfs.${fstype} -m0 /dev/mapper/luks-${name} || return 4
  mkdir -p ${fsbase}/fs${fsnum} || return 5
  mount /dev/mapper/luks-${name} ${fsbase}/fs${fsnum} || return 6
  cat <<-EOFFSTAB >> /etc/fstab
        #     
        /dev/mapper/luks-${name} ${fsbase}/fs${fsnum} ${fstype} defaults,noauto 0 0
        EOFFSTAB
  cat <<-EOFCRTAB >> /etc/crypttab
        #   
        luks-${name} /dev/${vg}/${name} none none
        EOFCRTAB
  return 0
}

function luks_mount_fs() { # mount LUKS-Volume
  name="$1"
  cryptsetup luksOpen /dev/${vg}/${name} luks-${name} || return 1
  mount /dev/mapper/luks-${name} || return 2
}

function luks_remove_fs() { # remove LUKS-Volume
  name=$1
  doumount=0
  mntpnt=$(mount | grep "^/dev/mapper/luks-${name} on" | awk '{print $3}' )
  if [ -z "${mntpnt}" ]; then
    doumount=1
    mntpnt=$(egrep "^/dev/mapper/luks-${name}\\s" /etc/fstab | awk '{print $2}' )
    if [ -z "${mntpnt}" ]; then
      echo "can not determine mount point."
      return 1
    fi
  fi
  [ $doumount ] && umount ${mntpnt} || return 2
  cryptsetup luksClose /dev/mapper/luks-${name} || return 3
  lvremove /dev/${vg}/${name} || return 4
  if [ ! -f /etc/luks-${name}.keyfile ]; then
    rm -f /etc/luks-${name}.keyfile
  fi
  rmdir ${fsbase}/fs${fsnum} || return 4
  sed -e "s:^luks-${name}.*:#&:g" -i /etc/crypttab
  sed -e "s:^/dev/mapper/luks-${name}.*:#&:g" -i /etc/fstab
  return 0
}

function luks_add_key() { # add a keyfile to mount LUKS-Volume
  name=$1
  if [ -f /etc/luks-${name}.keyfile ]; then
    echo "keyfile exists."
    return 1
  fi
  dd if=/dev/urandom of=/etc/luks-${name}.keyfile bs=1 count=${keylen}
  chown root.root /etc/luks-${name}.keyfile
  chmod 0600 /etc/luks-${name}.keyfile
  cryptsetup luksAddKey /dev/${vg}/${name} /etc/luks-${name}.keyfile || return 2
  sed -e "s:^luks-${name}.*:#&:g" -i /etc/crypttab
  cat <<-EOFCRTAB >> /etc/crypttab
        luks-${name} /dev/${vg}/${name} /etc/luks-${name}.keyfile none
        EOFCRTAB
  return 0
}

function luks_remove_key() { # remove key from LUKS-Volume
  name=$1
  if [ ! -f /etc/luks-${name}.keyfile ]; then
    echo "keyfile does not exist."
    return 1
  fi
  cryptsetup luksRemoveKey /dev/${vg}/${name} /etc/luks-${name}.keyfile || return 2
  rm -f /etc/luks-${name}.keyfile
  sed -e "s:^luks-${name}.*:#&:g" -i /etc/crypttab
  cat <<-EOFCRTAB >> /etc/crypttab
        luks-${name} /dev/${vg}/${name} none none
        EOFCRTAB
  return 0
}

function usage() {
  cat <<-EOUSAGE
        $(basename $0) [options] command 
        
        create logical fsume container on volume group
        and mount crypted filesystem on $fsbase/fsN
        
        options:
          --vg         - volume group (def:$vg)
          -n, --fsnum  - filesystem-number (def:$fsnum)
          -t, --fstype - filesystem-type (def:$fstype)
          -s, --fssize - volume-size (def:$fssize)
          -l, --keylen - key-length (def:$keylen)
        
        command is one of:
          add    - add a crypted volume
          mount  - mount crypted volume
          remove - remove crypted volume
          addkey - add a keyfile to volume
          delkey - remove keyfile from volume
        EOUSAGE
  exit 0
}

if [ -z "$1" ]; then
  usage
fi

##################################################################################
# main function ##################################################################
##################################################################################
  
while [ -n "$1" ]; do
  case "$1" in
    --vg) vg="$2"; shift ;;
    -n|--fsnum)  fsnum="$2"; shift ;;
    -t|--fstype) fstype="$2"; shift ;;
    -b|--fsbase) fsbase="$2"; shift ;;
    -l|--keylen) keylen="$2"; shift ;;
    -s|--fssize) fssize="$2"; shift ;;
    add)       luks_add_fs $2; break ;;
    mount)     luks_mount_fs $2; break ;;
    remove)    luks_remove_fs $2; break ;;
    addkey)    luks_add_key $2; break ;;
    removekey) luks_remove_key $2; break ;;
    *) usage ;;
  esac
done
rt=$?

if [ $rt -gt 0 ]; then
  echo "operation failed with errorcode: $rt"
fi
exit $rt

Snapshot anlegen

Freitag, März 2nd, 2012

Mit dem folgenden script läßt sich komfortabel ein Snapshot einer Partition auf einem LVM anlegen:

#!/bin/bash

# snapshot logical volume block device
# (c)2011 Hans-Helmar Althaus
# Version, Date, Who, What
# 1.0.0, 2011.12.09, HHA, initial Version
# 1.0.1, 2011.12.12, HHA, wait for udev to settle down

VERSION="1.0.1"
MPOINT="/"

# LVLIST="VGNAME:LVNAME:MOUNTDIR:SNAPSIZE"
LVLIST="data:storage:storage:32G"

snapvolume() {
  VGNAME=$1
  LVNAME=$2
  FSNAME=$3
  SNAPSIZE=$4
  [ -z $4 ] && return -1

  mkdir -p ${MPOINT}/${FSNAME}_snap || return 1

  if cat /proc/mounts | awk '{print $2}' | grep ${MPOINT}/${FSNAME}_snap ; then
    umount ${MPOINT}/${FSNAME}_snap || return 2
  fi

  # check for (and umount) bind mounts (autofs)
  for fs in $(mount | grep ${MPOINT}/${FSNAME}_snap | awk '{print $1}') ; do 
    umount $fs || return 3
  done

  if lvdisplay | grep 'LV Name' | grep /dev/${VGNAME}/${LVNAME} | grep /dev/${VGNAME}/${LVNAME}_snap ; then
    for i in {1..5}; do # try ...
      ret=4
      if lvremove -f /dev/${VGNAME}/${LVNAME}_snap; then
        ret=0
        break
      else # wait for udev to finish I/O on logical volume block device, this is a known bug see:
           # https://bugzilla.redhat.com/show_bug.cgi?id=570359
        sleep 1
        udevadm settle
      fi
    done
    [ "$ret" = "0" ] || return $ret
  fi
  sync
  lvcreate -L${SNAPSIZE} -s -n ${LVNAME}_snap /dev/${VGNAME}/${LVNAME} || return 5
  mount -o ro /dev/${VGNAME}/${LVNAME}_snap ${MPOINT}/${FSNAME}_snap || return 6
}

for LVSNAP in ${LVLIST}; do
  snapvolume $(echo ${LVSNAP} | awk -F: '{printf( "%s %s %s %s\n",$1,$2,$3,$4)}' )
done

enable plymouth on centos6 running nvidia driver

Donnerstag, Februar 16th, 2012

To enable the graphical boot on CentOS running the nvidia driver you need to do:

#!/bin/bash
yum -y install plymouth plymouth-plugin-{fade-in,pulser,spinfinity}
# select one of: /usr/share/plymouth/themes/
plymouth-set-default-theme rings
sed -i -e 's/^\skernel.*/& rhgb quiet vga=0x318/g' /etc/grub.conf
/usr/libexec/plymouth/plymouth-update-initrd
# or dracut --force
#
# the selected VESA-Mode must support at least 32k colors:
# vga=   |   640x400   640x480   800x600  1024x768  1280x800 1280x1024 1600x1200
# -------+----------------------------------------------------------------------
# 256    | 768/0x300 769/0x301 771/0x303 773/0x305 864/0x360 775/0x307 796/0x31C
# 32,768 |         - 784/0x310 787/0x313 790/0x316         - 793/0x319 797/0x31D
# 65,536 | 829/0x33D 785/0x311 788/0x314 791/0x317         - 794/0x31A 798/0x31E
# 16.8M  | 830/0x33E 786/0x312 789/0x315 792/0x318 865/0x361 795/0x31B 799/0x31F
# 15 bit modes (32,768 colors) may not available on nvidia hardware

Hauppauge Nova S plus ( DVB-S )

Donnerstag, September 4th, 2008

Bei dieser Karte handelt es sich um eine passive DVB-S Tuner Karte, also um eine Karte ohne eigenen MPEG Decoder. Die Kare funktioniert unter Fedora 8 problemlos.Auf der Karte wird ein Emfänger von Conexant (früher Broadcom) cx88 eingesetzt.

Mit einem entsprechenden „digital“ LNB kann man auf Astra 19,2° Ost ca. 1000 teils verschlüsselte Fernseh und Radio Programme empfangen, die Karte bietet allerdings keine Möglichkeit einen Decoder anzuschließen.

Als Frontent wurde Kaffeine verwendet, dass als Mpeg-Decoder xine verwendet. Für einen flüssigen Bildaufbau sollte man mindestens einen Pentium III Prozessor mit 1 GHz einsetzen.

Intel PCI Express Gigabit Ethernet Adapter (e1000e)

Donnerstag, September 4th, 2008

iese Karte funktioniert unter aktuellen Fedora (mit entsprechend aktuellem Kernel problemlos, für den Betrieb unter CentOS 5.2 (RHEL 5.2) war es allerdings notwendig den aktuellen Treiber e1000e Version 0.4.1.7 von der entsprechenden Webseite bei Sourceforge http://sourceforge.net/projects/e1000/ herunterzuladen, zu übersetzen und zu installieren. Der bei CentOS/RHEL 5.2 mitgelieferte Treiber war mit einer aktuellen Karte nicht in der Lage das Interface zu aktivieren. Das Buildsystem funktionierte problemlos, mit dem selbst übersetzten Treiber läßt sich die Karte problemlos betreiben. Eine PXE Installation ist allerdings nicht möglich, da nachdem der Kernel und das initrd über TFTP geladen wurde, zunächst die leider nicht funktioniertende veraltete Treiberversion aktiviert wird.