Posted August 27, 200915 yr 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
September 2, 200915 yr 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 ...).
September 2, 200915 yr Author 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
September 2, 200915 yr Bah après je connais pas FreeBSD :/ Mais il serait plus simple de partir d'une clé fonctionnelle que de l'ISO.
September 3, 200915 yr Author on doit pouvoir générer plusieurs versions (105 pour être précis) j'ai pas vraiment la motiv de tout faire à la main
September 3, 200915 yr Oui mais est-ce que toutes les clés doivent avoir le même OS ou tu dois pouvoir personnaliser l'installation ?
September 4, 200915 yr Author 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)
Archived
This topic is now archived and is closed to further replies.