Mephisto Posté(e) le 27 août 2009 Partager Posté(e) le 27 août 2009 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
fabien29200 Posté(e) le 2 septembre 2009 Partager Posté(e) le 2 septembre 2009 Bah quand tu installes un linux, les fichiers sont recopiés de l'ISO et mis sur leur nouveau FS. Il faut que tu fasses une image des fichiers de ton FreeBSD (tar cjpf ...) et que tu décompresses l'archive sur la clé (tar xjpf ...). Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 2 septembre 2009 Auteur Partager Posté(e) le 2 septembre 2009 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
fabien29200 Posté(e) le 2 septembre 2009 Partager Posté(e) le 2 septembre 2009 Bah après je connais pas FreeBSD :/ Mais il serait plus simple de partir d'une clé fonctionnelle que de l'ISO. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 3 septembre 2009 Auteur Partager Posté(e) le 3 septembre 2009 on doit pouvoir générer plusieurs versions (105 pour être précis) j'ai pas vraiment la motiv de tout faire à la main Lien vers le commentaire Partager sur d’autres sites More sharing options...
fabien29200 Posté(e) le 3 septembre 2009 Partager Posté(e) le 3 septembre 2009 Oui mais est-ce que toutes les clés doivent avoir le même OS ou tu dois pouvoir personnaliser l'installation ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 4 septembre 2009 Auteur Partager Posté(e) le 4 septembre 2009 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) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.