Hallo Klaus @garblixa,
endlich komme ich dazu diesen Bug Client starts with root partition mounted readonly after installation · Issue #12 · linuxmuster/linuxmuster-client-servertools · GitHub versuchen zu verstehen.
Danke für die Rückmeldung.
lies mal post 3 zuerst…
Vollkommen richtig, dass der sed-Befehl schief laufen kann. Ich lagere dieses Problem mal in einen eigenen Thread hier aus, damit wir das klären können.
ähnliche Posts:
Historie:
Irgendwie sah das automatische fixen der fstab früher so aus:
#!/bin/sh
if [ -e /mnt/etc/fstab ]; then
echo " - fixing fstab"
swap_part=$(fdisk -l | grep swap | awk '{print $1}')
swap_fstab=$(grep swap /mnt/etc/fstab | awk '{print $1}')
if [ $swap_part != $swap_fstab ]; then
echo " Swap: $swap_part"
echo " Swap in fstab: $swap_fstab"
sed -i "s|^\(.*\)\(none\s*swap\)\(.*\)|${swap_part} \2 \3|" /mnt/etc/fstab
fi
for i in $(grep ^/dev /mnt/etc/fstab | awk '{print $1}'); do
if [ ! -b $i ]; then
dev=$(echo $i | awk -F/ '{print $3}')
sed -i "/$dev/d" /mnt/etc/fstab
fi
done
echo " - done"
fi
Da wurde die SWAP partition richtig gesetzt und alle anderen Partitionen, gelöscht. Ich weiß nicht genau, wie dass dann im 6.x-er System auf dem client aussah, ob dann ROOT gar nicht mehr in /etc/fstab drin war, oder eben nicht über postsync gepatcht.
Ist ja auch egal. Jedenfalls weiß ich nicht, wer sich das SED-Skript:
STARTCONF=/start.conf
FSTAB=/mnt/etc/fstab
if [ -e $FSTAB ]; then
echo -n " - fixing fstab: "
ROOT=$(sed ':a;N;$!ba;s/\n/;UMBRUCH;/g' $STARTCONF | sed 's/ //g'|sed 's/\[Partition\]/\n/g' | grep -i 'fstype=ext4' | sed 's/;UMBRUCH;/\n/g' | grep -i 'dev=/' | cut -d'=' -f2 | head -c20 | cut -d"#" -f1)
echo -n "root: $ROOT, "
sed -i "s#\#dummyroot#$ROOT#g" $FSTAB
SWAP=$(sed ':a;N;$!ba;s/\n/;UMBRUCH;/g' $STARTCONF | sed 's/ //g'|sed 's/\[Partition\]/\n/g' | grep -i 'fstype=swap' | sed 's/;UMBRUCH;/\n/g' | grep -i 'dev=/' | cut -d'=' -f2 | head -c20 | cut -d"#" -f1)
echo -n "swap: $SWAP, "
sed -i "s#\#dummyswap#$SWAP#g" $FSTAB
echo "done"
fi
ausgedacht hat.
Dein Problem:
Ja, weitere Probleme könnten sein, dass die Partitionen gar nicht mit ext4 formatiert worden sind, sondern ext2, ext3, btrfs, zfs, usw. aber lassen wir die außen vor, muss nur dokumentiert werden.
Das halte ich momentan auch für sehr schlau. Ich weiß auch gar nicht, warum wir das nicht so gemacht haben bisher. Evtl. gibt es da auch Haken.
Es wäre nett, wenn wir mit deiner Hilfe hier eine Lösung finden könnten, die richtige Sektion [OS] zu parsen und dann das richtige „Root=“ Device herauszufinden.
Ist das eine allgemein gültige Lösung? Ich kenne die Label-Diskussion nicht wirklich, aber davon ist das hier nicht abhängig, ob man labels für paritionen vergeben hat oder nicht, oder?
Um die richtige [OS] Sektion zu erhalten, wäre es gut, wenn LINBO postsync uns verraten könnte, welches OS denn gerade gesynct wird. Hm, ich suche mal danach.
VG, Tobias