btrfs - Jedi-Ritter System - per script ein snapshot vor dem Update

xsid

Active member
Themenstarter
Registriert
29 Mai 2007
Beiträge
4.622
aus: https://thinkpad-forum.de/threads/2...ux-Distribution-gesucht?p=2209342#post2209342

was beim Einsatz von btrfs kein problem darstellt.
Einfach per script ein snapshot vor dem Update machen und man kann immer wieder zurück - auch über das Bootmenu von Grub 2 wenn man es 1x einrichtet.

Ich habe das ständige installieren / updaten der ganzen Distros satt, wenn sie alle paar Jahre auslaufen. Ein rolling release - in meinem Falle arch linux - mit ausgewählter Software ist für mich die beste Wahl.
Ich kann nur jedem Linux-Interssierten mal empfehlen, dem Nick von unicks.eu mal zuzuhören - die Playlist "arch my way" war hier für mich sehr zielführend.

Hallo GI-Joe,

Du schreibst "man kann immer wieder zurück - auch über das Bootmenu von Grub 2 wenn man es 1x einrichtet.", wie hast Du das eingerichtet?

Kennst Du auch timeshift?

https://github.com/teejee2008/timeshift/wiki/Restoring-Snapshots

MfG
xsid

###########################################################################################################
Hier wird manchmal angepasst!
6. Mai. 2020

Siehe Fehler: https://thinkpad-forum.de/threads/2...r-dem-Update?p=2236072&viewfull=1#post2236072 06.05.2020

Konzeptübersicht

8ejBF0O.jpg


@ ist das „top-level subvolume“, also die Wurzel eines btrfs-Dateisystems, hat immer die ID 5.

Kurzkurzanleitung, GI-Joe, Teilparts unkonventionell, #24

https://thinkpad-forum.de/threads/2...ift-Nov-2019?p=2210895&viewfull=1#post2210895

Kurzkurzanleitung, GI-Joe, Version 2, #95


https://thinkpad-forum.de/threads/2...System-11-19?p=2211720&viewfull=1#post2211720

Kernel am Anfang kopieren, auch für Abgleich:

Code:
[root@arch boot]# cp initramfs-linux.img initramfs-linux-stable.img
[root@arch boot]# cp initramfs-linux.img initramfs-linux-oldstable.img
[root@arch boot]# cp vmlinuz-linux vmlinuz-linux-stable
[root@arch boot]# cp vmlinuz-linux vmlinuz-linux-oldstable

Code:
sudo cp /boot/vmlinuz-linux-lts /boot/vmlinuz-linux-lts-stable
sudo cp /boot/vmlinuz-linux-lts /boot/vmlinuz-linux-lts-oldstable
sudo cp /boot/initramfs-linux-lts.img /boot/initramfs-linux-lts-stable.img
sudo cp /boot/initramfs-linux-lts.img /boot/initramfs-linux-lts-oldstable.img


4 unterschiedliche /etc/fstab
hier sind noch Fehler enthalten, Berichtigung siehe ---> https://thinkpad-forum.de/threads/2...ate-Nov-2019?p=2213444&viewfull=1#post2213444

https://nopaste.linux-dev.org/?1277211

Händisch angepasste: /boot/grub/grub.cfg [beachte! rootflags=subvol=@snapshots............]

https://nopaste.linux-dev.org/?1277194

Meine /etc/grub.d/40_custom

https://nopaste.linux-dev.org/?1279542


Anpassung von grub [ https://www.gnu.org/software/grub/manual/grub/grub.html ]

Code:
chmod 644 /etc/grub.d/10_linux
cp /etc/grub.d/10_linux /etc/grub.d/disabled_10_linux
chmod 644 /etc/grub.d/20_linux_xen
cp /etc/grub.d/20_linux_xen /etc/grub.d/disabled_20_linux_xen
chmod 644 /etc/grub.d/30_os-prober
cp /etc/grub.d/30_os-prober /etc/grub.d/disabled_30_os-prober
cp /boot/grub/grub.cfg /boot/grub/grub.cfg.old
grub-mkconfig -o /boot/grub/grub.cfg
systemctl reboot

So sieht Grub dann aus:

DFPqtpD.jpg


submenu 'Advanced options for Arch Linux'

acRXrKi.jpg




Handwerkszeug, Script, erfolgreich angewandt:


https://www.dropbox.com/s/ju13bjbw09mpzaq/update.sh?dl=0

https://nopaste.linux-dev.org/?1277171

Gespeichert in: ~/.scripte/

Code:
sudo chmod 750  update.sh


Erweiterte Scripte von GI-Joe mit LTS-Kernel, reflector und pikaur aus den AUR:

(Siehe Posting #95)
Scripte GI-Joe, vom 8. Dezember 2019 ...

snapshot+systemupdate.sh https://pastebin.com/M8F2pSu2

rollback_stable_nach_testing.sh https://pastebin.com/uRNvfFuw

rollback_oldstable_nach_stable_und_testing.sh https://pastebin.com/iBmjx8GY

Zur einwandfreien Funktion der Scripte muss pacman-contrib und reflector installiert sein:
Code:
pacman -S pacman-contrib reflector

chmod ist auch erforderlich:
Code:
sudo chmod 750 ..............

- abspeichern in ~/.scripte/ oder /usr/local/bin oder wo man möchte

chmod
http://www.onlineconversion.com/html_chmod_calculator.htm

Die drei Scripte von GI-Joe funktionieren einwandfrei, getestet am 11. Dezember 2019.
 
Zuletzt bearbeitet:
Code:
sudo ./snapshot+systemupdate.sh
Keine Updates vorhanden - ENDE !
ja, wenn keine Updates notwendig/vorhanden sind, läuft das Script auch nicht - so soll es sein !


zu Deiner /etc/fstab:
ich hatte hier in diesem Posting geschrieben, wie Deine /etc/fstab aussehen sollte aber Du hast einiges geändert.
space_cache habe ich nicht in V2 aus gutem Grund. Du hast es jetzt aber und solltest dies im Nachhinein auch NICHT ÄNDERN !


Aber ändere mal diesen Eintrag ...
Code:
[COLOR=#000000]LABEL=ROOT              /btrfs          btrfs           rw,noatime,compress=lzo,ssd,space_cache=v2,subvol=/       0 0[/COLOR]
nach ......
Code:
LABEL=ROOT      /btrfs     btrfs        rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=5    0  0





- - - Beitrag zusammengeführt - - -

und ändere mal vor allem:
Code:
LABEL=ROOT              /               btrfs           rw,noatime,compress=lzo,ssd,space_cache=v2,subvol=/@,subvol=@snapshots/TESTING    0 0
nach ....
Code:
LABEL=ROOT              /               btrfs           rw,noatime,compress=lzo,ssd,space_cache=v2,subvol=@snapshots/TESTING    0 0
 
Zuletzt bearbeitet:
"space_cache habe ich nicht in V2 aus gutem Grund"

Der Grund ist? Ich hatte es vom Youtuber übernommern.

##############################
jetzt TESTING gebootet

Prüfung mit

Code:
 mount | grep subvol
/dev/sda2 on / type btrfs (rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=277,subvol=/@snapshots/TESTING)

16:13h geänderte "nano /etc/fstab"

Code:
cat /etc/fstab
# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda2 UUID=c4ee08de-80e9-4c43-934c-bc5afdcf6297
LABEL=ROOT              /               btrfs           rw,noatime,compress=lzo,ssd,space_cache=v2,subvol=@snapshots/TESTING    0 0

# /dev/sda1 UUID=d4076e51-e674-4a9d-b0a8-c4e198aff7fe
LABEL=BOOT              /boot           ext4            rw,relatime     0 2

# /dev/sda2 UUID=c4ee08de-80e9-4c43-934c-bc5afdcf6297
LABEL=ROOT              /home           btrfs           rw,noatime,compress=lzo,ssd,space_cache=v2,subvol=@home 0 0

# /dev/sda2 UUID=c4ee08de-80e9-4c43-934c-bc5afdcf6297
LABEL=ROOT              /var/cache/pacman/pkg   btrfs           rw,noatime,compress=lzo,ssd,space_cache=v2,subvol=@pkg  0 0

# /dev/sda2 UUID=c4ee08de-80e9-4c43-934c-bc5afdcf6297
LABEL=ROOT              /.snapshots     btrfs           rw,noatime,compress=lzo,ssd,space_cache=v2,subvol=@snapshots    0 0

# /dev/sda2 UUID=c4ee08de-80e9-4c43-934c-bc5afdcf6297
LABEL=ROOT              /btrfs          btrfs           rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=5   0 0

# /dev/sda3 UUID=cdd9ff7a-9dc6-4c29-bca7-78dd4840eb29
LABEL=SWAP              none            swap            defaults        0 0

Neu booten in TESTING

Code:
mount | grep subvol
/dev/sda2 on / type btrfs (rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=277,subvol=/@snapshots/TESTING)

Und nun?
 
Zuletzt bearbeitet:
neuboot in TESTING

Code:
mount | grep subvol
/dev/sda2 on / type btrfs (rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=277,subvol=/@snapshots/TESTING)
Und nun?
bist Du fertig :)

TESTING ist Dein Arbeitssystem und mit dem Script snapshot+systemupdate.sh updatest Du TESTING.

deine Fallbacks sind STABLE und ggf. OLDSTABLE die Du nur booten (und ggf. rollbacken) musst, wenn beim Update von TESTING etwas schief geht.




 
pacman -Syu sagt:

Code:
 pacman -Syu
:: Synchronisiere Paketdatenbanken...
 core ist aktuell
 extra ist aktuell
 community                                            4,7 MiB   308 KiB/s 00:16 [##############################################] 100%
:: Starte vollständige Systemaktualisierung...
Löse Abhängigkeiten auf...
Suche nach in Konflikt stehenden Paketen...

Pakete (1) alsa-lib-1.2.1.2-1

Gesamtgröße der installierten Pakete:  1,49 MiB
Größendifferenz der Aktualisierung:  0,01 MiB

:: Installation fortsetzen? [J/n] n

Ich habe nichts installiert, sondern mit n, wie nein geantwortet.

Das snapshot+systemupdate.sh sagt:

Code:
 ./snapshot+systemupdate.sh 
Keine Updates vorhanden - ENDE !

Warum installiert das snapshot+systemupdate.sh Script nicht alsa-lib-1.2.1.2-1?
 
Zuletzt bearbeitet:
mache jetzt noch 2x ein update mit ./snapshot+systemupdate.sh , damit Deine gemachte Änderungen an deiner TESTING - fstab in die anderen Snapshots übernommen werden.

ändere dazu ggf. die Zeile 23 von in die beiden Zeilen

# if $CHECKUPDATES ; then
if true ; then
 
Aus www.ubuntusers.de wiki

Die folgenden Optionen dürfen bei einem SSD-Laufwerk nicht verwendet werden. inode_cache und space_cache sind nur sinnvoll als Ergänzung der Optionen in der /etc/fstab bzw. beim Mounten im Terminal [1]. Die Maßnahme ist erst (fehlerfrei) ab Kernel 3.0.0-xx anwendbar.

War das dein Grund?

Code:
# if $CHECKUPDATES ; then
if true ; then

Was ist damit genau gemeint, bei mir sieht das Script snapshot+systemupdate.sh in Zeile 23 anders aus?
 
Zuletzt bearbeitet:
Funktioniert jetzt:

Code:
[root@arch .scripte]# ./snapshot+systemupdate.sh
Keine Updates vorhanden - ENDE !
[root@arch .scripte]# pacman -Syu
:: Synchronisiere Paketdatenbanken...
 core ist aktuell
 extra ist aktuell
 community ist aktuell
:: Starte vollständige Systemaktualisierung...
Löse Abhängigkeiten auf...
Suche nach in Konflikt stehenden Paketen...

Pakete (1) alsa-lib-1.2.1.2-1

Gesamtgröße der installierten Pakete:  1,49 MiB
Größendifferenz der Aktualisierung:  0,01 MiB

:: Installation fortsetzen? [J/n] n
[root@arch .scripte]# checkupdates
bash: checkupdates: Kommando nicht gefunden.
[root@arch .scripte]# pacman -S pacman-contrib
Löse Abhängigkeiten auf...
Suche nach in Konflikt stehenden Paketen...

Pakete (1) pacman-contrib-1.2.0-3

Gesamtgröße der installierten Pakete:  0,10 MiB

:: Installation fortsetzen? [J/n] j
(1/1) Prüfe Schlüssel im Schlüsselring                                          [##############################################] 100%
(1/1) Überprüfe Paket-Integrität                                                [##############################################] 100%
(1/1) Lade Paket-Dateien                                                        [##############################################] 100%
(1/1) Prüfe auf Dateikonflikte                                                  [##############################################] 100%
(1/1) Überprüfe verfügbaren Festplattenspeicher                                 [##############################################] 100%
:: Verarbeite Paketänderungen...
(1/1) Installiere pacman-contrib                                                [##############################################] 100%
Optionale Abhängigkeiten für pacman-contrib
    mlocate: pacdiff
    findutils: pacdiff [Installiert]
:: Starte post-transaction hooks...
(1/2) Reloading system manager configuration...
(2/2) Arming ConditionNeedsUpdate...
[root@arch .scripte]# ./snapshot+systemupdate.sh
Delete subvolume (no-commit): '/.snapshots/OLDSTABLE'
Create a snapshot of '/' in '/.snapshots/STABLE'
sudo: /usr/bin/reflector: Befehl nicht gefunden
:: Synchronisiere Paketdatenbanken...
 core ist aktuell
 extra ist aktuell
 community ist aktuell
:: Starte vollständige Systemaktualisierung...
Löse Abhängigkeiten auf...
Suche nach in Konflikt stehenden Paketen...

Pakete (1) alsa-lib-1.2.1.2-1

Gesamtgröße der installierten Pakete:  1,49 MiB
Größendifferenz der Aktualisierung:  0,01 MiB

:: Installation fortsetzen? [J/n]

Jetzt J, wie ja und ein Rollback zum üben,

Vor dem Rollback in STABLE boot, dann als root "./rollback_stable_nach_testing.sh "

Den Hinweis habe ich bis jetzt nicht übernommen ->>
Code:
# if $CHECKUPDATES ; then
if true ; then
 
Zuletzt bearbeitet:
Was ist damit genau gemeint, bei mir sieht das Script snapshot+systemupdate.sh in Zeile 23 anders aus?
ändere einfach die if-Zeile mit CHECKUPDATE ab, indem du sie mit # vorweg auskommentierst und füge als nächste zeile ein "if true ; then" ein.

das heißt, dass die Bedingung für die IF-Schleife immer WAHR ist und die Schleife abgearbeitetet wird (also CHECKUPDATES ignoriert wird).

- - - Beitrag zusammengeführt - - -

Jetzt J, wie ja und ein Rollback zum üben,
NEIN ! Führe das Script snapshot+systemupdate.sh 2x aus, damit deine Änderungen von der fstab nach STABLE UND OLDSTABLE übernommen werden !
 
###################
In TESTING

2 x Script snapshot+systemupdate.sh ausgeführt

##############
In STABLE gebootet

Code:
[root@arch .scripte]# dir
rollback_oldstable_nach_stable_und_testing.sh  rollback_stable_nach_testing.sh  snapshot+systemupdate.sh  update.sh

[root@arch .scripte]# ./rollback_stable_nach_testing.sh

Delete subvolume (no-commit): '/.snapshots/TESTING'
Create a snapshot of '/' in '/.snapshots/TESTING'
Done, had to relocate 0 out of 7 chunks
[root@arch .scripte]#

###############
In TESTING gebootet

und gleich Updates (pacman -Syu) nochmals machen müssen, der Rollback war also erfolgreich.

Der Rollback ging rasend superschnell, so schnell kann ich gar nicht denken.

#################

snapshot+systemupdate.sh

ändere einfach die if-Zeile mit CHECKUPDATE ab, indem du sie mit # vorweg auskommentierst und füge als nächste zeile ein "if true ; then" ein.

das heißt, dass die Bedingung für die IF-Schleife immer WAHR ist und die Schleife abgearbeitetet wird (also CHECKUPDATES ignoriert wird).

Die geänderte snapshot+systemupdate.sh

https://pastebin.com/Xc1pYXtw

Empfehlung von GI-Joe eingearbeitet.


###############
@GI-Joe

Wie kann ich jetzt mir mal deine Fehlermeldungen aus den Scripten im Betrieb anzeigen lassen?

Seit wann beschäftigst Du dich mit btrfs?

Anfänglich sah es sooooo einfach aus.
Es hat so lässig angefangen.
btrfs bietet irre viele Möglichkeiten.
 
Zuletzt bearbeitet:
Die geänderte snapshot+systemupdate.sh
https://pastebin.com/Xc1pYXtw
Empfehlung von GI-Joe eingearbeitet.
man sollte das script generell immer MIT "checkupdates" verwenden, denn ohne anstehende Updates sind auch keine snapshot´s zu STABLE und OLDSTABLE nötig.

also besser das script snapshot+systemupdate.sh ändern zu :
if $CHECKUPDATES ; then
#if true ; then


Wie kann ich jetzt mir mal deine Fehlermeldungen aus den Scripten im Betrieb anzeigen lassen?

indem Du das Script im Terminal ausführst, da siehst Du alle Meldungen.
oder was meinst Du mit "MEINE Fehlermeldungen" ?

Seit wann beschäftigst Du dich mit btrfs?
seit ca. 4 Monaten
Aber seit 15 Jahren beschäftige ich mich mit Linux und shell-scripting .
Anfänglich sah es sooooo einfach aus.
mit ausreichend Hintergrundwissen ist es auch einfach. Man muß nur die Idee umsetzen und ggf. auf seine Wünsche anpassen.
btrfs bietet irre viele Möglichkeiten.
ja, das hab ich mir bei genauerer Betrachtung auch so gedacht und hab mich dafür entschieden
Ich nutze auch für Backup-Zwecke "btrfs send | btrfs receive" als superschnelles inkrementelles Backup auf eine mit btrfs - formatierte externe Festplatte.
Die Idee kam auch von Nick und ich fand und finde sie gut ...



- - - Beitrag zusammengeführt - - -

Der Rollback ging rasend superschnell, so schnell kann ich gar nicht denken.
tja, genau DAS ist ein großer Vorteil eines CopyOnWrite-Filesystems :)
 
Zuletzt bearbeitet:
indem Du das Script im Terminal ausführst, da siehst Du alle Meldungen.
oder was meinst Du mit "MEINE Fehlermeldungen" ?

Hallo GI-Joe,

boote ich das System in STABLE und führe das snapshot+systemupdate.sh im QTerminal von LXQt aus, müßte mir folgende Warnung angezeigt werden
System ist nicht mit TESTING hochgefahren !", diese Warnung erhalte ich nicht.


Code:
  $ECHO "System ist nicht mit TESTING hochgefahren !"
        $ECHO "ENDE !"

Fehlt mir evtl. noch irgendein Paket?

MfG

xsid
 
Zuletzt bearbeitet:
Hallo GI-Joe,
boote ich das System in STABLE und führe das snapshot+systemupdate.sh im QTerminal von LXQt aus ....
Kannst Du lesen ?
dann lese und verstehe das, was ich geschrieben hab ....

an sonsten lese das script und teste und passe es auf Deine Bedürfnisse an.
Und falls Du was nicht verstehst im Script, kaufe Dir ein Buch über shell scripting und lerne ....
.... dann kannst Du auch selbst Vieles alleine umsetzen

Das kann und will ich hier nicht übernehmen - dafür hab ich keine Zeit und das würde hier den Rahmen sprengen ....

- - - Beitrag zusammengeführt - - -

System ist nicht mit TESTING hochgefahren !", diese Warnung erhalte ich nicht.
stimmt, hab´ s gerade getestet.... und gleich mal bugfixed ...

ändere im Script :
Code:
if [ -z $"{bootstate}" ]
nach
Code:
if [ -z "$bootstate" ]

kannst Du auch gleich noch in allen rollback-scripten machen ;)
Hab mal alle Scripte neu verklinkt ...




snapshot+systemupdate.sh https://pastebin.com/eH32LVu6
rollback_stable_nach_testing.sh https://pastebin.com/hbL8cFsN
rollback_oldstable_nach_stable_und_testing.sh https://pastebin.com/aayzCqVf
 
Hab mal alle Scripte neu verlinkt ...

snapshot+systemupdate.sh https://pastebin.com/eH32LVu6
rollback_stable_nach_testing.sh https://pastebin.com/hbL8cFsN
rollback_oldstable_nach_stable_und_testing.sh https://pastebin.com/aayzCqVf

Hallo GI-Joe,

jetzt sind noch weitere Verbesserungen eingebaut, LTS-Kernel, reflector und pikaur aus dem AUR,
bzw. ich habe es zuvor gar nicht richtig gesehen.
So weit hatte ich mich mit deinen Scripten noch nicht beschäftigt.
Mal sehen wie ich das händel.

AUR bei Arch ist wieder ein neues Thema.

Jetzt sind wir da, wo der Youtuber schon lange ausgestiegen ist.

MfG

xsid

- - - Beitrag zusammengeführt - - -

Den LTS-Kernel und reflector hab ich installiert, pikaur mit "#" in den GI-Joe Scripten abgeschaltet.

Mit dem "botstate Bug" war ich ziemlich lange beschäftigt, den Fehler habe ich bei mir gesucht.

Jetzt funktioniert es aber:

STABLE gebootet:

Code:
[root@arch .scripte]# ./snapshot+systemupdate.sh 



System ist nicht mit TESTING hochgefahren !
ENDE !



System ist nicht mit TESTING hochgefahren ! <---- das wollte ich sehen.

Prüfung der weiteren Scripte ---->

TESTING gebootet:

Code:
[root@arch .scripte]# ./rollback_stable_nach_testing.sh



System ist nicht mit STABLE hochgefahren !
ENDE !
[root@arch .scripte]#

TESTING gebootet:

Code:
[root@arch .scripte]# ./rollback_oldstable_nach_stable_und_testing.sh



System ist nicht mit OLDSTABLE hochgefahren !
ENDE !
[root@arch .scripte]#

- - - Beitrag zusammengeführt - - -

Noch ein Problem, jetzt wollte ich den LTS Kernel in meine /etc/grub.d/40_custom eintragen und bei Grub anmelden.

Code:
[root@arch .scripte]# sudo grub-mkconfig -o /boot/grub/grub.cfg                                                                                                                      
Generating grub configuration file ...                                                                                                                        
Fehler: Hauptspeicher erschöpft.                                                                                                                              
Fehler: syntax error.                                                                                                                                         
Fehler: Incorrect command.                                                                                                                                    
Fehler: syntax error.                                                                                                                                         
Syntaxfehler in Zeile 209                                                                                                                                     
Syntax errors are detected in generated GRUB config file.                                                                                                     
Ensure that there are no errors in /etc/default/grub                                                                                                          
and /etc/grub.d/* files or please file a bug report with                                                                                                      
/boot/grub/grub.cfg.new file attached.                                                                                                                        
[root@arch .scripte]#

Händisch kann ich mit Hilfe des Grub Menüs mit "e" meinen LTS Kernel booten.

Code:
 uname -r
4.19.86-1-lts

Meine Kernel:
Code:
ls /boot
grub                              initramfs-linux-stable.img
initramfs-linux-fallback.img      lost+found
initramfs-linux.img               vmlinuz-linux
initramfs-linux-lts-fallback.img  vmlinuz-linux-lts
initramfs-linux-lts.img           vmlinuz-linux-oldstable
initramfs-linux-oldstable.img     vmlinuz-linux-stable

Das ist meine nicht funktionierende /etc/grub.d/40_custom
https://pastebin.com/zJKm7D4v

Ich habe nur angehängt: --->
Code:
 menuentry 'Arch Linux LTS' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-c4ee08de-80e9-4c43-934c-bc5afdcf6297>
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_msdos
                insmod ext2
                set root='hd0,msdos1'
                if [ x$feature_platform_search_hint = xy ]; then
                search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos1' --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremet>
                else
                search --no-floppy --fs-uuid --set=root d4076e51-e674-4a9d-b0a8-c4e198aff7fe
                fi
                echo    'Loading Linux linux-lts ...'
                linux   /vmlinuz-linux-lts root=UUID=c4ee08de-80e9-4c43-934c-bc5afdcf6297 rw rootflags=subvol=@snapshots/TESTING loglevel=3 quiet
                echo    'Loading initial ramdisk ...'
                initrd  /initramfs-linux-lts.img
                }


Die /boot/grub/grub.cfg.new
https://pastebin.com/tx4z9LmP

Den "Syntaxfehler in Zeile 209" kann ich nicht erkennen. :-(




Das folgende kann ich leider nicht umsetzen:

https://bbs.archlinux.org/viewtopic.php?id=245307

https://bbs.archlinux.org/viewtopic.php?id=236751

Die angebotenen Lösungen verstehe ich nicht, zudem habe ich ein Spezialsystem.

Mich holt vermutlich wieder ein, die Eingabe von:
Code:
chmod 644 /etc/grub.d/10_linux
cp /etc/grub.d/10_linux /etc/grub.d/disabled_10_linux
chmod 644 /etc/grub.d/20_linux_xen
cp /etc/grub.d/20_linux_xen /etc/grub.d/disabled_20_linux_xen
chmod 644 /etc/grub.d/30_os-prober
cp /etc/grub.d/30_os-prober /etc/grub.d/disabled_30_os-prober
cp /boot/grub/grub.cfg /boot/grub/grub.cfg.old
grub-mkconfig -o /boot/grub/grub.cfg

Wie löse ich das Problem?





@GI-Joe
Gi-Joe Beispiel /etc/grub.d/40_custom

https://pastebin.com/dmN9C5y8

Wie hast Du den LTS Kernel eingebunden?
 
Zuletzt bearbeitet:
Wie löse ich das Problem?
Du machst das genau so wie mit den normalen Kernels/initramfs-files und grub boot-Einträgen

Code:
sudo cp /boot/vmlinuz-linux-lts /boot/vmlinuz-linux-lts-stable
sudo cp /boot/vmlinuz-linux-lts /boot/vmlinuz-linux-lts-oldstable
sudo cp /boot/initramfs-linux-lts.img /boot/initramfs-linux-lts-stable.img
sudo cp /boot/initramfs-linux-lts.img /boot/initramfs-linux-lts-oldstable.img

und dann erweiterst Du die /etc/grub.d/40_custom um die 3 LTS - Einträge (nimm aus deiner funktionierenden die Menueinträge von TESTING, STABLE und OLDSTABLE, kopiere sie und ändere in den kopierten Menueinträgen dann nur die Dateinamen in die LTS-Versionen von deinen Kernel und initramfs - files.

Am Ende hast Du in /etc/grub.d/40_custom 6 Einträge.
3x für normal-Kernel und 3x für LTS-Kernel.

siehe auch meine /etc/grub.d/40_custom als Leitfaden.

Ich habe im Hauptmenu meiner 40_custom nur TESTING und LTS-Testing drin.
Der Rest ist im Submenu :)

und wenn das booten aller normalen und LTS-Kernel funzt, dann nur noch diese Scripte verwenden zum Update/Rollback ....

snapshot+systemupdate.sh https://pastebin.com/eH32LVu6
rollback_stable_nach_testing.sh https://pastebin.com/hbL8cFsN
rollback_oldstable_nach_stable_und_testing.sh https://pastebin.com/aayzCqVf
 
Zuletzt bearbeitet:
Der Rest ist im Submenu :)

Du zauberst immer wieder etwas aus dem Hut.
Ich denke immer jetzt bin ich fertig, 2 Sekunden später verdrehe ich wieder Augen.

Wo ist dein Submenu, was steht da drin, wie wird das konfiguriert?

Hast Du nicht mal Lust dein System hier https://wiki.archlinux.org/ im Wiki darzustellen?
Dann gibt es mehr Mitdenker.
Mitleser sind hier Forum auch genug.
An dem System haben bestimmt so einige Interesse.

MfG

xsid

- - - Beitrag zusammengeführt - - -

2. Dez. 2019 mit LTS - Meine /etc/grub/40_custom

https://pastebin.com/br9mySma

Meine 3 LTS Versionen booten jetzt einwandfrei (TESTING, STABLE und OLSTABE).

Beispielhaft der 3 Funtionstest hier dargestellt:

Code:
[root@arch ~]# uname -r
4.19.86-1-lts
[root@arch ~]# mount | grep subvol
/dev/sda2 on / type btrfs (rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=337,subvol=/@snapshots/OLDSTABLE)
/dev/sda2 on /btrfs type btrfs (rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=5,subvol=/)

Alles ok also.

Das Script habe 2 mal ausgeführt um den aktuellen Stand zu OLDSTABLE durchzuschieben:

Code:
./snapshot+systemupdate.sh

Die Scripte darf ich nur als "sudo su" und im gebooteten TESTING durchführen?

Welche Vorteile habe ich nun von dem LTS Kernel?
Ansonsten hatte, habe ich doch schon zwei Kernel-Versioen von Linux.

Wie optimiere ich meine btrfs Bootoptionen für eine Virtualbox VM?

Code:
(rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=337,subvol=/@snapshots)/TESTING

Das System der vielen Möglichkeiten habe ich jetzt, ob ich das beherrsche, darüber denke ich nach.
"reflector" gefällt mir.

@GI-Joe
Code:
       initrd  /initramfs-linux-oldstable.img
}
}

Warum has Du 2 mal "}" am Ende deiner /etc/grub.d/40_custom ?




MfG

xsid

- - - Beitrag zusammengeführt - - -

Du Desktop Buttons für die Frau fehlen auch noch.

Wie mache ich das?
Die Frau wird ja nicht der "echte root" sein.
 
Zuletzt bearbeitet:
Warum has Du 2 mal "}" am Ende deiner /etc/grub.d/40_custom ?
das erste } ist für den letzten Menueintrag, das 2. } schließt das Submenu

submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-c84c4a98-015c-4efa-afd8-937734c104d2' {
hier kommt ein Menueintrag rein .... {
}

hier kommt noch ein ein Menueintrag rein .... {
}

hier kommen beliebig viele weitere Menueinträge rein .... {
}
}

Schaue mal in meine 40_custom an Zeite 41, da habe ich ein Submenu erstellt. Alles was dann zwischen den Submenu-Klammern ist {} befindet sich in Grub dann im Submenu.

Welche Vorteile habe ich nun von dem LTS Kernel?
LTS ist IMHO more Stable als der normale (Arch-Testing)-Kernel ;)

Die Scripte darf ich nur als "sudo su" und im gebooteten TESTING durchführen?
NEIN. Immer als User ohne root-Rechte ausführen ! Die Scripte fordern von sich aus das sudo-password an ! Der User muß natürlich sudo-berechtigt (also in der Gruppe "wheel") sein ;)

Hast Du nicht mal Lust dein System hier https://wiki.archlinux.org/ im Wiki darzustellen?
Hab leider keine Zeit dafür ....

- - - Beitrag zusammengeführt - - -

Die Scripte darf ich nur als "sudo su" und im gebooteten TESTING durchführen?

snapshot+systemupdate.sh ---> immer in TESTING-Umgebung ausführen !
rollback_stable_nach_testing.sh ---> immer in STABLE-Umgebung ausführen !
rollback_oldstable_nach_stable_und_testing.sh ---> immer in OLDSTABLE-Umgebung ausführen !

Aber die initialen if - Abfragen in den Scripten verhindern, dass die Scripte in den falschen Umgebungen ausgeführt werden ! ($bootstate)
Es kann also im Zweifelsfalle nix schiefgehen ..... ;)

- - - Beitrag zusammengeführt - - -

Diese Abfragen waren mir sehr wichtig aber wurden von Nick in seinen Scripten weg gelassen.
Mit diesen Abfragen ist Falschbedienung ausgeschlossen, was sonst fatale Folgen hätte - und das will man ja nicht ;)
 
Zuletzt bearbeitet:
*puh, ich habe gespielt und es kaputtgespielt

Mich interessierte /@, wollte sehen was man damit so machen kann.
Hatte /@ gebootet, ein bischen mit Grub gebastelt.
Auf einmal konnte ich nur noch in /@
Ach herje dachte ich und niemand kann so recht helfen.

Die Lösung:
Händisch habe ich im Grubterminal das Subvolume auf /@snapshots/TESTING erweitert.
Dann konnte ich mit F10 @TESTING booten.

Nur wie komme ich an mein funktionierendes Grubmenü?

Code:
chmod 644 /etc/grub.d/10_linux
cp /etc/grub.d/10_linux /etc/grub.d/disabled_10_linux
chmod 644 /etc/grub.d/20_linux_xen
cp /etc/grub.d/20_linux_xen /etc/grub.d/disabled_20_linux_xen
chmod 644 /etc/grub.d/30_os-prober
cp /etc/grub.d/30_os-prober /etc/grub.d/disabled_30_os-prober
cp /boot/grub/grub.cfg /boot/grub/grub.cfg.old
grub-mkconfig -o /boot/grub/grub.cfg
systemctl reboot

Anders hätte ich das Problem nicht lösen können, weil alle System die gleiche BOOT, /dev/sda1 nutzen.

Grund der Aktion, der Fastkaputtbastelarbeiten ist Clonezilla-Isoboot,

https://thinkpad-forum.de/threads/1...3-ext4-ntfs-Das-Optimum?p=2211205#post2211205

Das folgende menuentry (/etc/grub.d/40_custom) findet den Clonzilla Kernel nicht.

Code:
menuentry "clonezilla-live-2.6.4-10-amd64.iso" {
  loopback loop /boot/iso/clonezilla-live-2.6.4-10-amd64.iso
  linux (loop)/live/vmlinuz findiso=/boot/iso/clonezilla-live-2.6.4-10-amd64.iso toram=filesystem.squashfs boot=live union=overlay username=user config components noswap edd=on nomodeset noprompt nosplash locales=de_DE.UTF-8 keyboard-layouts=de
 ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch=no gfxpayload=1024x768x16,1024x768 ip=frommedia i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.blacklist=yes
  initrd (loop)/live/initrd.img
}

Auf anderen System funktioniert das menuentry einwandfrei.

Anleitung:

https://help.ubuntu.com/community/Grub2/ISOBoot#GRUB_Terminal

GRUB Terminal

GRUB 2's terminal operations permit exploring the contents of partitions and ISO images. The following GRUB commands may be helpful if an error message is generated after attempting to boot an ISO menuentry:

ls


Display partitions known to GRUB.

ls (hdX,Y)/


Display the contents of the / folder on /dev/sdXY

To mount an ISO via the GRUB terminal, determine the location/path of the ISO file, then:

loopback loop (hdX,Y)/<path>/<filename.iso>


Example: loopback loop (hd0,5)/my_isos/ubuntu-12.04-desktop-amd64.iso

Once mounted via the above command, the ISO can be inspected using the ls command. The ISO will be mounted on "(loop)".

ls (loop)/

ls (loop)/casper On an Ubuntu ISO, this should display vmlinuz and initrd.img, among other files.

Meine Versuche im Grub-Terminal:

oTJW92J.jpg



Wie bekomme ich ein Isoboot, hier Clonezilla mit btrfs hin?

Direkt mit der Der CD funktioniert Clonezilla einwandfrei.

MfG

xsid





https://pastebin.com/4yMDzD02

Mit Scripten GI-Joe und BTRFS kommt ein Jedi-Ritter Gefühl auf. :-)


Das ganze System ist, kann ein Kiosk-System sein, irre schnell ein Rollback.

- - - Beitrag zusammengeführt - - -

Lösung, Isoboot, menuentry:

Code:
menuentry "clonezilla-live-2.6.4-10-amd64.iso Jedi-Ritter System" {
  loopback loop (hd0,msdos1)/iso/clonezilla-live-2.6.4-10-amd64.iso
  linux (loop)/live/vmlinuz findiso=/iso/clonezilla-live-2.6.4-10-amd64.iso toram=filesystem.squashfs boot=live union=overlay username=user config components noswap edd=on nomodeset noprompt nosplash locales=de_DE.UTF-8 keyboard-layouts=de
 ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch=no gfxpayload=1024x768x16,1024x768 ip=frommedia i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.blacklist=yes
  initrd (loop)/live/initrd.img
}

- - - Beitrag zusammengeführt - - -

Ein neuer Kernel ist da:


Code:
sudo pacman -Syu
:: Synchronisiere Paketdatenbanken...
 core ist aktuell
 extra ist aktuell
 community ist aktuell
:: Starte vollständige Systemaktualisierung...
Löse Abhängigkeiten auf...
Suche nach in Konflikt stehenden Paketen...

Pakete (11) ca-certificates-mozilla-3.47.1-4  firefox-71.0-1  firefox-i18n-de-71.0-1  libkscreen-5.17.4-1  libnftnl-1.1.5-1
            linux-5.4.1.arch1-1  linux-headers-5.4.1.arch1-1  linux-lts-4.19.87-1  nano-4.6-1  nss-3.47.1-4  zstd-1.4.4-1

Gesamtgröße der installierten Pakete:  458,65 MiB
Größendifferenz der Aktualisierung:    4,47 MiB

:: Installation fortsetzen? [J/n]

Ich habe mit "n" geantwortet.


Das Script von GI-Joe habe ich in TESTING ausgeführt.


snapshot+systemupdate.sh https://pastebin.com/eH32LVu6

Neuboot, System kaputt!



j1XQEbd.jpg



Und was nun, liegt es am Script oder liegt es an Arch?


Zurück bin ich natürlich fix, aber wo liegt das Problem?

@GI-Joe
Ist in deinem Script noch ein Wurm / Bug?

Bei einem normalen "pacman -Syu" gibt es den gleichen Fehler bei meinem Arch Jedi-Ritter System.


Mein normales ext4 Arch hat kein Problem mit dem Kernel Change.

Der Jedi-Ritter gibt bald sein Schwert ab.

- - - Beitrag zusammengeführt - - -

Code:
[root@arch boot]# ls -l
insgesamt 149532
drwxr-xr-x 5 root root     4096  4. Dez 14:05 grub
-rw-r--r-- 1 root root 30589382  4. Dez 17:53 initramfs-linux-fallback.img
-rw-r--r-- 1 root root  9291988  4. Dez 17:53 initramfs-linux.img
-rw-r--r-- 1 root root 30082958  4. Dez 17:53 initramfs-linux-lts-fallback.img
-rw-r--r-- 1 root root  9280185  4. Dez 17:53 initramfs-linux-lts.img
-rw-r--r-- 1 root root  9277186  2. Dez 18:02 initramfs-linux-lts-oldstable.img
-rw-r--r-- 1 root root  9277186  2. Dez 19:23 initramfs-linux-lts-stable.img
-rw-r--r-- 1 root root  9313740  4. Dez 15:24 initramfs-linux-oldstable.img
-rw-r--r-- 1 root root  9313740  4. Dez 15:24 initramfs-linux-stable.img
drwxr-xr-x 2 root root     4096  3. Dez 12:39 iso
drwx------ 2 root root    16384 26. Nov 06:50 lost+found
-rw-r--r-- 1 root root  6400384  4. Dez 17:53 vmlinuz-linux
-rw-r--r-- 1 root root  5883776  4. Dez 17:53 vmlinuz-linux-lts
-rw-r--r-- 1 root root  5896064  2. Dez 18:01 vmlinuz-linux-lts-oldstable
-rw-r--r-- 1 root root  5896064  2. Dez 19:23 vmlinuz-linux-lts-stable
-rw-r--r-- 1 root root  6285696  4. Dez 15:24 vmlinuz-linux-oldstable
-rw-r--r-- 1 root root  6285696  4. Dez 15:24 vmlinuz-linux-stable
[root@arch boot]#

Sind die Rechte so ok?
 
Zuletzt bearbeitet:
Die grub.cfg habe ich persönlich nicht angefaßt.


Meine /etc/grub.d/40_custom
https://pastebin.com/U86kuBdj

Meine /etc/fstab
https://pastebin.com/sKtZU3Xy
Zeile 6 sieht da schon falsch aus, wobei ich die fstab in letzter Zeit gar nicht angefaßt habe.
Mehrere rollbacks habe ich durchgeführt.

Ich bin in TESTING
Code:
 mount | grep subvol
/dev/sda2 on / type btrfs (rw,noatime,compress=lzo,ssd,space_cache=v2,subvolid=381,subvol=/@snapshots/TESTING)

Änderung der /etc/fstab von, in TESTING

Code:
LABEL=ROOT              /               btrfs           rw,noatime,compress=lzo,ssd,space_cache=v2,subvol=@snapshots/OLDTESTING 0 0

--- geändert in --->

Code:
LABEL=ROOT              /               btrfs           rw,noatime,compress=lzo,ssd,space_cache=v2,subvol=@snapshots/TESTING 0 0

System startet mit neuem Kernel.
GuestAdditions fehlen jetzt, gibt es da kein dkms Modul?

GuestAddtions in Kernel TESTING, jetzt 5.4.1-arch1-1 versuchst zu installieren, funktioniert aber nicht.

Nun also der LTS Kernel. linux-lts-headers installiert, diese fehlten.

#####
Kernel 5.4.1-arch1-1 in TESTING gebootet, linux-headers 5.4.1.arch1-1 sind installiert.

Code:
[root@arch ~]# cd /run/media/xsid/VBox_GAs_6.0.14
[root@arch VBox_GAs_6.0.14]# ./VBoxLinuxAdditions.run 
Verifying archive integrity... All good.
Uncompressing VirtualBox 6.0.14 Guest Additions for Linux........
VirtualBox Guest Additions installer
Removing installed version 6.0.14 of VirtualBox Guest Additions...
Copying additional installer modules ...
Installing additional modules ...
VirtualBox Guest Additions: Starting.
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel 
modules.  This may take a while.
VirtualBox Guest Additions: To build modules for other installed kernels, run
VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup <version>
VirtualBox Guest Additions: or
VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup all
VirtualBox Guest Additions: Building the modules for kernel 5.4.1-arch1-1.

VirtualBox Guest Additions: Look at /var/log/vboxadd-setup.log to find out what 
went wrong
VirtualBox Guest Additions: Running kernel modules will not be replaced until 
the system is restarted
[root@arch VBox_GAs_6.0.14]#

Kann man das Problem, "VirtualBox Guest Additions" zum jetzigen Zeitpunkt lösen?
 
Zuletzt bearbeitet:
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben