Vorneweg:
Die -c/--cascade Option von pacman bei -R ist "gefährlich / desktruktiv" und meist (bzw. speziell in deinem Fall auch nicht notwendig).
-c, --cascade
Remove all target packages, as well as all packages that depend on one or more target
packages. This operation is recursive and must be used with care, since it can remove many
potentially needed packages.
Fansurfer Der Pc startet und ich kann dies hier auch gerade aktuell schreiben damit, aber ganz sauber scheint mir der PC trotzdem nicht zu sein. Denn mit pacman -Qs nvidiaoder auch mit pacman -Qs firefox wird mit nichts angezeigt, obwohl ich gerade Firefox nutze. Wie kann ich weiter Vorgehen?
Wird durch dein BTRFS-Snapshooting auch die lokale pacman-Datenbank (Standard: /var/lib/pacman/local) gesichert bzw. wieder hergestellt? Falls Nein, dann ist das schlecht. Ich vermute, durch das --cascade wurden im ersten Versuch u.a. auch das Firefox-Paket entfernt (real und aus der lokalen Datenbank). Nach dem Wiederherstellen des Snapshots ist zwar das Binär-Programm /usr/bin/firefox) wieder vorhanden, aber der Eintrag als installiertes Paket in der DB fehlt. Das ist jetzt kein Beinbruch, erfordert aber später Nachinstallationen.
Doch, ist ziemlich problematisch. Da du aktuell (Stand des wiederhersgestellten Snaphots) z.B. kein nvidia-* Paket mehr deinstallieren kannst mittels pacman (Da die lokale DB ja wohl nicht mehr mit den aktuellen Programmen auf der Festplatte übereinstimmt.)
Das also bitte vorher mitteilen: Wird durch dein Timeshift-Snapshot auch /var/local/pacman/* und /var/log/pacman.log gesichert?
Wenn nein, dann:
a) Sichere dir die aktuelle /var/log/pacman.log (Änderungen deines obigen ersten Versuchs sind darin geloggt, brauchst du später)
b) Könntest du z.B. per Snaphot auf den Zustand nach deinem ersten obigen Versuch zurückgehen? Bei dem also
Fansurfer Nach dem Tausch von meiner Nvidia GTX 1050 Ti Grafikkarte zu einer AMD Radeon RX 7800 XT startet mein PC noch, aber ich lande immer im Terminal.
das gilt? In dem Zustand sind halt System und lokale DB synchron.
Teile uns das am besten vorab mit.
Sinnvoll wäre auch den Teil der pacman.log zu posten ab dem du deine obigen Befehle angefangen hast. Damit man mal sieht was alles deinstalliert wurde.
Wie gesagt: Ich würde aktuell nichts verändern aus dem wiederhergestellten (grafischen) System. Sondern erstmal die Fragen beantworten. Danach wäre zu entscheiden ob es sinnvoller ist:
a) mit einem laufenden System, aber "kaputter" lokalen Paketdatenbank oder
b) mit einem "nur" bis zum Terminal startenden, aber synchroner DB
weiterzumachen.
Erstmal nur das.
Das schrieb ich auch noch, ist aber aktuell nur zu Info:
Zum ursprünglichen Problem/Vorgehen:
Das Wechseln von Grafikkarten ist kein Problem, auch im laufenden Betrieb. Es darf halt lediglich nicht versucht werden eine grafische Umgebung zu booten in der noch Verweise/Konfig der alten Hardware aktiv sind.
Was du ggf. vergessen hast ist das oftmals Grafiktreiber auch im initramfs geladen werden (KMS/EarlyKMS).
Du solltest vor dem Wechseln dringend nochmal deine /etc/mkinitcpio.conf überprüfen, ob dort noch nvidia-Module zum Laden eingetragen sind. Das korrigieren und ebenfalls dran denken das initramfs neu zu erstellen. Gerade bei jedem Hardware-Wechsel ist das sowieso anzuraten.
//Edit heute
Da du dich nicht meldest und ich heute keine Zeit mehr haben würde kurz ein paar Gedanken meinerseits. Aber evtl. hast bzw. wirst du ja neuinstallieren.
Fansurfer Aktuell sehe ich da 3 Möglichkeiten:
Ich würde bei deinem Punkt 2) ansetzen., also
Fansurfer Wieder zurück rollen auf den letzten nicht funktionierenden Stand und alles was gelöscht worden ist wieder installieren.
Warum? Weil dieser Zustand das Gesamtsystem vom Paketmanager aus gesehen am Besten widerspiegelt.
Also dieses System (mit AMD GPU) bootet (OK), startet aber kein grafisches Target (sddm/Plasma), aber du landest am TTY-Login und kannst dich einloggen (Oder bootete dieses System nur bis zu einer Rescue/Ermergency-Shell wo ein Root-Login aerforderlich ist?)
Grund für kein sddm/Plasma können nun sein:
a) Der Wechsel vom Treiber/Kernel-Modul nvidia zu amdgpu wurde nicht sauber vollzogen, evtl. wie ich schrieb da das initramfs noch alten nvidia-Kram beinhaltet. Oder die Kernel-Commandline noch nvidia-Kram versucht zu setzten.
Beides sollte durch Analysieren vom System-Journal und/Oder XOrg.<ZAHL>.log herausfindbar sein.
b) sddm bzw. wichtige Teile von Plasma fehlen aufgrund der "Löschorgie" bei deinem Versuch nvidia zu entfernen. Auch das sollte im Systemlog bzw. XOrg.log rauslesbar sein.
Wenn dir selbst in dem Moment die Analyse nicht möglich ist kannst du beide Logfiles auch auf einen Pastebin-Server stellen vom TTY-Terminal aus (Ich gehe davon aus daß du Internet-Zuzgamg hast in dem Moment, ping archlinux.de). Eine Möglichkeit ist:
(Systemlog vom Boot):
journalctl --system -b | curl -F 'file=@-' 0x0.st
(XOrg Log findet sich entweder in /var/log/ oder im User-Verzeichnis $HOME/.local/share/xorg/ Schau dir ggf. jeweils mit
ls -l /obige Pfade) den Datumsstempel an um das Log vom aktuellen Boot zu erwischen. Das dann posten)
curl -F 'file=@-' 0x0.st < /pfad/zum/richtigen/XOrg.<ZAHL>.log
Beide Befehle stellen die Ausgabe nach 0x0.st und zu erhältst einen Link. Diesen Link dann hier posten. Setzt natürlich voraus, daß du ein weiteres Gerät hast mit dem du das Forum hier bedienen kannst.
Fehlende Pakete:
Im aktuell laufenden System (wiederhergestellter Snapshot) solltest du dir vor weiteren/späteren pacman-Aktionen das Log sichern, z.B. nach /root. Das brauchst du um eine Liste der gelöschten Pakete zu erhalten.
Da in diesem Zustand ja mehr Programme installiert sind als die (alte) lokale pacman-DB widerspiegelt bietet sich als Hilfe auch noch eine Liste von Programmen an die installiert sind (binär in /usr/bin), zu denen es aber keine Infos in der ("kaputten") pacman-DB mehr gibt. Das könntest du so erhalten (Beide Befehle funktionieren auch als Normaluser):
LANG=C find /usr/bin -exec pacman -Qo '{}' \; 2>&1 | grep "error:" > $HOME/not_owned_bins.txt
(Das schreibt eine Liste von Dateien aus /usr/bin nach $HOME/not_owned_bins.txt die zu keinem installierten Paket (aus der "kaputten" DB) gehören)
sudo pacman -Sy
cut -d ' ' -f 5 < $HOME/not_owned_bins.txt | LANG=C pacman -F - | cut -d ' ' -f 5 | sort -u > $HOME/missing_packages.txt
(Das erneuert die Sync-Datenbank und prüft dann für jedes im ersten Befehl gefundene Datei zu welchem Paket dieses gehören würde. Dieses Paket fehlt dann. Diese Liste wird nach $HOME/missing_packages.txt geschrieben).
In der Liste wird nicht unterschieden zwischen explizit installierten (also von dir angefordert z.B. Firefox) und Abhängigkeiten. Die meisten wirst du wohl anhand des Paketnamens identifizieren können ob explizit oder als Abhängigkeit (letztere braucht du dann eigentlich nicht extra zu installieren). Oder du suchst das erste Auftreten im pacman.log, da solltest du sehen ob du das betreffende Paket explizit (also mittel -S <paketname>) installiert hast oder ob es als Abhängigkeit nachgezogen wurde. Z.B. mittels:
grep -m 1 '\<paketname\>' /var/log/pacman.log
(Also z.B. grep -m 1 '\<firefox\>' /var/log/pacman.log
zeigt dir sicher daß du firefox mittels -S installiert hast; -m begrenzt die Trefferausgabe auf das erste Auftreten. Während z.B. das Paket nss (eine Abhängigkeit u.a. von firefox) lediglich als installed gefunden wird, ohne explizit mittels -S)
System mit AMD GPU
Im Terminal mit der AMD Karte:
Prüfe deine /etc/mkinitcpio.conf auf etwaige nvidia-Einträge, z.B. bei MODULES=
Entferne diese und trage ggf. das amdgpu Modul ein für EarlyKMS (siehe z.B.
https://wiki.archlinux.org/title/Kernel_mode_setting#Early_KMS_start)
Erstelle (als root) das initramfs neu.
https://wiki.archlinux.org/title/Regenerate_the_initramfs
Prüfe deine Kernel-Kommandozeile auf etwaige nvidia-Anweisungen:
cat /proc/cmdline
Wenn nötig editiere diese bei deiner Bootloader Konfiguration, für Grub z.B. in /etc/default/grub und erstelle dir eine neue Boot-Configdatei
https://wiki.archlinux.org/title/GRUB#Generated_grub.cfg
Stelle sicher, daß:
ls /etc/X11/xorg.conf.d/
keine Datei xx-nvidia.conf (xx ist eine Zahl, 20 wahrscheinlich) mehr enthält.