Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
arch:install [17.12.2022 14:33. ] – [Festplatten partitionieren] 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 64: | Zeile 65: | ||
==== Festplatten partitionieren ==== | ==== 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. Folgendes Beispiel wollen wir hier als Basis verwenden: | + | 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 | ||
+ | |||
+ | |< 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 | ||
- | |< 40% 10% 5% 8% 5%>| | + | Anschliessend löschen wir die VM samt ihrem zugehörigen Image vom System. |
- | ^ Phyische Festplatte / LVM ^ Größe ^ Mount-Point | + | # virsh undefine vml000200 |
- | | / | + | < |
- | | / | + | Volume ' |
- | | / | + | |
- | | / | + | |
- | | / | + | |
- | | / | + | |
- | | /dev/ | + | |
- | | /dev/mapper/archlinux-var_log | + | |
+ | ====== Links ====== | ||
+ | * **[[start|Zurück zur " | ||
+ | * **[[wiki: | ||
+ | * **[[https:// | ||