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:// | ||