markuschen
27.07.2013, 15:14
Ich habe auf meinem USB-Stick eine SWAP-Partition, die auch erfolgreich (LABEL=SWAPPART über /etc/fstab) eingebunden wird.
Laut /etc/init.d/rcS wird aber beim firstboot trotzdem ein Swapfile erzwungen angelegt (wegen ufs910).
Können die Devs die Swapsection der rcS so überarbeiten, dass bei existierender Swappartition kein Swapfile angelegt wird?
Abgesehen davon: Wenn das Swapfile ausversehen oder beabsichtigt gelöscht wurde, sollte sie immer erzwungen neu erstellt werden, sonst stirbt die ufs910 einen schnellen tot.
Die folgenden Änderungen decken alle Möglichkeiten ab:
1. Swapfile gewünscht (über HDMU-Center)
2. Änderung der Swapfilegröße-Größe
3. Wenn Swappartition mit mindestens 32MB vorhanden ist, kein erzwungenes erzeugen eines Swapfiles.
Der Code sollte mit allen Boxen funktionieren.
PS: .swapon kann dann auch entfernt werden aus .firstboot
#Ermittle HDMU-Swapfile-Flag
swapenable=`cat /etc/enigma2/settings | grep hdmu.swapenable | cut -d "=" -f2 | wc -l`
if [ "$model" = "ufs910" ]; then
#Ermittle Gesamtgröße aller bis hier bereits aktivierten Swapfiles/-partitionen
#und aktiviere Swap wenn kleiner als Standardwert (32MB)
[ "`awk '(NR>1) {summe=summe+$3} END {if(summe>=32768) {print "OK"}}' /proc/swaps`" != "OK" ] && swapenable=1
fi
#Mache nur weiter wenn Swapfile wirklich notwendig/aktiviert ist
if [ "$swapenable" = "1" ]
if [ `blkid -t LABEL=SWAPFILE | wc -l` -eq 1 ]; then
swapmount=`blkid -t LABEL=SWAPFILE | cut -d ":" -f1`
mount "$swapmount" /swap
swappath="/swap/"
else
swappath="/"
fi
#Prüfen ob Swapfile bereits exisitiert
if [ ! -e "$swappath"swapfile1 ]; then
currentswapsize=0
else
#Prüfen aktuelle Größe von Swapfile
currentswapsize=`ls -l "$swappath"swapfile1 | awk '{print $5/1024}'`
fi
#Ermittle gewünschte HDMU-Swapfile-Größe
swapsize=`cat /etc/enigma2/settings | grep hdmu.swap= | cut -d "=" -f2`
#Wenn keine HDMU-Swapfile-Größe vorhanden setzte Standardwert (32MB)
[ -z "$swapsize" ] && swapsize="32768"
#Vergleiche gewünschte mit existierender Swapfilegröße
if [ $currentswapsize != $swapsize ]; then
#lösche eventuell vorhandene Swapfile
[ -e "$swappath"swapfile1] && rm "$swappath"swapfile1
dd if=/dev/zero of="$swappath"swapfile1 bs=1024 count="$swapsize"
mkswap "$swappath"swapfile1
fi
#Aktiviere Swapfile nur wenn vorhanden
[ -e "$swappath"swapfile1 ] && swapon "$swappath"swapfile1
fi
Laut /etc/init.d/rcS wird aber beim firstboot trotzdem ein Swapfile erzwungen angelegt (wegen ufs910).
Können die Devs die Swapsection der rcS so überarbeiten, dass bei existierender Swappartition kein Swapfile angelegt wird?
Abgesehen davon: Wenn das Swapfile ausversehen oder beabsichtigt gelöscht wurde, sollte sie immer erzwungen neu erstellt werden, sonst stirbt die ufs910 einen schnellen tot.
Die folgenden Änderungen decken alle Möglichkeiten ab:
1. Swapfile gewünscht (über HDMU-Center)
2. Änderung der Swapfilegröße-Größe
3. Wenn Swappartition mit mindestens 32MB vorhanden ist, kein erzwungenes erzeugen eines Swapfiles.
Der Code sollte mit allen Boxen funktionieren.
PS: .swapon kann dann auch entfernt werden aus .firstboot
#Ermittle HDMU-Swapfile-Flag
swapenable=`cat /etc/enigma2/settings | grep hdmu.swapenable | cut -d "=" -f2 | wc -l`
if [ "$model" = "ufs910" ]; then
#Ermittle Gesamtgröße aller bis hier bereits aktivierten Swapfiles/-partitionen
#und aktiviere Swap wenn kleiner als Standardwert (32MB)
[ "`awk '(NR>1) {summe=summe+$3} END {if(summe>=32768) {print "OK"}}' /proc/swaps`" != "OK" ] && swapenable=1
fi
#Mache nur weiter wenn Swapfile wirklich notwendig/aktiviert ist
if [ "$swapenable" = "1" ]
if [ `blkid -t LABEL=SWAPFILE | wc -l` -eq 1 ]; then
swapmount=`blkid -t LABEL=SWAPFILE | cut -d ":" -f1`
mount "$swapmount" /swap
swappath="/swap/"
else
swappath="/"
fi
#Prüfen ob Swapfile bereits exisitiert
if [ ! -e "$swappath"swapfile1 ]; then
currentswapsize=0
else
#Prüfen aktuelle Größe von Swapfile
currentswapsize=`ls -l "$swappath"swapfile1 | awk '{print $5/1024}'`
fi
#Ermittle gewünschte HDMU-Swapfile-Größe
swapsize=`cat /etc/enigma2/settings | grep hdmu.swap= | cut -d "=" -f2`
#Wenn keine HDMU-Swapfile-Größe vorhanden setzte Standardwert (32MB)
[ -z "$swapsize" ] && swapsize="32768"
#Vergleiche gewünschte mit existierender Swapfilegröße
if [ $currentswapsize != $swapsize ]; then
#lösche eventuell vorhandene Swapfile
[ -e "$swappath"swapfile1] && rm "$swappath"swapfile1
dd if=/dev/zero of="$swappath"swapfile1 bs=1024 count="$swapsize"
mkswap "$swappath"swapfile1
fi
#Aktiviere Swapfile nur wenn vorhanden
[ -e "$swappath"swapfile1 ] && swapon "$swappath"swapfile1
fi