Fryboyter

Windows leichter mit Syslinux starten

Wenn man mit dem Bootloader syslinux neben Linux auch Windows starten will, erfolgt dies bei Festplatten mit MBR (nicht GPT!) beispielsweise über folgenden Eintrag in der Datei /boot/syslinux/syslinux.cfg.

...
LABEL windows
	MENU LABEL Windows
	COM32 chain.c32
	APPEND hd0 3
...

Hd0 ist in diesem Fall die erste vom BIOS/UEFI erkannte Festplatte. Und 3 bezieht sich auf die dritte Partition auf dieser Festplatte. Was aber wenn man mehrere Festplatten installiert hat und Windows nicht auf der gleichen Platte wie Linux installiert ist? Man müsste herausfinden in welcher Reihenfolge das BIOS/UEFI die Festplatten erkennt. Hierbei muss man beachten, dass Festplatten ab 0 gezählt werden, Partitionen aber ab 1. Also warum das ganze nicht etwas einfacher lösen?

Mit dem Befehl “fdisk -l” lässt man sich zuerst die ganzen vorhandenen Festplatten anzeigen und sucht sich dann die Festplatte, auf der Windows installiert ist, heraus. Sollte man wissen auf welcher Festplatte Windows installiert ist, kann man sich diese auch direkt mit beispielsweise “fdisk -l /dev/sde” anzeigen lassen. Das sieht dann beispielsweise wie folgt aus.

Festplatte /dev/sde: 238,49 GiB, 256060514304 Bytes, 500118192 Sektoren
Festplattenmodell: Crucial_CT256MX1
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 4096 Bytes
E/A-Größe (minimal/optimal): 4096 Bytes / 4096 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x0000d958

Gerät      Boot    Anfang      Ende  Sektoren  Größe Kn Typ
/dev/sde1  *         2048    206847    204800   100M  7 HPFS/NTFS/exFAT
/dev/sde2          206848 499123111 498916264 237,9G  7 HPFS/NTFS/exFAT
/dev/sde3       499124224 500113407    989184   483M 27 Verst. NTFS WinRE

Wichtig ist hier im Grunde nur der Festplattenbezeichner. Diesen merken wir uns und ändern den Eintrag von Windows in der Konfigurationsdatei von syslinux wie folgt ab.

...
LABEL windows
	MENU LABEL Windows
	COM32 chain.c32
	APPEND mbr:0x0000d958
...

Mit diesem Eintrag sollte man Windows nun problemlose per Chainloading starten können.

OSBN | Linux

Präsentation mit Hovercraft erstellen

Ich habe mich leider mal wieder breitschlagen lassen eine Präsentation zu halten, obwohl ich es hasse. Um nicht schon bei der Erstellung der Präsentation als nervliches Wrack zu enden, nutze ich Hovercraft.

Hiermit erstellt man mittels reStructuredText Impress.js-Präsentationen. Somit kann eine Seite der Präsentation zum Beispiel wie folgt aussehen.

The problem:
============

Making presentations is no *fun!*
---------------------------------

.. note::

    Welcome to the presenter console!

----

Das ganze ist also ziemlich idiotensicher. Bei Fragen lohnt sich ein Blick in die offizielle Dokumentation. Ist man mit seiner Präsentation fertig, erstellt man mittels “hovercraft Hovercraft-Datei Zielverzeichnis” einfach die Präsentation im HTML5-Format, welche im Grunde genommen mit jedem halbwegs aktuellen Browser anzeigbar ist.

Damit man sich einen visuellen Überblick verschaffen kann, bieten die Entwickler von Hovercraft eine Demo-Präsentation an.

Wer die Präsentation den Teilnehmern als PDF-Datei zur Verfügung stellen will, kann dies zum Beispiel mit rst3pdf machen.

Linux | OSBN

Kollaborationsplattform Codeberg hat seine Pforten geöffnet

Bei Codeberg handelt es sich um eine Alternative zu Github die auf Gitea basiert. Der Betreiber von Codeberg ist die Non-Profit Organisation Codeberg e. V..

Codeberg e. V. hat seinen Sitz in Deutschland. Genauer gesagt in Berlin. Dieser hat sich laut Satzung folgende Ziele gesetzt:

Zweck des Vereins ist es, die Schaffung, Sammlung, Verbreitung und Bewahrung Freier Inhalte (Free Content, Open Content, Free Cultural Work) und Freier und Offener Software (Free and Open Source Software, FOSS), und deren Dokumentation in selbstloser Tätigkeit zu fördern, um damit die Chancengleichheit beim Zugang zu Wissen und Bildung zu ermöglichen. Dazu soll auch das Bewusstsein für die damit zusammenhängenden gesellschaftlichen und philosophischen Fragen geschärft werden.

Anfang des Monats gab es nun eine Ankündigung, dass Codeberg für alle freigegeben wurde. Derzeit gibt es bereits das eine oder andere Projekt dort. Wenn ich ehrlich sein soll, kenn ich aber keines davon. Es bleibt daher abzuwarten, ob bzw. wie sich die Plattform entwickelt. Vorsichtshalber habe ich mir mal ein Konto angelegt.

Linux | OSBN

Focusrite Scarlett Solo und Linux

Mein Weihnachtsgeld gebe ich erfahrungsgemäß immer für Sachen aus, die ich mir während des Jahres nicht kaufen würde. Zu Weihnachten habe ich mir dieses mal ein Rode NTG2 Mikrofon, einen K & M Mikrofonständer sowie das Focusrite Scarlett Solo (zweite Generation) gegönnt.

Der eine oder ander wird sich nun Fragen, was hat er mit einem Shotgun-Mikrofon vor? Wird es einen Fryboyter Youtube-Kanal oder Potcast geben? Weder noch.

Bei Sprachchats habe ich zwei Probleme. Zum einen meine mechanische Tastatur. Diese verwendet die blauen Schalter von Cherry. Also die lauten. Leider sind hier einige meiner Mitspieler bei diversen Multiplayer-Spielen recht empfindlich obwohl ich nur “push to talk” nutze.

Bei Headsets habe ich zudem das Problem, dass man entweder Atemgeräusche hört (was mich selber nervt) oder mich schlecht versteht, da das Mikrofon zu weit weg ist um Atemgeräusche zu vermeiden (was wiederum andere nervt).

Also habe ich vor Weihnachten einen Mitarbeiter von Thomann um eine Lösung gebeten. Schlussendlich sind wir dann bei einem Shotgun-Mikrofon gelandet. Das Rode NTG2 hat allerdings einen XLR-Anschluss, so dass ich ein externes Audio-Interface mit Phantomspeißung gebraucht habe. Leider konnte bei Thomann keiner sagen, welches mit Linux kompatibel ist. Da Thomann aber kein Problem damit hat, dass man Sachen zum Testen bestellt, habe ich mir das Focusrite Scarlett Solo (2nd Gen) bestellt und nach Weihnachten getestet, da zumindest eine Kompatibilität mit Mac OS vorhanden ist.

Verwendet man Pulseaudio funktioniert das Ding “out of the box”. Einfach anschließen und fertig. In meinem Fall muss ich der / die / das Gain allerdings sehr weit aufdrehen. Was allerdings ein Balanceakt ist, da bei zu viel Gain das Klicken der Tastatur auch lauter wird.

Kommt nur Alsa zum Einsatz, wird das Interface gar nicht erkannt. Zumindest nicht mit der Standardeinstellung die Arch Linux ausliefert.

Alles in allem war der Spaß nicht ganz billig. Aber das Klicken ist nur noch ein relativ leises Hintergrundgeräusch und die Atemgeräusche sind komplett weg. Da Rode 10 Jahre Garantie gibt (nachdem man sich registriert hat), relativiert sich der Preis dann auch wieder.

Linux | OSBN

Eigenen Mirror der Arch-Paketquellen erstellen

Wie bereits angekündigt, will ich mittels Ansible die Installation und Konfiguration von Arch automatisieren. Um unabhängig von den offiziellen Mirrors zu sein, habe ich mir daher einfach einen eigenen erstellt. Somit kann ich so lange herumspielen wie ich will.

Da das ganze nur intern für Tests gedacht ist, habe ich es relativ einfach gehalten.

Als erstes habe ich mir auf einem Raspberry ein Verzeichnis erstellt in dem die ganzen Pakete landen sollen. Nennen wir es “archpakete”.

Als Webserver nehme ich Caddy mit folgender Konfigurationsdatei.

$IP_DES_RASPBERRY:$PORT_VON_CADDY
root /pfad/zum/Mirrorverzeichnis
gzip
browse

Gzip, also die komprimierte Datenübertragung und browse (das anzeigen von Verzeichnisinhalten) kann man sich im Grunde auch sparen. Es schadet allerdings auch nicht.

Startet man nun Caddy sollte man nicht viel sehen, da das Verzeichnis “archpakete” noch leer ist. Zeit es zu befüllen. Hierfür habe ich mal wieder im Wiki von Arch gestöbert und folgendes Script gefunden, was ich allerdings etwas angepasst habe (Anzeige des Fortschritts (–progress und | tee) hinzugefügt und den Download auf die Paketquellen “core” “extra” “community” beschränkt.

#!/bin/bash
#
# The script to sync a local mirror of the Arch Linux repositories and ISOs
#
# Copyright (C) 2007 Woody Gilk <woody@archlinux.org>
# Modifications by Dale Blount <dale@archlinux.org>
# and Roman Kyrylych <roman@archlinux.org>
# Comments translated to German by Dirk Sohler <dirk@0x7be.de>
# Licensed under the GNU GPL (version 2)

# Speicherorte für den Synchronisationsvorgang
SYNC_HOME="/home/pi"
SYNC_LOGS="$SYNC_HOME/archpakete/logs/"
SYNC_FILES="$SYNC_HOME/archpakete"
SYNC_LOCK="$SYNC_HOME/archpakete/mirrorsync.lck"

# Auswahl der zu synchronisierenden Repositorys
# Gültige Optionen sind: core, extra, testing, community, iso
# Leer lassen, um den gesammten Mirror zu synchronisieren
# SYNC_REPO=(core extra testing community iso)
SYNC_REPO=(core extra community)

# Server, von dem synchronisiert werden soll
# Nur offizielle, öffentliche Mirrors dürfen rsync.archlinux.org verwenden
# SYNC_SERVER=rsync.archlinux.org::ftp
SYNC_SERVER=rsync.selfnet.de::archlinux
# An dieser Stelle weicht die Lokalisierte Version des Scripts von der
# Originalversion ab, da der Mirror in der Originalversion seit einigen
# Tagen nicht mehr synchronisiert wurde, und daher nur alte Pakete
# bereit stellte. Selfnet hat eine Quota von 50 GB fullspeed am Tag, und
# wird danach auf 16 KByte/s runtergestuft.

# Format des Logfile-Namens
# Das beispiel gibt etwas wie „sync_20091019-3.log“ aus
LOG_FILE="pkgsync_$(date +%Y%m%d-%H).log"

# Logfile anlegen und Timestamp einfügen
touch "$SYNC_LOGS/$LOG_FILE"
echo "=============================================" >> "$SYNC_LOGS/$LOG_FILE"
echo ">> Starting sync on $(date --rfc-3339=seconds)" >> "$SYNC_LOGS/$LOG_FILE"
echo ">> ---" >> "$SYNC_LOGS/$LOG_FILE"

if [ -z $SYNC_REPO ]; then
  # Sync a complete mirror
  rsync -rptlv \
        --delete-after \
        --safe-links \
        --max-delete=1000 \
        --copy-links \
        --progress \
        --delay-updates $SYNC_SERVER "$SYNC_FILES" \
        | tee "$SYNC_LOGS/$LOG_FILE"
else
  # Alle Repositorys synchronisieren, die in $SYNC_REPO angegeben wurden
  for repo in ${SYNC_REPO[@]}; do
    repo=$(echo $repo | tr [:upper:] [:lower:])
    echo ">> Syncing $repo to $SYNC_FILES/$repo" >> "$SYNC_LOGS/$LOG_FILE"

    # Wenn man nur i686-Pakete synchronisieren will, kann man in dem
    # rsync-Aufruf dies nach „--delete-after“ inzufügen:
    # „ --exclude=os/x86_64“
    # 
    # Will man stattdessen nur die x86_64-Pakete synchronisieren, verwendet
    # man stattdessen „--exclude=os/i686“
    #
    # Will man beide Architekturen auf dem eigenen Mirror anbieten, lässt
    # den rsync-Aufruf einfach, wie er ist
    #
    rsync -rptlv \
          --delete-after \
          --safe-links \
          --max-delete=1000 \
          --copy-links \
          --progress \
          --delay-updates $SYNC_SERVER/$repo "$SYNC_FILES" \
          | tee "$SYNC_LOGS/$LOG_FILE"

    # Erstellt eine Datei „$repo.lastsync“, die den Timestamp der synchronisation
    # beinhaltet (z. B. „2009-10-19 03:14:28+02:00“). Dies kann nützlich sein,
    # um einen Hinweis darauf zu haben, wann der eigene Mirror zuletzt mit
    # dem angegebenen Mirror abgeglichen wurde. Zum Verwenden einkommentieren.
    # date --rfc-3339=seconds > "$SYNC_FILES/$repo.lastsync"

    # Nach jedem Repository fünf Sekunden warten, um zu viele gleichzeitige 
    # Verbindungen zum rsync-Server zu verhindern, fall die Verbindung nach
    # dem synchronisieren des vorherigen Repositorys vom Server nicht
    # zeitig geschlossen wurde
    sleep 5 
  done
fi

# Weiteren Timestamp ins Logfile schreiben, und es schließen
echo ">> ---" >> "$SYNC_LOGS/$LOG_FILE"
echo ">> Finished sync on $(date --rfc-3339=seconds)" >> "$SYNC_LOGS/$LOG_FILE"
echo "=============================================" >> "$SYNC_LOGS/$LOG_FILE"
echo "" >> "$SYNC_LOGS/$LOG_FILE"

# Die lock-Datei zum Sperren des Script-Durchlaufs löschen und das
# Script beenden
rm -f "$SYNC_LOCK"
exit 0

Nun habe ich unter “archpakete” noch schnell ein Verzeichnis “logs” erstellt und obiges Script ausgeführt.

Sobald das Script seine Arbeit getan hat, kann man nun auf seinem Ansible-Test-System in /etc/pacman.d/mirrorlist folgenden Eintrag am Anfang der Datei eintragen.

Server = http://$IP_DES_RASPBERRY:$PORT_VON_CADDY/$repo/os/$arch

Nun laufen alle Downloads der Pakete über den lokalen Mirror und nicht mehr über die offiziellen Spiegelserver.

Linux | OSBN