Korábban írtam egy blogbejegyzést arról, hogyan lehet megváltoztatni egy fájlrendszer UUID értékét. Itt a link rá:
http://ubuntu.hu/node/33745
Na de ez macerás úgy, mert hexa editor kell hozzá, stb. Gondoltam írok erre egy szkriptet. Íme:
#!/bin/bash
if [[ $1 == "" ]] ; then
echo "Ez a szkript a megadott device fájlrendszerének UUID értékét módosítja."
echo "Készítette: Viola Zoltán ( violazoli@gmail.com )"
echo "Verzió: 0.0"
echo "A szkript GPL licenszű, azaz másold nyugodtan, ingyééé' adom!"
echo "Igyekeztem hülyebiztosra megírni, de én is hülye vagyok. Ezért nem vállalok semmiféle,"
echo "a használatból (vagy nemhasználatból...) fakadó semmiféle anyagi, erkölcsi,"
echo "pénzügyi, morális, intellektuális, szellemi, esztétikai, adatvesztési, büntetőjogi vagy bármi egyéb"
echo "kárért SEMMIFÉLE felelősséget!"
echo "Például még ha sikerül is szabályosan megváltoztatnod az NTFS partíció UUID értékét,"
echo "egyáltalán nem biztos, hogy azután az ott levő Windowsod rendesen fog működni."
echo "Nem tartom lehetetlennek, hogy ezesetben esetleg azt hiszi, átmásoltad egy másik"
echo "számítógépre, azaz lehet hogy emiatt lopottnak hiszi magát. De ez csak 1 példa volt a lehetséges bajokra."
echo "Lehet hogy hülyeséget írtam, mert nincs Windowsom, ezt nem próbáltam ki."
echo "Linux esetén is az van, hogy a merevlemez partíciói gyakran UUID szerint vannak feljegyezve az /etc/fstab"
echo "állományba. Azaz ha a partíció UUID értékét megváltoztatod, utána módosítanod kell az fstab állományt is,"
echo "ha azt akarod, hogy a következő indításnál rendesen csatolja neked azt."
echo "Lényeg, hogy a MAGAD FELELŐSSÉGÉRE használod, engem hiába is szídsz!"
echo
echo "Használat:"
echo "uuid device device_uj_UUID_erteke"
echo "Például:"
echo "uuid /dev/sdc1 1234"
echo "Ha a megadott új UUID string rövidebb, mint ami az adott típusú fájlrendszeren"
echo "maximálisan alkalmazható, a szkript az üres helyeket chr\$(0) karakterekkel tölti fel."
echo "Ha a megadott string túllépi az engedélyezett hosszat, akkor hibát jelez és nem módosítja"
echo "a fájlrendszert."
echo "A szkript használatához minden bizonnyal rendszergazdai jogosultságra lesz szükséged..."
echo "A szkript jelenleg a következő fájlrendszereket ismeri:"
echo "fat32, ext2, ext3, ext4, reiserfs, ntfs, linux swap"
exit
fi
# kiolvassa a blkid informaciojabol az ezen cimkeju fajlrendszernek megfelelo sort
DEVSOR=`blkid | grep "$1"`
if [[ $DEVSOR == "" ]] ; then
echo "A $1 címkéjű eszköz nem létezik!"
exit
fi
# kiolvassa a mount informaciojabol az ezen cimkeju fajlrendszernek megfelelo sort
MOUNT=`mount | grep "$1"`
if [[ $MOUNT != "" ]] ; then
echo "A $1 címkéjű eszköz csatolva (mountolva) van!"
echo "Biztonsági okokból az UUID megváltoztatása előtt csatold le (umountold) az eszközt!"
exit
fi
TIPUS=`echo "$DEVSOR" | cut --delimiter=" " -f5`
if [[ $TIPUS == "" ]] ; then
TIPUS=`echo "$DEVSOR" | cut --delimiter=" " -f4`
fi
if [[ $TIPUS == "" ]] ; then
TIPUS=`echo "$DEVSOR" | cut --delimiter=" " -f3`
fi
FILESYSTEM=`echo $TIPUS | sed 's/\"/ /g' | sed 's/TYPE=/ / ' | sed 's/ //g'`
if [[ $2 == "" ]] ; then
echo "Nem adtál meg új UUID értéket. Az eszköz régi (eredeti) adatai:"
blkid $1
exit
fi
#Az új UUID string hosszának meghatározása
echo -n "$2" > ddinput$$.tmp
DARAB=`wc -m ddinput$$.tmp | cut --delimiter=" " -f1`
if test $DARAB -eq 0
then echo "Valami zűr van, mert nekem úgy tűnik, hogy az új UUID-nek megadott string hossza 0 !"
exit
fi
case "$FILESYSTEM" in
'vfat' )
FATTYPE=`fdisk -l | grep $1 | sed 's/ //g' | sed 's/FAT/ /' | cut --delimiter=" " -f2 | sed 's/(LBA)//'`
if [[ $FATTYPE != "32" ]] ; then
echo "A megadott eszköz jelenlegi adatai:"
blkid $1
echo "Sajnos a vfat fájlrendszerek közül csak a FAT32 formájúra vagyok felkészülve, de ez FAT$FATTYPE formátumú."
exit
fi
if test $DARAB -gt 4
then
echo "A FAT32 fájlrendszer esetén az UUID maximális hossza 4 lehet! Te hosszabbat adtál meg!"
echo "A te most megadott UUID értéked hossza: $DARAB"
rm ddinput$$.tmp
exit
fi
dd if=/dev/zero bs=1 count=4 seek=67 of=$1
dd if=ddinput$$.tmp bs=1 count=$DARAB seek=67 of=$1
rm ddinput$$.tmp
blkid $1
;;
'ext2')
if test $DARAB -gt 16
then
echo "Az ext2 fájlrendszer esetén az UUID maximális hossza 16 lehet! Te hosszabbat adtál meg!"
echo "A te most megadott UUID értéked hossza: $DARAB"
rm ddinput$$.tmp
exit
fi
dd if=/dev/zero bs=1 count=16 seek=1128 of=$1
dd if=ddinput$$.tmp bs=1 count=$DARAB seek=1128 of=$1
rm ddinput$$.tmp
blkid $1
;;
'ext3')
if test $DARAB -gt 16
then
echo "Az ext3 fájlrendszer esetén az UUID maximális hossza 16 lehet! Te hosszabbat adtál meg!"
echo "A te most megadott UUID értéked hossza: $DARAB"
rm ddinput$$.tmp
exit
fi
dd if=/dev/zero bs=1 count=16 seek=1128 of=$1
dd if=ddinput$$.tmp bs=1 count=$DARAB seek=1128 of=$1
rm ddinput$$.tmp
blkid $1
;;
'ext4')
if test $DARAB -gt 16
then
echo "Az ext4 fájlrendszer esetén az UUID maximális hossza 16 lehet! Te hosszabbat adtál meg!"
echo "A te most megadott UUID értéked hossza: $DARAB"
rm ddinput$$.tmp
exit
fi
dd if=/dev/zero bs=1 count=16 seek=1128 of=$1
dd if=ddinput$$.tmp bs=1 count=$DARAB seek=1128 of=$1
rm ddinput$$.tmp
blkid $1
;;
'swap')
if test $DARAB -gt 16
then
echo "A Linux swap fájlrendszer esetén az UUID maximális hossza 16 lehet! Te hosszabbat adtál meg!"
echo "A te most megadott UUID értéked hossza: $DARAB"
rm ddinput$$.tmp
exit
fi
dd if=/dev/zero bs=1 count=16 seek=1036 of=$1
dd if=ddinput$$.tmp bs=1 count=$DARAB seek=1036 of=$1
rm ddinput$$.tmp
blkid $1
;;
'ntfs')
if test $DARAB -gt 8
then
echo "Az ntfs fájlrendszer esetén az UUID maximális hossza 8 lehet! Te hosszabbat adtál meg!"
echo "A te most megadott UUID értéked hossza: $DARAB"
rm ddinput$$.tmp
exit
fi
dd if=/dev/zero bs=1 count=8 seek=72 of=$1
dd if=ddinput$$.tmp bs=1 count=$DARAB seek=72 of=$1
rm ddinput$$.tmp
blkid $1
;;
'reiserfs')
if test $DARAB -gt 16
then
echo "A reiserfs fájlrendszer esetén az UUID maximális hossza 16 lehet! Te hosszabbat adtál meg!"
echo "A te most megadott UUID értéked hossza: $DARAB"
rm ddinput$$.tmp
exit
fi
dd if=/dev/zero bs=1 count=16 seek=65620 of=$1
dd if=ddinput$$.tmp bs=1 count=$DARAB seek=65620 of=$1
rm ddinput$$.tmp
blkid $1
;;
*) echo "A megadott eszköz jelenlegi adatai:"
blkid $1
echo "Sajnos a $FILESYSTEM típusú fájlrendszerre nem vagyok felkészülve."
exit
;;
esac
Eddig a szkript. Na most ezt én elég alaposan leteszteltem, kipróbáltam, működik. De csak fat32, ext2, ext3 és Linux swap fájlrendszerekre próbáltam ki, mert más nálam nincs! E topikban:
http://ubuntu.hu/node/34518
kértem segítséget ahhoz, hogyan írjam meg más fájlrendszerekre, s jött adat az ntfs-hez és az ext4-hez. (köszi annak aki beírta!) Ennek alapján megcsináltam, de EZEKEN A FÁJLRENDSZEREKEN NEM PRÓBÁLTAM KI! Ha valaki vállalja a bétatesztelő szerepét, az hasznos volna mindenkinek... Beleírtam a reiserfs-nek megfelelő részt is, de ezt se próbáltam ki. Jóeséllyel működni fog ott, de azért totál biztos nem lehetek benne.
Ha valaki ntfs partícióra próbálgatja, annak "highly recommended", azaz melegen ajánlott elolvasnia a szkriptem legelejére bejegyzett, "echo" által kiiratott figyelmeztetést, azaz emiatt lehetőleg NE AZON az ntfs partíción próbálgassa, amire a Windows telepítve van!
Egyelőre ennyi, oszt' jóccakát. Várom a visszajelzéseket!