Nächste: , Vorige: , Nach oben: Systemkonfiguration   [Inhalt][Index]


3.9 Guix auf einem Kimsufi-Server nutzen

Um Guix auf einem von Kimsufi gemieteten Server einzusetzen, klicken Sie auf den Karteireiter zu Netboot und wählen Sie dann rescue64-pro aus und starten Sie neu.

OVH wird Ihnen eine E-Mail mit den Anmeldedaten schicken, damit Sie sich über SSH auf ein Debian-System verbinden können.

Folgen Sie nun den Anweisungen zur Installation von Guix aus einer Binärdatei (siehe Aus Binärdatei installieren in Referenzhandbuch zu GNU Guix):

wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
chmod +x guix-install.sh
./guix-install.sh
guix pull

Partitionieren Sie nun die Laufwerke und formatieren Sie sie, aber erst nachdem Sie das RAID-Array angehalten haben:

mdadm --stop /dev/md127
mdadm --zero-superblock /dev/sda2 /dev/sdb2

Löschen Sie die Laufwerksinhalte und richten Sie die Partitionen ein; wir erzeugen ein RAID-1-Array.

wipefs -a /dev/sda
wipefs -a /dev/sdb

parted /dev/sda --align=opt -s -m -- mklabel gpt
parted /dev/sda --align=opt -s -m -- \
 mkpart bios_grub 1049kb 512MiB \
 set 1 bios_grub on
parted /dev/sda --align=opt -s -m -- \
 mkpart primary 512MiB -512MiB
 set 2 raid on
parted /dev/sda --align=opt -s -m -- mkpart primary linux-swap 512MiB 100%

parted /dev/sdb --align=opt -s -m -- mklabel gpt
parted /dev/sdb --align=opt -s -m -- \
     mkpart bios_grub 1049kb 512MiB \
     set 1 bios_grub on
parted /dev/sdb --align=opt -s -m -- \
     mkpart primary 512MiB -512MiB \
     set 2 raid on
parted /dev/sdb --align=opt -s -m -- mkpart primary linux-swap 512MiB 100%

Legen Sie das Array an:

mdadm --create /dev/md127 --level=1 --raid-disks=2 \
  --metadata=0.90 /dev/sda2 /dev/sdb2

Legen Sie nun Dateisysteme auf diesen Partitionen an, angefangen mit der Boot-Partition:

mkfs.ext4  /dev/sda1
mkfs.ext4  /dev/sdb1

Dann die Wurzelpartition:

mkfs.ext4 /dev/md127

Initialisieren Sie die Swap-Partitionen:

mkswap /dev/sda3
swapon /dev/sda3
mkswap /dev/sdb3
swapon /dev/sdb3

Binden Sie das Guix-Laufwerk ein:

mkdir /mnt/guix
mount /dev/md127 /mnt/guix

Der nächste Schritt ist, in eine Datei os.scm eine Betriebssystemdeklaration zu schreiben, zum Beispiel:

(use-modules (gnu) (guix))
(use-service-modules networking ssh vpn virtualization sysctl admin mcron)
(use-package-modules ssh tls tmux vpn virtualization)

(operating-system
  (host-name "kimsufi")

  (bootloader (bootloader-configuration
	       (bootloader grub-bootloader)
	       (targets (list "/dev/sda" "/dev/sdb"))
	       (terminal-outputs '(console))))

  ;; Wir brauchen ein Kernel-Modul für RAID-1 (d.h. "spiegeln").
  (initrd-modules (cons* "raid1"  %base-initrd-modules))

  (mapped-devices
   (list (mapped-device
          (source (list "/dev/sda2" "/dev/sdb2"))
          (target "/dev/md127")
          (type raid-device-mapping))))

  (swap-devices
   (list (swap-space
          (target "/dev/sda3"))
         (swap-space
          (target "/dev/sdb3"))))

  (issue
   ;; Voreingestellte Botschaft für /etc/issue.
   "\
Hier ist das GNU-System bei Kimsufi.  Willkommen.\n")

  (file-systems (cons* (file-system
		         (mount-point "/")
		         (device "/dev/md127")
		         (type "ext4")
		         (dependencies mapped-devices))
		       %base-file-systems))

  (users (cons (user-account
	        (name "guix")
	        (comment "guix")
	        (group "users")
	        (supplementary-groups '("wheel"))
	        (home-directory "/home/guix"))
	       %base-user-accounts))

  (sudoers-file
   (plain-file "sudoers" "\
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
guix ALL=(ALL) NOPASSWD:ALL\n"))

  ;; Globally-installed packages.
  (packages (cons* tmux gnutls wireguard-tools %base-packages))
  (services
   (cons*
    (service static-networking-service-type
	     (list (static-networking
		    (addresses (list (network-address
				      (device "enp3s0")
				      (value "server-ip-address/24"))))
		    (routes (list (network-route
				   (destination "default")
				   (gateway "server-gateway"))))
		    (name-servers '("213.186.33.99")))))

    (service unattended-upgrade-service-type)

    (service openssh-service-type
	     (openssh-configuration
	      (openssh openssh-sans-x)
	      (permit-root-login #f)
	      (authorized-keys
	       `(("guix" ,(plain-file "SSH-Name-des-Schlüssels.pub"
                                      "SSH-Inhalt-öffentl-Schlüssel"))))))
    (modify-services %base-services
      (sysctl-service-type
       config =>
       (sysctl-configuration
	(settings (append '(("net.ipv6.conf.all.autoconf" . "0")
			    ("net.ipv6.conf.all.accept_ra" . "0"))
			  %default-sysctl-settings))))))))

Vergessen Sie nicht, anstelle der Variablen Server-IP-Adresse, Server-Netzwerkzugang, SSH-Name-des-Schlüssels und SSH-Inhalt-öffentl-Schlüssel die für Sie zutreffenden Werte zu schreiben.

Der Netzwerkzugang (Gateway) ist die letzte nutzbare IP in Ihrem Block. Wenn Sie z.B. einen Server mit IP ‘37.187.79.10’ haben, dann ist sein Gateway ‘37.187.79.254’.

Übertragen Sie Ihre Datei mit Betriebssystemdeklaration os.scm auf den Server mittels des Befehls scp oder sftp.

Bleibt nur noch, Guix mit guix system init zu installieren und neu zu starten.

Aber das klappt nur, wenn wir vorher ein Chroot aufsetzen, weil die Wurzelpartition des laufenden Rettungssystems („rescue“) auf einer aufs-Partition eingebunden ist und, wenn Sie es versuchen, die Installation von Guix beim GRUB-Schritt fehlschlägt mit der Meldung, der kanonische Pfad von „aufs“ sei nicht ermittelbar.

Installieren Sie die Pakete, die im Chroot benutzt werden:

guix install bash-static parted util-linux-with-udev coreutils guix

Dann legt folgender Befehl die Verzeichnisse für das Chroot an:

cd /mnt && \
mkdir -p bin etc gnu/store root/.guix-profile/ root/.config/guix/current \
  var/guix proc sys dev

Kopieren Sie die resolv.conf des Wirtssystems in die Chroot:

cp /etc/resolv.conf etc/

Binden Sie die blockorientierten Speichermedien, den Store, seine Datenbank sowie die aktuelle Guix-Konfiguration ein:

mount --rbind /proc /mnt/proc
mount --rbind /sys /mnt/sys
mount --rbind /dev /mnt/dev
mount --rbind /var/guix/ var/guix/
mount --rbind /gnu/store gnu/store/
mount --rbind /root/.config/ root/.config/
mount --rbind /root/.guix-profile/bin/ bin
mount --rbind /root/.guix-profile root/.guix-profile/

Betreten Sie ein Chroot in /mnt und installieren Sie das System:

chroot /mnt/ /bin/bash

guix system init /root/os.scm /guix

Schlussendlich können Sie in der Web-Oberfläche von ‘netboot’ auf ‘boot to disk’ wechseln und neu starten (auch das tun Sie über die Web-Oberfläche).

Nach ein paar Minuten Wartezeit können Sie versuchen, Ihren Server mit SSH zu betreten: ssh guix@Server-IP-Adresse -i Pfad-zu-Ihrem-SSH-Schlüssel

Sie sollten nun ein nutzbares Guix-System auf Kimsufi am Laufen haben; wir gratulieren!


Nächste: Bind-Mounts anlegen, Vorige: Guix auf einem Linode-Server nutzen, Nach oben: Systemkonfiguration   [Inhalt][Index]