Publishing &os; Installation Media to Project Mirrors
This section describes the procedure to publish &os;
development snapshots and releases to the Project mirrors.
Staging &os; Installation Media Images
Staging &os; snapshots and releases is a two part
process:
Creating the directory structure to match the hierarchy
on ftp-master
If EVERYTHINGISFINE is defined in the
build configuration files, main.conf in
the case of the build scripts referenced above, this happens
automatically in the &man.chroot.8; after the build is
complete, creating the directory structure in ${DESTDIR}/R/ftp-stage
with a path structure matching what is expected on
ftp-master. This is equivalent to
running the following in the &man.chroot.8; directly:
&prompt.root; make -C /usr/src/release -f Makefile.mirrors EVERYTHINGISFINE=1 ftp-stage
After each architecture is built,
thermite.sh will
rsync the ${DESTDIR}/R/ftp-stage
from the build &man.chroot.8; to /snap/ftp/snapshots or
/snap/ftp/releases on
the build host, respectively.
Copying the files to a staging directory on
ftp-master before moving the files
into pub/ to begin
propagation to the Project mirrors
Once all builds have finished, /snap/ftp/snapshots, or
/snap/ftp/releases
for a release, is polled by
ftp-master using
rsync to /archive/tmp/snapshots or
/archive/tmp/releases,
respectively.
On ftp-master in the &os;
Project infrastructure, this step requires
root level access, as this step must
be executed as the archive user.
Publishing &os; Installation Media
Once the images are staged in /archive/tmp/, they are ready to
be made public by putting them in /archive/pub/FreeBSD. In order
to reduce propagation time, &man.pax.1; is used to create hard
links from /archive/tmp
to /archive/pub/FreeBSD.
In order for this to be effective, both /archive/tmp and /archive/pub must reside on the
same logical filesystem.
There is a caveat, however, where
rsync must be used after &man.pax.1;
in order to correct the symbolic links in pub/FreeBSD/snapshots/ISO-IMAGES
which &man.pax.1; will replace with a hard link, increasing the
propagation time.
As with the staging steps, this requires
root level access, as this step must be
executed as the archive user.
As the archive user:
&prompt.user; cd /archive/tmp/snapshots
&prompt.user; pax -r -w -l . /archive/pub/FreeBSD/snapshots
&prompt.user; /usr/local/bin/rsync -avH /archive/tmp/snapshots/* /archive/pub/FreeBSD/snapshots/
Replace snapshots with
releases as appropriate.