Ich habe die 13.2 installiert. Alles schön, das System macht auch snapshots laut snapper (obwohl ich die auf der Platte gerade nicht finde).Nun gibt es mit /etc/grub.d/80_suse_btrfs_snapshot, ein skript, das bei mir aber keinen Eintrag per grub.cfg im Menu produziert. Wie ist das gedacht, Komandozeile kann es doch eigentlich nicht sein? Muss ich das “scharf” schalten? Wie? Schon mal danke und schöne Weihnachten allerseits.
Wenn in /etc/default/grub die Zeile “SUSE_BTRFS_SNAPSHOT_BOOTING=true” steht, sollte grub2-mkconfig (/etc/grub.d/80_suse_btrfs_snapshot eigentlich) die entsprechenden Einträge in grub.cfg anlegen.
Normalerweise sollte das per default eingeschaltet sein, aber überprüfe das mal.
Natürlich musst du nach einer Änderung in /etc/default/grub “sudo grub2-mkconfig -o /boot/grub2/grub.cfg” aufrufen um die Änderung wirksam zu machen.
PS: die Snapshots sind in /.snapshots/…
Erstmal sorry, dass ich erst jetzt antworte. Ich hatte ein zu kompliziertes Passwort gesetzt (zu viele Sonderzeichen) und bin gestern nicht mehr in den Account gekommen, da das Zurücksetzen via Mail zu langsam ging. Auf dem Land mit UMTS-Stick ist das nicht immer prickelnd…
Ja, das hatt ich überschrieben, da ich meine alte /etc/default/grub von der 12.3 'rüberkopiert hatte. In der Sicherheitskopie, die ich aufgehoben hatte, war “SUSE_BTRFS_SNAPSHOT_BOOTING=true” drin. Ich habe es also kopiert – aber leider klappt das immer noch nicht. In /boot/grub2/grub.cfg steht:
### BEGIN /etc/grub.d/80_suse_btrfs_snapshot ###
if -f "/.snapshots/grub-snapshot.cfg" ]; then
source "/.snapshots/grub-snapshot.cfg"fi
### END /etc/grub.d/80_suse_btrfs_snapshot ###
Habe ich, s.o.
Hab’ ich mittlerweile auch gefunden :shame:.
P.S.: Aus irgendeinem Grunde löscht die Forensoftware jedes , ich habe den Code-Teil nochmal editiert, trotzdem wurde wieder alles “gefressen”, sorry. Dummerweise konnte ich dann dieses P.S. nicht einmal speichern, daher ein neues Posting :rolleyes:…
Hm, wenn das in /boot/grub2/grub.cfg ist, sollts ja eigentlich gehen.
Hast du keinen Menüeintrag “Start bootloader from a read-only snapshot”?
Bei mir ist der sogar da, obwohl ich neulich alle Snapshots gelöscht habe und momentan keiner vorhanden ist…
Dann überprüfe vielleicht mal ob die Datei /.snapshots/grub-snapshot.cfg existiert.
Ich weiß jetzt nicht wer die anlegt (snapper sollte das vermutlich machen), aber bei mir hat sie folgenden Inhalt:
if -z "$extra_cmdline" ]; then
submenu "Start bootloader from a read-only snapshot" {
if x$snapshot_found != xtrue ]; then
submenu "Not Found" { true; }
fi
}
fi
Vielleicht müsstest du aber nach der Änderung von /etc/default/grub auch nur einen neuen Snapshot anlegen, damit die Datei erzeugt wird…
…jedes , Carriage-Return, CR-LF, whatever. Mal sehen, ob auch hier das “Enter”, was ich zwischen “kleiner als” und “größer als” Zeichen gesetzt hatte, wieder weg ist .
Ich hab deinen Beitrag entsprechend geändert…
Man kann einen Beitrag nur bis 10 Minuten nach dem Posten ändern, weil er dann über das NNTP-Gateway synchronisiert wird.
Spätere Änderungen würden bei NNTP-Benutzern für Verwirrung sorgen, weil sie diese Änderungen nicht sehen.
Uups, da wars Du schneller, als ich mit meinen Versuchen doch noch eine Erklärung für mein mieses Layout im Posting abzugeben…
Nein, ist nicht vorhanden.I
Ist vorhanden, hat den selben Inhalt.Vielleicht müsstest du aber nach der Änderung von /etc/default/grub auch nur einen neuen Snapshot anlegen, damit die Datei erzeugt wird…[/QUOTE]Okay, mache ich, bis gleich.
Ich habe also einen Snapshot mit Snapper angelegt. Grub hat nach reboot trotzdem keinen Eintrag im Menu…
seufz
P.S.: Das Layout-Problem scheint am Firefox zu liegen, in Konqueror klappt’s besser.
Hm. Hast du auch das Paket grub2-snapper-plugin installiert?
Wenn das auch vorhanden ist, poste bitte vielleicht mal deine /etc/default/grub.
P.S.: Das Layout-Problem scheint am Firefox zu liegen, in Konqueror klappt’s besser.
Aber im Konqueror gehts nur mit WebKit… Mit KHTML bekommst du nicht mal einen WYSIWYG-Editor, und line feeds werden komplett ignoriert.
Mit Firefox sollte es aber eigentlich funktionieren. Mir ist sowas allerdings auch schon passiert, wenn aus irgendeinem Grund die Seite nicht vollständig geladen war. Ansonsten könnte ich mir nur vorstellen, dass das von irgendeinem installierten Plugin verursacht wird.
Ja, das grub2-snapper-plugin ist da.
Hier /etc/default/grub:
# Modified by YaST2. Last modification on So Dez 15 12:31:50 CET 2013# THIS FILE WILL BE PARTIALLY OVERWRITTEN by perl-Bootloader
# For the new kernel it try to figure out old parameters. In case we are not able to recognize it (e.g. change of flavor or strange install order ) it it use as fallback installation parameters from /etc/sysconfig/bootloader
# If you change this file, run 'grub2-mkconfig -o /boot/grub2/grub.cfg' afterwards to update
# /boot/grub2/grub.cfg.
GRUB_DISTRIBUTOR="openSUSE 13.2"
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=12
GRUB_CMDLINE_LINUX_DEFAULT=" video=1680x1050 resume=/dev/disk/by-id/ata-ST31000524AS_5VPDG6TZ-part2 splash noquiet showopts"
# kernel command line options for failsafe mode
GRUB_CMDLINE_LINUX_RECOVERY="showopts apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe"
GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM=0x01234567,0xfefefefe,0x89abcdef,0xefefefef
# Uncomment to disable graphical terminal (grub-pc only)
GRUB_TERMINAL=gfxterm
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=auto
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_LINUX_RECOVERY=true
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
# Skip 30_os-prober if you experienced very slow in probing them
# WARNING foregin OS menu entries will be lost if set true here
GRUB_DISABLE_OS_PROBER=false
# Set to 'y' for grub to be installed on an encrypted partition
GRUB_ENABLE_CRYPTODISK=n
GRUB_THEME=/boot/grub2/themes/openSUSE/theme.txt
GRUB_BACKGROUND=/boot/grub2/themes/openSUSE/background.png
SUSE_BTRFS_SNAPSHOT_BOOTING=true
Sagt Dir das was?
Das schaut ok aus.
Hm, dann weiß ich momentan leider auch nicht wirklich weiter.
Der Eintrag ist ja in der grub.cfg, also sollte er auch von grub2 angezeigt werden, egal ob das Booten von Snapshots jetzt funktioniert oder Snapshots vorhanden sind.
Ist das vielleicht ein Multiboot-System (mehrere Linux Betriebssysteme installiert)?
Bist du sicher dass auch wirklich der Grub2 von openSUSE 13.2 (mit der /boot/grub2/grub.cfg von 13.2) gestartet wird?
Probier vielleicht mal den Bootloader neu zu installieren, mit “sudo grub2-install /dev/sda” (falls sda deine Bootplatte ist), bzw. Aufrufen von YaST->System->Bootloader. Vielleicht wird die grub.cfg ja von woanders geladen… (nur eine Vermutung, ich kenne ja dein System nicht)
Also in der grub.cfg steht:
...
### BEGIN /etc/grub.d/80_suse_btrfs_snapshot ###
if -f "/.snapshots/grub-snapshot.cfg" ]; then
source "/.snapshots/grub-snapshot.cfg"
fi
### END /etc/grub.d/80_suse_btrfs_snapshot ###
...
Ja und ja. Ich habe nämlich den 30_os_prober mit chmod 644 abgeschaltet und ubuntu, mint, FreeBSD und die älteren Susen kommen in der Reihenfolge, die ich vorgegeben habe und mit den Icons, die ich ins System geschoben habe, daher bin ich mir hier wirklich sicher.
Erledigt. Er sagt allerdings “installing for i386-pc platform”. Dies ist ein AMD-64 System. Macht das Probleme? Ich boote dann mal…
…und wieder da. Keine Änderungen :(.
So, ich mache für heute Schluss und gehe noch mal an die frische Luft. Danke für Deine Hilfe. Ich wünsche Dir einen guten Heiligabend und schöne Weihnachtstage. Vielleicht hat ja jemand in der Zwischenzeit eine Inspiration ;), wir sehen uns dann hier.
Ja, eben.
Das fügt den Inhalt von /.snapshots/grub-snapshots.cfg ein falls es existiert, welches den Menüeintrag enthält.
Falls das nicht klappt, kann ja eigentlich nur noch das root Verzeichnis falsch gesetzt sein, sodass /.snapshots/grub-snapshots.cfg nicht gefunden wird…
Erledigt. Er sagt allerdings “installing for i386-pc platform”. Dies ist ein AMD-64 System. Macht das Probleme? Ich boote dann mal…
Nein, das ist normal.
grub2 gibts nur als i386-pc Version (zu diesem Zeitpunkt läuft ja noch kein 64bit Betriebssystem…), bzw. x86_64-efi für (U)EFI.
Das existiert, ich hatte den Inhalt ja schon gepostet, sicherheitshalber hier noch mal:
if -z "$extra_cmdline" ]; then
submenu "Start bootloader from a read-only snapshot" {
if x$snapshot_found != xtrue ]; then
submenu "Not Found" { true; }
fi
}
fi
Ich habe in der Shell die beiden if-Statements getestet, sie sind “true”, also müsste der Menu-Eintrag kommen. Tut er aber nicht. Wie kann ich kontrollieren worauf das root Verzeichnis gesetzt ist, bzw. wie setze ich es richtig? (Übrigens ergibt “echo $extra_cmdline” eine leere Zeile?!?).
Ah ja, danke, kapiert.
Ja, ist klar.
Aber scheinbar findet es grub2 nicht. Zumindest ist das der einzige Grund den ich mir noch vorstellen kann.
Ich habe in der Shell die beiden if-Statements getestet, sie sind “true”, also müsste der Menu-Eintrag kommen. Tut er aber nicht. Wie kann ich kontrollieren worauf das root Verzeichnis gesetzt ist, bzw. wie setze ich es richtig? (Übrigens ergibt “echo $extra_cmdline” eine leere Zeile?!?).
Das root Verzeichnis wird im Menüeintrag in grub.cfg mit dem Befehl “set root=xxx” gesetzt (in dem Fall im Header, für jeden Menüeintrag dann nochmal extra).
Ich gehe mal davon aus, dass du eine separate /boot Partition hast, richtig?
Dann wird root eben auf diese gesetzt, wodurch grub2 dann im Endeffekt vermutlich nach /boot/.snapshots/grub-snapshots.cfg sucht, was natürlich nicht existiert.
Das root anders zu setzen ist aber wohl auch keine gute Idee, wahrscheinlich findet grub2 dann seine Dateien nicht.
Kannst du mal probeweise /.snapshots/grub-snapshots.cfg nach /boot/.snapshots/grub-snapshots.cfg kopieren um zu sehen ob dann der Eintrag erscheint? Das Verzeichnis /boot/.snapshots/ musst du natürlich vorher selbst anlegen.
Wird zwar vermutlich auch nicht helfen, aber würde zumindest zeigen obs daran liegt (wäre dann natürlich auf jeden Fall einen Bugreport wert).
Bzgl. $extra_cmdline: Wenn du im laufenden System “echo $extra_cmdline” ist natürlich klar dass nur eine leere Zeile erscheint, da es hier nicht gesetzt ist.
Das ist eine grub2 Variable, die innerhalb des Boot-Menüs verwendet wird, sie hat absolut nichts mit dem laufenden Betriebssystem zu tun.
Soweit ich das verstehe, enthält sie den ausgewählten Snapshot der gebootet werden soll.
Ja, genau.
Ich denke, Du hast Recht. Davon lasse ich definitiv lieber die Finger,
Es hat insofern geholfen, als der Eintrag tatsächlich erscheint. Wenn man ihn anwählt, kommt aber ein Fehler ungefähr wie “No such file”. Grundsätzlich hast Du also den Fehler aufgespürt, Applaus.
Ich habe dann gedacht, dass grub auf die Verzeichnisse mit den Snapshots genau so zugreifen will und habe im /boot-Verzeichnis folgendes Kommando abgesetzt:
ln -s /.snapshots/ .snapshots
Ein “ls -l .snapshots” hat aber nur das .snapshots-Verzeichnis selber angezeigt, nicht seinen Inhalt. <Edit: Mist, ich habe das “/” am Ende vergessen. Das war der Grund… </edit>. Viel ärgerlicher ist, dass das so gar nicht funktioniert, noch nicht einmal ein Eintrag erscheint. Warum? Kopf-kratz
Danke für die Erklärung.
Tja, das hätte ich auch probiert.
Allerdings hab ich mir fast gedacht dass das nicht funktionieren wird. GRUB2 benutzt eben nicht das Betriebssystem um die Dateien zu laden, sondern hat seine eigenen Routinen. Vermutlich merkt es gar nicht dass der Symlink auf eine btrfs Partition zeigt, oder es unterstützt gar keine Symlinks (bzw. keine Symlinks auf andere Partitionen).
Tja, ich würd mal probieren, das root direkt vor dem Laden der /.snapshots/grub-snapshot.cfg in grub.cfg zu setzen (danach sollte eigtl. eh nichts mehr kommen das davon beeinträchtigt werden würde).
Also etwa so:
### BEGIN /etc/grub.d/80_suse_btrfs_snapshot ###
set root='hd0,msdos1'
if -f "/.snapshots/grub-snapshot.cfg" ]; then
source "/.snapshots/grub-snapshot.cfg"
fi
### END /etc/grub.d/80_suse_btrfs_snapshot ###
Das ‘hd0,msdos1’ musst du natürlich entsprechend anpassen. Dabei ist zu beachten dass die Festplatten beginnend mit 0 gezählt werden, die Partitionen aber beginnend mit 1! (bei grub1 war das auch 0)
‘hd0,msdos1’ ist also die erste Partition auf der ersten Festplatte.
(und falls du GPT-Partitionierung verwendest, musst du ‘gpt’ statt ‘msdos’ schreiben)
Falls du diesbezüglich Hilfe brauchst, poste bitte deine Partitionierung:
df -h
fdisk -l
Okay, wo ich das gerade lese, wie wäre es mit hardlinks? Zeigt allerdings von ext4 auf btrfs…
Hier meine Original-Datei (80_suse_btrfs_snapshot) permissions 755:
#! /bin/sh
set -e
set root='hd0,msdos1'
if "x${SUSE_BTRFS_SNAPSHOT_BOOTING}" = "xtrue" ] &&
"x${GRUB_FS}" = "xbtrfs" ] ; then
cat <<EOF
if -f "/.snapshots/grub-snapshot.cfg" ]; then
source "/.snapshots/grub-snapshot.cfg"
fi
EOF
fi
Und jetzt wird’s heiß, hier die grub.cfg nach(!) dem Lauf von “grub2-mkconfig”:
### BEGIN /etc/grub.d/80_suse_btrfs_snapshot ###
if -f "/.snapshots/grub-snapshot.cfg" ]; then
source "/.snapshots/grub-snapshot.cfg"
fi
### END /etc/grub.d/80_suse_btrfs_snapshot ###
Und nun das Sahnehäubchen: Wenn ich die grub.cfg selbst von Hand editiere und “set root=‘hd0,msdos1’” einfüge, funktioniert es auch nicht.
Passt schon, /boot ist /dev/sda1.