refind und live-iso von Festplatte

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
scientific
Beiträge: 3022
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

refind und live-iso von Festplatte

Beitrag von scientific » 06.03.2017 00:05:04

Hi!

Ich bin immer noch an meiner Backup-Lösung für btrfs. Vorgestern verabschiedete sich das Dateisystem auf einem Laptop während des Upgrades... mir war ganz bange, da dies nicht auf meinem Rechner passierte, und der User das letzte Backup auf der externen Platte im November gemacht hat (trotz meines mehrfachen Hinweises, die Platte einfach einzustecken... zumindest einmal in der Woche... sonst ist nix zu tun, als abzuwarten, bis das Backup fertig ist, was im Status-Icon in Gnome3 für das Backupskript auch zu sehen ist).

Ich hatte dann das Problem, dass es schwer war, eine aktuelle LIve-Distribution mit aktuellem Kernel und btrfs-progs auf Debian-Basis zu bekommen. Die Testing-Live-CD brachte ich am Stick nicht zu laufen. Stable-Live hat veraltete btrfs-Progs und einen zu alten Kernel für das btrfs-Dateisystem am Rechner. Die SystemRescueCD startete nicht...

Ich wurde dann bei der gparted-Live-CD fündig. Diese basiert direkt auf Debian-Live und bringt aktuellen Kernel und aktuelle btrfs-progs mit sich. Und sie startete auf dem Rechner.
Ein btrfs-zero-log auf das Dateisystem losgelassen reparierte das unbootbare System wieder.

Jedenfalls rief es mir in Erinnerung, dass ich noch Arbeit ausständig habe, um meine Backup-Suite für btrfs vollständig zu bekommen. Die Idee ist, ein Live-ISO mit vordefinierten Programmen für die Diagnose und Reparatur von btrfs bereitzustellen, wie auch ein Tool, welches mir erlaubt, einen älteren Snapshot als default-Subvolume zum Starten zu definieren.

Die GParted-Live-CD gefällt mir prinzipiell sehr gut. Und auf dieser Basis würd ich das gerne lösen. Ein eigenes C++ Programm, welches direkt in EFI läuft, ist momentan noch zu schiwerig für mich, da ich nicht C/C++ programmieren kann.
Also dachte ich mir, ist die beste Lösung, ein Live-ISO sowohl auf dem externen Datenträger wie auch auf der internen HDD/SSD abzulegen, welches zusätzlich zu den Programmen von GParted-Live noch ein Werkzeug zum Reroll auf einen älteren Snapshot enthält. Und weil ich das ganze per deb-Paket installieren will, müsste das ISO sowohl BIOS- als auch UEFI-bootfähig sein... Das packt die genannte GParted-live-Disc.

Aber ich schaffe es nicht, das ISO so abzulegen und bei refind einzubinden, dass ich es auch als Auswahl bekomme.....
Ich denke, es ist am klügsten, dieses ISO auf eine eigene Partition zu schreiben, welche dann sowohl von grub als auch refind eingelesen wird... Aber wie mache ich das?

Hat jemand eine Idee dazu?

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: refind und live-iso von Festplatte

Beitrag von smutbert » 06.03.2017 10:56:14

Ich hab zwar kein so ausgefuchstes Backupsystem in Verwendung, aber für Notfälle hab ich ein normal installiertes jessie+backports (ohne X und wayland) auf einem USB-Stick und dort gleichermassen grub-efi-amd64, grub-efi-ia32 und grub-pc installiert. Das Ding bootet also so gut wie überall, selbst auf Atoms oder alten Macs mit 32-Bit EFI.
Die grub-Pakete lassen sich zwar nicht alle gleichzeitig installieren, aber das ist kein Problem: Es gibt eine EFI System Partition und für grub-pc eine BIOS Boot Partition. Die grubs hab ich nacheinander getrennt mit grub-install und den richtigen Optionen allesamt in die EFI System Partition installiert und die grub.cfg hab ich selbst geschrieben, sie lädt einfach /boot/vmlinuz und /boot/initrd, also die symbolischen Links auf den eigentlichen aktuellen Kernel.
Deswegen konnte ich die grub-Pakete danach auch wieder deinstallieren und boote trotzdem immer mit dem aktuellen Kernel. Im Prinzip alles ganz einfach, aber bald will ich so einen Stick mit stretch erstellen - falls Interesse besteht kann ich das dann ja dokumentieren.

Wenn es doch ein iso sein soll, würde ich das imho trotzdem eher mit grub booten, im einfachsten Fall kann das so aussehen

Code: Alles auswählen

 menuentry "Livesystem" {
         search --no-floppy --label --set=root DATEISYSTEMLABEL
         loopback loop "/PFAD/LIVE.ISO"
         linux (loop)/xyz/vmlinuz
         initrd (loop)/xyz/initrd.img
 }

gegebenenfalls braucht der Kernel halt noch einige Optionen damit der das iso-Image findet oä

Gegen unbootbare Systeme hab ich früher einen manuell allein auf der ESP installierten grub (wie oben) mit einem ebenfalls auf der ESP abgelegten grml-iso kombiniert. So musste zum Start des Rettungssystems nur das FAT-Dateisystem der ESP in Ordnung sein. Aufgehört hab ich damit weil die grml-Entwicklung etwas zu stocken scheint... und weil ich iso-Images im Vergleich zu richtigen Installation eher unpraktisch finde.

edit:
Moment einmal
scientific hat geschrieben:[…]dieses ISO auf eine eigene Partition zu schreiben, welche dann sowohl von grub als auch refind eingelesen wird...[…]
Meinst du das Image als Datei auf eine formatierte Partition zu schreiben oder das iso-Image auf eine Partition zu "klonen"?
Ich muss zugeben, dass ich die gparted-Live-CD nicht besonders gut kenne - ich hab sie nur einmal gestartet und auf Anhieb nicht besonders gemocht, aber es gibt so viele Arten von Live-CDs und nicht alle können aus einem iso-Image oder von dem iso in Form einer Partition booten.

edit nummer2:
Das gparted-iso scheint grundsätzlich beides zu können, für grub gibt es sogar ein Beispiel

Code: Alles auswählen

    menuentry "Gparted live" {
      set isofile="/home/isos/gparted-live-0.5.2-9.iso"
      loopback loop $isofile
      linux (loop)/live/vmlinuz boot=live config union=overlay noswap noprompt vga=788 ip=frommedia toram=filesystem.squashfs findiso=$isofile
      initrd (loop)/live/initrd.img
    }
Quelle

Für refind müsstest du eventuell selbst einen Booteintrag erstellen - da bin ich mir aber noch nicht sicher wie man das am geschicktesten macht. Bis jetzt hab ich den Eindruck refind kann mit iso-Images nicht viel anfangen, dh man müsste ev. zumindest kernel und initrd aus dem Image herauskopieren.

scientific
Beiträge: 3022
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: refind und live-iso von Festplatte

Beitrag von scientific » 06.03.2017 12:05:50

Vielen Dank für die Infos! :)

Ja mein Ziel ist es, im Endeffekt ein Backup-Paket anbieten zu können, welches einen ähnlichen Komfort wie die Time-Machine von Apple, oder die System-Wiederherstellungspunkte von Windows bietet... nur halt noch um einen Tick besser :D

Das ganze sollte dann mit einem Hook im Installer die passende Struktur von Subvolumes erzeugen (oder beim nachinstallieren des Backup-Paketes... die Idee kam mir jetzt gerade...).
Wenn ein externer Datenträger angesteckt wird, wird dieser als Backup-Medium initialisiert und darauf das Iso des Rescue-Systems zusätzlich installiert. Und dafür bevorzuge ich eben ein ISO, welches unveränderbar für den User ist, und möglichst einfach sowohl ein Rollback auf der lokalen Platte als auch eine Systemwiederherstellung von der externen Platte erlaubt - wenn das lokale FS irgendwie kaputt gegangen ist. Oder alternativ noch eine Rettungsmöglichkeit bietet (btrfs-zero-log... z.B.)

gparted-live hab ich jetzt deshalb gewählt, weil es die einzige Live-CD war, die mir auf der Stelle gebootet hat, und die btrfs-progs und Kernel in aktueller Version bot...

Mittelfristig möcht ich mein eigenes LIVE-Rescue.iso erstellen und im Backup-Paket anbieten. :)
Ein Remastern der gparted-live-CD mit meinem Backupskript als Ausgangspunkt bietet sich kurzfristig an.

Vielleicht hab ich mal die Muse, doch noch C/C++ programmieren zu lernen... dann schreib ich ein natives EFI-Programm, mit dem ich die Systemwiederherstellung für den Benutzer abwickeln kann... Aber das ist mir für momentan zuviel Aufwand... Beim erstellen und Booten eines Live-Isos habe ich schon ein Wissensnetz in das ich leicht Neues einknüpfen kann. Beim Programmieren von C fehlt mir jegliche Grundlage...

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten