QCOW2 Images lokal einbinden

Mit Hilfe des „Network Block Device“ nbd lassen sich qcow2-Images auch lokal einbinden. Dazu muss zunächst das passende Kernelmodul geladen werden:

modprobe nbd max_part=8

wobei max_part die maximale Zahl der Partitionen pro Device festlegt
Das Image erstellet:

qemu-img -f qcow2 disk.qcow2 20G

Dann läßt sich das Image dem Device zuordnen:

qemu-nbd -c /dev/nbd0 disk.qcow2

und regulär via parted oder fdisk formatieren, mit einem Dateisystem versehen und mounten:

fdisk /dev/nbd0
..
mkfs.ext4 -L disk /dev/nbd0p1
mount /dev/nbd0p1 /mnt/disk

Nach dem umount löst:
qemu-nbd -d das Image vom Network Block Device

Zugriffsrechte auf Arduino und USB-Uart

Per Default erhält nur „root“ rw-Rechte auf USB-Adapter mit seriellen Schnittstellen, wie man sie für die Ansteuerung vom ESP8266 oder dem Arduino braucht. Eine simple udev-rule gibt alle Nutzern zugriff auf die USB-Adapter:
in: /etc/udev/rules.d eine neue Regel erstellen, z.b. 92-serial-USB.rules mit folgendem Inhalt:

#Allow all Access to USB Serial Devices
KERNEL=="ttyUSB*", GROUP="ast", MODE="0666"
#same for Arduino
KERNEL=="ttyACM*", GROUP="ast", MODE="0666"

Neu eingesteckte USB-Schnittstellen sind dann in der Gruppe „ast“ verfügbar und geben alle Nutzern rw-Rechte. Soll nur der Hauptnutzer (ast in der Gruppe ast) Zugriff erhalten genügt es, die „GROUP“ zu setzen und den MODE auf „0660“ zu lassen.

Centos-Container für LXC erstellen

Für CentOS 6 gibt es im paket lxc-templates eine Vorlage. Dazu muss man lediglich das Skript
/usr/share/lxc/templates/lxc-centos
anpassen und den richtigen Zielpfad für das Dateisystem festlegen (/var/lib/libvirt/filesystems):
Im Anschluss einfach mit dem Virt-Manager oder virt-install –connect lxc:// …. den Container erstellen

CentOS 7 hingegen muss der Verwalter manuell anlegen. Das funktioniert jedoch via yum auf einem CentOS-System als Host relativ simpel:

yum -y --installroot=/var/lib/libvirt/filesystems/mycentos7 --releasever=7 group install "base"
echo "pts/0" >> /var/lib/libvirt/filesystems/mycentos7/etc/securetty

Für beide Installationen gilt:
Das Root-Password läßt sich vor dem ersten Systemstarte via chroot setzen:
chroot /var/lib/libvirt/filesystems/mycentos7 /bin/passwd root
Und nach dem ersten Start sollte die /etc/sysconfig/network-scripts/ifcfg-eth0 angepasst werden.

Dummy Interface

Verschiedene Einsatzgebiete, wie unter anderem Offline-Demo-Setups von Cloud- und Virtualisierungsdiensten, erfordern ein Pseodo-Netzwerkinterface, auf das sich eine Bridge binden läßt. Der Linux Kernel unterstützt dazu das „dummy“-Interface. Allerdings generiert das System bei jedem Neustart ein neues Pseudo-Interface mit einer neuen MAC-Adresse, so dass die Netwerk-Konfiguration nach dem Reboot nicht mehr passt.

Abhilfe schafft ein kleinen Skript (in /etc/rc.local), welches beim Systemstart das Dummy-Interface erzeugt und ihm eine fixe MAC-Adresse zuweist:
modprobe dummy
ip link set dev dummy0 address 00:01:02:dd:ee:ff

Alternativ läßt sich das Dummy Interface auch umbennen:
modprobe dummy
ip l set dev dummy0 name veth0
ip link set dev veth00 address 00:01:02:dd:ee:ff

und für diejenigen, welche sich immer noch strikt gegen das „ip“ tool wehren:
ifconfig dummy0 hw ether 00:01:02:dd:ee:ff

Allerdings läuft rc.local erst nach allen Start-Skripten. Es bietet sich an, das Skript als offizielles init-Skript umzuschreiben und vor „network“ zu starten.