- Note that 'make upgrade' not only upgrades /etc but the whole system.
[dragonfly.git] / UPDATING
1 $DragonFly: src/UPDATING,v 1.16 2005/11/24 16:33:03 swildner Exp $
2
3 Updating Information for DragonFly users.
4
5 This file should warn you of any pitfalls which you might need to work around
6 when trying to update your DragonFly system.
7
8 If you discover any problem, please contact the bugs@lists.dragonflybsd.org
9 mailing list with the details.
10
11 ------------------------------------------------------------------------------
12
13 > Updating from pre-1.2 systems or FreeBSD 4.x to DragonFly 1.3+ (either
14   PREVIEW or HEAD)
15 ---------------------
16
17 The compatiblity shims for the build environment have been removed, you
18 have to update to DragonFly 1.2 release branch first.
19
20 The default PAM configuration has moved from /etc/pam.conf to /etc/pam.d/.
21 The existing configuration can be converted using /etc/pam.d/convert.sh.
22 Entries in /etc/pam.d/ override entries in /etc/pam.conf. In addition
23 the pam_skey.so module was retired, you have to remove it manually from
24 your configuration, when you convert it.
25
26 > Required user and group IDs when upgrading from either FreeBSD or DragonFly
27 ---------------------
28
29 The following users may be missing from your password file.  Use vipw and
30 add any that are missing:
31
32 smmsp:*:25:25::0:0:Sendmail Submission User:/var/spool/clientmqueue:/sbin/nologin
33 _pflogd:*:64:64::0:0:pflogd privsep user:/var/empty:/sbin/nologin
34 _ntp:*:65:65::0:0:ntpd privsep user:/var/empty:/sbin/nologin
35
36 The following groups may be missing from your group file.  Use vi /etc/group
37 and add any that are missing:
38
39 smmsp:*:25:
40 authpf:*:63:
41 _pflogd:*:64:
42 _ntp:*:65:
43
44
45 > Upgrading to DragonFly from FreeBSD
46 ---------------------
47
48 You can build the DragonFly world and DragonFly kernels on a FreeBSD-4.x or
49 FreeBSD-5.x machine and then install DragonFly over FreeBSD, replacing
50 FreeBSD.  Note that the DragonFly buildworld target does not try to reuse
51 make depend information, it starts from scratch, so no pre-cleaning of the
52 object hierarchy is necessary.
53
54         # get the CVS repository (it is placed in /home/dcvs, 500MB).
55         # Please use the -h option and a mirror site to pull the 
56         # initial repository, but feel free to use the main repository
57         # machine to pull updates.
58         cvsup /usr/share/examples/cvsup/DragonFly-cvs-supfile
59         # install the source from the CVS hierarchy (remove preexisting
60         # FreeBSD src first) (500MB)
61         cd /usr
62         rm -rf src
63         cvs -R -d /home/dcvs checkout src
64         cvs -R -d /home/dcvs checkout dfports
65
66         # build it (500MB used in /usr/obj)
67         #
68         cd /usr/src
69         make buildworld
70         make buildkernel KERNCONF=<KERNELNAME>
71
72 Once you have built DragonFly you have to install it over FreeBSD.  Since
73 DragonFly does not track changes made by FreeBSD to its include file 
74 hierarchy and include file pollution can cause all sorts of unexpected
75 compilation issues to come up, it is best to wipe your include hierarchy
76 prior to installing DragonFly.  Note that you should not wipe any installed
77 FreeBSD header files or binaries until after you have successfully completed
78 the build steps above.
79
80         rm -rf /usr/include
81         mkdir /usr/include
82         make installkernel KERNCONF=<KERNELNAME>
83         make installworld
84
85 Then you need to upgrade your system.  DragonFly's 'make upgrade' target 
86 will unconditionally upgrade the /etc files that sysops do not usually
87 mess around with, such as the files in /etc/rc.d.  It will also remove any
88 obsolete files such as utilities and manpages that have been removed from
89 the system since the version you're coming from.  If you are unsure we 
90 recommend that you make a backup of at least your /etc before applying
91 this step.  Note that DragonFly's RC system is basically RCNG from
92 FreeBSD-5, but there are some differences in the contents of the RC files.
93
94         make upgrade
95
96 NOTE! Never do a 'make upgrade' before 'make installworld' has been run.
97 Doing so might leave your system in an unusable state.
98
99 Finally we recommend that you do an 'ls -lta BLAH' for /bin, /sbin, /usr/bin,
100 /usr/bin, and /usr/lib, and remove any stale files that you find.  Please
101 report these files to the DragonFly developers so that they can be added to
102 the 'upgrade' target.
103
104 ------------------------------------------------------------------------------
105
106 > Upgrading DragonFly on an existing DragonFly system.
107 ---------------------
108
109 The best way to upgrade DragonFly is to maintain a copy of the DragonFly
110 CVS repository via cvsup and to checkout the source base and DragonFly
111 ports via this repository.   The repository is stored in /home/dcvs by
112 default and requires about 500MB of disk space.  The checked out source
113 tree (/usr/src) requires about 500MB of disk space, and the build will
114 eat around 500MB of space out of /usr/obj.  To maintain the build you 
115 should reserve at least 2GB of disk space, and 3GB if you have the space.
116
117 Note: most people run cvsup via a root cron job to keep the repository up to
118 date.  Please limit such automatic updates to once a day and try to randomize
119 the hour and minute in the cron job a bit to avoid pileups.
120
121         # get the CVS repository (it is placed in /home/dcvs)
122         cvsup /usr/share/examples/cvsup/DragonFly-cvs-supfile
123         # install the source from the CVS hierarchy
124         cd /usr
125         cvs -R -d /home/dcvs checkout -P src
126         cvs -R -d /home/dcvs checkout -P dfports
127
128 Once you have the repository and broken out sources you can decide whether to
129 update your sources from the repository automatically or manually.  Since
130 you are tracking changes made to DragonFly, it is usually a good idea to
131 update the sources manually:
132
133         cd /usr/src
134         cvs update -dP
135
136 To upgrade a DragonFly system from sources you run the following sequence:
137
138         cd /usr/src
139         make buildworld
140         make buildkernel KERNCONF=<KERNELNAME>
141         make installkernel KERNCONF=<KERNELNAME>
142         make installworld
143
144 You will also want to run the 'upgrade' target to upgrade your /etc and the
145 rest of your system.  The upgrade target is aware of stale files created by
146 older DragonFly installations and should delete them automatically.
147
148         make upgrade
149
150 NOTE! Never do a 'make upgrade' before 'make installworld' has been run.
151 Doing so might leave your system in an unusable state.
152
153 If you are using 'config' manually from /usr/src/sys/i386/conf/BLAH, note 
154 that the build will use the current DragonFly environment rather then
155 the post-build environment from the last buildworld.   For this reason manual
156 configs are discouraged.  The proper way to build a kernel is to use the
157 'buildkernel' or 'quickkernel' target in /usr/src.
158
159 Once you've done a full build of the world and kernel you can do incremental
160 upgrades of either by using the 'quickworld' and 'quickkernel' targets
161 instead of 'buildworld' and 'buildkernel'.  If you have any problems with
162 the quick targets, try doing a cvsup, cvs update, and then a full buildworld
163 and buildkernel as shown above, before asking for help.
164
165 > Kerberos IV
166 -------------
167
168 Kerberos IV (eBones) was removed from the tree, please consider moving to
169 Kerberos 5 (Heimdal).
170
171 > FreeBSD and DragonFly ports
172 -----------------------------
173
174 DragonFly will eventually have its own package management system but at the
175 moment we leverage off of the FreeBSD ports system.  You should maintain
176 /usr/ports from the FreeBSD cvs repository via cvsup just like you do now.
177
178 DragonFly has its own 'port overrides' hierarchy in /usr/dfports.  You can
179 check this out of the DragonFly cvs repository using:
180
181 cd /usr
182 cvs -R -d /home/dcvs checkout -P dfports
183
184 Be sure that you have installed 'relpath' from the DragonFly sources
185 (/usr/src/usr.bin/relpath) as well as the updated /usr/share/mk files from
186 /usr/src/share/mk.  As a test you can cd into /usr/ports/sysutils/cpdup and
187 build the port.  Dragonfly should contain an override and you should see a
188 warning message that the DragonFly override is being build instead when you
189 build it from the FreeBSD ports.
190