makefs && gpart (...)
Nathan Whitehorn
nwhitehorn at freebsd.org
Thu Jan 1 17:23:15 UTC 2015
On 01/01/15 03:48, Matthias Apitz wrote:
>
> Hello,
>
> I have a small question and a small request re/ makefs && gpart:
>
> There is a script src/release/i386/make-memstick.sh to create an image
> from a full directory tree; the tree is result of
>
> make installworld DESTDIR=/tree
> make installkernel DESTDIR=/tree
>
> the script mainly does:
>
> ...
> makefs -B little -o label=FreeBSD_Install ${2} ${1}
> if [ $? -ne 0 ]; then
> echo "makefs failed"
> exit 1
> fi
> rm ${1}/etc/fstab
>
> unit=$(mdconfig -a -t vnode -f ${2})
> if [ $? -ne 0 ]; then
> echo "mdconfig failed"
> exit 1
> fi
> gpart create -s BSD ${unit}
> gpart bootcode -b ${1}/boot/boot ${unit}
> gpart add -t freebsd-ufs ${unit}
> mdconfig -d -u ${unit}
>
> As you can see, it does makefs first, and after this it creates the
> gpart structure in the image (i.e. in its memory file system).
> Why is this in this order and where exactly starts the file system
> created by makefs?
This is a quirk of BSD disklabels: the first partition can start at
address 0 and the first 16 sectors of UFS2 file systems are reserved for
the label headers. It's not portable to other partition schemes. For
-CURRENT, this script has been replaced, by the way, and doesn't use BSD
labels anymore.
-Nathan
>
> The request is: it would also be nice if 'make-memstick.sh' would allow
> to pass from the command line some values for the size of the file
> system to be created in the image; I modified it to fit my needs as:
>
> size=15482880b
> ...
> makefs -B little -M ${size} -m ${size} -f 400000 ....
>
> Thanks
>
> matthias
>
More information about the freebsd-current
mailing list