DRAGONFLY CDROM README FILE This CDROM boots DragonFly BSD. Basically what you get is a full base system on CD with certain critical directories, such as /tmp, remounted read-write using MFS. Your existing hard drive is not affected by booting this CDROM. NOTE!!! DRAGONFLY IS UNDERGOING DEVELOPMENT AND IS CONSIDERED EXPERIMENTAL! BSD RELATED EXPERIENCE IS RECOMMENDED WHEN USING THIS CDROM. If you just want to play with DragonFly and not mess with your hard disk, this CDROM boots into a fully operational console-based system, though without swap it should be noted that you are limited by available memory. It is a good idea to test your hardware for compatibility from a CD boot before spending time installing the dist on your hard disk. AUTOMATIC INSTALLATION There are currently two installation tools available - the installer, and rconfig. The installer can be run with a text-based (curses) user interface from the serial console or a VTY, and provides a straightforward method for installing DragonFly on your HD. To start it, just login with the username 'installer'. The installer can also be run with a web-based (CGI) user interface. To set this up manually is a bit of work, but much of it can be automated by writing a couple of lines into a configuration file on a floppy disk or USB pendrive, and inserting or attaching that to the computer before booting the CDROM. See the file /etc/defaults/pfi.conf for more info. rconfig is a client/server protocol which requires a server (typically on the same network). An example server setup can be found in /usr/share/examples/rconfig. If you have multiple machines you can setup an installation script and run rconfig on a server and then install the clients from CD boot with network connectivity (e.g. dhclient ) and then, typically, 'rconfig -a'. You can also just boot from the CD, login as 'root' to get a shell prompt, copy the sample script to /tmp, edit, and run it directly (assuming that blowing away your existing disk is ok). CONSOLE OPERATION The second stage boot (boot2) and third stage boot (loader) default to dual serial & video console I/O. The system will also throw a login prompt up on ttyd0 by default. You can direct the boot output to just the serial port by creating the file /boot.config with the line '-h', or to just the screen using '-V'. If you wish to leave boot2 in dual I/O mode but want the third stage to use just one or the other, you can set the 'console' environment variable in /boot/loader.conf to either 'console=vidconsole' or 'console=comconsole'. The dual serial port operation might have to be disabled if you use the serial port for things like UPSs. Also note that by default the CD will run a login prompt on the serial port after booting is complete. This can be disabled by editing the 'ttyd0' line in /etc/ttys after installation is complete. Note that the kernel itself currently only supports one console or the other. If both are enabled, the kernel will use the video console or the last one for which input was received. MANUAL INSTALLATION Manual installation of DragonFly onto an HD involves the following sequence of commands. You must be familiar with BSD style UNIX systems to do installations manually. The primary IDE hard drive is typically 'ad0' and DragonFly is typically installed onto the first free slice (ad0s1 if disk is empty, ad0s2 if your first slice contains another OS, etc). Be careful to substitute the correct partition name in the steps below. # OPTIONAL STEP: If your disk is already partitioned and you # have a spare primary partition on which you want to install # Dragonfly, skip this step. However, sometimes old boot # blocks or cruft in the boot area can interfere with the # initialization process. A cure is to zero out the start of # the disk before running fdisk. # # WARNING: This COMPLETELY WIPES and repartitions your hard drive. # dd if=/dev/zero of=/dev/ad0 bs=32k count=16 fdisk -I ad0 fdisk -B ad0 # If you didn't zero the disk as above, but have a spare slice # whose partition type you want to change to UFS, use fdisk(8). # This installs boot blocks onto the HD and verifies their # installation. See note just above the 'reboot' below for # things to try if it does not boot from your HD. If you # already have a multi-OS bootloader installed you can skip # this step. # boot0cfg -B ad0 boot0cfg -v ad0 # This creates an initial label on the chosen slice of the HD. If # you have problems booting you could try wiping the first 32 blocks # of the slice with dd and then reinstalling the label. Replace # 'ad0s1' with the chosen slice. # # dd if=/dev/zero of=/dev/ad0s1 bs=32k count=16 disklabel -B -r -w ad0s1 auto # Edit the label. Create various standard partitions. The typical # configuration is: # # ad0s1a 256m This will be your / # ad0s1b 1024m This will be your swap # ad0s1c (leave alone) # ad0s1d 256m This will be your /var # ad0s1e 256m This will be your /tmp # ad0s1f 8192m This will be your /usr (min 4096m) # ad0s1g * All remaining space to your /home # # An example disklabel can be found in /etc/disklabel.ad0s1. # disklabel -e ad0s1 # If you are not using ad0s1 as in the previous commands, you will # need to create the device nodes for that slice. Change the # slice number (ad0s2a) to match the disk slice you are using. # # The device nodes are automatically created for ad0s1, so you can # safely skip this step if you are using that disk slice. # cd /dev && MAKEDEV ad0s2a # Newfs (format) the various filesystems. Softupdates is not # normally enabled on the root filesystem because large kernel or # world installs/upgrades can run it out of space due to softupdate's # delayed bitmap freeing code. # newfs /dev/ad0s1a newfs -U /dev/ad0s1d newfs -U /dev/ad0s1e newfs -U /dev/ad0s1f newfs -U /dev/ad0s1g # Mount the filesystems. # mount /dev/ad0s1a /mnt mkdir /mnt/var mkdir /mnt/tmp mkdir /mnt/usr mkdir /mnt/home mount /dev/ad0s1d /mnt/var mount /dev/ad0s1e /mnt/tmp mount /dev/ad0s1f /mnt/usr mount /dev/ad0s1g /mnt/home # Copy the CDRom onto the target. cpdup won't cross mount boundaries # on the source (e.g. the MFS remounts) so it takes a few commands. # # Note that /etc contains the config files used for booting from the # CDROM itself, and /etc.hdd contains those for booting off a # hard disk. So it's the latter that you want to copy to /mnt/etc. # cpdup / /mnt cpdup /var /mnt/var cpdup /etc.hdd /mnt/etc cpdup /dev /mnt/dev cpdup /usr /mnt/usr # Cleanup. Also, with /tmp a partition it is usually reasonable # to make /var/tmp a softlink to /tmp. # chmod 1777 /mnt/tmp rm -rf /mnt/var/tmp ln -s /tmp /mnt/var/tmp # Edit /mnt/etc/fstab to reflect the new mounts. An example fstab # file based on the above parameters exists as /mnt/etc/fstab.example # which you can rename to /mnt/etc/fstab. # mv /mnt/etc/fstab.example /mnt/etc/fstab vi /mnt/etc/fstab # Save out your disklabel just in case. It's a good idea to save # it to /etc so you can get at it from your backups. You do intend # to backup your system, yah? :-) (This isn't critical but it's a # good idea). # disklabel ad0s1 > /mnt/etc/disklabel.ad0s1 MISC CLEANUPS BEFORE REBOOTING Once you've duplicated the CD onto your HD you have to make some edits so the system boots properly from your HD. Primarily you must remove or edit /mnt/boot/loader.conf, which exists on the CD to tell the kernel to mount the CD's root partition. # Remove or edit /mnt/boot/loader.conf so the kernel does not try # to obtain the root filesystem from the CD, and remove the other # cruft that was sitting on the CD that you don't need on the HD. # rm /mnt/boot/loader.conf rm /mnt/README* rm /mnt/boot.catalog rm -r /mnt/rr_moved At this point it should be possible to reboot. The CD may be locked since it is currently mounted. To remove the CD, type 'halt' instead of 'reboot', wait for the machine to halt, then the CD door should be unlocked. Remove the CD and hit any key to reboot. Be careful of the CD drawer closing on you if you try to remove the CD while the machine is undergoing a reboot or reset. WARNING: Do not just hit reset; the kernel may not have written out all the pending data to your HD. Either unmount the HD partitions or type halt or reboot. # halt (let the machine halt) (remove CD when convenient, be careful of the CD drawer closing on you) (hit any key to reboot) THE ACPI ISSUE You will notice in the boot menu that you can choose to boot with or without ACPI. ACPI is an infrastructure designed to allow an operating system to configure hardware devices associated with the system. Unfortunately, as usual, PC BIOS makers have royally screwed up the standard and ACPI is as likely to hurt as it is to help. Worse, some PCs cannot be booted without it, so there is no good 'default' choice. The system will use ACPI by default. You can disable it in the default boot by adding the line 'hint.acpi.0.disabled=1' in /boot/loader.conf. If you boot without hitting any menu options the system will boot without ACPI. To boot without ACPI no matter what, place 'unset acpi_load' in our /boot/loader.conf instead. This is not recommended. IF YOU HAVE PROBLEMS BOOTING FROM HD There are a couple of things to try. If you can select CHS or LBA mode in your BIOS, try changing the mode to LBA. If that doesn't work, boot from the CD again and use boot0cfg to turn on packet mode (boot0cfg -o packet ad0). Also try booting with and without ACPI (option 1 or 2 in the boot menu). Once you have a working HD based system you can clean up /etc/rc.conf to enable things like cron, sendmail, setup your networking, and so forth. If 'ifconfig' does not show your networking device you could try to kldload it from /modules. With a recognized network device you can ifconfig its IP address or, if you have a DHCP server on your network, use 'dhclient ' to obtain an IP address from the network. USING CVSUP TO OBTAIN A CVS TREE, PORTS, AND DOING BUILDWORLDS cvsup can be used to obtain the DragonFly cvs repository, the FreeBSD ports tree, and so on and so forth. 'man cvsup' for more information on its capabilities. cvsup is a port (not part of the base system), but it IS included on the CD. The cvsup example files are in /usr/share/examples/cvsup. You will primarily be interested in the DragonFly CVS repository, DragonFly-supfile, and the FreeBSD ports, FreeBSD-ports-supfile. Once you have done the initial cvsup of the blocks of data that you want you may wish to create a cron job to keep it all up to date. However, please do not run an unattended cvsup more than once a day. # get the CVS repository (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 # get the FreeBSD ports tree (it is directly broken out into /usr/ports) cvsup -h cvsup.freebsd.org /usr/share/examples/cvsup/FreeBSD-ports-supfile # buildworld and installworld examples # cd /usr/src make buildworld make installworld # buildkernel and installkernel examples. Create your own custom kernel # config in /usr/src/sys/i386/conf/ and you can build and # install custom kernels. # # WARNING! Always keep a fully working backup kernel in / in case # you blow it. Remember that /kernel.old is overwritten when you # make installkernel. It is usually a good idea to maintain an emergency # kernel as /kernel.GENERIC or /kernel.bak. If all else fails you can # still fall back to booting the CD. # cd /usr/src make buildkernel KERNCONF=GENERIC make installkernel KERNCONF=GENERIC EMERGENCY RECOVERY FROM THE CD Lets say you blew up your kernel or something else in / and you need to boot the CD to fix it. Remember that you have a fully operational system when booting the CD, but that you have to fsck and mount your hard drive (typically onto /mnt) to get at the contents of your HD. Your HD is typically an IDE hard drive, so the device is typically /dev/ad0. DragonFly is typically on the first slice, which is /dev/ad0s1, and the root partition is always in partition 'a', which is /dev/ad0s1a. # fsck root before trying to mount it. fsck /dev/ad0s1a # mount root read-write onto /mnt mount /dev/ad0s1a /mnt # copy files from the CD as appropriate to make it possible to boot # from your HD again. Note that /mnt/kernel may be flags-protected. chflags noschg /mnt/kernel cp /kernel /mnt/kernel cp /modules/* /mnt/modules/ If you want to mount other partitions from your HD but have forgotten what they are, simply cat /mnt/etc/fstab after mounting the root partition. $DragonFly: src/nrelease/root/README,v 1.19 2005/03/21 04:52:34 cpressey Exp $