Arch Linux Grundkonfiguration

Nach der Grundinstallation von Arch Linux muss man das System konfigurieren. Die Schritte, welche ich hier beschreibe, führe ich jeweils nach der Grundinstallation von Arch Linux durch.

Netzwerkverbindung herstellen

Hat man ein Netzwerkkabel, schliesst man das an und bezieht eine IP-Adresse per DHCP:

# dhclient eth0
# ping archlinux.puzzle.ch

Hat man kein Netzwerkkabel, kann man mit dem wpa_supplicant eine Verbindung über das WLAN herstellen:

# wpa_passphrase deine_essid dein_passwort | tee wpa.cfg
# wpa_supplicant -i wlan0 -c wpa.cfg -B
# dhclient wlan0
# ping archlinux.puzzle.ch

Pacman vorbereiten

Die Pakete der Paketverwaltung pacman werden signiert. Um diese Signaturen auf ihre Gültigkeit überprüfen zu können, müssen die Master-GPG-Keys der Entwickler importiert werden.

# pacman-key --init
# pacman-key --populate archlinux

Die Keys sollte man auf https://www.archlinux.org/master-keys überprüfen!
Dann öffnet man die Konfigurationsdatei /etc/pacman.conf:

# vi /etc/pacman.conf

In der unter den Allgemeinen Optionen ([options]) fügt man noch folgende Zeile ein:
ILoveCandy
Danach funktioniert Pacman:

# pacman -Suy

VIM Editor installieren

Der Editor VIM kann viel mehr als der normale vi und wird deshalb ersetzt:

# pacman -R vi
# pacman -S vim
# ln -s /usr/bin/vim /usr/bin/vi

Um in der Shell richtig arbeiten zu können, wird der vi-Mode aktiviert:

# set -o vi

Jetzt ist man bereit für die Grundkonfiguration.

User einrichten

Als erstes wird ein neuer User emanuel hinzugefügt und in die nötigen Gruppen eingefügt. Die primäre Gruppe heisst users.

# useradd -g users -G games,network,video,lp,audio,optical,floppy,storage,scanner -s /bin/bash -m emanuel

Dann setzt man das Passwort von diesem User:

# passwd emanuel

Erweiterete Rechte mit sudo

Damit man nicht unter root arbeiten muss, installiere ich sudo um auch als normaler Benutzer Befehle mit Root-Berechtigungen abzusetzen. Hierfür installiert man das Paket sudo:

# pacman -S sudo

Die User, welche Befehle mit Root-Berechtigungen ausführen dürfen, werden in die Gruppe wheel hinzugefügt:

# usermod -a -G wheel emanuel

Der Gruppe wheel muss man noch die Berechtigungen für sudo geben. Diese sind in der Datei /etc/sudoers gespeichert. Diese Datei sollte nicht mit dem Editor vi bearbeitet werden, sondern immer mit dem Befehl visudo. Damit werden Konfigurationsfehler erkannt und man kann sich nicht selbst aus dem System sperren:

# visudo

Alle User der Gruppe wheel dürfen alle Befehle mit sudo ausführen, ohne ein Passwort einzugeben:

%wheel ALL=(ALL) NOPASSWD: ALL

Jetzt kann ich mich mit meinem User emanuel einloggen und Befehle mit sudo ausführen.

Netzwerke mit netcfg verwalten

Installation
Ich verwalte meine Netzwerkkonfigurationen mit netcfg. Deshalb möchte ich den network-Daemon von ArchLinux beim Booten nicht automatisch starten. Dafür öffnet man die Datei /etc/rc.conf:

$ sudo vi /etc/rc.conf

und deaktiviert um DAEMONS-Array mit einem Ausrufezeichen den network-Daemon:

DAEMONS=(... !network ...)

Jetzt installiert man folgende Pakete um netcfg zu verwenden:

$ pacman -S net-tools dhclient netcfg dialog

Das Paket net-tools enthält folgende Tools: netstat, arp, ifconfig, ipmaddr, iptunnel, mii-tool, nameif, plipconfig, rarp, route, slattach.
Dann beendet man die aktuelle Netzwerkverbindung:

$ sudo pkill dhcpcd
$ sudo pkill wpa_supplicant

LAN
Um per LAN-Kabel die IP-Konfiguration per DHCP zu beziehen, kopiert man folgendes Profil:

$ sudo cp /etc/network.d/examples/ethernet-dhcp /etc/network.d/eth0-dhclient

Ich nutze lieber den dhclient statt den dhcpcd um per DHCP die Netzwerkkonfiguration zu beziehen. Das kann man netcfg beibringen:

$ sudo vi /etc/network.d/eth0-dhclient

Folgende Zeile muss man dafür anfügen:

DHCLIENT='yes'

WLAN
Um per WLAN eine WPA2 Verbindung herzustellen, kann man wifi-menu als Assistent benutzen:

$ sudo wifi-menu

Dann kann man verfügbare WLANs auswählen und man wird nach dem Passwort gefragt. Die generierte Konfiguration kann man dann direkt unter /etc/network.d/ abspeichern.
Ich möchte jedoch die Konfiguration von Hand eingeben. Dafür kopiere ich ein Template und bearbeite es:

$ sudo cp /etc/network.d/examples/wireless-wpa /etc/network.d/wlan0-discordia
$ sudo vi /etc/network.d/wlan0-discordia

Folgende Einstellungen verändere ich:

ESSID='discordia'
KEY='deinsicherespasswort'
DHCLIENT='yes'

Beim Booten starten
Damit man beim Booten automatisch mit einem Netzwerk verbunden wird, startet man den Daemon net-profiles während dem Booten:

$ sudo vi /etc/rc.conf

Der Daemon net-profiles wird im DAEMONS-Array eingetragen:

DAEMONS=(... net-profiles ...)

Welches Profil gestartet wird, ist in der Datei /etc/conf.d/netcfg definiert:

$ sudo vi /etc/conf.d/netcfg

Hier trägt man das Profil ein. Ein @ startet das Netzwerk im Hintergrund.

NETWORKS=(@wlan0-discordia)

Netcfg verwenden
Das Profil wlan0-discordia wird folgendermassen gestartet:

$ sudo netcfg wlan0-discordia

Und so beendet:

$ sudo netcfg -d wlan0-discordia

So startet man ein Netzwerk neu:

$ sudo netcfg -r wlan0-discordia

So bekommt man ein hübsches Menü mit allen Profilen:

$ sudo netcfg-menu

Das aktuell verwendete Profil zeigt man so an:

$ sudo netcfg status

OpenSSH installieren und konfigurieren

Als nächstes wird OpenSSH installiert. Mit OpenSSH kann man eine Verbindung zu Computern übers Netzwerk herstellen.

$ sudo pacman -S openssh

Die Konfigurationsdatei vom SSH-Daemon (/etc/ssh/sshd_config) wird ebenfalls angepasst:

$ sudo vi /etc/ssh/sshd_config

Der Benutzer root darf sich nicht anmelden. Nur der Benutzer emanuel ist dazu berechtigt.

  PermitRootLogin no
  AllowUsers emanuel

Es gibt noch viele weitere Möglichkeiten zum Absichern vom SSH-Zugang. Als simpler Grundschutz ist dies jedoch in Ordnung.

Jetzt kann der SSH-Daemon gestartet werden:

$ sudo /etc/rc.d/sshd start

Damit der SSH-Daemon bei jedem Systemstart gestartet wird, fügt man diesen ins DAEMONS-Array in der Datei /etc/rc.conf ein:

$ sudo vi /etc/rc.conf

Der Wert sshd wird in das DAEMONS-Array eingefügt:

DAEMONS=(... sshd ...)

NTP (Network Time Protocol)

Damit die Uhrzeit vom System immer ganz genau stimmt, wird die Systemuhr per NTP mit einem Zeitserver abgeglichen.

Dazu wird zuerst ntp installiert:

$ sudo pacman -S ntp

Danach wird die Konfigurationsdatei von NTP (/etc/ntp.conf) angepasst:

$ sudo vi /etc/ntp.conf

Die Server von ntp.org stellen einem zufällige IP-Adressen von NTP-Server aus definierten Ländern zur Verfügung. Diese werden folgendermassen eingefügt:

  server 0.ch.pool.ntp.org
  server 1.ch.pool.ntp.org
  server 2.ch.pool.ntp.org
  server 3.ch.pool.ntp.org

Dieses Beispiel gilt für die Schweiz und kann natürlich angepasst werden.

Damit NTP die Systemzeit abgleicht, muss die aktuelle eingestellt Uhrzeit etwa auf die Minute genau stimmen. Diese kann man auch automatisch setzen:

$ sudo ntpd -q -g

Oder mit dem nicht mehr empfohlenen ntpdate:

ntpdate 0.ch.pool.ntp.org

Der ntp-Daemon kann jetzt gestartet werden:

$ sudo /etc/rc.d/ntpd start

Zur Kontrolle frägt man die Peers ab:

$ ntpdc -c peers
     remote           local      st poll reach  delay   offset    disp
=======================================================================
=mx1.2b3w.ch     10.0.0.23        3 1024  277 0.02544 -0.019682 0.13930
*ntp1.as34288.ne 10.0.0.23        1 1024  336 0.02498 -0.019844 0.12640
=vps01.ch.it2go. 10.0.0.23        2 1024  377 0.02304  0.027307 0.12485

Oder mit ntpq

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+mx1.2b3w.ch     77.245.18.26     3 u  209 1024  277   25.441  -19.682  53.115
+vps01.ch.it2go. 81.94.123.16     2 u  124 1024  377   23.056   27.307  65.276
*ntp1.as34288.ne .PPS.            1 u 1260 1024  336   24.986  -19.844  59.471

Damit der ntp-Daemon bei jedem Systemstart gestartet wird, fügt man diesen ins DAEMONS-Array in der Datei /etc/rc.conf ein:

$ sudo vi /etc/rc.conf

Der Wert ntpd wird in das Array eingefügt:

DAEMONS=(... ntpd ...)

Jetzt hat man immer die genaue Uhrzeit eingestellt!

Das Arch User Repository (AUR)

Im Arch User Repository (AUR) befindet sich sehr viele Software von der Community. Damit man einen einfacheren Zugriff auf dieses Repository hat, kann man packer als AUR-Client verwenden.

Zuerst installiert man die base-devel-Tools:

$ sudo pacman -S base-devel

Dann lädt man packer herunter:

$ wget https://aur.archlinux.org/packages/pa/packer/packer.tar.gz

Der Gzip komprimierte Tarball wird entpackt und dann wechselt man in das neue Verzeichnis:

$ tar -xvzf packer.tar.gz
$ cd packer

Jetzt stellt man ein Paket mit Hilfe vom makepkg her:

$ makepkg

Dieses Paket ist im offiziellen pacman-Format und kann mit pacman installiert werden:

$ sudo pacman -U packer-20120702-1-any.pkg.tar.xz

Jetzt ist packer installiert und kann für Software aus dem AUR verwendet werden.

Weiterführende Installation

Die Grundkonfiguration von ArchLinux ist jetzt gemacht. Als nächstes kommt die installation der grafischen Benutzeroberfläche falls man das wünscht.

Links und weitere Informationen

4 thoughts on “Arch Linux Grundkonfiguration”

  1. Hallo Emmanuel, danke für deine nützliche Anleitung. Habe gerade Archlinux mit Xfce installiert, danach kam u.a. Packer dran.
    Dort happerte es :
    Nach Auspacken des Archivs machte ich makepkg, darauf Fehlermeldung, dass das Programm strip fehle. Neustart, danach :

    [user@arch ~]$ cd packer
    [user@arch packer]$ makepkg
    ==> Erstelle Paket: packer 20120302-1 (Son Mai 26 23:40:01 CEST 2013)
    ==> WARNUNG: PKGBUILD sollte nicht mehr ohne die Funktion package() verwendet werden.
    ==> Prüfe Laufzeit-Abhängigkeiten…
    ==> Fehlende Abhängigkeiten:
    -> jshon
    ==> Prüfe Buildtime-Abhängigkeiten…
    ==> Fehlende Abhängigkeiten:
    -> git
    ==> FEHLER: Konnte nicht alle Abhängigkeiten auflösen.

    nach Installation von jshon und git führte ich das makepkg nochmals aus :

    [user@arch packer]$ makepkg -s
    ==> Erstelle Paket: packer 20120302-1 (Son Mai 26 23:41:09 CEST 2013)
    ==> WARNUNG: PKGBUILD sollte nicht mehr ohne die Funktion package() verwendet werden.
    ==> Prüfe Laufzeit-Abhängigkeiten…
    ==> Prüfe Buildtime-Abhängigkeiten…
    ==> Empfange Quellen…
    ==> Entpacke Quellen …
    ==> Betrete fakeroot Umgebung…
    ==> Beginne build()…
    ==> Connecting to github GIT server….
    Klone nach ‘packer’…
    remote: Counting objects: 684, done.
    remote: Compressing objects: 100% (333/333), done.
    remote: Total 684 (delta 220), reused 663 (delta 201)
    Empfange Objekte: 100% (684/684), 116.03 KiB | 70.00 KiB/s, done.
    Löse Unterschiede auf: 100% (220/220), done.
    ==> Säubere Installation…
    -> Bereinige ungewollte Dateien…
    -> Komprimiere Man-Pages und Info-Seiten…
    -> Entferne unnötige Symbole aus Binär-Dateien und Bibliotheken…
    ==> Erstelle Paket “packer”…
    -> Erstelle .PKGINFO Datei…
    -> Erstelle .MTREE-Datei
    -> Komprimiere Paket …
    ==> Verlasse fakeroot Umgebung.
    ==> Beendete make: packer 20120302-1 (Son Mai 26 23:41:13 CEST 2013)
    Ist die Installation fehlgeschlagen ? Ich kann Packer nicht aufrufen.
    Archlinux ist wirklich gut. Gruss ! Marc

    • Hallo Marc

      Ich gehe davon aus, dass du base-devel auch installiert hast.

      Das makepgk sieht schon mal gut aus. Du hast aus den Quellen die Software übersetzt und für Pacman aufbereitet. Jetzt muss aber das von dir erzeugte Softwarepaket ebenfalls noch installiert werden:

      Im Verzeichnis machst Du ls, dann siehst Du ein File mit den Namen packer-20130527-1-any.pkg.tar.xz (oder ähnlich). Dieses kann mit Pacman installiert werden:

      $ sudo pacman -U packer-20130527-1-any.pkg.tar.xz

      Dann ist packer in /usr/bin/packer installiert (prüfbar mit which packer).

      Ich hoffe, jetzt sollte es klappen!

      Gruss
      Emanuel

  2. Danke Emanuel, der Befehl sudo pacman -U packer etc funktionierte auf Anhieb. Nun weiter mit Virtualbox, rsync etc…. Gruss Marc

Leave a Comment