I've already been told. But didn't tried it yet, my servers haven't X. I'll take a look on a test computer. But in the end, everything'll have to be done in the shellscript.
Samuel Martín Moro CamTrace {EPITECH.} tek4 On Thu, Sep 3, 2009 at 6:19 PM, Dimitri Yioulos <dyiou...@firstbhph.com>wrote: > On Thursday 03 September 2009 11:35:34 am Samuel > Martín Moro wrote: > > Hello > > > > I'm having some troubles, trying to create > > bootable USB keys. I found (freebsd-hackers ML > > archives) a script, supposed to create the > > bootable image from my iso file. > > But, it still don't boot... (I may do it wrong) > > > > In details: > > -We distribute a FreeBSD (4.7, 5.4, 6.2 and > > 7.2) "custom" server. -We burn our install CD > > (and, in a few, our USB sticks) on a Ferdora 9 > > (sorry...) > > -USB sticks must contain a FAT32 partition > > (we'ld like to provide doc for windows users) > > > > Well, my english isn't so great... so I'll post > > my code (more understandable) > > > > --maker.sh-- > > #!/bin/sh > > ISO_DIR=/r00t > > ISO_PFIX=r00t > > VERSION=5.9.3.0 > > ISO_FILE=$ISO_DIR/$ISO_PFIX-$VERSION.img > > DEVICE= > > TMPDOC=/mnt/tmpdoc > > DOCDIR=/root/samuel/docdir > > ERR= > > SFX= > > MBR=/root/samuel/mbr > > BT1=/root/samuel/boot1 > > BT2=/root/samuel/boot2 > > > > if [ -e "$1" ]; then > > DEVICE=$1 > > elif [ "$1" -a -e "/dev/$1" ]; then > > DEVICE=/dev/$1 > > elif [ "$1" ]; then > > echo "$0: incorrect device specified" >&2 > > exit > > else > > echo "$0: must specify device" >&2 > > exit > > fi > > for i in `mount | cut -d ' ' -f 1` > > do > > if [ "`echo $i | grep $DEVICE`" ]; then > > echo "$0: $i already mounted" >&2 > > echo " umount it manually or > > choose an other drive" >&2 exit > > fi > > done > > > > if [ -e "$TMPDOC" -a -d "$TMPDOC" ]; then > > echo "$0: removing $TMPDOC directory" >&2 > > rm -rf $TMPDOC > > elif [ -e "$TMPDOC" ]; then > > mv $TMPDOC $TMPDOC.old > > echo "$0: moved $TMPDOC to $TMPDOC.old" >&2 > > fi > > mkdir $TMPDOC > > > > if [ "$2" ]; then > > echo $2 | grep "\.img$" >/dev/null || > > SFX=".img" fi > > > > if [ -e "$2$SFX" ]; then > > ISO_FILE=$2$SFX > > elif [ "$2" -a -e "$ISO_DIR/$2$SFX" ]; then > > ISO_FILE=$ISO_DIR/$2 > > elif [ "$2" -a -e "$ISO_DIR/$ISO_PFIX-$2$SFX" > > ]; then ISO_FILE="$ISO_DIR/$ISO_PFX-$2$SFX" > > else > > echo "$0: will use default file > > \`$ISO_FILE'" >&2 echo " as system > > image source" >&2 fi > > if [ -e "$ISO_FILE" ]; then > > MSize=`ls -l $ISO_FILE | awk '{print $5}'` > > else > > echo "$0: $ISO_FILE doesn't exist!" >&2 > > rm -rf $TMPDOC > > exit > > fi > > if [ -z "$MSize" -o "$MSize" -lt 1 ]; then > > echo "$0: bad image size (size=$MSize)" >&2 > > rm -rf $TMPDOC > > exit > > fi > > > > 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 rm -rf $TMPDOC > > exit > > fi > > echo " [ OK ]" > > > > echo -n " initializing partition table " > > # dd if=/dev/zero of=$DEVICE bs=$csz count=1 > > >/dev/null 2>&1 dd if=$BT1 of=$DEVICE > > >/dev/null 2>&1 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 > > "Docs" -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" rm -rf $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 ]" > > echo "$0: unable to copy doc files" > > ERR= > > fi > > umount ${DEVICE}1 > > echo " [ OK ]" > > > > echo -n " copying system " > > dd if=$ISO_FILE of=${DEVICE}2 status=noxfer > > >/dev/null 2>&1 echo " [ OK ]" > > > > mbrsig $DEVICE 2>&1 | awk '{print " > > marking device with serial " $3 }' > > echo " [ Device ready! ]" > > echo "" > > 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 > > rmdir $TMPDOC > > --EOF-- > > > > So, this is a "USB stick generator" I'm working > > on. It seems to work. (I've not tested > > everything, but the basis is OK) The stick is > > correctly parted. > > The documentation is copied. > > My only problem is that it still don't wan't to > > boot... > > > > At the beginning, I was trying to paste my ISO > > file directly in ${DEVICE}2 Then, I found the > > following shell script, which is supposed to > > make my bootable image from my ISO file > > I changed 2/3 things, but some of you may > > recognize it anyway: > > > > --ISOtoIMG.sh-- > > #!/bin/sh > > MAKEFS=makefs > > MKLABEL=bsdlabel > > BSDTAR=tar > > DD="dd status=noxfer" > > > > make_freebsd_image() > > { > > local tree=$1 > > local imagefile=$2 > > local boot1=${tree}/boot/boot1 > > local boot2=${tree}/boot/boot2 > > > > echo "convert tree $tree image $imagefile" > > ${MAKEFS} -t ffs -o bsize=4096 -o fsize=512 > > -f 50 ${imagefile} ${tree} > > > > >/dev/null 2>&1 > > > > ${MKLABEL} -w -f ${imagefile} auto >/dev/null > > 2>&1 ${MKLABEL} -f ${imagefile} 2>/dev/null | > > sed -e '/ c:/{p;s/c:/a:/;}' | \ ${MKLABEL} -R > > -f ${imagefile} /dev/stdin >/dev/null 2>&1 > > ${DD} if=${boot1} of=${imagefile} conv=notrunc > > >/dev/null 2>&1 ${DD} if=${boot2} iseek=1 > > ibs=276 2>/dev/null | \ ${DD} of=${imagefile} > > oseek=1 obs=788 conv=notrunc >/dev/null 2>&1 } > > > > extract_image() > > { > > [ -f $1 ] || return > > local tmp="${tree}.tree" > > [ -e ${tmp} ] && rm -rf ${tmp} > > mkdir -p $tmp > > echo "extracting $tree in $tmp" > > (cd $tmp && ${BSDTAR} xf $tree) > > tree=$tmp > > } > > > > if [ -z "$1" ]; then > > echo "$0: usage" >&2 > > echo " $0 {ISO_input} | {system_root > > IMG_output}" >&2 exit > > fi > > tree=`realpath $1` > > [ "$2" ] && image=`realpath $2` || image=`echo > > $tree | sed "s/.iso/.img/"` extract_image $tree > > make_freebsd_image $tree $image > > [ -d "$tmp" ] && (chmod -R +w $tmp && rm -rf > > $tmp) --EOF-- > > > > This seems to work, too... > > I'm just surprised: > > r...@granit:~/samuel# l -h /r00t/r00t-5.9.3.0* > > -rw-r--r-- 1 root root 566M 2009-09-03 15:29 > > /r00t/r00t-5.9.3.0.img -rw-r--r-- 1 root root > > 526M 2009-08-08 06:58 /r00t/r00t-5.9.3.0.iso > > new file is 40M heavier than our iso image... > > > > Also, in the first script, I tried to do the > > first dd (initializing ${DEVICE}) with: > > - if=$MBR > > - if=$BT1 > > - if=$BT2 > > - if=/dev/zero > > none of that worked... > > > > So. > > Does someone understand what am I doing wrong?! > > > > > > Thanks for you help! > > > > Samuel Martín Moro > > CamTrace > > {EPITECH.} tek4 > > _______________________________________________ > > freebsd-questions@freebsd.org mailing list > > http://lists.freebsd.org/mailman/listinfo/freeb > >sd-questions To unsubscribe, send any mail to > > "freebsd-questions-unsubscr...@freebsd.org" > > > Might want to try UNetbootin. > > Dimitri > > -- > This message has been scanned for viruses and > dangerous content by MailScanner, and is > believed to be clean. > > _______________________________________________ > freebsd-questions@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to " > freebsd-questions-unsubscr...@freebsd.org" > _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"