|
|
| (184 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| Nur für eigene Zwecke
| | {{SEITENTITEL:Benutzer:Tuxnix}}{{righttoc}} |
|
| |
|
| =Kopie aus AfE nach dem ersten Boot= | | Überarbeitung von Systemd/Timers |
| | = Entwurf = |
|
| |
|
| | {{righttoc}} |
| | Timer bieten die Möglichkeit Aufgaben zeitlich zu steuern. Die Timer-Unit besteht aus einer {{ic|.timer}} Datei die eine {{ic|.service}} Datei ansteuert. Timer unterstehen [[systemd]] und müssen mit dem systemctl Befehl aktiviert werden. Eine Alternative hierzu bietet [[cron]]. |
|
| |
|
| Notizen:
| | == Beispiel == |
| Eine Optimierung der Liste der Spiegelserver kann mittels {{ic|reflector}} erfolgen.
| | {{hc|1=beispiel.timer|2= |
| | [Unit] |
| | Description=Kurz-Beschreibung |
|
| |
|
| | [Timer] |
| | OnBootSec=1h 30m |
|
| |
|
| ====Achtung bei Systemupdates mit neuem Kernel==== | | [Install] |
| Falls der Kernel ein größeres Update erfährt, werden Module, wie zum Beispiel ''' nvidia''' und '''madwifi''' (wird später installiert, falls nötig), unbenutzbar, da die neuen, aktualisierten Paketversionen solcher Module gegen den neueren Kernel gebaut wurden, aber das System derzeit einen älteren verwendet. Ein Neustart wird nötig sein.
| | WantedBy=basic.target}} |
|
| |
|
| Ebenso könnte nach einer langen Pause ohne Aktualisierung bzw. bei der Aktualisierung eines frischen Systems der Fall eintreten, dass gleichzeitig mit dem neuen Kernel andere Programmpakete oder neue Versionen von bereits vorhandenen mitinstalliert werden, die wichtige Neuerungen beinhalten, auf die der neue Kernel angewiesen ist. Dann ist es wahrscheinlich, dass der Kernel zwar aktualisiert wird, aber ''mkinitcpio'' Fehler beim Durchlaufen der Hooks meldet (wie etwa fehlende Udev-Regeln beim Hook "filesystems"). Das würde dazu führen, dass das System dann nicht mehr startet und etwa von einem anderen Linux-System oder der Live-CD repariert werden muss! Um dergleichen zu vermeiden, genügt es nach so einem Update i.d.R., das Initramfs noch einmal neu zu generieren, und zwar folgendermaßen:
| | {{hc|1=beispiel.service|2= |
| mkinitcpio -p linux
| | [Unit] |
| | Description=Kurz-Beschreibung |
|
| |
|
| =Kopie aus AfE:= | | [Service] |
| | ExecStart=/usr/bin/beispiel.sh}} |
|
| |
|
| ===Installation eines Bootloaders===
| | Service- und Timerdateien werden für |
| | * systemweite Dienste im Ordner {{ic|/etc/systemd/system/}} |
| | * userbezoge Dienste unter {{ic|~/.config/systemd/user/}} gespeichert. |
|
| |
|
| * Als Bootmanager für BIOS-Boot-Systeme stehen [[Grub]] und [[syslinux]] zur Verfügung.
| | Timer und Service müssen dabei den gleichen Namen tragen. Z.B.: |
| * Für UEFI-BOOT-Syteme kann als Bootloader [[systemd-boot]] oder [[EFISTUB]] oder [[Grub]] oder [[rEFInd]] eingesetzt werden.<br>
| | ({{ic|'''beispiel'''.timer}} und {{ic|'''beispiel'''.service}}). |
|
| |
|
| ====Installation des GRUB Bootloaders==== | | == De- / Aktivierung == |
| Für Benutzer von intel-ucode bitte folgende Seite zusätzlich beachten: [[Microcode]].<br>
| | Mit {{ic|systemctl enable --now}} startet der Timer unverzüglich und permanent, sodass er auch nach einem Neustart aktiv ist. Ohne {{ic|--now}} werden {{ic|enable}} oder auch {{ic|disable}} erst nach einem reboot wirksam. Ein {{ic|start}} bzw. {{ic|stop}} wirken sich hingegen nur auf die laufende Sitzung aus. Bei der ersten Initialisierung legt das System automatisch einen passenden [[ln|Symlink]] an. |
| Falls bei einen BIOS-Boot-System von einem Datenträger mit GPT-Partitionstabelle gebootet werden soll, benötigt Grub eine zusätzliche Partition von der Größe von 1MiB und dem Partitionstyp ef02. Siehe [[GRUB#Fehlermeldung_von_GRUB | Grub]].<br><br>
| |
| Installation des Pakets:
| |
| pacman -S grub
| |
| Booten per '''BIOS'''
| |
| grub-install /dev/sda
| |
| Booten per '''UEFI'''
| |
|
| |
|
| Installation des EFI Bootmanagers (sonst kommt die Fehlermeldung: efibootmgr: not found):
| | Timer für systemweite Dienste werden mit Rootrechten aktiviert: |
| pacman -S efibootmgr | | # systemctl enable --now <name>.timer |
| grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=<Boot-Name>
| |
| Alternativ kann man
| |
| grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=<Boot-Name> --recheck --debug
| |
| verwenden, um zusätzliche Informationen zu bekommen, falls es zu einem Fehler kommt. <br>
| |
| Wenn man einen etwas längeren Namen mit Leerzeichen für Grub geben möchte, muss man einfach 2 Anführungszeichen anbringen:
| |
| --bootloader-id="Ein sehr langer Name für den Grub Bootloader, der auch so im UEFI angezeigt wird :D"
| |
|
| |
|
| Weitere '''Konfiguration''' nach BIOS oder UEFI grub-install:
| | Timer im Userbereich werden mit der Option {{ic|--user}} und mit Userrechten aktiviert: |
| | $ systemctl --user enable --now <name>.timer |
|
| |
|
| Es kann jetzt die Grub Konfiguration generiert werden.
| | Aktualisierung von Timer und Sevice nach einer Änderung: |
| grub-mkconfig -o /boot/grub/grub.cfg | | # systemctl reenable --now <name>.timer |
| | $ systemctl --user reenable --now <name>.timer |
|
| |
|
| Sollte '''grub-mkconfig''' dabei eine Fehlermeldung wie
| | == Management == |
| ...
| | Auflistung der Auslösezeiten: |
| error: out of memory.
| | systemctl list-timers --all |
| error: syntax error.
| | (Sollen nur die aktiven Timer angezeigt werden genügt auch ein {{ic|systemctl list-timers}}). |
| error: Incorrect command.
| |
| error: syntax error.
| |
| Syntax error at line 164
| |
| ...
| |
|
| |
|
| liefern (siehe auch: [https://bugs.archlinux.org/task/38041 "FS#38041 - grub 1:2.00.1282.g5ae5c54-1 will not generate grub.cfg file syntax errors"], sollte das Anhängen folgender Zeile an '''/etc/default/grub''':
| | Statusmeldungen: |
| # fix broken grub.cfg gen
| | systemctl status <name>.timer |
| GRUB_DISABLE_SUBMENU=y
| | systemctl status <name>.service |
|
| |
|
| und ein erneuter Aufruf von '''grub-mkconfig''' Abhilfe schaffen.
| | Journaleinträge z.B.: |
| | journalctl -u <name>.service -g Started |
|
| |
|
| ====Installation des Syslinux Bootloader==== | | == Die [Timer] Sektion == |
| Wenn bereits ein Linux-Bootloader installiert ist, kann dieser Punkt übersprungen werden. Der bereits vorhandene Bootloader muss natürlich entsprechend konfiguriert werden.
| | ( Für die Konfiguration der Sektionen [Unit], [Install] und [Service] sei an dieser Stelle auf die entsprechenden man pages verwiesen) |
|
| |
|
| Zur Beachtung, der Syslinux Bootloader funktioniert nicht bei allen 64bit Dateisystemen wie z.B. ext4. Es muß dann ein anderer Bootloader gewählt werden wie z.B. Grub. Dieser Fehler macht sich erst nach dem Reboot mit folgender Meldung bemerkbar:
| | In der Timer Sektion können auch mehrere Zeitangaben gemacht werden. Sie beeinflussen sich nicht und werden alle zu ihrem jeweiligen Zeitpunkt ausgeführt. |
| Failed to load ldlinux.c32 . Boot failed: Please change disks and press a key to continue.
| |
|
| |
|
| Syslinux kann jetzt installiert werden.<br>
| |
| Bei einer GPT-Partitionstabelle muss das Paket gptfdisk zusätzlich installiert werden.
| |
| pacman -S gptfdisk
| |
| pacman -S syslinux
| |
| Mit einem Editor (nano) die Konfigurationsdatei anpassen:
| |
| nano /boot/syslinux/syslinux.cfg
| |
| Die Zeilen APPEND root=/dev/sda3 ro ändern in
| |
| APPEND root=/dev/sda1 rw
| |
| oder wenn man die LABEL-Partitionsbezeichnung bevorzugt:
| |
| APPEND root=LABEL=p_arch rw
| |
|
| |
|
| Anschließend syslinux auf den Bootsektor installieren
| |
| syslinux-install_update -iam
| |
|
| |
|
| =====Manuelle Installation von syslinux===== | | === Kalendarische Zeitangaben === |
| | * OnCalendar= |
|
| |
|
| Falls nicht alles reibungslos ablief, kann Syslinux manuell installiert werden.
| | ==== Absolute kalendarische Zeitangaben ==== |
|
| |
|
| Dazu wird mit dem Programm ''fdisk'' das Bootflag auf die Partition gesetzt, von der die Bootdaten gebootet werden sollen.<br>
| | OnCalendar=Thu,Fri 2026-*-1..5 11:12:13 |
| Beispiel, um für /dev/sda1 das Bootflag zu setzen:
| |
| fdisk /dev/sda
| |
| x
| |
| a
| |
| p
| |
| r
| |
| w
| |
|
| |
|
| Dann wird die Partition der Bootdaten, wie z. B. /dev/sda1, unter /boot gemountet und der Bootloader installiert.
| | (Der service wird jeweils um 11 Uhr 12, zwischen dem 1. und 5. Kalendertag eines jeden Monats des Jahres 2026 ausgelöst, wenn dies Donnerstage oder Freitage sind.) |
| mount /dev/sda1 /boot
| |
| mkdir /boot/syslinux
| |
| extlinux --install /boot/syslinux
| |
|
| |
|
| Jetzt muss noch der MBR von Syslinux auf die Festplatte geschrieben werden.
| | Die Angabe von Wochentagen erfolgt immer in Englisch und ist optional. |
| cat /usr/lib/syslinux/bios/mbr.bin > /dev/sda
| | Jede Rubrik kann mit "," für die Aufzählung oder mit ".." für von bis versehen werden oder durch "*" für beliebig ersetzt werden. |
|
| |
|
| | Die Angaben erfolgen nach diesem Schema: |
| | OnCalendar=Wochentag(englisch/optional) Jahr-Monat-Tag Stunde:Minute:Sekunde |
|
| |
|
| =Kopie aus [UEFI_Installation]= | | ==== Periodische kalendarische Zeitangaben ==== |
|
| |
|
| Diese Anleitung soll die Installation von Arch Linux (64 Bit) mit UEFI erklären. Es knüpft direkt an die [[Anleitung_für_Einsteiger]] an.
| | OnCalendar=weekly |
|
| |
|
| == UEFI bootbaren USB-Stick erstellen ==
| | Auch diese Werte sind möglich. |
| | minutely, hourly, daily, monthly, weekly, yearly, quarterly, semiannually |
|
| |
|
| Die aktuellen Arch Linux Images unterstützen UEFI bereits. Es sind also keine weiteren Vorbereitungen mehr nötig.
| | Entsprechend den oberen Notierung, kann dafür auch diese Schreibweise genutzt werden. |
| | *-*-* *:*:00, *-*-* *:00:00, *-*-* 00:00:00, *-*-01 00:00:00, Mon *-*-* 00:00:00, *-01-01 00:00:00, *-01,04,07,10-01 00:00:00, *-01,07-01 00:00:00 |
|
| |
|
| === Secure Boot === | | ==== Testen von OnCalendar= Zeitangaben ==== |
| Auch '''Secure Boot''' wird vom Image unterstützt. Allerdings kommt es beim ersten Bootvorgang zu einer Fehlermeldung ''Failed to Start loader... I will now execute HashTool''.
| | Kalendarische Zeitangaben können auf der Konsole mit folgendem Befehl auf Funktion geprüft werden: |
| Dann wie folgt verfahren.
| | systemd-analyze calendar "<Zeitangabe>" |
|
| |
|
| * {{ic|OK}} auswählen
| | Mit der Option {{ic|--iterations <N>}} werden weitere Auslösezeitpunkte aufgelistet. |
| * In dem nun erscheinendem Menü {{ic|Enroll Hash}} auswählen
| |
| * Anschließend die Datei {{ic|\loader.efi}} auswählen und mit {{ic|Yes}} bestätigen.
| |
| * Nun erneut {{ic|Enroll Hash}} wählen und in dem Ordner {{ic|archiso}} die Datei {{ic|vmlinuz-efi}} auswählen, ebenfalls bestätigen.
| |
| * Anschließend das Menü mittels {{ic|Exit}} verlassen.
| |
| {{hinweis|Auch wenn man das Installationsmedium via Secure Boot starten kann, so gestaltet sich dies bei dem installierten System deutlich schwieriger. Es ist daher deutlich einfacher und unproblematischer, wenn man Secure Boot im BIOS deaktiviert.}}
| |
|
| |
|
| Wenn man im Bootmenü ist, wählt man den Eintrag {{ic|Arch Linux archiso x86_64 UEFI CD}} aus. Danach sollte Arch Linux wie gewohnt starten und man kann mit der Installation beginnen.
| | === Relative Zeitangaben === |
| | (Stehen in Relation zu anderen Ereignissen) |
|
| |
|
| === 32-Bit UEFI === | | Beispiel: |
| Das offizielle installations ISO bietet keine Unterstützung für Geräte mit 32-Bit UEFI. Es ist jedoch möglich das ISO zu modifizieren. Ein passendes Script dafür findet sich unter [[EFI-32 ISO erstellen]]. Eine weitere Möglichkeit bietet [https://wiki.archlinux.org/index.php/Archboot Archboot]. Damit kann ein entsprechendes ISO erstellt werden oder man nutzt die fertigen Archboot ISOs, diese sind jedoch nicht immer auf dem aktuellsten Stand.
| | OnBootSec=2d 1h 30m |
|
| |
|
| == Festplatte partitionieren == | | ====Einmalige Ereignisse==== |
| Die Festplatte kann den eigenen Wünschen entsprechend partitioniert werden, es muss lediglich das '''GPT''' Partitionsschema verwendet werden und es muss eine '''UEFI System Partition''' erstellt werden.<br> | | * OnBootSec= - Die Zeitspanne seit dem Booten des Rechners. |
| '''Tip''' Hat man mehrere Festplatten z.B. eine mit Windows, so hat Windows bereits eine EFI Partition angelegt. Man kann diese als Bootpartition für Arch-Linux verwenden. Es ist aber auch möglich auf einer weiteren Festplatte eine 2. EFI-Bootpartition einzurichten. UEFI erkennt alle EFI-Bootpartitionen und deren Eintragungen. Im UEFI Bootmenü kann dann ausgewählt werden welches Betriebssystem gestartet werden soll.<br>
| | * OnStartupSec= - Die Zeitspanne seit dem Start von systemd. |
| Zum Partitionieren startet man {{ic|gdisk}}
| | * OnActiveSec= - Die Zeitspanne seit Aktivierung der Timer-Unit. |
| gdisk /dev/sdX
| |
|
| |
|
| Für '''X''' ist die genaue Festplattenbezeichnung einzusetzen. Siehe [[gdisk]].
| | ====Wiederkehrende Ereignisse==== |
| | * OnUnitActiveSec= - Die Zeitspanne seit dem der Timer das letzte mal den Job ausgelöst hat. |
| | * OnUnitInactiveSec= - Die Zeitspanne seit der Beendigung des letzten Jobs. |
|
| |
|
| {{achtung|Die Hexcodes der einzelnen Partitionstypen sind zu beachten! Bei der UEFI System Partition lautet der Hexcode {{ic|EF00}}. Außerdem sollte die UEFI System Partition mindestens 512 Mb groß sein, da als Dateisystem FAT 32 verwendet wird und die Größe von FAT 32 Partitionen/Laufwerken laut Microsoft mindestens 512 Mb betragen muss.}}
| | Folgende Einheiten können für relative Zeitangaben gewählt werden: |
| | usec, us |
| | msec, ms |
| | seconds, second, sec, s |
| | minutes, minute, min, m |
| | hours, hour, hr, h |
| | days, day, d |
| | weeks, week, w |
| | months, month, M (definiert als 30.44 Tage) |
| | years, year, y (definiert als 365.25 Tage) |
| | (Ohne Verwendung einer Einheit werden alle Angaben als Sekunden gewertet.) |
|
| |
|
| == Dateisysteme anlegen == | | ==== Testen Relativer Zeitangaben ==== |
| Es wird davon ausgegangen, dass 3 Partitionen erstellt wurden 1. EFI ist zugleich Bootpartition. 2. Root und 3. swap:
| | Relative Zeitangaben können auf der Konsole mit folgendem Befehl auf Funktion geprüft werden: |
| | systemd-analyze timespan "<Zeitangabe>" |
|
| |
|
| '''1. EFI (Boot)'''
| | === Weitere Optionen in [Timer] === |
| mkfs.fat -F 32 -n EFIBOOT /dev/sdaX # EFI Partitionstyp [ef00] | | * AccuracySec= - Bestimmt die Genauigkeit des Auslösezeitpunkts (default 1 min). |
| | * RandomizedDelaySec= - Wird verwendet damit nicht mehrere Timer exakt gleichzeitig z.B um 00:00 loslegen. |
| | * WakeSystem= - Weckt das System aus dem suspend mode. |
| | * Unit= - Als default ist dieser Wert identisch mit dem Suffix der .timer Datei (s. oben). Bei Verwendung muss eine Datei mit dem hier angegebenen Namen existieren. Eine Verschachtelung von Units ist möglich. |
| | * Persistent=true - Bewirkt, dass ein versäumter Job beim nächsten Rechnerstart unverzüglich nachgeholt wird. |
| | * RemainAfterElapse=false - beendet den Timer nach einmaliger Ausführung. |
|
| |
|
| '''2. Root'''
| | == Manpages == |
| mkfs.ext4 -L p_arch /dev/sdaY
| |
|
| |
|
| '''3. swap'''
| | systemctl, systemd, systemd-analyze, systemd.directives, systemd.service, systemd.socket, systemd.special, systemd-system.conf, systemd.time, systemd.timer, systemd.unit |
| mkswap -L p_swap /dev/sdaZ
| |
| | |
| Die Labels der Dateisysteme können nach der Option -L frei gewählt werden, sollten aber innerhalb des Systems nur einmal vorkommen.
| |
| | |
| == Partitionen einhängen ==
| |
| | |
| mount -L p_arch /mnt # root
| |
| mkdir -p /mnt/boot
| |
| mount -L EFIBOOT /mnt/boot # EFI
| |
| swapon -L p_swap # swap
| |
| | |
| == Das Betriebssystem einrichten ==
| |
| Dazu kann der [[Anleitung_für_Einsteiger]] von Punkt '''2.8 Das Basissystem installieren''' an bis einschließlich '''2.9.6 Root Password''' gefolgt werden.<br>
| |
| Weitere benötigte Werkzeuge für UEFI installieren:<br>
| |
| pacman -S efibootmgr dosfstools gptfdisk
| |
| | |
| == Den Bootloader installieren ==
| |
| Es können verschiedene Bootloader bzw. EFI-Eintragungen benutzt werden. Nur eins davon wird benötigt.
| |
| === systemd bootctl (ehemals Gummiboot) ===
| |
| | |
| Systemd bootctl (ehemals Gummiboot) ist ein EFISTUB-Bootloader, der schnell und sehr einfach konfiguriert ist. Nachfolgend eine kurze Konfigurationsanleitung (ausführliche Informationen im [https://wiki.archlinux.de/title/Systemd-boot entsprechenden Artikel]).
| |
| {{Hinweis|Es ist sinnvoll, die EFI-Partition nach {{ic|/boot}} zu mounten.}}
| |
| Zuerst den EFI-Booteintrag installieren und einrichten:
| |
| # bootctl install
| |
| | |
| Anschließend die Datei {{ic|/boot/loader/entries/arch-uefi.conf}} mit folgendem Inhalt erstellen:
| |
| title Arch Linux
| |
| linux /vmlinuz-linux
| |
| initrd /initramfs-linux.img
| |
| options root=LABEL=p_arch rw resume=LABEL=p_swap
| |
| | |
| Das Gleiche noch für Arch Linux fallback die Datei {{ic|/boot/loader/entries/arch-uefi-fallback.conf}} mit folgendem Inhalt erstellen:
| |
| title Arch Linux Fallback
| |
| linux /vmlinuz-linux
| |
| initrd /initramfs-linux-fallback.img
| |
| options root=LABEL=p_arch rw resume=LABEL=p_swap
| |
| | |
| Nun die Datei {{ic|/boot/loader/loader.conf}} bearbeiten:
| |
| default arch-uefi
| |
| timeout 1
| |
| Das timeout (in Sekunden) kann natürlich frei gewählt werden.
| |
| | |
| === EFISTUB ===
| |
| Mit EFISTUB wird ein Eintrag ins EFI erstellt, hierbei wird der Kernel und die initramfs direkt von UEFI geladen. Eine Auswahl welche EFI-Eintragung geladen werden soll, muss im UEFI Bootmenü gewählt werden.
| |
| efibootmgr -c -d /dev/sda -p 1 -l \vmlinuz-linux -L "Arch Linux efistub" -u "initrd=\initramfs-linux.img root=LABEL=p_arch rw"
| |
| efibootmgr -c -d /dev/sda -p 1 -l \vmlinuz-linux -L "Arch Linux fallback efistub" -u "initrd=\initramfs-linux-fallback.img root=LABEL=p_arch rw"
| |
| {{Achtung| In dem {{ic| initrd}} Parameter sollten immer backslashes ({{ic| \}}) als Separator verwendet werden (nach EFI-Standards), da es sonst dazu kommen kann, dass der Kernel das(/die) initramfs image(s) nicht findet: <br>
| |
| {{ic| EFI stub: ERROR: Failed to open file: /initramfs-linux.img}}}}
| |
| | |
| === rEFind ===
| |
| Ein weiterer grafischer UEFI-Bootloader ist rEFind. Eine genaue Beschreibung ist hier:
| |
| [https://wiki.archlinux.de/title/Refind rEFind]
| |
| === GRUB ===
| |
| Falls der Bootloader GRUB benutzt werden soll:<br>
| |
| Installation von GRUB für UEFI basierende PCs
| |
| pacman -S grub
| |
| | |
| GRUB-UEFI bootfiles nach {{ic|/boot/efi/EFI/arch_grub}} installieren
| |
| | |
| 64-Bit UEFI
| |
| grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug
| |
| 32-Bit UEFI
| |
| grub-install --target=i386-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug
| |
| {{achtung|Hier bitte aufpassen, ob Fehler gemeldet werden und ob der {{ic|efibootmgr}}-Befehl korrekt ausgeführt wurde.}}
| |
| mkdir -p /boot/grub/locale
| |
| cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
| |
| | |
| Anschließend die GRUB-Konfigurationsdatei erstellen lassen:
| |
| grub-mkconfig -o /boot/grub/grub.cfg
| |
| | |
| | |
| {{hinweis|Falls {{ic|grub-install}} den Bootmenüeintrag nicht erstellen kann und eine Fehlermeldung ausgegeben wurde, folgenden Befehl ausführen um den UEFI-Bootmenüeintrag manuell zu erstellen:}}
| |
| efibootmgr -q -c -d /dev/sdX -p 1 -w -L "GRUB: Arch-Linux" -l '\EFI\arch_grub\grubx64.efi'
| |
| | |
| {{hinweis|Bei einigen Thinkpad Modellen sucht das EFI zum booten nach der Datei {{ic|/efi/boot/bootx64.efi}}. Damit GRUB funktioniert, muss die im voraus erstellte Datei {{ic|/efi/arch_grub/grubx64.efi}} dorthin umbenannt bzw. verschoben werden.}}
| |
| | |
| == Abschließend ==
| |
| Zum Schluss noch die Partitionen aushängen und das System neu booten
| |
| exit # auslogen von arch-chroot
| |
| umount -R /mnt
| |
| reboot
| |
|
| |
|
| == Siehe auch == | | == Siehe auch == |
| * [[:en:Unified_Extensible_Firmware_Interface|Unified Extensible Firmware Interface]] {{sprache|en}} | | * [[systemd]] |
| * [[:en:Systemd-boot|systemd-boot]] {{sprache|en}} | | * [[systemd/Eigener Service|Einen eigenen systemd-Service erstellen]] |
| [[Kategorie:Installation]] | | * [[Automatische Sicherung (Beispiel)]] |
|
| |
|
| =Kopie von MSD-Partitionstabelle= | | == Weblinks == |
| {{SEITENTITEL:MSDOS-Partitionstabelle,}} | | * [https://documentation.suse.com/de-de/sle-micro/6.0/pdf/Micro-systemd-working-with-timers_de.pdf suse - Arbeiten mit systemd-Zeitgebern ] {{sprache|de}} |
| == MSDOS-Partitionstabelle ==
| | * [https://kofler.info/systemd-timer-als-cron-alternative/ Michael Kofler Blog] Anleitung und Beispiel {{sprache|de}} |
| Diese Seite soll zeigen wie man Archlinux auf einer Festplatte mit MSDOS Partitionstabelle (MBR) installieren kann und knüpft an die Anleitung für Einsteiger bei Partitionierung der Festplatte an. <br>
| | * [https://wiki.gentoo.org/wiki/Systemd#Timer_services Gentoo wiki section] on ''systemd'' timer services {{sprache|en}} |
|
| |
|
| Als Beispiel wird hier angenommen, dass eine Rootpartition und eine Swappartition benötigt wird.<br>
| | [[Kategorie:Systemverwaltung]] |
| | | [[Kategorie:Service]] |
| | |
| Liegt von Seiten der Hardware und Bios keine Einschränkung vor, ist es empfehlenswert eine GUID-Partitionstabelle anzulegen, da es u.a. moderner ist (siehe https://wiki.archlinux.de/title/Partitionierung).
| |
| | |
| Das erstellen einer GUID-Partitionstabelle ist einfacher mit gpt zu erreichen. Siehe https://wiki.archlinux.de/title/Gpt
| |
| | |
| | |
| ===Partitionierung der Festplatte mit einer MSDOS Partitionstabelle ===
| |
| | |
| Hier sollen eine Swap Partition und eine Partition für Root und Home angelegt werden.
| |
| Bei einer MSDOS Partitionstabelle(MBR) braucht man für den Grub-Bootloader keine extra Partition.
| |
| | |
| | |
| =====Aufruf von fdisk=====
| |
| | |
| fdisk /dev/sda
| |
| | |
| Welcome to fdisk (util-linux 2.24.1).
| |
| Changes will remain in memory only, until you decide to write them.
| |
| Be careful before using the write command.
| |
| | |
| | |
| Hilfe kann wenn gewünscht aufgerufen werden:
| |
| | |
| Befehl (m für Hilfe): m
| |
| | |
| Hilfe:
| |
| | |
| Generic
| |
| d Eine Partition löschen
| |
| l Die bekannten Dateisystemtypen anzeigen
| |
| n Eine neue Partition anlegen
| |
| p Die Partitionstabelle ausgeben
| |
| t Typ einer Partition ändern
| |
| v Die Partitionstabelle überprüfen
| |
| Misc
| |
| m Dieses Menü anzeigen
| |
| x Zusätzliche Funktionen (nur für Experten)
| |
| Speichern und beenden
| |
| w Die Tabelle auf die Festplatte schreiben und das Programm beenden
| |
| q Ende ohne Speichern der Änderungen
| |
| Create a new label
| |
| g Eine neue leere GPT-Partitionstabelle anlegen
| |
| G Eine neue leere SGI-(IRIX)Partitionstabelle anlegen
| |
| o Eine neue leere DOS-Partitionstabelle anlegen
| |
| s Eine neue leere Sun-Partitionstabelle anlegen
| |
| | |
| | |
| =====Eine neue leere DOS-Partitionstabelle anlegen:=====
| |
| | |
| Befehl (m für Hilfe):o
| |
| | |
| Created a new DOS disklabel with disk identifier ~.
| |
| | |
| | |
| | |
| =====Swap Partition anlegen=====
| |
| hier 8GiB = etwa das Doppelte des Arbeitsspeichers):
| |
| | |
| Befehl (m für Hilfe): n
| |
| | |
| | |
| Partition type:
| |
| p primary (0 primary, 0 extended, 4 free)
| |
| e Erweiterte
| |
| | |
| | |
| Primärtyp wählen ([Enter] für default):
| |
| | |
| Select (default p): [Enter]
| |
| | |
| Using default response p.
| |
| | |
| | |
| Partitionsnummer auswählen (hier 2, da 1 für die Root/Homepartition übrig bleibt):
| |
| | |
| Partitionsnummer (1-4, default 1): 2
| |
| | |
| | |
| Startsektor auswählen:
| |
| | |
| Erster Sektor (2048-234441647, default 2048): [Enter]
| |
| | |
| | |
| Endsektor auswählen (G für Gigabyte):
| |
| | |
| Last sector, +sectors or +size{K,M,G,T,P} (41945088-234441647, default 234441647): +8G
| |
| | |
| Created a new partition 2 of type 'Linux' and of size 8 GiB.
| |
| | |
| | |
| Typ der Partition ändern:
| |
| | |
| Befehl (m für Hilfe): t
| |
| | |
| | |
| Partitionsnummer auswählen:
| |
| | |
| Partitionsnummer (2, default 2): [Enter]
| |
| | |
| | |
| Hex-Code auswählen ([82] für Typ Swap):
| |
| | |
| Hex-Code (L um eine Liste anzuzeigen): 82
| |
| | |
| Changed type of partition 'Linux' to 'Linux swap / Solaris'.
| |
| | |
| | |
| | |
| =====Root/Home Partition anlegen=====
| |
| (hier den Rest der Festplatte):
| |
| | |
| Befehl (m für Hilfe):n
| |
| | |
| Partition type:
| |
| p primary (1 primary, 0 extended, 3 free)
| |
| e extended
| |
| | |
| | |
| Primär als Typ auswählen ([Enter] für default):
| |
| | |
| Select (default) p): [Enter]
| |
| | |
| Using default response p.
| |
| | |
| | |
| Partitionsnummer auswählen ([Enter] für default):
| |
| | |
| Partition number (1,3,4, default 1: [Enter]
| |
| | |
| | |
| Beginn der Partition auswählen ([Enter] für ganz vorne oder Anschluss an vorige Partition).
| |
| | |
| First sector (200048-.., default 200048): [Enter]
| |
| | |
| | |
| Endsektor auswählen ([Enter] für default, hier den ganzen Rest der Festplatte):
| |
| | |
| Last sector, +sectors or +size{K,M,G} (..): [Enter]
| |
| | |
| Partition 1 of type Linux and of size ~ GiB is set.
| |
| | |
| | |
| Aktivieren des bootfähig-Flags (für Boot):
| |
| | |
| Befehl (m für Hilfe): a
| |
| | |
| | |
| Eben erstellte Partition auswählen:
| |
| | |
| Partition number (1-2): 1
| |
| | |
| The bootable flag on partition 1 is enabled now.
| |
| | |
|
| |
| Erstellte Partitionstabelle anzeigen lassen und nochmal überprüfen:
| |
| | |
| Befehl (m für Hilfe): p
| |
| | |
| Disk /dev/sda: ~ GiB, ~ bytes, ~ sectors <br>
| |
| Units: Sektoren of 1 * 512 = 512 bytes <br>
| |
| Sector size (logical/physical): 512 bytes / 512 bytes <br>
| |
| I/O size (minimum/optimal): 512 bytes / 512 bytes <br>
| |
| Disklabel type: dos <br>
| |
| Disk identifier: ~ <br>
| |
| | |
| Gerät Boot Start Ende Blocks Id System <br>
| |
| /dev/sda1 * ~ ~ ~ 83 Linux <br>
| |
| /dev/sda2 ~ ~ ~ 82 Linux swap / Solari <br>
| |
| | |
| | |
| Partitionstabelle auf Festplatte schreiben:
| |
| (Alle vorhandenen Daten gehen dabei verloren)
| |
| | |
| Befehl (m für Hilfe): w
| |
| | |
| The partition table has been altered. <br>
| |
| Calling ioctl() to re-read partition table. <br>
| |
| Syncing disks. <br>
| |
| | |
| | |
| ===Anlegen der Dateisysteme===
| |
| =====Gewöhnliche Partition=====
| |
| "Gewöhnliche" Partitionen werden mit dem Program mkfs angelegt, wobei der Typ des Dateisystems klar benannt werden muss. Dazu dienen verschiedene links, z.B. mkfs.ext4, der ein Dateisystem vom Typ ext4 anlegt.
| |
| | |
| | |
| Anlegen des Dateisystems vom Typ ext4 auf der Root/Homepartition sda1 mit der Bezeichnung p_arch:
| |
| | |
| mkfs.ext4 -L p_arch /dev/sda1
| |
| | |
| Writing superblocks and filsystem accounting information: done
| |
| | |
| | |
| | |
| Anzumerken ist, dass Linux nicht in der Lage ist, von jedem Dateisystemtyp aus zu booten. In der boot-Partition ist die Auswahl also eingeschänkt.
| |
| | |
| =====Swap-Partition=====
| |
| Eine Swap-Partition ist der Platz einer Festplatte, der den "virtuellen Speicher" beheimatet. Falls die Prozesse mehr RAM brauchen als physikalisch vorhanden, kann Linux die Anfrage nicht bearbeiten und ein Fehler tritt auf. Eine swap Partition hilft in dieser Situation, indem physikalischer RAM durch virtuellen RAM erweitert wird. Linux benutzt diesen Platz der Festplatte (die Swap-Partition), um die Informationen, welche nicht mehr in den physikalischen RAM passen, zu speichern (in Wahrheit ist es ein wenig komplizierter, da Linux versucht, Informationen ins Swap zu schreiben, die nicht oft benötigt werden). Da eine Festplatte im Vergleich zu physikalischem RAM sehr langsam ist, ist dies nur ein Behelf.
| |
|
| |
|
| Anlegen des Dateisystems vom Typ swap auf der Swap-Partition sda1 mit der Bezeichnung p_swap:
| | [[en:Systemd/Timers]] |
| | | [[fr:Systemd/cron]] |
| mkswap -L p_swap /dev/sda2
| | [[ja:Systemd/タイマー]] |
| | | [[ru:Systemd/Timers]] |
| Anzumerken ist, dass diese Partition im Fall, dass zu Energiesparzwecken das RAM auf die Platte ausgelagert werden soll (suspend2disk), mindestens so gross wie das physisch vorhandene RAM sein muss, sonst passt letzteres nicht hinein. Wenn ich also 4 GB physisches RAM habe, muss ich hierfür auch mindestens 4 GB Plattenplatz reservieren.
| |
| | |
| ===Einbinden der Partitionen===
| |
| Hier kann der Anleitung für Einsteiger beim Punkt Einbinden der Partitionen weiter gefolgt werden.
| |
| https://wiki.archlinux.de/title/Anleitung_f%C3%BCr_Einsteiger#Einbinden_der_Partitionen
| |
| | |
| == Quellen ==
| |
| * https://wiki.archlinux.de/title/Anleitung_für_Einsteiger
| |
| * https://wiki.archlinux.de/title/Gpt#Partitionieren_mit_gdisk
| |
| | |
| | |
| | |
| [[Kategorie:Grundlagen]] | |
| [[Kategorie:Systemverwaltung]] | |
| [[Kategorie:Dateisysteme]] | |
Überarbeitung von Systemd/Timers
Entwurf
Timer bieten die Möglichkeit Aufgaben zeitlich zu steuern. Die Timer-Unit besteht aus einer .timer Datei die eine .service Datei ansteuert. Timer unterstehen systemd und müssen mit dem systemctl Befehl aktiviert werden. Eine Alternative hierzu bietet cron.
Beispiel
beispiel.timer
[Unit]
Description=Kurz-Beschreibung
[Timer]
OnBootSec=1h 30m
[Install]
WantedBy=basic.target
beispiel.service
[Unit]
Description=Kurz-Beschreibung
[Service]
ExecStart=/usr/bin/beispiel.sh
Service- und Timerdateien werden für
- systemweite Dienste im Ordner
/etc/systemd/system/
- userbezoge Dienste unter
~/.config/systemd/user/ gespeichert.
Timer und Service müssen dabei den gleichen Namen tragen. Z.B.:
(beispiel.timer und beispiel.service).
De- / Aktivierung
Mit systemctl enable --now startet der Timer unverzüglich und permanent, sodass er auch nach einem Neustart aktiv ist. Ohne --now werden enable oder auch disable erst nach einem reboot wirksam. Ein start bzw. stop wirken sich hingegen nur auf die laufende Sitzung aus. Bei der ersten Initialisierung legt das System automatisch einen passenden Symlink an.
Timer für systemweite Dienste werden mit Rootrechten aktiviert:
# systemctl enable --now <name>.timer
Timer im Userbereich werden mit der Option --user und mit Userrechten aktiviert:
$ systemctl --user enable --now <name>.timer
Aktualisierung von Timer und Sevice nach einer Änderung:
# systemctl reenable --now <name>.timer
$ systemctl --user reenable --now <name>.timer
Management
Auflistung der Auslösezeiten:
systemctl list-timers --all
(Sollen nur die aktiven Timer angezeigt werden genügt auch ein systemctl list-timers).
Statusmeldungen:
systemctl status <name>.timer
systemctl status <name>.service
Journaleinträge z.B.:
journalctl -u <name>.service -g Started
Die [Timer] Sektion
( Für die Konfiguration der Sektionen [Unit], [Install] und [Service] sei an dieser Stelle auf die entsprechenden man pages verwiesen)
In der Timer Sektion können auch mehrere Zeitangaben gemacht werden. Sie beeinflussen sich nicht und werden alle zu ihrem jeweiligen Zeitpunkt ausgeführt.
Kalendarische Zeitangaben
Absolute kalendarische Zeitangaben
OnCalendar=Thu,Fri 2026-*-1..5 11:12:13
(Der service wird jeweils um 11 Uhr 12, zwischen dem 1. und 5. Kalendertag eines jeden Monats des Jahres 2026 ausgelöst, wenn dies Donnerstage oder Freitage sind.)
Die Angabe von Wochentagen erfolgt immer in Englisch und ist optional.
Jede Rubrik kann mit "," für die Aufzählung oder mit ".." für von bis versehen werden oder durch "*" für beliebig ersetzt werden.
Die Angaben erfolgen nach diesem Schema:
OnCalendar=Wochentag(englisch/optional) Jahr-Monat-Tag Stunde:Minute:Sekunde
Periodische kalendarische Zeitangaben
OnCalendar=weekly
Auch diese Werte sind möglich.
minutely, hourly, daily, monthly, weekly, yearly, quarterly, semiannually
Entsprechend den oberen Notierung, kann dafür auch diese Schreibweise genutzt werden.
*-*-* *:*:00, *-*-* *:00:00, *-*-* 00:00:00, *-*-01 00:00:00, Mon *-*-* 00:00:00, *-01-01 00:00:00, *-01,04,07,10-01 00:00:00, *-01,07-01 00:00:00
Testen von OnCalendar= Zeitangaben
Kalendarische Zeitangaben können auf der Konsole mit folgendem Befehl auf Funktion geprüft werden:
systemd-analyze calendar "<Zeitangabe>"
Mit der Option --iterations <N> werden weitere Auslösezeitpunkte aufgelistet.
Relative Zeitangaben
(Stehen in Relation zu anderen Ereignissen)
Beispiel:
OnBootSec=2d 1h 30m
Einmalige Ereignisse
- OnBootSec= - Die Zeitspanne seit dem Booten des Rechners.
- OnStartupSec= - Die Zeitspanne seit dem Start von systemd.
- OnActiveSec= - Die Zeitspanne seit Aktivierung der Timer-Unit.
Wiederkehrende Ereignisse
- OnUnitActiveSec= - Die Zeitspanne seit dem der Timer das letzte mal den Job ausgelöst hat.
- OnUnitInactiveSec= - Die Zeitspanne seit der Beendigung des letzten Jobs.
Folgende Einheiten können für relative Zeitangaben gewählt werden:
usec, us
msec, ms
seconds, second, sec, s
minutes, minute, min, m
hours, hour, hr, h
days, day, d
weeks, week, w
months, month, M (definiert als 30.44 Tage)
years, year, y (definiert als 365.25 Tage)
(Ohne Verwendung einer Einheit werden alle Angaben als Sekunden gewertet.)
Testen Relativer Zeitangaben
Relative Zeitangaben können auf der Konsole mit folgendem Befehl auf Funktion geprüft werden:
systemd-analyze timespan "<Zeitangabe>"
Weitere Optionen in [Timer]
- AccuracySec= - Bestimmt die Genauigkeit des Auslösezeitpunkts (default 1 min).
- RandomizedDelaySec= - Wird verwendet damit nicht mehrere Timer exakt gleichzeitig z.B um 00:00 loslegen.
- WakeSystem= - Weckt das System aus dem suspend mode.
- Unit= - Als default ist dieser Wert identisch mit dem Suffix der .timer Datei (s. oben). Bei Verwendung muss eine Datei mit dem hier angegebenen Namen existieren. Eine Verschachtelung von Units ist möglich.
- Persistent=true - Bewirkt, dass ein versäumter Job beim nächsten Rechnerstart unverzüglich nachgeholt wird.
- RemainAfterElapse=false - beendet den Timer nach einmaliger Ausführung.
Manpages
systemctl, systemd, systemd-analyze, systemd.directives, systemd.service, systemd.socket, systemd.special, systemd-system.conf, systemd.time, systemd.timer, systemd.unit
Siehe auch
Weblinks