Problem mit Update auf 2.2



  • Hallo Zusammen,

    ich habe heute versucht ein Upgrade von 2.1.5 auf 2.2 zu machen, leider ohne Erfolg. Ich bekomme eine Meldung "Something went wrong when trying to update the fstab entry. Aborting upgrade." im Dashboard. Im file /cf/conf/upgrade_log.txt ist der letzte Eintrag "Checking for post_upgrade_command…".

    Das Ganze passiert sowohl beim Manual Update als auch beim Auto Update.

    Ach ja, ich habe pfSense auf einem Alix.

    Kennt jemand das Problem? Wie kann ich das lösen??

    Danke!

    -flo-



  • Hi!

    Hast du dich an den Upgrade Guide gehalten?
    https://doc.pfsense.org/index.php/Upgrade_Guide

    Hast du im Speziellen vorher /usr/local/sbin/ufslabels.sh ausgeführt?

    Grüße



  • Gerade versucht, das sieht so aus:

    
    [2.1.5-RELEASE][admin@pfSense.localdomain]/usr/local/sbin(5): ./ufslabels.sh 
    sed: 1: "s/ufs/pfsense1/ufsid\/5 ...": bad flag in substitute command: 'u'
    FS: / on device ufs/pfsense1 with ufsid 53fb2f9508868d1d
    sed: 1: "s/ufs/cf/ufsid\/5230fb9 ...": bad flag in substitute command: 'u'
    FS: /cf on device ufs/cf with ufsid 5230fb93d76dccc8
    ====================
    Current fstab:
    /dev/ufs/pfsense1 / ufs ro,sync,noatime 1 1
    /dev/ufs/cf /cf ufs ro,sync,noatime 1 1
    ====================
    New fstab:
    /dev/ufs/pfsense1 / ufs ro,sync,noatime 1 1
    /dev/ufs/cf /cf ufs ro,sync,noatime 1 1
    Commit changes? (y/n):
    
    

    Da gibt es offenbar einen Fehler (kommt mir das nur so vor oder ist das Skript kaputt, sind insb. in dem Suchstring die Slashes so in Ordnung?). Außerdem würde das Skript wohl nichts ändern. Ich habe hier abgebrochen.

    Muß das so aussehen?

    Was macht denn das Skript genau? Evtl. kann ich das von Hand auch machen? Hat jemand so ein fstab vorher und nachher noch zur Hand?

    -flo-



  • Ich habe mal etwas genauer geschaut, was das Skript macht. Offenbar soll es Partition-Ids aus der fstab ersetzen. Evtl. ist meine fstab bereits in der benötigten Form?

    [2.1.5-RELEASE][admin@pfSense.localdomain]/usr/local/sbin(9): ls /dev/ufs
    cf       pfsense1
    [2.1.5-RELEASE][admin@pfSense.localdomain]/usr/local/sbin(10): ls /dev/ufsid
    54c170b329c83dd8
    [2.1.5-RELEASE][admin@pfSense.localdomain]/usr/local/sbin(11): glabel status
                      Name  Status  Components
                    ufs/cf     N/A  ad0s3
              ufs/pfsense1     N/A  ad0s1a
    ufsid/54c170b329c83dd8     N/A  ad0s2a
    

    Der Fehler beim Upgrade kommt aus dieser Stelle im Skript /etc/rc.firmware:

     # Update fstab
            cp /etc/fstab /tmp/$GLABEL_SLICE/etc/fstab
            sed -i "" "s/pfsense${OLD_UFS_ID}/pfsense${UFS_ID}/g" /tmp/$GLABEL_SLICE/etc/fstab
            if [ $? != 0 ]; then
                    echo "Something went wrong when trying to update the fstab entry.  Aborting upgrade."
                    file_notice "UpgradeFailure" "Something went wrong when trying to update the fstab entry.  Aborting upgrade."
                    rm -f $IMG
                    rm -f /var/run/firmwarelock.dirty
                    rm -f /var/run/firmware.lock
                    umount /tmp/$GLABEL_SLICE
                    /etc/rc.conf_mount_ro
                    exit 1
            fi
    
    

    Für mich sieht das so aus, als ob das Skript dort "pfsense1" durch "pfsense0" ersetzen soll. Nur ist während der Ausführung OLD_UFS_ID 0 und nicht 1, also falsch herum (wenn ich das Skript nicht ganz falsch verstanden habe …).

    Ein fstab aus einer 2.2. nach dem Upgrade auf einem Alix wäre wirklich hilfreich.  :D



  • Also das Skript /usr/local/sbin/ufslabels.sh funktioniert nur mit einer fstab, die device Ids beinhaltet. Es versucht die folgende Ersetzung:

    /dev/ufs/pfsense1 nach /dev/ufsid/53fb2f9508868d1d

    Allerdings klappt das mit dem sed-Kommando nicht:

    /usr/bin/sed -i'' -e "s/${DEV}/ufsid\/${UFSID}/g" ${FSTAB}.tmp
    

    $DEV beinhaltet in diesem Fall "ufs/pfsense1" und nicht eine Device-Id wie ad0s1a. $UFSID ist 53fb2f9508868d1d.

    Ergo pamit passiert folgendes:

    /usr/bin/sed -i'' -e "s/ufs/pfsense/ufsid\/53fb2f9508868d1d/g" ${FSTAB}.tmp
    

    Logisch, daß das nicht geht: Der Ersetzungsteil fängt nach dem 2. Slash an, also dem vor dem 'p'. Mit dem dritten Slash, der eigentlich den Ersetzungsteil einleiten soll, ist sed dann überfordert. (Dieses Skript ist nicht ausreichend robust programmiert.)

    Soweit so klar.

    Das Ergebnis ist wohl so gedacht:

    Statt

    /dev/ufs/pfsense1 / ufs ro,sync,noatime 1 1
    /dev/ufs/cf /cf ufs ro,sync,noatime 1 1
    

    dann

    /dev/ufsid/53fb2f9508868d1d / ufs ro,sync,noatime 1 1
    /dev/ufsid/5230fb93d76dccc8 /cf ufs ro,sync,noatime 1 1
    

    Kann das jemand bestätigen (nicht die Ids natürlich, nur grundsätzlich). Danke!



  • @-flo-:

    Das Ergebnis ist wohl so gedacht:

    Statt

    /dev/ufs/pfsense1 / ufs ro,sync,noatime 1 1
    /dev/ufs/cf /cf ufs ro,sync,noatime 1 1
    

    dann

    /dev/ufsid/53fb2f9508868d1d / ufs ro,sync,noatime 1 1
    /dev/ufsid/5230fb93d76dccc8 /cf ufs ro,sync,noatime 1 1
    

    Kann das jemand bestätigen (nicht die Ids natürlich, nur grundsätzlich). Danke!

    Das klingt zumindest logisch aufgrund der obigen Fehlermeldung, die ja die UFSIDs zeigt.
    Bestätigen kann ich es leider nicht, weil ich noch kein NanoBSD upgegradet habe. Bei der HDD-Version wird jedenfalls in der fstab nur der Device-Name durch die ID ersetzt.



  • Ok, danke erstmal! Ich werde mal im internationalen Forum "stiften gehen". :-)

    -flo-



  • Für's Archiv: Das script /usr/local/sbin/ufslabels.sh ist wohl nicht für eine embedded Installation gedacht.



  • @-flo-:

    Für's Archiv: Das script /usr/local/sbin/ufslabels.sh ist wohl nicht für eine embedded Installation gedacht.

    Okay. Davon ist aber im Upgrade Guide nichts zu lesen.

    Was gelernt. Ich hab ja erwähnt, ich habe die Nano selbst noch nicht upgegradet.

    Heißt das, die Embedded verwendet nach wie vor die Gerätenamen? Kann ich mir nicht so recht vorstellen.



  • Nein, es sind keine Device-Ids in der fstab. Daher ist das Skript ja auch nicht erforderlich. Es arbeitet ja nur mit Device-Ids.

    Ich habe den Upgrade-Guide nochmal gelesen:

    ATA disks are labeled as /dev/adaX rather than /dev/adX. […] For a full install, running /usr/local/sbin/ufslabels.sh before the upgrade will convert /etc/fstab to UFS labels rather than disk device names bypassing any device name issues that could arise due to the switch.

    Solange also keine Device-Ids in der fstab stehen, ist das gar kein Problem.

    Und Du hast recht: Der Upgrade-Guide ist da nicht ausreichend genau.

    -flo-