Betriebssysteme

Debian auf SSD umziehen

20. Mai 2014 · Betriebssysteme · andreas · 2 Kommentare

Durch den anhaltenden Preisverfall ist der Gedanke naheliegend, auch bei Systemen, die nicht direkt als Arbeitsplatz-Rechner im Einsatz sind, die konventionelle HD durch eine SSD zu ersetzen. Ein typischer Kandidat hierfür ist zum Beispiel ein in der Ecke stehender VDR, der seine Bootzeit nicht nur auf unter 10 Sekunden (inklusive BIOS und GRUB) verkürzt, sondern mit SSD auch so gut wie geräuschlos arbeitet.

Als Windows-orientierter Anwender schwirren bei der Umzugsplanung zunächst Begriffe wie “Disk-Imager” und ähnliches durch den Kopf, unter Linux reichen - wie so oft - in der Regel Bordmittel.

Als erstes sollte geklärt werden, wie groß die benötigte SSD mindestens sein muß. Die Ausgabe von “df -h” liefert den zur Zeit belegten Festplattenplatz, der mit 4,2GB so gering ausfällt, daß selbst eine 60GB SSD vollkommen überdimensioniert scheint.

root@vdr:~# df -h
Dateisystem                                           Größe Benutzt Verf. Verw% Eingehängt auf
rootfs                                                 143G    4,2G  132G    4% /
udev                                                    10M       0   10M    0% /dev
tmpfs                                                  203M    324K  203M    1% /run
/dev/disk/by-uuid/dcb30b21-2bd8-465b-8e45-f8d7d6c50560 143G    4,2G  132G    4% /
tmpfs                                                  5,0M       0  5,0M    0% /run/lock
tmpfs                                                  1,2G       0  1,2G    0% /run/shm

Die SSD wird zunächst als zweite Platte ins System eingebaut und “fdisk” schafft Klarheit über die Verhältnisse:

root@vdr:~# fdisk -l

Disk /dev/sda: 160.0 GB, 160041885696 bytes
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   304205823   152101888   83  Linux
/dev/sda2       304207870   312580095     4186113    5  Extended
/dev/sda5       304207872   312580095     4186112   82  Linux swap / Solaris

Disk /dev/sdb: 60.0 GB, 60022480896 bytes
...
Device Boot Start End Blocks Id System

Wie der Ausgabe zu entnehmen ist die HD eine 160GB-Platte, unter “/dev/sda” zu erreichen, die SSD ist eine 60GB-Platte, die als “/dev/sdb” zur Verfügung steht. Insgesamt wurden auf der HD 2 Partitionen angelegt: eine Linux-Partition für Betriebssystem und Daten sowie eine SWAP-Partition.

Im nächsten Schritt kann nun die SSD analog zur HD aufgeteilt werden, das passende Werkzeug hierfür ist wiederum “fdisk”. Beim Anlegen der Systempartition sollte daran gedacht werden, das “Boot”-Flag für diese Partition zu setzen.

root@vdr:~# fdisk -l /dev/sdb

Disk /dev/sdb: 60.0 GB, 60022480896 bytes
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048    83888127    41943040   83  Linux
/dev/sdb2        83888128   100665343     8388608   82  Linux swap / Solaris

Ob hierbei die ursprüngliche Partitionierung mit einer primären und einer erweiterten Partition plus logischem Laufwerk beibehalten oder auf zwei primäre Partitionen geändert wird, spielt für den Umzug keine Rolle.

Nach dem Anlegen der Partitionen werden die Dateisysteme erzeugt, was von “mkfs.ext4” bzw. “mkswap” erledigt wird:

root@vdr:~# mkfs.ext4 /dev/sdb1
...
Platz für Gruppentabellen wird angefordert: erledigt
Inode-Tabellen werden geschrieben: erledigt
Erstelle Journal (32768 Blöcke): erledigt
Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt

root@vdr:~# mkswap /dev/sdb2
Setting up swapspace version 1, size = 8388604 KiB
no label, UUID=f5dbddec-78e4-452d-96b3-c304a056d4db

Nach dem Erstellen der Dateisysteme wird ein Verzeichnis angelegt und die Systempartition der SSD in dieses Verzeichnis eingebunden. Anschließend wird mittels “rsync” der Inhalt der HD auf die SSD kopiert. Wichtig ist der Parameter “one-file-system”, der dafür sorgt, daß sich rsync nicht im soeben angelegten Ordner in einer Endlosschleife verrennt.

root@vdr:~# mkdir /mnt/ssd

root@vdr:~# mount /dev/sdb1 /mnt/ssd

root@vdr:~# rsync -av --one-file-system / /mnt/ssd

Im nächsten Schritt muß die Datei “/etc/fstab” für die SSD angepasst werden. Während “früher” die einzelnen Partitionen als “/dev/sdb1” etc angesprochen wurden, werden in neueren Systemen die UUIDs verwendet.

root@vdr:~# blkid

/dev/sda5: UUID="3d134e82-5338-4876-9a01-589259eb1569" TYPE="swap"
/dev/sda1: UUID="dcb30b21-2bd8-465b-8e45-f8d7d6c50560" TYPE="ext4"
/dev/sdb1: UUID="87111054-e9dc-4208-af1d-36657c13da4c" TYPE="ext4"
/dev/sdb2: UUID="f5dbddec-78e4-452d-96b3-c304a056d4db" TYPE="swap"

Eine Liste der im System vorhandenen UUIDs kann mittels des Befehls “blkid” ermittelt werden, anschließend sind in der Datei “/mnt/ssd/etc/fstab” die UUIDs anzupassen, d.h. alle Einträge der UUID “3d134e82-5338-4876-9a01-589259eb1569” durch “f5dbddec-78e4-452d-96b3-c304a056d4db” und alle einträge der UUID “dcb30b21-2bd8-465b-8e45-f8d7d6c50560” durch “87111054-e9dc-4208-af1d-36657c13da4c” zu ersetzen.

root@vdr:~# vi /mnt/ssd/etc/fstab

Damit letztendlich von der Platte gestartet werden kann, muß noch der Bootloader “GRUB” entsprechend eingerichtet werden.

Hierzu wird mittels “chroot” das Rootverzeichnis temporär geändert und GRUB auf der SSD installiert. Wichtig ist, vor der Installation die Datei “/boot/grub/grub.cfg” anzupassen, hier müssen analog zur fstab die UUIDs ersetzt werden.

root@vdr:~# mount --bind /dev /mnt/ssd/dev

root@vdr:~# mount --bind /proc /mnt/ssd/proc

root@vdr:~# chroot /mnt/ssd

root@vdr:/# vi /boot/grub/grub.cfg

root@vdr:/# grub-install /dev/sdb
Installation finished. No error reported.

root@vdr:/# exit
exit

Nach dem Verlassen des chroots mittels “exit” kann das System heruntergefahren und die HD abgeklemmt werden. Das System sollte nun von der SSD starten.

Nach erfolgtem Systemstart sind noch zwei Parameter in der Datei “/etc/fstab” hinzuzufügen, die sich hoffentlich positiv auf die Performance und Lebensdauer der SSD auswirken: “discard” sowie “relatime”. “discard” sorgt dafür, daß die SSD mit Hilfe des TRIM-Kommandos nicht mehr genutzte Speicherblöcke effektiver zu verwalten, “relatime” ist die sinnvolle Alternative zummeist vorgeschlagenen “noatime”.

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# # / was on /dev/sda1 during installation
UUID=87111054-e9dc-4208-af1d-36657c13da4c /               ext4    discard,relatime,errors=remount-ro 0       1
UUID=f5dbddec-78e4-452d-96b3-c304a056d4db none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

Nicht-Domänen-Rechner remote herunterfahren

19. März 2014 · Betriebssysteme · andreas · 12 Kommentare

In einer Domäne ist es recht einfach, einen Rechner remote heruterzufahren. Einfach an der Kommandozeile

shutdown -s -t 0 -m \\HerunterzufahrenderRechner

eingeben und sofern der ausführende Benutzer innerhalb der Domäne die benötigten Rechte hat, führt der angegebene Rechner den Befehl klaglos aus.

Nicht so trivial ist das Szenario bei Rechnern im z.B. heimischen Umfeld, wo nur selten eine zentrale Benutzerverwaltung aktiv sein dürfte:

shutdown -s -t 0 -m \\HerunterzufahrenderRechner
 HerunterzufahrenderRechner: Zugriff verweigert(5)

Als ersten Lösungsansatz stößt man meistens auf den Hinweis, sich zuerst mittels einer administrativen Netzerkverbindung gegenüber dem herunterfahrenden Rechner zu authentifizieren, wofür sich z.B. die Freigabe IPC$ anbietet:

net use \\HerunterzufahrenderRechner\ipc$
 Das Kennwort oder der Benutzername ist ungültig für \\HerunterzufahrenderRechner\ipc$

Geben Sie den Benutzernamen für "HerunterzufahrenderRechner" ein: Benutzer
 Geben Sie das Kennwort für "HerunterzufahrenderRechner" ein:
 Der Befehl wurde erfolgreich ausgeführt.

Unter Windows XP war dies schon vollkommen ausreichend, unter Windows Vista und Windows 7 wird allerdings weiterhin der Zugriff verweigert. Wie der KnowledgeBase-Artikel “Description of User Account Control and remote restrictions in Windows Vista” erklärt, handelt es sich hierbei um ein Feature und keinen Bug:

When a user who is a member of the local administrators group on the target remote computer establishes a remote administrative connection by using the net use * \remotecomputer\Share$ command, for example, they will not connect as a full administrator. The user has no elevation potential on the remote computer, and the user cannot perform administrative tasks.

Um auch über das Netzwerk verbundenen, lokalen Benutzern entsprechende Berechtigungen zu erteilen, ist das setzen des Registry-Schlüssels “LocalAccountTokenFilterPolicy” innerhalb des Pfades

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

notwendig, dieser muß als DWORD mit dem Wert 1 angelegt werden.


Windows 7, Netzlaufwerke und die "Thumbs.db"

19. Januar 2014 · Betriebssysteme · andreas · 2 Kommentare

Auch wenn viele sehr traurig über das baldige Ende des Wartungszeitraums von Windows XP sind, war nicht alles wirklich gut, was 2002 eingeführt wurde.

Eine der sinnlosen bis ärgerlichen Funktionen war die Speicherung von automatisch generierten Miniaturansichten in Dateien namens “Thumbs.db”, die standardmäßig aktiviert war und bevor man es richtig merkte, die Platte ohne Sinn und Zweck vollzumüllen begann.

windows7_thumbs_1

Abhilfe war schnell geschaffen: einfach unter “Extras” / “Ordneroptionen” zur Registerkarte “Ansicht” wechseln und den Haken bei “Miniaturansichten nicht zwischenspeichern” setzen und es wurden zumindest keine neuen “Thumbs.db” mehr erzeugt - um die Entsorgung der bereits vorhandenen musste sich der jeweilige Benutzer noch selbst kümmern.

Auch spätere Windows-Versionen waren ähnlich in den Griff zu bekommen, bis unter Windows 7 ein neues Phänomen auftrat:

Obwohl lokal keine “Thumbs.db” mehr erzeugt und laut Synchronisationsprotokoll auch keine über das Netz bewegt wurde, waren auf einigen Netzlaufwerken diese Dateien plötzlich wieder zu finden. Unabhängig von den lokalen Einstellungen scheint Windows 7 nach Lust und Laune (wahlweise auch nach hochkomplexen Algorithmen) sich fleißig an die Generierung von “Thumbs.db” auf vebundenen Netzlaufwerken zu machen.

Da so spontan kein offensichtlicher Schalter zu finden war, half ein Blick in die Gruppenrichtlinien, aufzurufen mittels “gpedit.msc”.

windows7_thumbs_2

Dort gibt es unter “Benutzerkonfiguration” / “Administrative Vorlagen” / “Windows-Komponenten” / “Windows-Explorer” den eigentlich selbsterklärenden Punkt “Zwischenspeicherung von Miniaturansichten in versteckten ’thumbs.db’-Dateien deaktivieren”, der von “Nicht konfiguriert” auf “aktiviert” umgestellt werden muß.

Wenn Sie diese Richtlinieneinstellung aktivieren, werden in Windows-Explorer keine thumbs.db-Dateien erstellt und keine Lese- und Schreibvorgänge für diese Dateien durchgeführt.

Selbstverständlich hat auch diese Einstellung keine Auswirkungen auf bereits erstellte “Thumbs.db”, die wieder einmal manuell entsortg werden müssen.


Have a break ...

24. November 2013 · Betriebssysteme · andreas · Kein Kommentar

Gestern Morgen kam das Nexus 4 OTA-Update auf Android 4.4 und gestern Abend war vorsichtiges Staunen angesagt:

nexus_akku_verlauf

eine horizontale Akku-Verbrauchslinie über fast 13 Stunden sieht schon beeindruckend aus. Unter 4.3 gings immer leicht bergab …

Wobei ich zugegebenermaßen auch kein typischer Smartphone-Nutzer bin: kein Facebook, kein WhatsApp - aktiv ist nur K-9-Mail mit Push-Verbindung zum Server.


Linux-DHCP-Client erzeugt keinen AD-DNS-Eintrag

5. Juni 2013 · Betriebssysteme · andreas · Kein Kommentar

Verbindet sich ein Windows-Client mit einem Microsoft 2003/2008/2008 R2 DHCP-Server, so wird im Normalfall auch im DNS für diesen Client ein entsprechender Eintrag erstellt. Bei Linux-Clients erfolgt zwar die Zuteilung einer IP-Adresse mitsamt Eintrag im DHCP, der Eintrag im DNS fehlt hingegen.

Den entscheidenden Hinweis liefert das Dokument #816592 “How to configure DNS dynamic updates in Windows Server 2003” der der Microsoft Knowledge Base im Abschnitt “How DHCP/DNS update interaction works”:

You can use the DHCP server to register and update the PTR and A resource records on behalf of the server’s DHCP-enabled clients. When you do this, you must use an additional DHCP option, the Client FQDN option (option 81). This option lets the client send its FQDN to the DHCP server in the DHCPREQUEST packet. This enables the client to notify the DHCP server as to the service level it requires.

Um die zusätzliche Option unter Debian zu setzen genügt es, in der Datei “/etc/dhcp/dhclient.conf” die Zeile

send fqdn.fqdn = gethostname();

einzufügen. Bei der nächsten Anmeldung am DHCP-Server wird auch ein DNS-Eintrag erzeugt.