[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