Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
arch:install [17.12.2022 13:26. ] – angelegt django | arch:install [24.05.2024 14:25. ] (aktuell) – [Bootloader konfigurieren und einrichten] django | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Arch Linux - (manuelle) Minimalinstallation ====== | ====== Arch Linux - (manuelle) Minimalinstallation ====== | ||
{{: | {{: | ||
- | In der künftigen Ausprägung unserer Infrastruktur werden wir natürlich mit Hilfe von **[[linux: | + | |
+ | In der künftigen Ausprägung unserer Infrastruktur werden wir natürlich mit Hilfe von **[[linux: | ||
Wir werden also zunächst eine 0815-Installation, | Wir werden also zunächst eine 0815-Installation, | ||
===== Vorbereitungen / Überlegungen ===== | ===== Vorbereitungen / Überlegungen ===== | ||
- | Die grundsätzliche Herangehensweise bei der Minimalinstallation ist im folgenden **[[https:// | + | Die grundsätzliche Herangehensweise bei der Minimalinstallation ist im folgenden **[[https:// |
==== Download ==== | ==== Download ==== | ||
Von der **[[https:// | Von der **[[https:// | ||
Zeile 36: | Zeile 37: | ||
* CPU: **'' | * CPU: **'' | ||
* Disk: **'' | * Disk: **'' | ||
+ | * **''/ | ||
+ | * **''/ | ||
+ | * **''/ | ||
+ | * **''/ | ||
+ | * **''/ | ||
+ | * **''/ | ||
+ | * **''/ | ||
* Boot-Image: **'' | * Boot-Image: **'' | ||
* Netzwerk: **'' | * Netzwerk: **'' | ||
Zeile 49: | Zeile 57: | ||
{{ : | {{ : | ||
+ | ===== Erstkonfiguration ===== | ||
+ | wir sind bereits als Benutzter **'' | ||
+ | |||
+ | ==== Tastaturlayout ==== | ||
+ | Nach dem initialen Start des Default-ISO-Images wird standardmässig ein US/ | ||
+ | root@archiso ~ # loadkeys de-latin1-nodeadkeys | ||
+ | |||
+ | ==== Festplatten partitionieren ==== | ||
+ | Bevor wir nun mit der eigentlichen Installation und Konfiguration unserer Minimalinstallation fortfahren können, müssen wir den Diskspace unseren Anforderungen gemäss erst einmal aufteilen. | ||
+ | Aktuell ist unsere virtuelle Festplatte noch unberührt, was auch folgender Aufruf zeigt. | ||
+ | root@archiso ~ # fdisk -l | grep -i 'Disk / | ||
+ | |||
+ | Disk /dev/vda: 30 GiB, 32212254720 bytes, 62914560 sectors | ||
+ | |||
+ | Folgendes Beispiel wollen wir für die Partitionierung und Belegung als Basis verwenden: | ||
+ | |||
+ | |< 35% 15% 5% 2% 8% 5%>| | ||
+ | ^ Phyische Festplatte / LVM ^ Größe ^ ^ Mount-Point | ||
+ | | / | ||
+ | | / | ||
+ | | / | ||
+ | | / | ||
+ | | / | ||
+ | | / | ||
+ | | / | ||
+ | | / | ||
+ | |||
+ | Zum Partitionieren verwenden wir den Befehl **'' | ||
+ | root@archiso ~ # fdisk /dev/vda | ||
+ | < | ||
+ | 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 0x6469dd09. | ||
+ | |||
+ | Command (m for help):</ | ||
+ | |||
+ | Hier legen wir nun unsere erste Partition mit dem Kommando **'' | ||
+ | < | ||
+ | | ||
+ | | ||
+ | Select (default p): p | ||
+ | Partition number (1-4, default 1): 1 | ||
+ | First sector (2048-62914559, | ||
+ | Last sector, +/-sectors or +/ | ||
+ | |||
+ | Created a new partition 1 of type ' | ||
+ | |||
+ | Command (m for help):</ | ||
+ | |||
+ | Für unser **LVM** legen wir auch gleich sofort die zweite Partition wiederum mit dem Kommando **'' | ||
+ | | ||
+ | < | ||
+ | | ||
+ | | ||
+ | Select (default p): | ||
+ | |||
+ | Using default response p. | ||
+ | Partition number (2-4, default 2): | ||
+ | First sector (3073-62914559, | ||
+ | Last sector, +/-sectors or +/ | ||
+ | |||
+ | Created a new partition 2 of type ' | ||
+ | |||
+ | Command (m for help):</ | ||
+ | |||
+ | Da wir bei der zweiten Partition aber später ein LVM anlegen werden, müssen wir den Default-Typ der zweiten Partition entsprechend abändern auf **'' | ||
+ | | ||
+ | < | ||
+ | Hex code or alias (type L to list all): 8e | ||
+ | |||
+ | Changed type of partition ' | ||
+ | |||
+ | Command (m for help):</ | ||
+ | |||
+ | Bevor wir nun unsere Änderungen auf Platte persistieren, | ||
+ | | ||
+ | < | ||
+ | Units: sectors of 1 * 512 = 512 bytes | ||
+ | Sector size (logical/ | ||
+ | I/O size (minimum/ | ||
+ | Disklabel type: dos | ||
+ | Disk identifier: 0x6469dd09 | ||
+ | |||
+ | Device | ||
+ | / | ||
+ | / | ||
+ | |||
+ | Wir speichern und verlassen nun das Programm **'' | ||
+ | Command (m for help): w | ||
+ | < | ||
+ | Calling ioctl() to re-read partition table. | ||
+ | Syncing disks.</ | ||
+ | |||
+ | ==== Logical Volume LVM anlegen ==== | ||
+ | Gemäss unserer Überlegung (siehe obige Tabelle mit den Partitionierungen) wollen wir nun auf dem Device **''/ | ||
+ | |||
+ | === Physisches Volume anlegen === | ||
+ | Zunächst legen wir das benötigte physisches **// | ||
+ | root@archiso ~ # pvcreate /dev/vda2 | ||
+ | < | ||
+ | |||
+ | === Volume Gruppe anlegen === | ||
+ | Als nächstes definieren wir eine **//volume groups//** mit dem Namen **'' | ||
+ | root@archiso ~ # vgcreate archlinux /dev/vda2 | ||
+ | < | ||
+ | |||
+ | === Logische Volumes anlegen === | ||
+ | Nun fehlen nur noch die **//logical volumes//** die wir nun noch einzeln hinzufügen. | ||
+ | root@archiso ~ # lvcreate --name swap -L2048M archlinux | ||
+ | < | ||
+ | |||
+ | root@archiso ~ # lvcreate --name root -L10240M archlinux | ||
+ | < | ||
+ | |||
+ | root@archiso ~ # lvcreate --name home -L10240M archlinux | ||
+ | < | ||
+ | |||
+ | root@archiso ~ # lvcreate --name var -L3072M archlinux | ||
+ | < | ||
+ | |||
+ | root@archiso ~ # lvcreate --name var_log -L3072M archlinux | ||
+ | < | ||
+ | |||
+ | Wir haben also nunmehr unsere virtuelle Festplatte wie folgt aufgeteilt: | ||
+ | root@archiso ~ # lsblk /dev/vda | ||
+ | < | ||
+ | vda | ||
+ | ├─vda1 | ||
+ | └─vda2 | ||
+ | ├─archlinux-swap | ||
+ | ├─archlinux-root | ||
+ | ├─archlinux-home | ||
+ | ├─archlinux-var | ||
+ | └─archlinux-var_log 252:4 0 | ||
+ | |||
+ | ==== Dateisysteme formatieren ==== | ||
+ | Bevor wir unseren neuen virtuellen Host mit Leben befüllen, müssen wir natürlich noch die Dateusysteme, | ||
+ | root@archiso ~ # mkfs.ext4 /dev/vda1 | ||
+ | < | ||
+ | |||
+ | Filesystem too small for a journal | ||
+ | Creating filesystem with 512 1k blocks and 64 inodes | ||
+ | |||
+ | Allocating group tables: done | ||
+ | Writing inode tables: done | ||
+ | Writing superblocks and filesystem accounting information: | ||
+ | |||
+ | root@archiso ~ # mkswap / | ||
+ | < | ||
+ | no label, UUID=d2e654c4-c2d5-4f61-aec1-cb0e48ebb6b3</ | ||
+ | |||
+ | root@archiso ~ # mkfs.ext4 / | ||
+ | < | ||
+ | Creating filesystem with 2621440 4k blocks and 655360 inodes | ||
+ | Filesystem UUID: 570c15a5-e96e-45e1-925d-ace2e3d3e6c7 | ||
+ | Superblock backups stored on blocks: | ||
+ | 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 | ||
+ | |||
+ | Allocating group tables: done | ||
+ | Writing inode tables: done | ||
+ | Creating journal (16384 blocks): done | ||
+ | Writing superblocks and filesystem accounting information: | ||
+ | |||
+ | root@archiso ~ # mkfs.ext4 / | ||
+ | < | ||
+ | Creating filesystem with 2621440 4k blocks and 655360 inodes | ||
+ | Filesystem UUID: 25c16c5b-7389-47be-85e5-06e93e301879 | ||
+ | Superblock backups stored on blocks: | ||
+ | 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 | ||
+ | |||
+ | Allocating group tables: done | ||
+ | Writing inode tables: done | ||
+ | Creating journal (16384 blocks): done | ||
+ | Writing superblocks and filesystem accounting information: | ||
+ | |||
+ | root@archiso ~ # mkfs.ext4 / | ||
+ | < | ||
+ | Creating filesystem with 786432 4k blocks and 196608 inodes | ||
+ | Filesystem UUID: e8e25e17-b8e2-471f-b582-7fc1a43439d0 | ||
+ | Superblock backups stored on blocks: | ||
+ | 32768, 98304, 163840, 229376, 294912 | ||
+ | |||
+ | Allocating group tables: done | ||
+ | Writing inode tables: done | ||
+ | Creating journal (16384 blocks): done | ||
+ | Writing superblocks and filesystem accounting information: | ||
+ | |||
+ | root@archiso ~ # mkfs.ext4 / | ||
+ | < | ||
+ | Creating filesystem with 786432 4k blocks and 196608 inodes | ||
+ | Filesystem UUID: c1ffbcd2-ba87-4f36-9345-39fe135007e3 | ||
+ | Superblock backups stored on blocks: | ||
+ | 32768, 98304, 163840, 229376, 294912 | ||
+ | |||
+ | Allocating group tables: done | ||
+ | Writing inode tables: done | ||
+ | Creating journal (16384 blocks): done | ||
+ | Writing superblocks and filesystem accounting information: | ||
+ | |||
+ | ==== Partitionen einhängen ==== | ||
+ | Nun ist es an der Zeit, dass wir unsere Dateisysteme an Ort und Stelle einbinden - sprich mounten: | ||
+ | Zunächst mounten wir unsere root-Partition **''/ | ||
+ | root@archiso ~ # mount / | ||
+ | |||
+ | Bevor wir die zugehörigen Partitionen einhängen können, müssen wir die entsprechenden Mountpoints für **''/ | ||
+ | root@archiso ~ # mkdir / | ||
+ | |||
+ | Nun können wir mit dem Mounten unserer Partitionen fortfahren. Als erstes mounten wir **''/ | ||
+ | root@archiso ~ # mount /dev/vda1 /mnt/boot | ||
+ | |||
+ | Als nächstes aktivieren wir unsere **'' | ||
+ | root@archiso ~ # swapon / | ||
+ | |||
+ | Anschliessend folgen die restlichen Mount-Points aus dem LVM: | ||
+ | root@archiso ~ # mount / | ||
+ | |||
+ | root@archiso ~ # mount / | ||
+ | |||
+ | Bevor wir nun noch die letzte Partition für das Verzeichnis **''/ | ||
+ | root@archiso ~ # mkdir / | ||
+ | |||
+ | Zu guter Letzt können wir nun auch noch den letzte Mount-Point für **''/ | ||
+ | root@archiso ~ # mount / | ||
+ | |||
+ | Somit haben wir nun folgenden Endstand in Sachen Partitionierung und Dateisysteme. | ||
+ | root@archiso ~ # lsblk /dev/vda | ||
+ | < | ||
+ | vda | ||
+ | ├─vda1 | ||
+ | └─vda2 | ||
+ | ├─archlinux-swap | ||
+ | ├─archlinux-root | ||
+ | ├─archlinux-home | ||
+ | ├─archlinux-var | ||
+ | └─archlinux-var_log 252:4 0 | ||
+ | |||
+ | ==== Basissystem einrichten ==== | ||
+ | Mit Hilfe von **'' | ||
+ | root@archiso ~ # pacstrap /mnt base base-devel dnsutils linux-lts linux-firmware lvm2 man-db man-pages openssh python sshpass tree vi vim | ||
+ | |||
+ | ==== System einrichten ==== | ||
+ | === fstab generieren === | ||
+ | Im nächsten Schritt erzeugen wir die Konfigurationsdatei **''/ | ||
+ | | ||
+ | |||
+ | === arch-chroot /mnt === | ||
+ | Wie in der **[[https:// | ||
+ | root@archiso ~ # arch-chroot /mnt/ | ||
+ | |||
+ | [root@archiso /]# | ||
+ | |||
+ | Wie sehen hier durch den geänderten Boot-Prompt, | ||
+ | |||
+ | === Hostname ändern === | ||
+ | Zunächst setzen wir den Hostnamen für unsere Muster-/ | ||
+ | [root@archiso /]# echo archlinux > / | ||
+ | |||
+ | === Spracheinstellungen setzen === | ||
+ | Unser System soll mit der Systemsprache **English-US** und UTF-8 ausgestattet werden. Dies erreichen wir mit folgendem Befehl: | ||
+ | [root@archiso /]# echo LANG=en_US.UTF-8 > / | ||
+ | |||
+ | Anschließend kommentieren wir in der Datei **''/ | ||
+ | [root@archiso /]# vim / | ||
+ | |||
+ | Unsere Änderungen können wir bei Bedarf auch nochmals kontrollieren bevor wir diese aktivieren. | ||
+ | [root@archiso /]# grep -Ev ' | ||
+ | < | ||
+ | en_US ISO-8859-1</ | ||
+ | |||
+ | Unsere Änderungen aktivieren wir nun noch im System. | ||
+ | [root@archiso /]# locale-gen | ||
+ | < | ||
+ | en_US.UTF-8... done | ||
+ | en_US.ISO-8859-1... done | ||
+ | Generation complete.</ | ||
+ | |||
+ | === mkinitcpio konfigurieren === | ||
+ | **[[https:// | ||
+ | [root@archiso /]# vim / | ||
+ | <file bash / | ||
+ | |||
+ | ## NOTE: If you have /usr on a separate partition, you MUST include the | ||
+ | # usr and fsck hooks. | ||
+ | HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block lvm2 filesystems fsck) | ||
+ | |||
+ | ... | ||
+ | </ | ||
+ | |||
+ | === Kernel-Image erzeugen === | ||
+ | Nun erzeugen wir das initiale Ramdisk Environment indem wir die **'' | ||
+ | [root@archiso /]# mkinitcpio -p linux-lts | ||
+ | |||
+ | === Root-Passwort setzen === | ||
+ | Unser System-User **'' | ||
+ | [root@archiso /]# passwd | ||
+ | < | ||
+ | Retype new password: | ||
+ | passwd: password updated successfully</ | ||
+ | |||
+ | === Keyboardlayout setzen === | ||
+ | Das deutsche Tastaturlayout **'' | ||
+ | [root@archiso /]# echo KEYMAP=de-latin1-nodeadkeys > / | ||
+ | |||
+ | Ebenso definieren wir noch die Schriftart der shell / console fest: | ||
+ | [root@archiso /]# echo FONT=lat9w-16 >> / | ||
+ | |||
+ | ==== Bootloader konfigurieren und einrichten ==== | ||
+ | Zum Starten unserer Muster-Test-VM wollen wir auf den „Bootloader“ **[[https:// | ||
+ | [root@archiso /]# pacman -S --noconfirm grub | ||
+ | |||
+ | Da wir per BIOS booten wollen, ist es nötig dass GRUB in den **MBR**((**M**aster **B**oot **R**ecord)) geschrieben wird, dies erreichen wir mit folgendem Befehl. | ||
+ | [root@archiso /]# grub-install /dev/vda | ||
+ | |||
+ | Da wir beim Hoch- und Runterfahren des Servers sehen wollen was im Detail passiert oder eben nicht passen wir die //**GRUB Boot Loader Konfiguration**// | ||
+ | [root@archiso /]# vim / | ||
+ | <file bash / | ||
+ | |||
+ | # GRUB boot loader configuration | ||
+ | |||
+ | GRUB_DEFAULT=0 | ||
+ | GRUB_TIMEOUT=5 | ||
+ | GRUB_DISTRIBUTOR=" | ||
+ | GRUB_CMDLINE_LINUX_DEFAULT=" | ||
+ | GRUB_CMDLINE_LINUX="" | ||
+ | |||
+ | # Preload both GPT and MBR modules so that they are not missed | ||
+ | GRUB_PRELOAD_MODULES=" | ||
+ | |||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Zu guter Letzt müssen wir noch die GRUB-Konfiguration generieren: | ||
+ | [root@archiso /]# grub-mkconfig -o / | ||
+ | |||
+ | ==== chroot verlassen ==== | ||
+ | Am Ende unserer manuellen Konfiguration können wir nun die Chailroot-Umgebung mit dem Befehl **'' | ||
+ | [root@archiso /]# exit | ||
+ | < | ||
+ | arch-chroot /mnt/ 19.29s user 11.98s system 0% cpu 1:01:43.33 total</ | ||
+ | |||
+ | ==== Reboot ==== | ||
+ | Nun ist es an der Zeit unsere Muster-Test-VM neu zu starten. | ||
+ | root@archiso ~ # reboot | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | nach kurzer Zeit steht unsere Muster-Test-VM bereit. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ===== Zwischenergebnis ===== | ||
+ | <WRAP center round important 80%> | ||
+ | **Wichtig**: | ||
+ | |||
+ | Wir werden natürlich nicht jedes mal beim Bau einer virtuellen Maschine diese per Hand auf Basis dieser Musterlösung aus dem WIKI via **//cut ' | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Muster-Test-VM zurückbauen ===== | ||
+ | Nach getaner Arbeit benötigen wir zur gegebenen Zeit unsere Test-Maschine nicht mehr. Wir können diese daher wie gewohnt herunterfahren ... | ||
+ | # virsh shutdown vml000200 | ||
+ | |||
+ | ... oder natürlich auch auf die "harte Tour": | ||
+ | # virsh destroy vml000200 | ||
+ | |||
+ | Anschliessend löschen wir die VM samt ihrem zugehörigen Image vom System. | ||
+ | # virsh undefine vml000200 --remove-all-storage | ||
+ | < | ||
+ | Volume ' | ||
+ | ====== Links ====== | ||
+ | * **[[start|Zurück zur " | ||
+ | * **[[wiki: | ||
+ | * **[[https:// | ||