| 1 | # Updating Information for DragonFly users. |
| 2 | # |
| 3 | # |
| 4 | # This file should warn you of any pitfalls which you might need to work around |
| 5 | # when trying to update your DragonFly system. The information below is |
| 6 | # in reverse-time order, with the latest information at the top. |
| 7 | # |
| 8 | # If you discover any problem, please contact the bugs@lists.dragonflybsd.org |
| 9 | # mailing list with the details. |
| 10 | # |
| 11 | # $DragonFly: src/UPDATING,v 1.25 2008/03/03 20:24:51 swildner Exp $ |
| 12 | |
| 13 | +-----------------------------------------------------------------------+ |
| 14 | + UPGRADING DRAGONFLY ON AN EXISTING DRAGONFLY SYSTEM + |
| 15 | + GENERAL + |
| 16 | +-----------------------------------------------------------------------+ |
| 17 | |
| 18 | The best way to upgrade DragonFly is to maintain a copy of the DragonFly |
| 19 | CVS repository via cvsup and to checkout the source base via this repository. |
| 20 | The repository is stored in /home/dcvs by default and requires about 800MB |
| 21 | of disk space. The checked out source tree (/usr/src) requires about 400MB |
| 22 | of disk space, and the build will eat around 800MB of space out of /usr/obj. |
| 23 | To maintain the build you should reserve at least 2.5GB of disk space, and |
| 24 | 3.5GB if you have the space. |
| 25 | |
| 26 | Note: most people run cvsup via a root cron job to keep the repository up to |
| 27 | date. Please limit such automatic updates to once a day and try to randomize |
| 28 | the hour and minute in the cron job a bit to avoid pileups. |
| 29 | |
| 30 | # get the CVS repository (it is placed in /home/dcvs) |
| 31 | cvsup /usr/share/examples/cvsup/DragonFly-cvs-supfile |
| 32 | # install the source from the CVS hierarchy |
| 33 | cd /usr |
| 34 | cvs -R -d /home/dcvs checkout -P src |
| 35 | |
| 36 | Once you have the repository and broken out sources you can decide whether to |
| 37 | update your sources from the repository automatically or manually. Since |
| 38 | you are tracking changes made to DragonFly, it is usually a good idea to |
| 39 | update the sources manually: |
| 40 | |
| 41 | cd /usr/src |
| 42 | cvs update -dP |
| 43 | |
| 44 | To upgrade a DragonFly system from sources you run the following sequence: |
| 45 | |
| 46 | cd /usr/src |
| 47 | make buildworld |
| 48 | make buildkernel KERNCONF=<KERNELNAME> |
| 49 | make installkernel KERNCONF=<KERNELNAME> |
| 50 | make installworld |
| 51 | |
| 52 | You will also want to run the 'upgrade' target to upgrade your /etc and the |
| 53 | rest of your system. The upgrade target is aware of stale files created by |
| 54 | older DragonFly installations and should delete them automatically. |
| 55 | |
| 56 | make upgrade |
| 57 | |
| 58 | Once you've done a full build of the world and kernel you can do incremental |
| 59 | upgrades of either by using the 'quickworld' and 'quickkernel' targets |
| 60 | instead of 'buildworld' and 'buildkernel'. If you have any problems with |
| 61 | the quick targets, try doing a cvsup, cvs update, and then a full buildworld |
| 62 | and buildkernel as shown above, before asking for help. |
| 63 | |
| 64 | +-----------------------------------------------------------------------+ |
| 65 | + UPGRADING FROM DRAGONFLY <= 1.8 TO DRAGONFLY >= 1.9 + |
| 66 | +-----------------------------------------------------------------------+ |
| 67 | |
| 68 | In 1.9 major changes to the disk management infrastructure have taken |
| 69 | place. make upgrade may not catch all of your disk devices in /dev, |
| 70 | so after upgrading be sure to cd /dev; ./MAKEDEV <blah> where <blah> |
| 71 | are all of your disk devices. |
| 72 | |
| 73 | The biggest changes in 1.9 are: |
| 74 | |
| 75 | (1) That whole-slice devices such as da0s1 no longer share the same device |
| 76 | id as partition c devices such as da0s1c. |
| 77 | |
| 78 | (2) The whole-disk device (e.g. da0) is full raw access to the disk, |
| 79 | with no snooping or reserved sectors. Consequently you cannot run |
| 80 | disklabel on this device. Instead you must run disklabel on a |
| 81 | whole-slice device. |
| 82 | |
| 83 | (3) The 'compatibility' partitions now use slice 0 in the device name, |
| 84 | so instead of da0a you must specify da0s0a. Also, as per (1) above, |
| 85 | accessing the disklabel for the compatibility partitions must be |
| 86 | done via slice 0 (da0s0). |
| 87 | |
| 88 | (4) Many device drivers that used to fake up labels, such as CD, ACD, VN, |
| 89 | and CCD now run through the disk management layer and are assigned |
| 90 | real disk management devices. VN and CCD in particular do not usually |
| 91 | use a MBR and disklabels must be accessed through the compatibility |
| 92 | slice 0. Your /etc/ccd.conf file still specifies 'ccd0', though, you |
| 93 | don't name it 'ccd0s0' in the config file. |
| 94 | |
| 95 | Generally speaking, you have to get used to running fdisk and disklabel on |
| 96 | the correctly specified device names. A lot of the wiggle, such as running |
| 97 | disklabel on a partition, has been removed. |
| 98 | |
| 99 | +-----------------------------------------------------------------------+ |
| 100 | + UPGRADING FROM OLDER VERSIONS OF DRAGONFLY OR FREEBSD + |
| 101 | +-----------------------------------------------------------------------+ |
| 102 | |
| 103 | > Kerberos IV |
| 104 | ------------- |
| 105 | |
| 106 | Kerberos IV (eBones) was removed from the tree, please consider moving to |
| 107 | Kerberos 5 (Heimdal). |
| 108 | |
| 109 | > Package Management System |
| 110 | --------------------------- |
| 111 | |
| 112 | Starting with the 1.4 release, DragonFly uses NetBSD's pkgsrc package |
| 113 | management system. The necessary tools to build and maintain packages |
| 114 | are provided in /usr/pkg/bin and /usr/pkg/sbin. Make sure that these |
| 115 | directories are in your PATH variable. |
| 116 | |
| 117 | In order to obtain a reasonably current snapshot of the pkgsrc tree, use |
| 118 | the tarball from NetBSD: |
| 119 | |
| 120 | fetch -o /tmp/pkgsrc.tar.gz ftp://ftp.NetBSD.org/pub/NetBSD/packages/pkgsrc.tar.gz |
| 121 | cd /usr; tar -xzf /tmp/pkgsrc.tar.gz; chown -R root:wheel pkgsrc |
| 122 | |
| 123 | This tree can then be kept up to date with cvs update: |
| 124 | |
| 125 | cd /usr/pkgsrc; cvs up |
| 126 | |
| 127 | NOTE! If you upgraded from a pre-1.4 system to 1.4 or later, you need to |
| 128 | build and install the pkgsrc bootstrap manually: |
| 129 | |
| 130 | cd /usr/pkgsrc/bootstrap |
| 131 | ./bootstrap --pkgdbdir /var/db/pkg --prefix /usr/pkg |
| 132 | |
| 133 | +-----------------------------------------------------------------------+ |
| 134 | + UPGRADING DRAGONFLY ON AN EXISTING DRAGONFLY SYSTEM + |
| 135 | + UPDATING FROM PRE-1.2 SYSTEMS OR FreeBSD 4.x TO + |
| 136 | + DRAGONFLY 1.3+ (EITHER PREVIEW or HEAD) + |
| 137 | +-----------------------------------------------------------------------+ |
| 138 | |
| 139 | The compatibility shims for the build environment have been removed, you |
| 140 | have to update to DragonFly 1.2 release branch first. |
| 141 | |
| 142 | The default PAM configuration has moved from /etc/pam.conf to /etc/pam.d/. |
| 143 | The existing configuration can be converted using /etc/pam.d/convert.sh. |
| 144 | Entries in /etc/pam.d/ override entries in /etc/pam.conf. In addition |
| 145 | the pam_skey.so module was retired, you have to remove it manually from |
| 146 | your configuration, when you convert it. |
| 147 | |
| 148 | > Required user and group IDs when upgrading from either FreeBSD or DragonFly |
| 149 | --------------------- |
| 150 | |
| 151 | The following users may be missing from your password file. Use vipw and |
| 152 | add any that are missing: |
| 153 | |
| 154 | smmsp:*:25:25::0:0:Sendmail Submission User:/var/spool/clientmqueue:/sbin/nologin |
| 155 | _pflogd:*:64:64::0:0:pflogd privsep user:/var/empty:/sbin/nologin |
| 156 | |
| 157 | The following groups may be missing from your group file. Use vi /etc/group |
| 158 | and add any that are missing: |
| 159 | |
| 160 | smmsp:*:25: |
| 161 | authpf:*:63: |
| 162 | _pflogd:*:64: |
| 163 | |
| 164 | |
| 165 | > Upgrading to DragonFly from FreeBSD |
| 166 | --------------------- |
| 167 | |
| 168 | You can build the DragonFly world and DragonFly kernels on a FreeBSD-4.x or |
| 169 | FreeBSD-5.x machine and then install DragonFly over FreeBSD, replacing |
| 170 | FreeBSD. Note that the DragonFly buildworld target does not try to reuse |
| 171 | make depend information, it starts from scratch, so no pre-cleaning of the |
| 172 | object hierarchy is necessary. |
| 173 | |
| 174 | # get the CVS repository (it is placed in /home/dcvs, 500MB). |
| 175 | # Please use the -h option and a mirror site to pull the |
| 176 | # initial repository, but feel free to use the main repository |
| 177 | # machine to pull updates. |
| 178 | cvsup /usr/share/examples/cvsup/DragonFly-cvs-supfile |
| 179 | # install the source from the CVS hierarchy (remove preexisting |
| 180 | # FreeBSD src first) (500MB) |
| 181 | cd /usr |
| 182 | rm -rf src |
| 183 | cvs -R -d /home/dcvs checkout -P src |
| 184 | |
| 185 | # build it (500MB used in /usr/obj) |
| 186 | # |
| 187 | cd /usr/src |
| 188 | make buildworld |
| 189 | make buildkernel KERNCONF=<KERNELNAME> |
| 190 | |
| 191 | Once you have built DragonFly you have to install it over FreeBSD. Since |
| 192 | DragonFly does not track changes made by FreeBSD to its include file |
| 193 | hierarchy and include file pollution can cause all sorts of unexpected |
| 194 | compilation issues to come up, it is best to wipe your include hierarchy |
| 195 | prior to installing DragonFly. Note that you should not wipe any installed |
| 196 | FreeBSD header files or binaries until after you have successfully completed |
| 197 | the build steps above. |
| 198 | |
| 199 | rm -rf /usr/include |
| 200 | mkdir /usr/include |
| 201 | make installkernel KERNCONF=<KERNELNAME> |
| 202 | make installworld |
| 203 | |
| 204 | Then you need to upgrade your system. DragonFly's 'make upgrade' target |
| 205 | will unconditionally upgrade the /etc files that sysops do not usually |
| 206 | mess around with, such as the files in /etc/rc.d. It will also remove any |
| 207 | obsolete files such as utilities and manpages that have been removed from |
| 208 | the system since the version you're coming from. If you are unsure we |
| 209 | recommend that you make a backup of at least your /etc before applying |
| 210 | this step. Note that DragonFly's RC system is basically RCNG from |
| 211 | FreeBSD-5, but there are some differences in the contents of the RC files. |
| 212 | |
| 213 | make upgrade |
| 214 | |
| 215 | NOTE! Never do a 'make upgrade' before 'make installworld' has been run. |
| 216 | Doing so might leave your system in an unusable state. |
| 217 | |
| 218 | Finally we recommend that you do an 'ls -lta BLAH' for /bin, /sbin, /usr/bin, |
| 219 | /usr/bin, and /usr/lib, and remove any stale files that you find. Please |
| 220 | report these files to the DragonFly developers so that they can be added to |
| 221 | the 'upgrade' target. |
| 222 | |