Firefox Update 57 -> 96 – keine gute Idee

Admins reden sich den Mund fusselig, aber einige Benutzer interessieren sich einfach nicht für Updates der von Ihnen genutzen Software. Was das für Firefox bedeuten kann, beleuchten wir heute.

Firefoxupdate 57 -> 96 – keine gute Idee

Vor ein paar Wochen sollte ich einen defekten Laptop retten.. es war hoffungslos :

Totalschaden

Da haben wir, auch aufgrund des Alters, einfach einen neuen bestellt. Leider hatte der neue nur noch M2 Schnittstellen, aber keine internen SATA Anschlüsse mehr. Also mußte das OS auf eine SSD geclont werden, was an sich eine leichte Übung ist.

Das N15 Acer Extensa EX215-51-52AW

Das mit einem i5 10te Generation, 8GB Ram sowie 256 GB M2.SSD ausgestattete ist ein nettes Gerät, wenn man denn Linux darauf installieren könnte. Natürlich habe ich eine LiveDisk reingesteckt, konnte aber die versprochene SSD nicht finden, egal mit welcher Distro ich es probierte 🙁 Auch im Bios tauchte das Gerät nicht auf. Sachen gibt es.

Stunden später tauchte einem ACER-Forum ein Beitrag auf, daß jemand glaubt vergessen hatte, den Raidmodus des Controllers auf AHCI umzustellen, nur leider gab es da keine Möglichkeit zu im Bios des Geräts.. dachte ich.. eine Weile.. dann stolperte ich immer wieder über diesen Artikel und beiläufig erwähnte jemand eine geheime Tastenkombination, die diesen Wechsel überhaupt erst möglich machte.

Und tatsächlich, die Kombination gab es wirklich: CTRL-s

Danach war es ganz leicht, weil sich die SSD endlich meldete. Ein externer SATA-Adapter und ein DD später bootete das Laptop die bisherige Installation. Datenverluste: 0.00 .. so lob ich es mir. Dann der Schock, nicht ganz so unerwartet 😉 Das installierte OS hatte seit 5 Jahren keine Updates gesehen. Eine wandelnde Sicherheitslücke. Installiert war noch Fedora 25 und somit ein Firefox 57, was uns zum eigentlichen Thema des Artikels führt 🙂

5 Jahre keine Updates

Natürlich habe ich in großen Schritten von Fedora 25 auf Fedora 35 aktualisiert. Das Laptop ist echt schnell, also haben 5 Distributionsupgrades nur 2h gedauert ( man muß es ja auch mal runterladen ). Dabei wurde der Firefox von 57 auf 96 aktualisiert, allerdings nur der Firefox, nicht das Profil. Als der Kunde dann seinen neuen Laptop ausprobierte, waren alle Bookmarks, Logins und Passwörter weg. 5 Jahre ohne Updates gehen an keinem Programm spurlos vorbei. Merke: UPDATEN ! UPDATEN ! UPDATEN !

Nun waren die Logins und Passwörter noch in den Profildatenbanken enthalten, es kam aber nichts mehr raus, und kurioserweise ging auch nichts mehr rein.Die übliche Lösung, ein neues Profil anlegen und Key4.db, logins.json und places.db zu kopieren, half nichts, also mußte Mozilla ran. Zur großen Überraschung von den beteiligten Mozilla Devs gab es den Fehler auch bei Ihnen: Beweisvideo von Mozilla

Ein paar Wochen später stand fest: Man kann nicht von 57 auf irgendwas 73+ updaten, ohne daß es zum kompletten Verlust kommt. In Version 72.0.2 wurden die Datenbanken des Profiles intern umstrukturiert und sind damit zu früheren Versionen inkompatibel.

Der Workaround

Der Workaround sieht vor, einfach auf Version 72.0.2 zu downgraden, den dort befindlichen Updatevorgang durch Start von Firefox zu aktivieren und dann die Versionen wieder auf 96, oder jetzt schon 97, hochziehen.

Mit Fedora ist das eher schmerzlos von einem erfahrenen Benutzer zu machen, für Laien aber zu schwierig. Da der Kunde alle seine Passwörter schon von Hand eingegeben hatte, was auch nicht ganz ohne war, gab es für Mozilla und mich nichts mehr zu tun.

Gehen wir das mal theoretisch durch:

su root
dnf downgrade firefox –releasever=32
exit
firefox
su root
dnf update firefox -y

Das wäre es schon. Es könnte sein, daß auf dem Weg noch andere Pakete mit downgegraded werden müssen, was im Einzelfall bei der Zeitspanne von 2,5 Jahren echt spannend sein wird. Natürlich gibt es eine bessere Lösung:

Installiert Euch ein altes System in eine CHROOT-Umgebung 🙂

DNF ist in der Lage eine komplette Basisinstallation in ein beliebiges Verzeichnis vorzunehmen, einfach mit –installroot pfadname angeben. Wenn man da Firefox als Wunschpaket mit angibt, dann zieht das alle Pakete nach, die man dazu braucht, auch einen Desktopmanager usw. Achtet darauf, daß es der gleiche ist, wie der, der gerade läuft, weil Ihr dann natürlich kein System im System mehr startet müßt, was eh nicht geht.

In der Chroot-Umgebung wird dann einfach das alte Profil ins Home kopiert und der Firefox gestartet. Problem gelöst.

Noch bessere Methode

Nichts geht über eine Iteration von Ideen hinaus, oder? 🙂 Vergesst einfach die Chroot, ist viel zu viel Aufwand dafür. Macht Gnome-Boxen auf, startet eine alte, versionsmäßig passende, LIVE-Disk von Eurer Distro, aktualisiert den Firefox auf die 72.0.2 und dann schiebt z.b. per SCP das Profil in die Box und startet den Firefox. Idealerweise legt Ihr vorher noch passend einen Benutzer gleichen Namens an, damit die Pfade stimmen, aber das sollte auch ohne gehen. Danach das geänderte Profil in Eurer Home verschieben. Fertig.

An die Updatemuffel dieser Welt

Eure Strategie ist genauso, wenn nicht noch, riskanter als einfach die Updates mitzumachen!

Sollte nämlich mal ein Update unter Linux nicht laufen, kann man mit einem einfachen Downgrade zurück und schon geht es wieder, außer der Bug wäre in einer Version wie 72.0.2, die die Datenbank an das neue Format anpasst, dann ist das Profil erst einmal unbrauchbar geworden. Deswegen.. Backups! Backups! Backups!

Pinephone: Wie man Fedora installiert

Da sich Andreas eine Anleitung auf Deutsch gewünscht hat, machen wir das einfach mal.

Pinephone: Wie man Fedora installiert

Das ist eigentlich ganz einfach, wir brauchen:

1x SD-Kartenleser
1x „Gnome-Disks“ zu Deutsch „Laufwerke“ oder für die Konsole „dd“
1x Fedora Image

Das Image bekommt man hier:

https://github.com/nikhiljha/pp-fedora-sdsetup/releases/tag/v0.4.0

Es gibt zwar neuere Images, aber das ist ist meine aktuelle Basis im Pinephone, die funktioniert und ist mit einem DNF-Update auf meinem Softwarestand. Die ganzen Tricks die ich anwende sind da noch nicht dabei.

Wie findet man das passende Device für den SD-Kartenleser?

Für Anfänger: seht im Laufwerketool nach!
Für Konsolenfans: cat /proc/partitions am einfachsten vor und nach dem Einstöpseln des Lesers vergleichen!

Die Installation

Erst einmal in der Konsole:

  • Imagedatei entpacken: xz -d filename.tar.xz;tar xf filename.tar
    Hinweis: das nimmt schnell mal viel Platz weg
  • SD-Karte in den Leser stecken und schauen welches Device der Leser hat! Wer da nicht drauf achtet, der könnte sich sein System unrettbar überschreiben. Deswegen empfehle ich da eher das Laufwerketool zu benutzen, das warnt einen eindringlich:
    dd if=fedora.img of=/dev/<YOUR_SD_CARD>
  • Nun müssen wir noch die letzte Partition so vergrößern, so das Sie die ganze SD-Karte füllt. Es empfiehlt sich „parted“ und/oder „gparted“ zu installieren und es ggf. grafisch zu tun. Nun geht Ihr genau das hier ein und ersetzt dabei nur Euer Device an der richtigen Stelle:
    • sudo parted /dev/<your_sd_card_device>
    • (parted) resizepart 2 100%
    • (parted) quit
    • sudo resize.f2fs /dev/<the_second_sd_card_PARTITION>

Das war es schon. Die letzte SD-Karten-Partition ist die mit der höchsten Nummer! Die sieht man aber in /proc/partitions erst, wenn das Image geschrieben und die Partitionstabelle synchronisiert wurde.

Jetzt die Karte in das Pinephone stecken und Booten.

Login als „pine“ mit „123456“. Job Nummer 1 ist das Passwort wechseln. Erst danach loggt man sich ins WLAN ein!

Entweder Ihr loggt Euch per SSH von außen ein, oder macht ein Terminal auf. Nicht Verzagen „Kings Cross“ ist das gesuchte Programm. Nicht fragen, ist längst raus geflogen, weil Gnome-Terminal problemlos funktioniert.

Root werden: „sudo su“  + Eurer neues Passwort

Das Masterupdate: „dnf -y update“. Dann gleich Rebooten und soweit ausgestanden 😉

Die grafische Installation

Weil das Schreiben des Images auf USB genauso funktioniert wie das Schreiben auf eine SD-Karte:

Linux – ISO Image brennen

 

Einfach dort nachlesen. Wenn Ihr fertig seid ohne Eure Systemfestplatte gekillt zu haben, startet Ihr GParted, wählt die SD-Karte aus, klickt auf die letzte Partition weist Gparted an, diese Partition zu vergrößern ( rechter Mausklick ). Befehl abnicken, warten, fertig.

Ich empfehle

Danach den „maxbattery“ Tweak, den „ModemManager“ Tweak, das Flashlight und SuspendGuardian zu installieren. Fast alles hier zu finden:  https://github.com/Cyborgscode/pinephone

Das nackte Pinephone aufmotzen

Die Autoscreenrotation braucht Ihr nicht mehr, die ist in Phosh jetzt funktional.

Der ModemManager-Tweak hat es noch nicht auf die Seite geschafft

Legt eine Datei namens: /etc/systemd/system/ModemManager.service an und schreibt das hier rein:

[Unit]
Description=Modem Manager
After=
Requires=

[Service]
Type=dbus
BusName=org.freedesktop.ModemManager1
ExecStart=/usr/sbin/ModemManager –test-no-suspend-resume
StandardError=null
Restart=on-abort
CapabilityBoundingSet=CAP_SYS_ADMIN
ProtectSystem=true
ProtectHome=true
PrivateTmp=true
RestrictAddressFamilies=AF_NETLINK AF_UNIX
NoNewPrivileges=true
User=root

[Install]
WantedBy=multi-user.target
Alias=dbus-org.freedesktop.ModemManager1.service

danach „systemctl daemon-restart“ „systemctl restart ModemManager“ . Fertig. Jetzt bleibt das Modem im Pinephone im System-Suspend in Betrieb und Ihr könnt angerufen werden 😉 SIM Karte vorausgesetzt.

PS: GPS geht auch nur mit SIM-Karte, weil ohne gehts Modem gar nicht.

 

Linux: auf SD-Karten installieren, gut oder schlecht?

Einem kleinen Experiment gleich, habe ich am Samstag Fedora Linux auf einem i3 Surface Tablet auf einer SD-Karte installiert, da der Besitzer seine WIN-Installation nicht direkt zerstören wollte. Das hat an sich auch geklappt. Leider gab es da ein „kleines“ Problem …

Linux auf SD-Karten und USB-Sticks

Bleiben wir erstmal beim Surface, das normalerweise eine SSD, einen USB-Slot und einen SD-Kartenslot aufweist. Die Installation von Linux auf die SSD ist natürlich die favorisierte Installationsmethode. Jetzt kann man Linux aber auch auf die SD-Karte oder einen USB-Stick installieren und wenn man es nur mal ausprobieren will, ist das ein legitimes Vorgehen. Grub hat das Dualboot auch im ersten Versuch sauber hinbekommen, klasse!

Nun hatte der Besitzer des besagten i3 Surface Pro eine Installation auf die SD-Karte gewünscht. Den Hinweis, daß es auf einer SD Karte natürlich nicht so schnell gehen würde, wie auf einer SSD, hat er akzeptiert. Das Gerät verließ unseren LPD Stand dann auch mit einem aktuellen Fedora 29, RPMFusions MPV, Thunderbird und anderen Apps, was man halt so braucht, mit der Auflage Zuhause dann mal ein Update laufen zu lassen, weil das SD-bedingt ewig dauern würde. Natürlich war es am Mittwoch dann nicht aktualisiert, also haben wir das nachgeholt. Das hätten wir besser nicht gemacht 🙁

Das Update war 1 GB groß und der Download der RPMs noch das kleinste Problem. Die Energieeinstellungen von Gnome waren leider so eingestellt, daß das Gerät irgendwann ausgeht. Da das i3 Surface von 2013 vom aktuellen Kernel voll unterstützt wird, hätte das eigentlich kein Problem sein sollen, zumal ja gerade eh ein Update per DNF läuft. Da würde man annehmen, daß das Abschalten des Bildschirms nicht zu Problemen führt, weil ein Updateinhibitor gesetzt wird. Führte es aber!

Es kam wies kommen mußte…

Die Hardware vom Surface wurde offensichtlich nach einer gefühlten Ewigkeit komplett abgeschaltet und als wir das Tablet wieder aktiviert haben, meldeten die RPMs nur noch IO Fehler. Die Root-Partition sprang wegen eines IO Fehler in den Read-Only-Modus und war auch nicht dazu zu bewegen, daß Read-Write wohl die bessere Wahl während eines Updates wäre. Meine Vermutung: Die Hardwareabschaltung hat den SD-Cardreader wohl überrumpelt und der hat den Schreibschutz von der SD-Karte fälschlich als aktiv gemeldet. Da eine Installation auf einem Read-Only Filesystem nicht funktionieren kann, stoppe DNF dann auch irgendwann… so 200 Fehlermeldungen später 🙁

Ich habe das System schon im Nirvana gesehen und beim nötigen Reboot die Augen zugekniffen 🙂 Es bootete doch tatsächlich noch, was bei Update 650 von 1563 nicht wirklich zu erwarten gewesen ist. Nach dem obligatorischen manuellen Filesystemcheck kam Gnome tatsächlich hoch. DNF ist schlau, aber nicht schlau genug. Natürlich war die RPM Datenbank defekt und mußte repariert werden. DNF aktualisierte dann im Rucksack die restlichen Pakete, als der Besitzer per Fahrrad gen Heimat fuhr. Natürlich hatten wir gelernt und den Akku aufgefüllt und die Energiesparoptionen so angepaßt, daß das hoffentlich nicht nochmal passiert.

Der ganze Update wäre in 5 Minuten durch gewesen, wenn Linux auf der SSD installiert gewesen wäre. Der Besitzer sollte dann Zuhause noch dnf reinstall „*“ ausführen, ob das geklappt hat, erfahren wir dann nächsten Mittwoch.

Sind USB-Stick und SD-Karten wirklich eine gute Idee für Linux?

Nach dieser Erfahrung muß ich sagen : Nein, sind sie nicht. Man kann sich nie sicher sein, ob die Hardware das Speichermedium nach einem Sleep/Hibernate wieder sauber anbietet und das „laufende“ System weiter funktioniert. Ein Strom-Aus für den USB-Port oder den SD-Kartenleser kann halt zu Fehlern führen wie man sieht. Im Gegensatz zum IDE/SATA Port des Mainboards sind USB und SD eben nur untergeordnete Peripherie-Geräte. Da wird von den Kernel- und Treiberentwicklern auch nicht soooooo viel Ambition reingeflossen sein, wie in die Hauptgerätetreiber SATA/IDE/SCSI. Wenn dann noch eine eher exotische Hardware wie ein Surface Pro angesprochen wird, kann es zu dem Fehler kommen.

Dazu kommt, daß die SD-Karte echt lahmarschig war. Für die 650 Updates vergingen locker 2 Stunden. Der USB Port wäre vermutlich schneller gewesen, weil der schafft auch 1 Gb/s aka 120 MB/s. Also, wenn Ihr das vorhaben solltet, und ich rate dringend ab, nehmt einen schnellen USB-3-Stick.

Zum Glück hängt der Besitzer nicht soooooo an Win10, nach einer kleinen Datensicherung und Umpartitionierung von Windows, werden wir wohl auch Linux noch auf die SSD quetschen können. Das wird an sich eine spannende Sache, weil… wie wird Win10 auf den Verlust einer geliebten Partition reagieren? Auch das erfahren wir nächste Woche 😉