Jump to content

Archived

This topic is now archived and is closed to further replies.

Mephisto

[contourné] création clé USB d'install

Recommended Posts

Bonjour

On me demande de pondre un utilitaire qui pourrait générer à la chaîne des clé USB.

Le principe:

- la clé sera généré sur une Linux (vraisemblablement une Fedora 9)

- la partition bootable comporte notre distro FreeBSD

- on doit également avoir une partition RW sous Windows (fat32, on colle un peu de pr0n lesbien doc dessus)

edit / voilà où j'en suis:

MSize=`ls -l $ISO_FILE | awk '{print $5}'`
while :
do
echo " [ Working on $DEVICE ]"

echo -n "	determining device geometry"
infos=`fdisk -l $DEVICE 2>/dev/null | grep "[0-9]* heads"`
ident=`fdisk -l $DEVICE 2>/dev/null | awk '/Disk identifier/{print $3}'`
csz=`fdisk -l $DEVICE 2>/dev/null | awk '/Units = cylinders /{print $7}'`
eval `echo $infos | awk '{print "hpc=" $1 " sec=" $3 " cyl=" $5}'`
if [ -z "$hpc" -o -z "$sec" -o -z "$cyl" -o -z "$csz" ]; then
	echo "  [ FAIL ]"
	echo "$0: can't get infos for device $DEVICE" >&2
	exit
fi
echo "  [ OK ]"

echo -n "	initializing partition table"
dd if=$MBR of=$DEVICE >/dev/null 2>&1 # MBR=/boot/mbr
round=128
tocyl=`expr $hpc '*' $sec '*' $csz`
ret=`expr $MSize % $tocyl`
MSize=`expr $MSize / $tocyl`
test "$ret" -eq "0" || MSize=`expr $MSize + 1`
s2len=$MSize
s2off=`expr $cyl - $s2len - 1`
s1len=`expr $s2off - 1`
s1off=1
sfdisk -DLqf $DEVICE >/dev/null 2>&1 <<EOF
$s1off $s1len b
$s2off $s2len a5 *
EOF
echo " [ OK ]"

echo -n "	formatting FAT32 partition"
dd if=/dev/zero of=${DEVICE}1 bs=$csz count=1 >/dev/null 2>&1
mkdosfs -i 42424242 -n "Documentation files" -F 32 ${DEVICE}1 >/dev/null 2>&1
mount -t vfat ${DEVICE}1 $TMPDOC || ERR=1
if [ "$ERR" ]; then
	echo "   [ FAIL ]"
	echo "$0: unable to mount ${DEVICE}1 on $TMPDOC"
	exit
fi
echo "   [ OK ]"

echo -n "	copying documentation files"
cp -rp $DOCDIR/* $TMPDOC/ >/dev/null 2>&1 || ERR=2
if [ "$ERR" ]; then
	echo "  [ FAIL ]"
	ERR=
fi
umount ${DEVICE}1
echo "  [ OK ]"

echo -n "	copying system"
dd if=$ISO_FILE of=${DEVICE}2 bs=$csz status=noxfer >/dev/null 2>&1 || ERR=3
if [ "$ERR" ]; then
	echo "			   [ FAIL ]"
	exit
fi
echo "			   [ OK ]"

echo " [ Device ready! ]"
echo -n "<?> Create new USB key ?  [Y/N] : " && read i
test "$i" = "Y" -o "$i" = "y" -o "$i" = "O" -o "$i" = "o" || i=
test -z "$i" && echo " [ leaving ]" && break
echo " Please, remove current USB key, insert new one and press enter"
read i
done

la clé est (semble-t-il) correctement partitionné

on formate la FAT32, la doc est copié.

on copie ensuite directement l'ISO (et ça ne marche pas, mais on pouvait s'en douter...)

donc... des idées sur la marche à suivre ?

Merci :cartonrouge:

Link to post
Share on other sites

on ne monte pas sx2, et la partition n'est pas sencé être formaté.

il faudrait recopier l'ISO (ou ce qui en est utilisable), et injecter de quoi la faire booter.

on récupère déjà /boot/mbr qu'on colle en début de clé (avant de partitionner)

apparemment, on pourrait utiliser /boot/boot ou /boot/boot[0-2] à mettre ... en début de deuxième partition si j'ai bien compris, avant de faire suivre l'ISO

Link to post
Share on other sites

grosso-merdo, on a 4 versions de FreeBSD différentes (4.7, 5.4, 6.2 et 7.2).

chacune de ses versions correspond à notre numéro de version majeur (de 2 à 5 en l'occurence).

et on recréé une version régulièrement englobant les dernières mises à jour.

on veut pouvoir ressortir des versions désuettes (pourquoi, c'est pas mon problème... imaginons pour des tests en cas de SAV épique ; j'ai déjà du répondre à quelques cas sociaux, c'est pas des lumières - et nos mises à jour étant comit sur toutes les versions en cours, un client en 4.7 ne vera pas forcément l'intérêt de passer en 7.2)

edit et fermeture:

ça a fini par me casser les couil**s, je suis retourné le faire sous FreeBSD.

et ça fonctionne.

je poste pas le résultat, on a rajouté du dialog et d'autres utilitaires persos, c'est useless si je fournis pas tout.

pour ceux qui auraient ce problème, ou seraient curieux : contactez-moi.

au passage, j'ai relu les propositions de fabien29200, et j'aurai juste un commentaire:

quitte à faire un tar cjpf - . | tar xjpf - /newdir

autant faire un tar cf - . | tar xf - /newdir

le p n'est utile qu'à la décompression (et pas dans mon cas), et le j impliquerait une compression puis une décompression (pour de la copie en locale, on a vu plus efficace)

Link to post
Share on other sites

×
×
  • Create New...