|
|
| version 1.6, 2003/11/18 00:34:20 | version 1.7, 2004/04/22 23:24:19 |
|---|---|
| Line 10 mailing list with the details. | Line 10 mailing list with the details. |
| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ |
| > Compiling DragonFly | > Upgrading to DragonFly from FreeBSD |
| --------------------- | --------------------- |
| Compiling DragonFly requires an ISO C90 or higher compliant compiler. | You can build the DragonFly world and DragonFly kernels on a FreeBSD-4.x or |
| Compilers which support this are, amongst others: The GNU C Compiler, The | FreeBSD-5.x machine and then install DragonFly over FreeBSD, replacing |
| Intel C++ Compiler, and The TenDRA Compiler. | FreeBSD. Note that the DragonFly buildworld target does not try to reuse |
| make depend information, it starts from scratch, so no pre-cleaning of the | |
| You can do DragonFly buildworld/buildkernel/installworld/installkernel | object hierarchy is necessary. |
| on FreeBSD-stable boxen as well as DragonFly boxen. | |
| # get the CVS pository (it is placed in /home/dcvs, 500MB). | |
| Due to source tree reorganizations at various times header files may have | # Please use the -h option and a mirror site to pull the |
| moved or been deleted, leaving stale header files in /usr/include. This | # initial repository, but feel free to use the main repository |
| can also cause 'make depend' to fail due to make depend getting confused | # machine to pull updates. |
| about old header files. | cvsup /usr/share/examples/cvsup/DragonFly-supfile |
| # install the source from the CVS hierarchy (remove preexisting | |
| # FreeBSD src first) (500MB) | |
| cd /usr | |
| rm -rf src | |
| cvs -R -d /home/dcvs checkout src | |
| cvs -R -d /home/dcvs checkout dfports | |
| The easiest way to deal with include file messes is to reinstall /usr/include | # build it (500MB used in /usr/obj) |
| from scratch as follows: | # |
| cd /usr/src | |
| make buildworld | |
| make buildkernel KERNCONF=<KERNELNAME> | |
| Once you have built DragonFly you have to install it over FreeBSD. Since | |
| DragonFly does not track changes made by FreeBSD to its include file | |
| hierarchy and include file pollution can cause all sorts of unexpected | |
| compilation issues to come up, it is best to wipe your include hierarchy | |
| prior to installing DragonFly. Note that you should not wipe any installed | |
| FreeBSD header files or binaries until after you have successfully completed | |
| the build steps above. | |
| rm -rf /usr/include # safer to type this verses /usr/include/* | rm -rf /usr/include |
| mkdir /usr/include | mkdir /usr/include |
| make installkernel KERNCONF=<KERNELNAME> | |
| make installworld | |
| Then you need to upgrade your /etc. DragonFly's 'make upgrade' target | |
| will unconditionally upgrade the /etc files that sysops do not usually | |
| mess around with, such as the files in /etc/rc.d. If you are unsure we | |
| recommend that you make a backup of your /etc before applying this step. | |
| Note that DragonFly's RC system is basically RCNG from FreeBSD-5, but | |
| there are some differences in the contents of the RC files. | |
| make upgrade | |
| Finally we recommend that you do an 'ls -lta BLAH' for /bin, /sbin, /usr/bin, | |
| /usr/bin, and /usr/lib, and remove any stale files that you find. | |
| ------------------------------------------------------------------------------ | |
| > Upgrading DragonFly on an existing DragonFly system. | |
| --------------------- | |
| The best way to upgrade DragonFly is to maintain a copy of the DragonFly | |
| CVS repository via cvsup and to checkout the source base and DragonFly | |
| ports via this repository. The repository is stored in /home/dcvs by | |
| default and requires about 500MB of disk space. The checked out source | |
| tree (/usr/src) requires about 500MB of disk space, and the build will | |
| eat around 500MB of space out of /usr/obj. To maintain the build you | |
| should reserve at least 2GB of disk space, and 3GB if you have the space. | |
| Note: most people run cvsup via a root cron job to keep the repository up to | |
| date. Please limit such automatic updates to once a day and try to randomize | |
| the hour and minute in the cron job a bit to avoid pileups. | |
| # get the CVS pository (it is placed in /home/dcvs) | |
| cvsup /usr/share/examples/cvsup/DragonFly-supfile | |
| # install the source from the CVS hierarchy | |
| cd /usr | |
| cvs -R -d /home/dcvs checkout src | |
| cvs -R -d /home/dcvs checkout dfports | |
| Once you have the repository and broken out sources you can decide whether to | |
| update your sources from the repository automatically or manually. Since | |
| you are tracking changes made to DragonFly, it is usually a good idea to | |
| update the sources manually: | |
| cd /usr/src | cd /usr/src |
| make installincludes | cvs update |
| If your have trouble doing builds due to the make depend stage failing, the | To upgrade a DragonFly system from sources you run the following sequence: |
| easiest solution is to wipe your object tree and rebuild/reinstall. | |
| rm -rf /usr/obj # safer to type this verses /usr/obj/* | |
| mkdir /usr/obj | |
| cd /usr/src | cd /usr/src |
| make buildkernel KERNCONF=<KERNELNAME> | |
| make installkernel | |
| make buildworld | make buildworld |
| make buildkernel KERNCONF=<KERNELNAME> | |
| make installkernel KERNCONF=<KERNELNAME> | |
| make installworld | make installworld |
| If you are using 'config' manually, note that building kernels via the manual | You will also want to run the 'upgrade' target to upgrade your /etc. The |
| config / /usr/src/sys/compile/BLAH procedure only works reliably on an | upgrade target is aware of stale files created by older DragonFly |
| uptodate DragonFly box. The official way to build kernels is via the | installations and should delete them automatically. |
| 'make buildkernel KERNCONf=<KERNELNAME>' target from /usr/src. | |
| make upgrade | |
| If you are using 'config' manually from /usr/src/sys/i386/conf/BLAH, note | |
| that the build will use the current DragonFly environment rather then | |
| the post-build environment from the last buildworld. For this reason manual | |
| configs are discouraged. The proper way to build a kernel is to use the | |
| 'buildkernel' or 'quickkernel' target in /usr/src. | |
| Once you've done a full build of the world and kernel you can do incremental | |
| upgrades of either by using the 'quickworld' and 'quickkernel' targets | |
| instead of 'buildworld' and 'buildkernel'. If you have any problems with | |
| the quick targets, try doing a cvsup, cvs update, and then a full buildworld | |
| and buildkernel as shown above, before asking for help. | |
| > Kerberos IV | > Kerberos IV |
| ------------- | ------------- |