Merge branch 'vendor/GDTOA'
[dragonfly.git] / nrelease / root / README
1                             DRAGONFLY CDROM README FILE
2
3     This CDROM boots DragonFly BSD.  Basically what you get is a full base
4     system on CD with certain critical directories, such as /tmp, remounted
5     read-write using MFS.  Your existing hard drive is not affected by
6     booting this CDROM.
7
8     NOTE!!! DRAGONFLY IS UNDERGOING DEVELOPMENT AND IS CONSIDERED
9     EXPERIMENTAL!  BSD RELATED EXPERIENCE IS RECOMMENDED WHEN USING
10     THIS CDROM.
11
12     If you just want to play with DragonFly and not mess with your hard disk,
13     this CDROM boots into a fully operational console-based system, though
14     without swap it should be noted that you are limited by available memory.
15     It is a good idea to test your hardware for compatibility from a CD boot
16     before spending time installing the dist on your hard disk.
17
18
19                             AUTOMATIC INSTALLATION
20
21     There are currently two installation tools available - the installer, and
22     rconfig.
23
24     The installer can be run with a text-based (curses) user interface
25     from the serial console or a VTY, and provides a straightforward method
26     for installing DragonFly on your HD.  To start it, just login with the
27     username 'installer'.
28
29     The installer can also be run with a web-based (CGI) user interface.
30     To set this up manually is a bit of work, but much of it can be automated
31     by writing a couple of lines into a configuration file on a floppy disk
32     or USB pendrive, and inserting or attaching that to the computer before
33     booting the CDROM.  See the file /etc/defaults/pfi.conf for more info.
34
35     rconfig is a client/server protocol which requires a server (typically on
36     the same network).  An example server setup can be found in
37     /usr/share/examples/rconfig.  If you have multiple machines you can setup
38     an installation script and run rconfig on a server and then install the
39     clients from CD boot with network connectivity (e.g. dhclient <blah>)
40     and then, typically, 'rconfig -a'.
41
42     You can also just boot from the CD, login as 'root' to get a shell
43     prompt, copy the sample script to /tmp, edit, and run it directly
44     (assuming that blowing away your existing disk is ok).
45
46
47                                   CONSOLE OPERATION
48
49     The second stage boot (boot2) and third stage boot (loader) default
50     to dual serial & video console I/O.  The system will also throw a login
51     prompt up on ttyd0 by default.  You can direct the boot output
52     to just the serial port by creating the file /boot.config with the
53     line '-h', or to just the screen using '-V'.  If you wish to leave
54     boot2 in dual I/O mode but want the third stage to use just one or the
55     other, you can set the 'console' environment variable in /boot/loader.conf
56     to either 'console=vidconsole' or 'console=comconsole'.
57
58     The dual serial port operation might have to be disabled if you use
59     the serial port for things like UPSs.  Also note that by default
60     the CD will run a login prompt on the serial port after booting is
61     complete.  This can be disabled by editing the 'ttyd0' line in /etc/ttys
62     after installation is complete.
63
64     Note that the kernel itself currently only supports one console or the
65     other.  If both are enabled, the kernel will use the video console or
66     the last one for which input was received.
67
68
69                                 MANUAL INSTALLATION
70
71     Manual installation of DragonFly onto an HD involves the following sequence
72     of commands.  You must be familiar with BSD style UNIX systems to do
73     installations manually.  The primary IDE hard drive is typically 'ad0'
74     and DragonFly is typically installed onto the first free slice
75     (ad0s1 if disk is empty, ad0s2 if your first slice contains
76     another OS, etc).  Be careful to substitute the correct partition name
77     in the steps below.
78
79         # OPTIONAL STEP: If your disk is already partitioned and you
80         # have a spare primary partition on which you want to install
81         # Dragonfly, skip this step.  However, sometimes old boot
82         # blocks or cruft in the boot area can interfere with the
83         # initialization process.  A cure is to zero out the start of
84         # the disk before running fdisk.
85         #
86         # WARNING: This COMPLETELY WIPES and repartitions your hard drive.
87         #
88         dd if=/dev/zero of=/dev/ad0 bs=32k count=16
89         fdisk -I ad0
90         fdisk -B ad0
91
92         # If you didn't zero the disk as above, but have a spare slice
93         # whose partition type you want to change to UFS, use fdisk(8).
94
95         # This installs boot blocks onto the HD and verifies their 
96         # installation.  See note just above the 'reboot' below for
97         # things to try if it does not boot from your HD.  If you
98         # already have a multi-OS bootloader installed you can skip
99         # this step.
100         #
101         boot0cfg -B ad0
102         boot0cfg -v ad0
103
104         # This creates an initial label on the chosen slice of the HD.  If
105         # you have problems booting you could try wiping the first 32 blocks
106         # of the slice with dd and then reinstalling the label.  Replace
107         # 'ad0s1' with the chosen slice.
108         #
109         # dd if=/dev/zero of=/dev/ad0s1 bs=32k count=16
110         disklabel -B -r -w ad0s1 auto
111
112         # Edit the label.  Create various standard partitions.  The typical
113         # configuration is:
114         #
115         #       ad0s1a  256m            This will be your /
116         #       ad0s1b  1024m           This will be your swap
117         #       ad0s1c                  (leave alone)
118         #       ad0s1d  256m            This will be your /var
119         #       ad0s1e  256m            This will be your /tmp
120         #       ad0s1f  8192m           This will be your /usr (min 4096m)
121         #       ad0s1g  *               All remaining space to your /home
122         #
123         # An example disklabel can be found in /etc/disklabel.ad0s1.
124         #
125         disklabel -e ad0s1
126
127         # If you are not using ad0s1 as in the previous commands, you will 
128         # need to create the device nodes for that slice.  Change the  
129         # slice number (ad0s2a) to match the disk slice you are using.
130         # 
131         # The device nodes are automatically created for ad0s1, so you can 
132         # safely skip this step if you are using that disk slice.
133         #
134         cd /dev && MAKEDEV ad0s2a
135
136         # Newfs (format) the various filesystems.  Softupdates is not 
137         # normally enabled on the root filesystem because large kernel or
138         # world installs/upgrades can run it out of space due to softupdate's
139         # delayed bitmap freeing code.
140         #
141         newfs /dev/ad0s1a
142         newfs -U /dev/ad0s1d
143         newfs -U /dev/ad0s1e
144         newfs -U /dev/ad0s1f
145         newfs -U /dev/ad0s1g
146
147         # Mount the filesystems.
148         #
149         mount /dev/ad0s1a /mnt
150         mkdir /mnt/var
151         mkdir /mnt/tmp
152         mkdir /mnt/usr
153         mkdir /mnt/home
154         mount /dev/ad0s1d /mnt/var
155         mount /dev/ad0s1e /mnt/tmp
156         mount /dev/ad0s1f /mnt/usr
157         mount /dev/ad0s1g /mnt/home
158
159         # Copy the CDRom onto the target.  cpdup won't cross mount boundaries
160         # on the source (e.g. the MFS remounts) so it takes a few commands.
161         #
162         # Note that /etc contains the config files used for booting from the
163         # CDROM itself, and /etc.hdd contains those for booting off a
164         # hard disk.  So it's the latter that you want to copy to /mnt/etc.
165         #
166         cpdup / /mnt
167         cpdup /var /mnt/var
168         cpdup /etc.hdd /mnt/etc
169         cpdup /dev /mnt/dev
170         cpdup /usr /mnt/usr
171
172         # Cleanup.  Also, with /tmp a partition it is usually reasonable
173         # to make /var/tmp a softlink to /tmp.
174         #
175         chmod 1777 /mnt/tmp
176         rm -rf /mnt/var/tmp
177         ln -s /tmp /mnt/var/tmp
178
179         # Edit /mnt/etc/fstab to reflect the new mounts.  An example fstab
180         # file based on the above parameters exists as /mnt/etc/fstab.example
181         # which you can rename to /mnt/etc/fstab.
182         #
183         mv /mnt/etc/fstab.example /mnt/etc/fstab
184         vi /mnt/etc/fstab
185
186         # Save out your disklabel just in case.  It's a good idea to save
187         # it to /etc so you can get at it from your backups.  You do intend
188         # to backup your system, yah? :-)  (This isn't critical but it's a
189         # good idea).
190         # 
191         disklabel ad0s1 > /mnt/etc/disklabel.ad0s1
192
193
194                         MISC CLEANUPS BEFORE REBOOTING
195
196     Once you've duplicated the CD onto your HD you have to make some edits
197     so the system boots properly from your HD.  Primarily you must remove
198     or edit /mnt/boot/loader.conf, which exists on the CD to tell the kernel
199     to mount the CD's root partition.
200
201         # Remove or edit /mnt/boot/loader.conf so the kernel does not try
202         # to obtain the root filesystem from the CD, and remove the other
203         # cruft that was sitting on the CD that you don't need on the HD.
204         #
205         rm /mnt/boot/loader.conf
206         rm /mnt/README* /mnt/autorun* /mnt/index.html /mnt/dflybsd.ico
207         rm /mnt/boot.catalog
208         rm -r /mnt/rr_moved
209
210     At this point it should be possible to reboot.  The CD may be locked
211     since it is currently mounted.  To remove the CD, type 'halt' instead
212     of 'reboot', wait for the machine to halt, then the CD door should be
213     unlocked.  Remove the CD and hit any key to reboot.
214
215     Be careful of the CD drawer closing on you if you try to remove the CD
216     while the machine is undergoing a reboot or reset.
217
218     WARNING: Do not just hit reset; the kernel may not have written out
219     all the pending data to your HD.  Either unmount the HD partitions
220     or type halt or reboot.
221
222         # halt
223         (let the machine halt)
224         (remove CD when convenient, be careful of the CD drawer closing on you)
225         (hit any key to reboot)
226
227
228                                     THE ACPI ISSUE
229
230     You will notice in the boot menu that you can choose to boot with or 
231     without ACPI.  ACPI is an infrastructure designed to allow an operating
232     system to configure hardware devices associated with the system.
233     Unfortunately, as usual, PC BIOS makers have royally screwed up the
234     standard and ACPI is as likely to hurt as it is to help.  Worse, some
235     PCs cannot be booted without it, so there is no good 'default' choice.
236
237     The system will use ACPI by default.  You can disable it in the default
238     boot by adding the line 'hint.acpi.0.disabled=1' in /boot/loader.conf.
239     If you boot without hitting any menu options the system will boot without
240     ACPI.  To boot without ACPI no matter what, place 'unset acpi_load' in
241     our /boot/loader.conf instead.  This is not recommended.
242
243
244                         IF YOU HAVE PROBLEMS BOOTING FROM HD
245
246     There are a couple of things to try.  Try booting from the CD again and
247     use boot0cfg to turn off packet mode (boot0cfg -o nopacket ad0).  If you
248     can select CHS or LBA mode in your BIOS, try changing the mode to LBA.
249     Also try booting with and without ACPI (option 1 or 2 in the boot menu).
250
251     Once you have a working HD based system you can clean up /etc/rc.conf
252     to enable things like cron, sendmail, setup your networking, and so
253     forth.  If 'ifconfig' does not show your networking device you could
254     try to kldload it from /modules.  With a recognized network device
255     you can ifconfig its IP address or, if you have a DHCP server on your
256     network, use 'dhclient <interfacename>' to obtain an IP address from
257     the network.
258
259
260             USING GIT TO OBTAIN A SOURCE TREE AND DOING BUILDWORLDS
261
262     Instructions on how to obtain and maintain DragonFly source code using
263     git are in the development(7) manual page.
264
265     To upgrade a DragonFly system from sources you run the following
266     sequence:
267
268     cd /usr/src
269     make buildworld
270     make buildkernel KERNCONF=<KERNELNAME>
271     make installkernel KERNCONF=<KERNELNAME>
272     make installworld
273
274     You will also want to run the 'upgrade' target to upgrade your /etc
275     and the rest of your system.  The upgrade target is aware of stale
276     files created by older DragonFly installations and should delete them
277     automatically.
278
279     make upgrade
280
281     See the build(7) manual page for further information.
282
283     Once you've done a full build of the world and kernel you can do
284     incremental upgrades of either by using the 'quickworld' and
285     'quickkernel' targets instead of 'buildworld' and 'buildkernel'.  If
286     you have any problems with the quick targets, try updating your repo
287     first, and then a full buildworld and buildkernel as shown above, before
288     asking for help.
289
290
291                 OBTAINING A PKGSRC TREE TO BUILD/INSTALL PACKAGES
292
293     In order to obtain a reasonably current snapshot of the pkgsrc tree, use
294     the tarball from NetBSD:
295
296     fetch -o /tmp/pkgsrc.tar.gz ftp://ftp.NetBSD.org/pub/NetBSD/packages/pkgsrc.tar.gz
297     cd /usr; tar -xzf /tmp/pkgsrc.tar.gz; chown -R root:wheel pkgsrc
298
299     This tree can then be kept up to date with cvs update:
300
301     cd /usr/pkgsrc; cvs up
302
303
304                         EMERGENCY RECOVERY FROM THE CD
305
306     Lets say you blew up your kernel or something else in / and you need to
307     boot the CD to fix it.  Remember that you have a fully operational 
308     system when booting the CD, but that you have to fsck and mount your
309     hard drive (typically onto /mnt) to get at the contents of your HD.
310
311     Your HD is typically an IDE hard drive, so the device is typically
312     /dev/ad0.  DragonFly is typically on the first slice, which is
313     /dev/ad0s1, and the root partition is always in partition 'a',
314     which is /dev/ad0s1a.
315
316     # fsck root before trying to mount it.  
317     fsck /dev/ad0s1a
318     # mount root read-write onto /mnt
319     mount /dev/ad0s1a /mnt
320     # copy files from the CD as appropriate to make it possible to boot
321     # from your HD again.  Note that /mnt/kernel may be flags-protected.
322     chflags noschg /mnt/kernel
323     cp /kernel /mnt/kernel
324     cp /modules/* /mnt/modules/
325
326     If you want to mount other partitions from your HD but have forgotten
327     what they are, simply cat /mnt/etc/fstab after mounting the root
328     partition.
329
330 $DragonFly: src/nrelease/root/README,v 1.22 2006/10/24 17:09:45 swildner Exp $
331