Nicht jede Micro-SD-Karte hat die gleiche Speichergröße, das musste ich jetzt feststellen, als ich mein Image einer libreelec Version auf eine gleichgroße Karte kopieren wollte.
Ich habe mir auf 16-GB-Micro-SD ein Image erstellt, dieses konnte ich problemlos auf Karten kopieren.
Jetzt habe ich mir ebenfalls 16-GB-Micro-SD-Karten bestellt.
Beim Zurückschreiben auf diese Karten erhalte ich folgenden Fehler:
CODE: ALLES AUSWÄHLEN
Error mounting /dev/sdc2 at /media/stefan/f2c26989-d7ab-4c16-9d6a-36e40c02035b: Command-line `mount -t „ext4“ -o „uhelper=udisks2,nodev,nosuid“ „/dev/sdc2“ „/media/stefan/f2c26989-d7ab-4c16-9d6a-36e40c02035b“‚ exited with non-zero exit status 32: mount: wrong fs type, bad option, bad superblock on /dev/sdc2,
missing codepage or helper program, or other error
Da die Hersteller bei Mirco-SD-Karten große Toleranzen des Speichervolumens haben, kann es vorkommen, dass man bei einem Image von einer 16-GB-Karte Probleme bekommt, wenn man diese auf eine angeblich ebenfalls 16-GB-Karte schreiben möchte. Es gibt mehrere Möglichkeiten, Image auf passender Weise zu erstellen.
Ich möchte euch den Weg zeigen, den ich gefunden habe.
Auf der Webseite http://sirlagz.net/2013/03/10/script-automatic-rpi-image-downsizer/
habe ich dieses Script gefunden:
if [[ ! $(whoami) =~ „root“ ]]; then
echo „“
echo „**********************************“
echo „*** This should be run as root ***“
echo „**********************************“
echo „“
exit
fiif [[ -z $1 ]]; then
echo „Usage: ./autosizer.sh“
exit
fiif [[ ! -e $1 || ! $(file $1) =~ „x86“ ]]; then
echo „Error : Not an image file, or file doesn’t exist“
exit
fipartinfo=`parted -m $1 unit B print`
partnumber=`echo „$partinfo“ | grep ext4 | awk -F: ‚ { print $1 } ‚`
partstart=`echo „$partinfo“ | grep ext4 | awk -F: ‚ { print substr($2,0,length($2)-1) } ‚`
loopback=`losetup -f –show -o $partstart $1`
e2fsck -f $loopback
minsize=`resize2fs -P $loopback | awk -F‘: ‚ ‚ { print $2 } ‚`
minsize=`echo $minsize+1000 | bc`
resize2fs -p $loopback $minsize
sleep 1
losetup -d $loopback
partnewsize=`echo „$minsize * 4096“ | bc`
newpartend=`echo „$partstart + $partnewsize“ | bc`
part1=`parted $1 rm 2`
part2=`parted $1 unit B mkpart primary $partstart $newpartend`
endresult=`parted -m $1 unit B print free | tail -1 | awk -F: ‚ { print substr($2,0,length($2)-1) } ‚`
truncate -s $endresult $1
Die Datei downloaden und ausführbar machen
chmod -c u+x autosizer.sh
Starten kann man das Script mit ./autosizer.sh Image.img
./autosizer.sh raspberry-pi-libreelec.img
Bei mir machte ein Code-Teil Probleme:
if [[ ! -e $1 || ! $(file $1) =~ „x86“ ]]; then
echo „Error : Not an image file, or file doesn’t exist“
exitecho „Usage: ./autosizer.sh“
exit
Ich habe diesen aus dem Script entfernt, diesen kann man hier Downloaden.
Das Image wird in-place ersetzt. Das Image, das du als Parameter dem Skript übergeben hast, wird direkt verändert. Das verkleinerte Image ist also am gleichen Ort zu finden wie das alte und es hat den gleichen Namen.
Jetzt kann man das Image auch auf kleinere Karten spielen.