Arch Linux als virtuelle Maschine unter Windows 7

18. Dezember 2014 · Betriebssysteme · andreas · Kein Kommentar

So lobenswert die Stabilität von Debian im Serverbetrieb ist, für “das kleine Experiment zwischendurch” sind manche Programme in den offiziellen Repositories dann doch zu angestaubt. Als Alternative bietet es sich an, eine Sandbox auf Basis einer Rolling Release-Distribution zu installieren, die deutlich näher am Puls der Zeit ist, dafür aber vielleicht in Einzelfällen nicht ganz so fehlerfrei und stabil läuft.

Wer unter Windows 7 sowieso den virtuellen XP-Modus installiert hat, kann dafür die in diesem Fall bereits installierte Virtualisierungsumgebung verwenden.

virtual_pc_arch_linux

Nach dem Download der offiziellen Installations-ISO wird eine neue virtuelle Maschine angelegt und die ISO als virtuelles CD/DVD-Laufwerk eingebunden. Als Basisdaten für die hier beschriebene Maschine wurde ein Hauptspeicher mit einer Größe von 768MB sowie eine dynamisch wachsende Festplatte mit einer Größe von 16GB gewählt.

Als Leitfaden für diesen Beitrag diente der “Beginner’s Guide” aus dem Arch Linux-Wiki, der auf die relevanten Stellen gekürzt bzw. um einige Informationen ergänzt wurde.

Vorarbeiten

Nach dem Start der virtuellen Maschine sind ein paar grundlegende Eingaben direkt im Konsole-Fenster zu machen, bevor die weitere Installation über einen Terminal-Client wie z.B. PuTTY fortgesetzt wird, in dem Copy & Paste deutlich besser funktionieren als in der virtuellen Konsole.

Bevor das für die SSH-Verbindung notwendige Kennwort vergeben wird, sollte das Tastaturlayout angepasst werden, damit bei der späteren Eingabe des Kennworts keine unliebsamen Überraschungen passieren. Dann kann der SSH-Daemon gestartet und die Verbindung mittels Terminal-Client hergestellt werden.

root@archiso ~ # loadkeys de-latin1
root@archiso ~ # passwd
root@archiso ~ # systemctl start sshd

Festplatte einrichten

Wie unter Linux üblich, gibt es zum Einrichten der Festplatten viele Wege. Zum einfachen Anlegen von Partitionen ist “fdisk” vollkommen ausreichend.

Als erstes wird “fdisk” gestartet und die primäre Datenpartition mit einer Größe von 15GB angelegt:

root@archiso ~ # fdisk /dev/sda

Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x331efb9d.

Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-33554303, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-33554303, default 33554303): +15G

Created a new partition 1 of type 'Linux' and of size 15 GiB.

Im zweiten Schritt wird eine weitere primäre Partion mit dem restlichen vorhandenen Plattenplatz eingerichtet, die als SWAP-Partition dienen soll:

Command (m for help): n

Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p):

Using default response p.
Partition number (2-4, default 2):
First sector (31459328-33554303, default 31459328):
Last sector, +sectors or +size{K,M,G,T,P} (31459328-33554303, default 33554303):

Created a new partition 2 of type 'Linux' and of size 1023 MiB.

Nach dem Anlegen muß der Partitionstyp der soeben angelegten Partition noch geändert werden:

Command (m for help): t
Partition number (1,2, default 2):
Hex code (type L to list all codes): 82

Changed type of partition 'Linux' to 'Linux swap / Solaris'.

Anschließend sollte die Festplatte wie folgt aussehen:

Command (m for help): p
Disk /dev/sda: 16 GiB, 17179803648 bytes, 33554304 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x331efb9d

Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 31459327 31457280 15G 83 Linux
/dev/sda2 31459328 33554303 2094976 1023M 82 Linux swap / Solaris

Wenn alles wi e gewünscht aussieht, kann “fdisk” verlassen werden:

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Nach dem Anlegen der Partitionen müssen nun auf diesen die Dateisysteme erzeugt werden - zuerst für die System- und Datenpartition

root@archiso ~ # mkfs.ext4 /dev/sda1
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 3932160 4k blocks and 983040 inodes
Filesystem UUID: 7c504e69-3f95-44c5-b287-c6d3f6954d9c
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

und anschließend für die SWAP-Partition:

root@archiso ~ # mkswap /dev/sda2
Setting up swapspace version 1, size = 1047484 KiB
no label, UUID=253e15fd-b54b-4766-8248-21aed3ada7e8
root@archiso ~ # swapon /dev/sda2

Betriebssystem installieren

Zur Installation des Betriebssystems fehlen nur noch wenige Schritte. Als erstes wird die gerade erzeugte System- und Datenpartition eingebunden, damit auf dieser das Betriebssystem installiert werden kann.

root@archiso ~ # mount /dev/sda1 /mnt

Dann sollte über der offiziellen Arch Linux-Website eine aktuelle Mirrorlist generiert und diese ins System übernommen werden. Beim Einfügen in die “mirrorlist”-Datei müssen u.U. noch auskommentierte Spiegelserver durch entfernen des “#” am Zeilenanfang aktiviert werden. Alternativ kann auch die bereits vorhandene Mirrorlist verwendet und dieser Schritt übersprungen werden.

root@archiso ~ # vi /etc/pacman.d/mirrorlist

Nach dem Synchronisieren der Paketquellen

root@archiso ~ # pacman -Syy

wird das Basissystem installiert, was einige Zeit in Anspruch nimmt.

root@archiso ~ # pacstrap /mnt base base-devel
...
pacstrap /mnt base base-devel 58.34s user 12.50s system 29% cpu 3:57.56 total

Betriebssystem konfigurieren

Nach erfolgreicher Installation kann mittels “chroot” in das soeben installierte System gewechselt und die Konfiguration fertiggestellt bzw. erzeugt werden.

root@archiso ~ # arch-chroot /mnt /bin/bash

Als erstes werden die benötigten Locales durch entfernen des “#” am Zeilenanfang aktiviert und anschließend erzeugt sowie die entsprechende Umgebungsvariable gesetzt

[root@archiso /]# vi /etc/locale.gen
[root@archiso /]# locale-gen
Generating locales...
de_DE.UTF-8... done
Generation complete.
[root@archiso /]# echo LANG=de_DE.UTF-8 > /etc/locale.conf
[root@archiso /]# export LANG=de_DE.UTF-8

bevor dann die Einstellungen für die Konsole festgelegt werden.

[root@archiso /]# vi /etc/vconsole.conf
KEYMAP=de-latin1
FONT=lat9w-16

Das Setzen der Zeitzone kann entweder mittels “timedatectl set-timezone Europe/Berlin” oder über das Erzeugen eines Links erledigt werden:

[root@archiso /]# ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime

Da wir uns in einer virutellen Umgebung auf einer Windows-Maschine befinden, muss die “hwclock” trotz der anders lautenden Standard-Empfehlung im Guide auf “localtime” statt “utc” gesetzt werden.

[root@archiso /]# hwclock --systohc --localtime

Das Setzen des Hostnamens erfolgt zum Einen durch einen Eintrag in Datei “/etc/hostname”

[root@archiso /]# echo arch > /etc/hostname

zum Anderen muß der Hostname noch in der Datei “/etc/hosts” ergänzt werden:

[root@archiso /]# vi /etc/hosts
#
# /etc/hosts: static lookup table for host names
#
#  
127.0.0.1 localhost.localdomain localhost arch
::1 localhost.localdomain localhost arch
# End of file

Zur Konfiguration des Netzwerks wird zuerst die zu konfigurierende Schnittstelle ermittelt

[root@archiso /]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s10f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000
 link/ether 00:03:ff:3f:95:7d brd ff:ff:ff:ff:ff:ff

für die dann der dbcpcd-Daemon (DHCP-Client) gestartet wird. Dieser versorgt das Sytsem beim Boot mit einer IP-Adresse vom DHCP-Server und kommt ohne Netzwerk-Manager aus:

[root@archiso /]# systemctl enable dhcpcd@enp0s10f0.service
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpcd@enp0s10f0.service to /usr/lib/systemd/system/dhcpcd@.service.

Als letzter Schritt wird noch ein Kennwort für den Benutzer “root” gesetzt:

[root@archiso /]# passwd
Geben Sie ein neues UNIX-Passwort ein:
Geben Sie das neue UNIX-Passwort erneut ein:
passwd: Passwort erfolgreich geändert

Bootloader installieren

Als erstes wird das zum “GRand Unified Bootloader” (kurz GRUB) gehörende Paket installiert.

[root@archiso /]# pacman -S grub

Nach Installation des Pakets muß der Bootloader noch in den Bootsektor geschrieben

[root@archiso /]# grub-install --target=i386-pc --recheck /dev/sda
i386-pc wird für Ihre Plattform installiert.
installation beendet. Keine Fehler aufgetreten.

sowie die Konfigurationsdatei erzeugt werden.

[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg
GRUB-Konfigurationsdatei wird erstellt …
Linux-Abbild gefunden: /boot/vmlinuz-linux
initrd-Abbild gefunden: /boot/initramfs-linux.img
Found fallback initramfs image: /boot/initramfs-linux-fallback.img
erledigt

Dann kann die “chroot”-Umgebung verlassen und das System neu gestartet werden.

[root@archiso /]# exit
root@archiso ~ # shutdown -h now

Weitere Systemarbeiten

Damit nicht immer an der Konsole gearbeitet werden muss, sollte nach dem erfolgreichen Systemstart der SSH-Dienst installiert und gestartet werden:

[root@arch ~]# pacman -S openssh
[root@arch ~]# systemctl enable sshd.service
[root@arch ~]# systemctl start sshd.service

Auch wenn es sich bei der soeben erzeugten virtuellen Maschine um eine Sandbox mit im Bedarfsfall zuschaltbaren “Rückgängig”-Datenträger handelt, reicht für die meisten Spielereinen ein Systembenutzer mit eingeschränkten Rechten, der als letzter Schritt erzeugt wird:

[root@arch ~]# useradd -m -g users -s /bin/bash andreas
[root@arch ~]# passwd andreas
Geben Sie ein neues UNIX-Passwort ein:
Geben Sie das neue UNIX-Passwort erneut ein:
passwd: Passwort erfolgreich geändert
login as: andreas
andreas@arch's password:
[andreas@arch ~]$

Nach erfolgreichem Login kann’s dann losgehen …