[Eisfair_dev] Fehler beim Update auf Kernel 2.11.1, Abbruch, bootet nicht mehr

Thomas Bork tom at eisfair.org
Mi Jun 3 03:19:32 CEST 2015


Am 03.06.2015 um 01:43 schrieb Alex Busam:

> Jetzt hab ich glaub echt scheisse gebaut! Wollte auf den neuen Kernel
> updaten. Doch der wurde runtergeladen und dann hing die Installation.

Woraus schliesst Du das? Welche Ausgaben hast Du gesehen? Was heisst 
'hing die Installation#?. Poste die Ausgabe von

/var/log/log.kernel-update

nachdem Du das System mit 'oldeis' am lilo-Prompt gebootet hast.

> Konnte sie auch nicht abbrechen. Dann über ein weiteres Konsolenfenster
> ein reboot. Und dann ging gar nichts mehr!
> Eis bootet bis dahin:
> Entering initramfs ...
> Creating busybox symlinks ...
> Mounting proc ...
> Mounting sys ...
> rootdev is a number: 803
> MAJOR in hex is 8.
> MINOR in hy is 03.

Das dürfte wohl ein Tipp-Fehler von Dir sein. Aus dem Skript:

# Check if ROOTDEV is a number (major and minor)
if ! $($GREP -q '^/dev/.*' /rootdev)
then
     string="$(cat /rootdev)"
     echo "rootdev is a number: $string"
     stringlenght="$(echo ${#string})"

     # hdd3 is 1643 (0x1643)
     # sda1 is 801  (0x0801)
     # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=193730
     case $stringlenght in
       3)
         # Get the major number (first digit only)
         # sda1 is MAJOR 8
         MAJOR="$($AWK '{ print substr($0,1,1) }' /rootdev)"

         # Make sure the major number doesn't have leading 0's
         # MAJOR="$(echo $MAJOR | $AWK '{ sub(/^0+/,"",$0); print $0 }')"

         # Get the minor number (everything after the first digit)
         # sda1 is MINOR 01
         MINOR="$($AWK '{ print substr($0,2) }' /rootdev)"

         # Make sure the minor number doesn't have leading 0's
         # MINOR="$(echo $MINOR | $AWK '{ sub(/^0+/,"",$0); print $0 }')"
         ;;
       4)
         # Get the major number (first two digits only)
         # hdd3 is MAJOR 16
         MAJOR="$($AWK '{ print substr($0,1,2) }' /rootdev)"

         # Make sure the major number doesn't have leading 0's
         # MAJOR="$(echo $MAJOR | $AWK '{ sub(/^0+/,"",$0); print $0 }')"

         # Get the minor number (everything after the second digit)
         # hdd3 is MINOR 43
         MINOR="$($AWK '{ print substr($0,3) }' /rootdev)"

         # Make sure the minor number doesn't have leading 0's
         # MINOR="$(echo $MINOR | $AWK '{ sub(/^0+/,"",$0); print $0 }')"
         ;;
     esac

     echo "MAJOR in hex is $MAJOR."
     echo "MINOR in hex is $MINOR."

     # Convert hex to dec
     # sda1 is MAJOR 8  and MINOR 1
     # hdd3 is MAJOR 22 and MINOR 67
     MAJOR="$(echo $((0x${MAJOR})))"
     MINOR="$(echo $((0x${MINOR})))"

     echo "MAJOR in dec is $MAJOR."
     echo "MINOR in dec is $MINOR."

     # Get the /dev node name using the major and minor numbers by
     # looking it up in /proc/diskstats
     DISKS="/proc/diskstats"
     BOOT="$($AWK '$1=='$MAJOR' && $2=='$MINOR' { print $3 }' $DISKS)"
     $RDEV "/dev/$BOOT"
fi

echo "rootdev is $($CAT /rootdev)."


Ein 'MINOR in hy' existiert hier nirgendwo.

> MAJOR in dec is 8.
> MINOR in dec is 3.
> rootdev is /dev/sda3.
> EXT3-fs (sda3): error: couldn't mount because of unsupported optional
> features (240)
> EXT2-fs (sda3): error: couldn't mount because of unsupported optional
> features (240)
> EXT4-fs (sda3): mounted filesystem with ordered data mode. Opts: (null)
> /dev/sda3 successfully mounted but no /sbin/init found!
> Entering rescue shell ...
> type "rootdev root_device" to set device to boot.
>   example: rootdev /dev/sda1
>   Then exit rescue shell with "exit" to continue booting.

Welches ist Dein korrektes Root-Device? Das kannst Du mit

rootdev /dev/sdaX
exit

im Fehlerfall angeben und weiter booten. Wird eiskernel komplett 
installiert, wird das Root-Device automtisch aus der 
Kernel-Kommandozeile ermittelt. Dann wird /sbin/init des Root-Devices 
ausgeführt, wenn es denn gefunden wird:

# Mount the root partition
# Ensure that the directory we mount exist
SUCCESS=0
[ -d "$NEWROOT" ] || $MKDIR "$NEWROOT"
while [ $SUCCESS -ne 1 ]
do
     ROOTDEV="$($CAT /rootdev)"
     if ! $MOUNT -o ro "$ROOTDEV" "$NEWROOT"
     then
         echo ""
         echo "Cannot mount root $ROOTDEV read only!"
         shell
     else
         SUCCESS=1
     fi
done

if [ ! -e "$NEWROOT/$INIT" ]
then
     echo ""
     echo "$ROOTDEV successfully mounted but no $INIT found!"
     shell
fi

Durch den Abbruch des Kernel-Updates sind möglicherweise nicht alle 
notwendigen Treiber in der initramfs gelandet. Ich habe ja keine Ahnung, 
an welcher Stelle das Update hing...

> Hab leider jetzt keine Idee, keinen Nerv mehr.....und hoffe, dass ihr
> mir weiterhelfen könnt!

Ganz ruhig, boote am lilo-Prompt erst mal oldeis.

-- 
der tom
[eisfair-team]


Mehr Informationen über die Mailingliste Eisfair_dev