A.1 Tips und Beginn der Installation
a.) Möglicherweise wirst Du jetzt gleich lachen, aber in 2 Jahren wirst Du diesen Tip lieben: Notiere jeden Schritt in einer (plain-text-)Datei. Ich habe das für jede Linux Installation getan und kann deshalb alles von dort hierher kopieren. Führe diese Datei weiter, wenn Du wichtige Änderungen vornimmst. Beispielsweise hatten wir vor kurzem einen Umstieg von consolekit auf elogind; ebenso von evdev auf libinput. Ist alles in dieser Datei !
b.) Arbeite mit Spickzettel ("cheat sheet") - als Datei natürlich
https://wiki.gentoo.org/wiki/Gentoo_Cheat_Sheet
c.) Wenn Du Dir unsicher bist, ob Du eine 0 (=Null) oder den (großen) Buchstaben "O" verwenden sollst, dann kopiere einfach von hier raus. So kann es Dir niemals passieren, dass Du versehentlich ein fehlerhaftes
Code: Select all
COMMON_FLAGS="-march=native -O2 -pipe"
# type here a big "O" (like Optimize-Level) and not a "0 = zero"d.) In den meisten Dokumentationen von Gentoo wird ein "emerge --ask" zur Installation eines Pakets benutzt. Ich verwende stattdessen "emerge -pvD" und sehe mir erstmal an was passieren würde. Manchmal lese ich dann zuerst mit "euse -i USEFLAG" die Bedeutung eines Use-Flags durch. Zuletzt hole ich den emerge-Befehl zurück und lösche das "p". Das gleiche mache ich auch für ein globales Update mit "emerge -pvuND @world".
e.) Lass Dir Zeit ! Versuche nicht so schnell wie möglich alles zu installieren. Plane ein paar Tage für die Installation ein. Gerade bei der Kernel Konfiguration ist die Lernkurve erheblich, wenn Du meinen Rat, die Hilfe zu lesen, befolgst. Ich habe die Abhängigkeiten der Kernel Module nicht explizit in A.2 beschrieben, da Du diese selbst erkennen wirst, wenn Du mindestens 20 bis 30 Hilfeseiten durchliest. Du wirst dann auch selbst erkennen was der Unterschied zwischen [*] und -*- ist ...
Wundere Dich nicht wenn ich zuerst den Grub installiere, obwohl dieser später nur noch als Backup benutzt wird. Er ist jedoch sehr nützlich, solange wir an der Kernel-Konfiguration basteln. Außerdem möchte ich möglichst konform zum AMD64 Handbuch bleiben, auch wenn wir das eine oder andere nicht wirklich benötigen.
Ich habe alle Schritte äquivalent zum AMD64 Handbuch aufgeteilt, so dass jede Seite des Handbuchs als Link hier aufgeführt ist. Wir beginnen ganz am Anfang:
1. https://wiki.gentoo.org/wiki/Handbook:A ... tion/About
2. https://wiki.gentoo.org/wiki/Handbook:A ... tion/Media
Ich werde ab jetzt hauptsächlich aus meiner "install_hal.txt" zitieren
Code: Select all
GENTOO Installation for HAL
===========================
History:
--------
2020-03-07 Initial Installation
2020-03-[...]
Partitions:
-----------
-to fill -
2020-03-07 Initial Installation:
--------------------------------
- start BIOS (with F2) and set date and time to UTC
- check if UEFI boot is enabled; CSM Mode must be disabled
- secure boot must be disabled
- insert amd64-minimal CD (burned with k3b before)
- save and quit
- be fast with input "12" for german keyboard or you do another rebootCode: Select all
# dd if=/pfad/zu/install-amd64-minimal-*.iso of=/dev/sdX; syncDie Überprüfung ob es auch wirklich ein UEFI-boot war ist sehr wichtig, denn falls nicht wirst Du später einen Abbruch bei der Installation des GRUB2 haben. Voraussetzung für UEFI-boot sind zwei Dinge:
1. Die richtigen Einstellungen im BIOS - bei manchen Mainboards wird der CSM Mode auch als Legacy bezeichnet; dann musst Du diesen disablen - UND
2. die Boot-CD muss es auch unterstützen; was natürlich nicht nur unsere Minimal-CD macht, sondern z.B. auch die Rescue-CD.
Siehe auch (in dem dt. WikiPedia-Eintrag für UEFI ist es nicht so exakt dargestellt; deswegen die englische):
https://en.wikipedia.org/wiki/Unified_E ... FI_booting
https://en.wikipedia.org/wiki/Unified_E ... SM_booting
Code: Select all
# clear
! check if /sys/firmware/efi exists -> yes -> ok, it was really an uefi boot
# ls /sys/firmware
# ifconfig -a
-> ok -> 192.168.2.101 (ip adress from router)
-> notice name of ethernet interface for later
# ping -c 3 www.gentoo.org
-> okIch nutze den parted weil in der alten Version des AMD64-Handbuchs dieser auch benutzt wurde. Durch die Umstellung auf fdisk siehst/hast Du jetzt sogar zwei Möglichkeiten zu partitionieren; der parted ist aber sehr praktisch um gleich mal die Übersicht Deiner Partitionen auszugeben. Wenn Du fertig bist kannst Du einfach "parted /dev/sda p" - oder noch einfacher: "parted -l" (kleines L wie "list"; gleich für alle Platten) - eingeben und den Output in Deine "install-xxx.txt" kopieren
Ich habe 4 Partitionen angelegt. Die größte (4.te) wird später entweder eine eigene Partition für das /home-Verzeichnis, oder eine komplett verschlüsselte root-Partition. Vorerst wird sie aber nicht genutzt und wir installieren alles in die 3. Ich werde später nur noch "sdXY" verwenden, damit nicht versehentlich eine falsche Partition benutzt wird. Folgendes ist daher nur jetzt noch mit den tatsächlich durchgeführten Partitionen zu sehen (notiere Dir deshalb Deine Partitionen). Da wir UEFI nutzen, muss die ESP-/boot-Partition mit FAT32 formatiert werden ! Siehe auch https://wiki.gentoo.org/wiki/EFI_System_Partition
Edit 2023-09-13: Lies bitte jetzt gleich den 6. Post in diesem Thread !
Falls Du eine Frage zur Größe der swap-Partition hast, lies bitte den nächsten Post in diesem Thread.
Falls Du von einer NVMe booten willst, lies das Kapitel: "Identifying the device" aus: https://wiki.gentoo.org/wiki/NVMe
Code: Select all
# parted -a optimal /dev/sda
> p
! there should be no partition
! if any delete with "rm X"
> mklabel gpt
> unit mib
> mkpart primary 1 256
> name 1 boot
> set 1 boot on
> mkpart primary 256 4096
> name 2 swap
> mkpart primary 4096 53248
> name 3 root
> mkpart primary 53248 -1
> q
# mkfs.fat -F 32 /dev/sda1
# mkswap /dev/sda2
# swapon /dev/sda2
# mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/sda3
! wait until finished !!
! I have a SSD, therefore -> (skip this with a hdd)
# tune2fs -o discard /dev/sda3
? Check with: tune2fs -l /dev/sda3
# mount /dev/sda3 /mnt/gentooACHTUNG: Lade nicht die normale stage3-amd64, sondern die "stage3-amd64-nomultilib-openrc-2021...tar.xz" aus der Advanced Section herunter ! ... NOMULTILIB | OPENRC ! ... NICHT die Hardened stage3 ! (außerdem habe ich die Datei von meiner anderen Kiste aus, heruntergeladen und kopiere sie jetzt von dort via "scp") Der Link ist auch ein bischen versteckt; deswegen hier nochmal: https://www.gentoo.org/downloads/
Keine Sorge: Die make.conf editieren wir gleich in Schritt 6.
Code: Select all
# ntpd -q -g
# date
-> ok -> 1h before Berlin (winter time; with next step in next chapter it will be correct)
# cd /mnt/gentoo
# scp peter@192.168.2.2:/home/peter/stage3* .
! I skipped verifying and validating - you shouldnt do this
# tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-ownerWir werden nicht alles aus diesem Kapitel durchführen, da eine Umstellung der Reihenfolge notwendig ist. Dafür machen wir zusätzliche Dinge. Die "make.conf" ist bezüglich der Use-Flags nicht endgültig. Nutze bitte erstmal diese. Sie wird später noch angepasst, wenn wir zwei Profile zusammen führen.
ACHTUNG: Diese make.conf muss ggf. von Dir angepasst werden, bezüglich der CPU_FLAGS, der Grafik-Karte, der Sound-Karte und der Use-Flags die ich entfernt habe (und der Sprache natürlich, falls nicht dt.) !
Falls dies Deine erste Gentoo Installation ist und Du noch gar nicht weisst welche Werte in die Variablen "VIDEO_CARDS" und "ALSA_CARDS" eingestellt werden sollen, dann übernimm erstmal diese. In A.2 gebe ich Dir alle Links, die Du benötigst. Die korrekten Werte müssen sowieso erst (spätestens) VOR der Installation von X11 drin sein (das ist erst in A.3.7).
Den richtigen Wert für MAKEOPTS= erläutere ich im übernächsten Post.
Damit wir gleich "euse" und "eix" nutzen können, installieren wir das "gentoolkit", welches (stand:heute) nicht in der stage3 ist. Den "emerge -uvND @world" machen wir ebenfalls erst später, wenn wir /var/tmp/portage in das RAM gemountet haben.
Persönliche Anmerkung zu den USE-Flags: Vor (sehr) vielen Jahren war Gentoo ein auf Sicherheit getrimmtes, minimalistisches Linux. Man musste damals wissen welche USE-Flags enabled werden müssen um bestimmte Feautures zu erhalten. Wenn Du beispielsweise 2 Bildschirme an Deiner Grafikkarte hast brauchst Du "xcomposite". Heute ist es - leider - umgekehrt. Damit Gentoo möglichst benutzer-freundlich ist, sind viele USE-Flags standardmäßig aktiviert; heute musst Du wissen, was man deaktivieren muss, wenn man gewisse Dinge nicht benötigt. Deshalb empfehle ich Dir alle folgenden erstmal zu deaktivieren. Falls Du später doch etwas davon haben willst oder benötigst, kannst Du das ganz einfach nachholen: Entferne das jeweilige -USE-Flag und emerge mit Parameter "N" (oder gleich ein "emerge -uNDvp @world").
Edit 2021-10-04: Ja, ich schalte auch IPv6 aus. Eine kurze Begründung findest Du im 5. Post dieses Threads.
Folgende Links waren hilfreich:
https://wiki.gentoo.org/wiki/Localization/Guide
https://wiki.gentoo.org/wiki/UTF-8
https://wiki.gentoo.org/wiki/CPU_FLAGS_X86
https://wiki.gentoo.org/wiki//etc/portage/make.conf
Code: Select all
# mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
# mkdir -p /mnt/gentoo/etc/portage/repos.conf
# cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
# cp -L /etc/resolv.conf /mnt/gentoo/etc/
# mount -t proc /proc /mnt/gentoo/proc
# mount --rbind /sys /mnt/gentoo/sys
# mount --rbind /dev /mnt/gentoo/dev
# mount --bind /run /mnt/gentoo/run
# chroot /mnt/gentoo /bin/bash
# . /etc/profile
# mount /dev/sdXZ /boot
# emerge-webrsync
# eselect news list
# eselect news read all
# eselect news purge all
# eselect profile list
-> correct setting to: default/linux/amd64/23.0/no-multilib (stable) -> ok
# emerge -1 cpuid2cpuflags
# cpuid2cpuflags
! cp output into make.conf and set some important vars
# nano -w /etc/portage/make.conf
=>
COMMON_FLAGS="-march=native -O2 -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"
ACCEPT_LICENSE="* -@EULA"
PORTDIR="/var/db/repos/gentoo"
DISTDIR="/var/cache/distfiles"
PKGDIR="/var/cache/binpkgs"
PORTAGE_TEMPDIR="/var/tmp/"
GRUB_PLATFORMS="efi-64"
MAKEOPTS="-j8"
LC_MESSAGES=C
LINGUAS="de"
L10N="de"
ALSA_CARDS="hda-intel"
INPUT_DEVICES="libinput"
VIDEO_CARDS="intel"
EMERGE_DEFAULT_OPTS="--with-bdeps=y"
CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
USE="-bluetooth -ipv6 -modemmanager -networkmanager -phonon -ppp -pulseaudio -semantic-desktop -thumbnail -wext -wifi -wireless -xcomposite"
USE="$USE alsa pie threads udev usb"
# gcc 12.2.1 needs:
USE="$USE default-stack-clash-protection default-znow"
<=
? emerge --info
# echo "Europe/Berlin" > /etc/timezone
# emerge --config sys-libs/timezone-data
# date
-> ok - now correct
# nano -w /etc/locale.gen
=> de_DE.UTF-8 UTF-8
# locale-gen
# echo 'GROFF_ENCODING="utf8"' > /etc/env.d/99groff
# eselect locale list
# eselect locale set X
# env-update
# . /etc/profile
# emerge --sync
# emerge -pv gentoolkit
# emerge -pv eix
# emerge -pv pciutils
