Skip to content

Instantly share code, notes, and snippets.

@shizonic
Created October 21, 2020 22:07
Show Gist options
  • Save shizonic/7e4ba211894a06205626b001b5635e8d to your computer and use it in GitHub Desktop.
Save shizonic/7e4ba211894a06205626b001b5635e8d to your computer and use it in GitHub Desktop.
Archlinux-btrfs-myway
Installationsanleitung für Archlinux mit BTRFS - Snapshots - Rollback etc. alles was das Herz begehrt!
------------------------------------------------------------------------
UEFI - Installation:
------------------------------------------------------------------------
GRUNDSYSTEM INSTALLIEREN
------------------------------------------------------------------------
- Boot iso:
- Sprache im Terminal ändern:
$ loadkeys de-latin1-nodeadkeys
- Blockdevices anzeigen:
$ lsblk
- Das richtige Blockdevice auswählen und richtig Formatieren:
Hier ist es das Device /dev/sda
- formatieren:
$ gdisk /dev/sda
- o (Für neuen leeren GPT PartitionTable)
--> EFI Boot Partition
- n (Neue Partition)
- Enter (1 PartitionsID)
- Enter (Für den vorgegebenen ersten Sektor)
- +250M (Für den letzten Sektor - Macht die EFI Partition 250Megabyte groß)
- ef00 (HEX Code für die EFI Boot Partition)
--> SWAP
- n (Neue Partition)
- Enter (2 PartitionsID)
- Enter (Für den vorgegebenen ersten Sektor)
- +8G (Für den letzten Sektor - Macht die Swap Partition 8 Gigabyte groß)
- 8200 (HEX Code für die Swap Partition)
--> BTRFS System
- n (Neue Partition)
- Enter (3 PartitionsID)
- Enter (Für den vorgegebenen ersten Sektor)
- Enter (Für den letzten Sektor - Gibt der Partition den übrigen freien Speicher)
- 8200 (HEX Code für die System Partition)
- p (zeigt die eben erstellten Partitionen an
- w (schreibt die eben erstellten Partitionen auf die Festplatte)
- y (um das schreiben zu bestätigen
- Dateisysteme auf den Partitionen erstellen:
$ mkfs.vfat -F 32 -n EFI /dev/sda1 (FAT32 Dateusysten mit dem Namen "EFI" auf der EFI Partition /dev/sda1)
$ mkswap -L SWAP /dev/sda2 (Dateisystem Swap für /dev/sda2)
$ swapon /dev/sda2 (Swap auf /dev/sda2 aktivieren)
$ mkfs.btrfs -f -L ROOT /dev/sda3 (BTRFS Dateisystem mit dem Namen "ROOT" auf der System Partition /dev/sda3)
(-f muss verwendet werden, wenn auf der Partition bereits ein BTRFS Dateisystem installiert war. Wenn nicht, kann -f weggelassen werden.)
(will man ein Raid verwenden müssen mehrere Partitionen hintereinander angegeben werden
BSP: $ mkfs.btrfs -f -L ROOT /dev/sda3 /dev/sda4)
$ free -h (um zu schauen ob der Swap aktiviert ist)
- Partitionen mounten - Installation vorbereiten:
$ mount /dev/sda3 /mnt (System unter /mnt mounten)
$ cd /mnt (in das gemountete Verzeichnis wechseln)
- BTRFS Subvolumes erstellen
$ btrfs sub create @
$ btrfs sub create @home
$ btrfs sub create @pkg
$ btrfs sub create @snapshots
$ ls (Zeigt die eben erstellten Volumes an)
$ cd .. (aus dem Verzeichnis wieder raus)
$ umount /mnt (Das Systemverzeichnis unmounten)
- Volumes mounten
$ mount -o noatime,compress=lzo,space_cache,subvol=@ /dev/sda3 /mnt (Das Subvol @ von der BTRFS Partition unter /mnt mounten)
$ mkdir -p /mnt/boot (Verzeichnis für die Boot Partition)
$ mkdir -p /mnt/home (Verzeichins für die home Partition)
$ mkdir -p /mnt/var/cache/pacman/pkg (Verzeichnis für die Pacman pkgs)
$ mkdir -p /mnt/.snapshots (Verzeichnis für die Snapshots)
$ mkdir -p /mnt/btrfs (Verzeichnis für das default subvolume)
- Volumes mounten (Die erstellten Volumes in die richtigen Ordner der System Partition mounten)
$ mount -o noatime,compress=lzo,space_cache,subvol=@home /dev/sda3 /mnt/home/
$ mount -o noatime,compress=lzo,space_cache,subvol=@pkg /dev/sda3 /mnt/var/cache/pacman/pkg/
$ mount -o noatime,compress=lzo,space_cache,subvol=@snapshots /dev/sda3 /mnt/.snapshots/
$ mount /dev/sda1 /mnt/boot/
$ mount -o noatime,compress=lzo,space_cache,subvolid=5 /dev/sda3 /mnt/btrfs/ (Das defaut Volume mounten hat immer die ID=5)
- Überprüfen der Mountpunkte:
$ df -Th
- System installieren:
$ pacstrap /mnt base base-devel btrfs-progs dosfstools bash-completion wpa_supplicant dialog
(Basissystem installieren - bash-completion für schreibfaule / wpa_supplicant $ dialog optional für WIFI - wenn nicht Antergos)
- Warten bis die Installation durchgelaufen ist (kann je nach Internetverbindung recht lange dauern)
$ genfstab -Lp /mnt >> /mnt/etc/fstab (Fstab mit Labels erzeugen)
$ cat /mnt/etc/fstab (um die erstellte fstab zu kontrollieren)
- Chroot in das System /mnt
$ arch-chroot /mnt/
$ echo myhost > /etc/hostname (Hostnamen erstellen "myhost" kann dabei beliebig benannt werden --> ist der Rechnername)
- Spracheinstellungen (Locale) festlegen:
$ echo LANG=de_DE.UTF-8 > /etc/locale.conf
$ echo LANGUAGE=de_DE >> /etc/locale.conf
$ echo KEYMAP=de-latin1-nodeadkeys > /etc/vconsole.conf
- Zeitzone:
$ ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
(Beim Fehler "File exists" einfach die Datei über den angezeigten Pfad löschen und den Befehl nochmals ausführen)
- locale.gen bearbeiten:
$ nano /etc/locale.gen
--> die "#" vor "de_DE.UTF-8 UTF-8" entfernen und speichern
$ locale-gen (locale erzeugen lassen)
$ nano /etc/pacman.conf (pacman.conf bearbeiten und multilib aktivieren)
--> Das "#" vor "[multilib]"
und "Include = ..."
enfernen und speichern
$ pacman -Sy (Paketquellen aktualisieren)
- Wenn btrfs Raid genutzt wird, muss das initramfs noch verändert werden:
$ nano -w /etc/mkinitcpio.conf
--> unter der Zeile "HOOKS=" muss "fsck" entfernt werden und "btrfs" vor "filesystems" eingefügt werden
$ mkinitcpio -p linux (um das neue veränderte initramfs zu erzeugen)
- Passwort setzen:
$ passwd
danach das Passwort blind eingeben und ein zweites mal eingeben zum bestätigen
- Bootloader installieren:
Systemd wird verwendet. Muss nicht installiert werden, da es bereits Teil von Archlinux ist.
Es muss allerings angepasst werden.
$ bootctl --path=/boot install (Den Boot Pfad für den Bootloader setzen)
$ cd /boot/loader
$ nano loader.conf
--> alles löschen und hiermit ersetzen:
default arch
timeout 4
editor 0
und abspeichern
$ cd entries
$ nano arch.conf
--> folgender Inhalt:
title Arch Linux Btrfs
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=LABEL=ROOT rootflags=subvol=@ rw
und abspeichern
$ exit (um das chroot zu verlassen)
$ umount -R /mnt/ (um alle unter /mnt gemounteten volumes rekursiv auszuwerfen)
$ reboot
Das Basissystem ist jetzt richtig installiert und sollte nach einem reboot sauber hochfahren.
Jetzt melden wir uns mit dem user "root" und dem in der installation mit passwd gesetzten Password an.
Danach installieren wir die Desktopumgebung und weitere benötigte Programme.
------------------------------------------------------------------------
DESKTOPUMGEBUNG UND WEITERE PROGRAMME INSTALLIEREN
------------------------------------------------------------------------
Das was jetzt folgt ist natürlich alles optional und kann verändert werden.
- Netzwerk herstellen:
$ ip a (Zeigt die Netzwerkinterfaces an und zeigt, dass derzeit keine Netzwerkverbindung besteht)
Wifi:
$ wifi-menu (damit kann im Terminal ein Menü geöffnet werden, über das man sich zu einem WLAN verbinden kann)
LAN:
$ dhcpcd enp0s3 (enp0s3 ist in diesem Fall mein LAN-Interface. Kann aber auch eno1 oder eth0/eth1 oder etwas in der Art sein)
Danach sollte ein Netzwerkverbindung bestehen.
Ob auch eine Internetverbindung besteht kann folgend getestet werde:
$ ping google.de
Sollten dabei Pakete angezeigt werden, und er die DNS google.de richtig auflösen, besteht eine saubere Internetverbindung.
- Updates checken:
$ pacman -Syu (Sollten Pakete angezeigt werden, die Installation mit y/j bestätigen)
- Grafische Umgebung installieren:
- Xorg:
$ pacman -S xorg-server xorg-xinit xorg-apps (xorg-apps ist optional)
$ pacman -S virtualbox-guest-utils (das sind die Grafictreiber - außerhalb von virtualbox müssen natürlich passende Treiber für die GraKa installiert werden)
- Desktopumgebung (hier xfce4 - natürlich optional):
$ pacman -S xfce4 xfce4-goodies (bei der Frage was installiert werden soll: ALLE - zweimal bestätigen und dann mit y/J bestätigen)
(Die Installation kann je nach Internetverbindung sehr lange dauern)
- Loginmanager (lightdm):
$ pacman -S lightdm lightdm-gtk-greeter
- Networkmanager GUI:
$ pacman -S networkmanager network-manager-applet nm-connection-editor
- Grundlegende Systempakete:
$ pacman -S acpid ntp dbus avahi cups cronie
(avahi&dbus sollte bereits installiert sein - falls nicht, wird es jetzt nachinstalliert)
(cups ist der locale Druckerserver - optional)
- Dienste aktivieren:
$ systemctl enable acpid (ist wichtig für die Energieverwaltung)
$ systemctl enable ntpd (Zeitsynchronisierung)
$ systemctl enable avahi-daemon (Netzwerkerkennung)
$ systemctl enable org.cups.cupsd.service (Druckerserver)
$ systemctl enable cronie (termingerechte Aufgabenplanung)
$ ntpd -gq (Zeitsynchronisierung anstoßen)
$ date (zur Überprüfung der Zeitsynchronisierung)
$ systemctl enable lightdm.service (Loginmanager aktivieren)
$ systemctl enable NetworkManager (Networkmanager aktivieren)
- User hinzufügen (Neuer User, der nicht "root" ist)
$ useradd -m -g users -G wheel,audio,video -s /bin/bash dschense
(-m bedeutet, dass ein homeverzeichnis erstellt wird
-g users, bedeutet, dass der user in der Gruppe users ist
-G .., bedeutet, dass der user noch in weitere Gruppen kommt: wheel - ist die Gruppe, die sudo verwenden darf
audio - um den Sound zu steuern
video - um Videoaktionen durchführen zu können
-s /bin/bash, bedeutet, dass die bash shell als default gewählt wird
dschense ist hier der username des users, der optional vergeben werden kann.
$ passwd dschense (passwort des erstellten users setzen)
- Empfohlene Schriftart installieren (optional)
$ pacman -S ttf-dejavu
- Zusätzliche Programme installieren (optional):
$ pacman -S chromium firefox firefox-i18n-de thunderbird thunderbird-i18n-de libreoffice-fresh libreoffice-fresh-de hunspell-de
(Chromium&Firefos als Browser, Thunderbird als Email Client, Libreoffice als Officelösung, hunspell als Sprachkorrektur)
Bei abfrage die libx264 wählen (sollte als default gesetzt sein)
Die angezeigten Pakete mit y/J zur installation bestätigen
- Audiosettings (pulse / alsa / pavu / xfce4 plugin)
pacman -S pulseaudio alsa-tools alsa-utils pulseaudio-alsa pavucontrol xfce4-pulseaudio-plugin
(xfce4-pulseaudio-plugin sollte eigentlich mit den xfce4-goodies installiert sein)
- Player installieren (optional):
$ pacman -S qt4 vlc mpv audacious (qt4 wird für vlc benötigt)
- Archiv-Manager
$ pacman -S file-roller p7zip zip unzip unrar
- optionale Schriftart (noto - optional)
$ pacman -S noto-fonts
- Desktop-theme & icons(arc-gtk - optional)
$ pacman -S arc-gtk-theme arc-icon-theme
- Virtualbox-Stuff installieren
-linux headers:
$ pacman -S linux-headers
wird benötigt, um vboxguest und vboxsf als kernel modul zu laden
$ reboot (um das System einmal nach den Installationen neu zu starten)
- XFCE4 Sprache einstellen:
Über Einstellungen - Tastatur - Tastaturbelegung --> "Systemweite einstellungen nutzen" deaktivieren und im unteren bereich aus Englisch dürch klicken Deutsch machen.
- Dateisystemunterstützung:
sudo pacman -S gvfs gvfs-mtp gvfs-nfs gvfs-smb ntfs-3g exfat-utils f2fs-tools ifuse mtpfs
- Sudo
Der user ist bereits in der Gruppe wheel.
$ nano /etc/sudoers
--> relativ weit unten das "#" vor der Zeile "%wheel ..." entfernen und speichern.
Ausloggen und neu einloggen und schon kann der user via sudo command Kommandos via sudo ausführen (Das Password was abgefragt wird, ist das User Passwort)
------------------------------------------------------------------------
BTRFS SNAPSHOTS UND ROLLBACK EINRICHTEN
------------------------------------------------------------------------
Aufgeteilt werden die Volumes wie folg:
BtrFS ID 5 /btrfs
@ / => @snapshots/TESTING => @snapshots/STABLE => @snapshots/OLDSTABLE
@home /home
@snapshots /.snapshots
@pkg /var/cache/pacman/pkg
Snaphots:
TESTING Arch Rolling
STABLE letzter stabiler Zustand
OLDSTABLE vorletzter stabiler Zustand
vmlinuz-linux,initramfs-linux.img ==> @snapshots/TESTING (Arch Rolling)
vmlinuz-linux-stable,initramfs-linux-stable.img ==> @snapshots/STABLE
vmlinuz-linux-oldstable,initramfs-linux-oldstable.img ==> @snapshots/OLDSTABLE
Vor einem Systemupdate wird dadurch STABLE nach OLDSTABLE geschoben, TESTING nach STABLE und dann in TESTING das Systemupdate gemacht.
Sollte dann etwas schief gehen, kann nach STABLE gebootet werden und der zustand des SNAPSHOTS wieder nach TESTING geschoben werden, um die Änderungen in TESTING rückgängig zu machen.
Das gleiche gilt natürlich auch für OLDSTABLE, falls der Fehler erst später bemerkt wird.
Die Kernel werden natürlich immer passend zum Snapshot mit gepackt.
Wenn auf TESTING ein Kernelupdate kommt, läuft STABLE noch immer mit dem alten Kernel.
Alles unter root bearbeiten:
$ sudo su
- btrfs subvolumes auflisten:
$ btrfs sub list /btrfs/
Sollte in etwa so aussehen: ID 257 gen 169 top level 5 path @
ID 258 gen 169 top level 5 path @home
ID 259 gen 143 top level 5 path @pkg
ID 260 gen 10 top level 5 path @snapshots
ID 262 gen 22 top level 257 path @/var/lib/machines
- Snapshot von @ anlegen:
$ btrfs sub snap / /.snapshots/TESTING (erstellt einen Snapshot des laufenden Systems nach TESTING)
- Config des Bootloaders für den Snapshot anpassen:
$ cd /boot/loader/entries
$ nano arch.conf
--> den Eintrag: "options root=LABEL=ROOT rootflags=subvol=@ rw" auf
"options root=LABEL=ROOT rootflags=subvol=@snapshots/TESTING rw"
ändern
$ btrfs sub list /btrfs/ (überprüfen ob der Snapshot da ist)
Ausgabe sollte so aussehen:
ID 257 gen 177 top level 5 path @
ID 258 gen 169 top level 5 path @home
ID 259 gen 143 top level 5 path @pkg
ID 260 gen 175 top level 5 path @snapshots
ID 262 gen 22 top level 257 path @/var/lib/machines
Snapshot ist da ==> ID 265 gen 175 top level 260 path @snapshots/TESTING
- fstab im Snapshot anpassen
$ nano -w /.snapshots/TESTING/etc/fstab
--> Inhalt sieht so aus:
------------------------------------------------------------------------
#
# /etc/fstab: static file system information
#
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda3 UUID=9994abf1-85a2-4543-9122-ca4417455548
LABEL=ROOT / btrfs rw,noatime,compress=lzo,space_cache,subvolid=257,subvol=/@,subvol=@ 0 0
# /dev/sda3 UUID=9994abf1-85a2-4543-9122-ca4417455548
LABEL=ROOT /home btrfs rw,noatime,compress=lzo,space_cache,subvolid=258,subvol=/@home,subvol=@home 0 0
# /dev/sda3 UUID=9994abf1-85a2-4543-9122-ca4417455548
LABEL=ROOT /var/cache/pacman/pkg btrfs rw,noatime,compress=lzo,space_cache,subvolid=259,subvol=/@pkg,subvol=@pkg 0 0
# /dev/sda3 UUID=9994abf1-85a2-4543-9122-ca4417455548
LABEL=ROOT /.snapshots btrfs rw,noatime,compress=lzo,space_cache,subvolid=260,subvol=/@snapshots,subvol=@snapshots 0 0
# /dev/sda1 UUID=5A46-EA89
LABEL=EFI /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2
# /dev/sda3 UUID=9994abf1-85a2-4543-9122-ca4417455548
LABEL=ROOT /btrfs btrfs rw,noatime,compress=lzo,space_cache,subvolid=5,subvol=/ 0 0
# /dev/sda2 UUID=30ebd6de-84ef-45df-a0c7-cc70dcf1d030
LABEL=SWAP none swap defaults 0 0
------------------------------------------------------------------------
Sollte entsprechend so verändert werden:
------------------------------------------------------------------------
#
# /etc/fstab: static file system information
#
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda3 UUID=9994abf1-85a2-4543-9122-ca4417455548
LABEL=ROOT / btrfs rw,noatime,compress=lzo,space_cache,subvol=@snapshots/TESTING 0 0
# /dev/sda3 UUID=9994abf1-85a2-4543-9122-ca4417455548
LABEL=ROOT /home btrfs rw,noatime,compress=lzo,space_cache,subvol=@home 0 0
# /dev/sda3 UUID=9994abf1-85a2-4543-9122-ca4417455548
LABEL=ROOT /var/cache/pacman/pkg btrfs rw,noatime,compress=lzo,space_cache,subvol=@pkg 0 0
# /dev/sda3 UUID=9994abf1-85a2-4543-9122-ca4417455548
LABEL=ROOT /.snapshots btrfs rw,noatime,compress=lzo,space_cache,subvol=@snapshots 0 0
# /dev/sda1 UUID=5A46-EA89
LABEL=EFI /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2
# /dev/sda3 UUID=9994abf1-85a2-4543-9122-ca4417455548
LABEL=ROOT /btrfs btrfs rw,noatime,compress=lzo,space_cache,subvolid=5,subvol=/ 0 0
# /dev/sda2 UUID=30ebd6de-84ef-45df-a0c7-cc70dcf1d030
LABEL=SWAP none swap defaults 0 0
------------------------------------------------------------------------
$ reboot (Testen ob jetzt vom Snapshot @snapshots/TESTING gebooted wird)
Nach einem Neustart checken, ob @snapshots/TESTING unter / gemountet ist:
$ mount
Wichtig ist folgende Zeile:
/dev/sda3 on / type btrfs (rw,noatime,compress=lzo,space_cache,subvolid=265,subvol=/@snapshots/TESTING)
hier sieht man, dass /dev/sda3 auf / mit dem subvolume @snapshots/TESTING gemounted ist.
Kann man das da sehen wurde richtig vom Snapshot gebooted.
- Konfigurieren der weiteren Subvolumes:
$ sudo su
Da @snapshots/TESTING unter / gemounted ist, braucht man das subvol @ eigentlich nicht mehr und könnte es löschen.
Ich behalte es aber gerne noch, da man davon ebenfalls booten könnte falls wirklich alles irgendwie kaputt geht.
$ btrfs sub snap / /.snapshots/STABLE
$ btrfs sub snap / /.snapshots/OLDSTABLE
-check:
$ btrfs sub list /btrfs/
--> Die Snapshots sollten jetzt so aussehen:
ID 265 gen 194 top level 260 path @snapshots/TESTING
ID 266 gen 193 top level 260 path @snapshots/STABLE
ID 267 gen 194 top level 260 path @snapshots/OLDSTABLE
- Kernel-Einträge für den Bootloader anlegen: (nur für die Ersteinrichtung notwendig. Das läuft später automatisch über ein Skript ab)
$ cd /boot
$ cp vmlinuz-linux vmlinuz-linux-stable
$ cp vmlinuz-linux vmlinuz-linux-oldstable
$ cp initramfs-linux.img initramfs-linux-stable.img
$ cp initramfs-linux.img initramfs-linux-oldstable.img
$ ls
Sollte so aussehen:
------------------------------------------------------------------------
drwxr-xr-x 4 root root 512 19. Okt 09:13 EFI
-rwxr-xr-x 1 root root 24461802 19. Okt 09:09 initramfs-linux-fallback.img
-rwxr-xr-x 1 root root 6687308 19. Okt 09:09 initramfs-linux.img
-rwxr-xr-x 1 root root 6687308 19. Okt 13:20 initramfs-linux-oldstable.img
-rwxr-xr-x 1 root root 6687308 19. Okt 13:19 initramfs-linux-stable.img
drwxr-xr-x 3 root root 512 19. Okt 09:13 loader
-rwxr-xr-x 1 root root 5502736 14. Okt 20:15 vmlinuz-linux
-rwxr-xr-x 1 root root 5502736 19. Okt 13:19 vmlinuz-linux-oldstable
-rwxr-xr-x 1 root root 5502736 19. Okt 13:19 vmlinuz-linux-stable
------------------------------------------------------------------------
- Bootloader anpassen um die Booteinträge für die Snapshots anzulegen:
$ cd /boot/loader/entries
$ cp arch.conf barch.conf
$ cp arch.conf carch.conf
(Wird gemacht, da die Einträge im Bootloader alphabetisch sortiert werden)
barch & carch anpassen:
arch.conf -->
title Arch Rolling
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=LABEL=ROOT rootflags=subvol=@snapshots/TESTING rw
barch.conf -->
title Arch STABLE
linux /vmlinuz-linux-stable
initrd /initramfs-linux-stable.img
options root=LABEL=ROOT rootflags=subvol=@snapshots/STABLE rw
carch.conf -->
title Arch OLDSTABLE
linux /vmlinuz-linux-oldstable
initrd /initramfs-linux-oldstable.img
options root=LABEL=ROOT rootflags=subvol=@snapshots/OLDSTABLE rw
- fstabs der Snapshots anpassen:
$ nano /.snapshots/STABLE/etc/fstab
--> LABEL=ROOT / btrfs rw,noatime,compress=lzo,space_cache,subvol=@snapshots/TESTING 0 0
zu
LABEL=ROOT / btrfs rw,noatime,compress=lzo,space_cache,subvol=@snapshots/STABLE 0 0
ändern
$ nano /.snapshots/OLDSTABLE/etc/fstab
--> LABEL=ROOT / btrfs rw,noatime,compress=lzo,space_cache,subvol=@snapshots/TESTING 0 0
zu
LABEL=ROOT / btrfs rw,noatime,compress=lzo,space_cache,subvol=@snapshots/OLDSTABLE 0 0
ändern
$ reboot (Um die gemachten Einstellungen zu testen)
Im Bootmenü sollten jetzt folgende Einträge vorhanden sein:
-->
Arch Rolling
Arch STABLE
Arch OLDSTABLE
Reboot Into Firmware Interface
Man sollte jetzt in jeden der 3 Einträge einmal booten und danach mit dem Befehl:
$ mount
schauen, ob der jeweilige Snapshot unter / gemounted ist.
also einmal @snapshots/TESTING, einmal @snapshots/STABLE und einmal @snapshots/OLDSTABLE
Sollte das alles richtig funktionieren, kann man das Script zum automatischen Erstellen der Snapshots einrichten.
------------------------------------------------------------------------
UPDATE-SNAPSHOT-SCRIPT
------------------------------------------------------------------------
-Skript Ordner erstellen:
$ mkdir -p ~/.scripte/system
$ cd ~/.scripte/system
$ nano update.sh
--> folgender Inhalt:
------------------------------------------------------------------------
#!/bin/bash
# System Update
# ---------------------------
# Snapshot - Rollback - Btrfs
# ---------------------------
MV=/usr/bin/mv
BTRFS=/usr/bin/btrfs
SED=/usr/bin/sed
PACMAN=/usr/bin/pacman
PACAUR=/usr/bin/pacaur
CP=/usr/bin/cp
REFLECTOR=/usr/bin/reflector
# ---------------------------
# Snapshot System
# ---------------------------
# ---------------------------
# Get Sudo Rights
# ---------------------------
if [ $EUID != 0 ]; then
sudo "$0" "$@"
exit $?
fi
# -------- OLDSTABLE --------
$BTRFS subvolume delete /.snapshots/OLDSTABLE
$MV /.snapshots/STABLE /.snapshots/OLDSTABLE
$SED -i 's/STABLE/OLDSTABLE/g' /.snapshots/OLDSTABLE/etc/fstab
$CP /boot/vmlinuz-linux-stable /boot/vmlinuz-linux-oldstable
$CP /boot/initramfs-linux-stable.img /boot/initramfs-linux-oldstable.img
# --------- STABLE ----------
$BTRFS subvolume snapshot / /.snapshots/STABLE
$SED -i 's/TESTING/STABLE/g' /.snapshots/STABLE/etc/fstab
$CP /boot/vmlinuz-linux /boot/vmlinuz-linux-stable
$CP /boot/initramfs-linux.img /boot/initramfs-linux-stable.img
# ---------------------------
# Update System
# ---------------------------
$REFLECTOR --verbose -l 5 -p https --sort rate --save /etc/pacman.d/mirrorlist
#$PACMAN -Syu
PACAUR -Syua
# ---------------------------
# Balance Filesystem
# --------------------------
$BTRFS balance start -dusage=5 /btrfs
------------------------------------------------------------------------
-benötigte Programme installieren:
$ sudo pacman -S xdg-user-dirs (Um Standard Ordner im home Verzeichnis des Users anzulegen - optional)
$ xdg-user-dirs-update
Damit hat man folgende Struktur:
--> Bilder Desktop Dokumente Downloads Musik Öffentlich Videos Vorlagen
- yaourt installieren:
$ cd ~/Downloads
$ curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/package-query.tar.gz
$ tar -xvzf package-query.tar.gz
$ cd package-query
$ makepkg -si
$ cd ~/Downloads
curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/yaourt.tar.gz
tar -xvzf yaourt.tar.gz
cd yaourt
makepkg -si
Danach können die heruntergeladenen und entpackten Pakete wieder entfernt werden.
-pacaur installieren:
$ yaourt -S pacaur
- Mirrorlisten aktuell halten (reflector)
$ sudo pacman -S reflector
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment