[Eisfair] rpc.mountd 100% CPU
Thomas Bork
tom at eisfair.org
So Dez 18 22:13:16 CET 2016
Am 18.12.2016 um 17:51 schrieb ich:
> Um in der initramfs sicher zu stellen, dass die notwendigen Devices
> existieren, müsste man das Rootdevice schreibbar mounten und fehlende
> Devices nach /dev des Systems kopieren. Nur welche fehlen da genau und
> warum (siehe oben)?
Wenn ich in der initramfs das dev-Verzeichnis des Systems komplett
lösche, neu anlege und nur /dev/console und /dev/null aus dem
dev-Verzeichnis der initramfs in das ansonsten leere dev-Verzeichnis des
Systems kopiere, startet mein System (auf Raid) völlig normal.
Dazu habe ich mir eine neue busybox gebaut, die cp, rm und mknod
unterstützt.
if [ -z "$DEVSTATIC" ]
then
copydevices='yes'
if [ ! -c "$NEWROOT/dev/console" ]
then
copydevices='yes'
fi
if [ ! -c "$NEWROOT/dev/null" ]
then
copydevices='yes'
fi
if [ "$copydevices" = "yes" ]
then
# Mount ROOTDEV rw.
$MOUNT -o remount,rw "$ROOTDEV" "$NEWROOT"
rm -f -r "$NEWROOT/dev"
$MKDIR "$NEWROOT/dev"
# Copy over devices from initramfs/dev to ROOTDEV/dev
cp -a /dev/console "$NEWROOT/dev/console"
cp -a /dev/null "$NEWROOT/dev/null"
# Uncomment to debug /dev, if dynamic.
ls -lR /dev >"$NEWROOT"/mit_mdev.txt
ls -lR "$NEWROOT/dev" >"$NEWROOT"/vor_udev.txt
$MOUNT -o remount,ro "$ROOTDEV" "$NEWROOT"
fi
# Reset kernel hotplugging to /sbin/hotplug
echo "Resetting kernel hotplugging to /sbin/hotplug ..."
echo "/sbin/hotplug" > /proc/sys/kernel/hotplug
fi
Oben ist copydevices='yes' gesetzt, da ich erst weiter unten das
dev-Verzeichnis des Systems komplett lösche, um den Fehlerfall zu erzwingen.
Normalerweise könnte das ansonsten so aussehen (das Löschen und
Neuerstellen das dev-Verzeichnisses des Systems findet hier natürlich
nicht statt, copydevices ist 'no' und wird nur bei fehlenden Devices
gesetzt und das Debugging der Devices ist deaktiviert):
if [ -z "$DEVSTATIC" ]
then
copydevices='no'
if [ ! -c "$NEWROOT/dev/console" ]
then
copydevices='yes'
fi
if [ ! -c "$NEWROOT/dev/null" ]
then
copydevices='yes'
fi
if [ "$copydevices" = "yes" ]
then
# Mount ROOTDEV rw.
$MOUNT -o remount,rw "$ROOTDEV" "$NEWROOT"
# Copy over devices from initramfs/dev to ROOTDEV/dev
cp -a /dev/console "$NEWROOT/dev/console"
cp -a /dev/null "$NEWROOT/dev/null"
# Uncomment to debug /dev, if dynamic.
#ls -lR /dev >"$NEWROOT"/mit_mdev.txt
#ls -lR "$NEWROOT/dev" >"$NEWROOT"/vor_udev.txt
$MOUNT -o remount,ro "$ROOTDEV" "$NEWROOT"
fi
# Reset kernel hotplugging to /sbin/hotplug
echo "Resetting kernel hotplugging to /sbin/hotplug ..."
echo "/sbin/hotplug" > /proc/sys/kernel/hotplug
fi
Aber eine busybox mit den zusätzlichen Features ist viel fetter.
Deswegen würde ich gern erst mal wissen, wie das leere dev-Verzeichnis
zustande kommt...
--
der tom
[eisfair-team]
Mehr Informationen über die Mailingliste Eisfair