# DragonFly BSD Quick Start This document describes the DragonFly environment one will find on a newly installed system. [[!toc levels=3 ]] ## Disk layout If you chose to install on the HAMMER file system during installation you will be left with a system with the following disk configuration: # df -h Filesystem Size Used Avail Capacity Mounted on ROOT 288G 12G 276G 4% / devfs 1.0K 1.0K 0B 100% /dev /dev/serno/9VMBWDM1.s1a 756M 138M 558M 20% /boot /pfs/@@-1:00001 288G 12G 276G 4% /var /pfs/@@-1:00002 288G 12G 276G 4% /tmp /pfs/@@-1:00003 288G 12G 276G 4% /usr /pfs/@@-1:00004 288G 12G 276G 4% /home /pfs/@@-1:00005 288G 12G 276G 4% /usr/obj /pfs/@@-1:00006 288G 12G 276G 4% /var/crash /pfs/@@-1:00007 288G 12G 276G 4% /var/tmp procfs 4.0K 4.0K 0B 100% /proc In this example * `/dev/serno/9VMBWDM1` is the hard disk specified with serial number, * `/dev/serno/9VMBWDM1.s1` is the first slice on the hard disk. The disklabel looks at follows # disklabel /dev/serno/9VMBWDM1.s1 # /dev/serno/9VMBWDM1.s1: # # Informational fields calculated from the above # All byte equivalent offsets must be aligned # # boot space: 1044992 bytes # data space: 312567643 blocks # 305241.84 MB (320069266944 bytes) # # NOTE: If the partition data base looks odd it may be # physically aligned instead of slice-aligned # diskid: e67030af-d2af-11df-b588-01138fad54f5 label: boot2 data base: 0x000000001000 partitions data base: 0x000000100200 partitions data stop: 0x004a85ad7000 backup label: 0x004a85ad7000 total size: 0x004a85ad8200 # 305242.84 MB alignment: 4096 display block size: 1024 # for partition display only 16 partitions: # size offset fstype fsuuid a: 786432 0 4.2BSD # 768.000MB b: 8388608 786432 swap # 8192.000MB d: 303392600 9175040 HAMMER # 296281.836MB a-stor_uuid: eb1c8aac-d2af-11df-b588-01138fad54f5 b-stor_uuid: eb1c8aec-d2af-11df-b588-01138fad54f5 d-stor_uuid: eb1c8b21-d2af-11df-b588-01138fad54f5 The slice has 3 partitions: * `a` - for `/boot` * `b` - for swap * `d` - for `/`, a HAMMER file system labeled ROOT When you create a HAMMER file system you must give it a label, here the installer labeled it as "ROOT" and mounted it as ROOT 288G 12G 276G 4% / A PFS is a Pseudo File System inside a HAMMER file system. The HAMMER file system in which the PFSes are created is referred to as the root file system. You should not confuse the "root" file system with the Label "ROOT", the label can be anything. It is just that the installer labeled it as ROOT because it is mounted as `/`. Now inside the ROOT HAMMER file system you find the installed created 7 PFSes from the `df -h` output above, let us see how they are mounted in `/etc/fstab`: # cat /etc/fstab # Device Mountpoint FStype Options Dump Pass# /dev/serno/9VMBWDM1.s1a /boot ufs rw 1 1 /dev/serno/9VMBWDM1.s1b none swap sw 0 0 /dev/serno/9VMBWDM1.s1d / hammer rw 1 1 /pfs/var /var null rw 0 0 /pfs/tmp /tmp null rw 0 0 /pfs/usr /usr null rw 0 0 /pfs/home /home null rw 0 0 /pfs/usr.obj /usr/obj null rw 0 0 /pfs/var.crash /var/crash null rw 0 0 /pfs/var.tmp /var/tmp null rw 0 0 proc /proc procfs rw 0 0 The PFSes are mounted using a NULL mount because they are also HAMMER file systems. You can read more on NULL mounts here [mount_null(8)](http://leaf.dragonflybsd.org/cgi/web-man?command=mount_null§ion=8). You don't need to specify a size for the PFSes like you do for logical volumes inside a volume group for LVM. All the free space in the root HAMMER file system is available to all the PFSs. That is the reason in the `df -h` output above you saw free space is same for all PFSes and the root HAMMER file system. Now if you look in `/var` # cd /var/ # ls account backups caps cron empty log msgs run spool yp at cache crash db games lib mail preserve rwho tmp you will find the above directories. If you look at the status of one of the PFSes, e.g. `/usr` you will see `/var/hammer` is the default snapshot directory. # hammer pfs-status /usr/ /usr/ PFS #3 { sync-beg-tid=0x0000000000000001 sync-end-tid=0x0000000117ac6270 shared-uuid=f33e318e-d2af-11df-b588-01138fad54f5 unique-uuid=f33e31cb-d2af-11df-b588-01138fad54f5 label="" prune-min=00:00:00 operating as a MASTER snapshots directory defaults to /var/hammer/ } There is no "hammer" directory in `/var` now. That is because no snapshots are yet taken. You can verify this by checking the snapshots available for `/usr` # hammer snapls /usr Snapshots on /usr PFS #3 Transaction ID Timestamp Note The best way to take a snapshot of all PFSes is to run the command `hammer cleanup`. It does a lot of things but the fist thing it does during cleanup of a PFS is to take its snapshots as configured. # sudo hammer cleanup cleanup / - HAMMER UPGRADE: Creating snapshots Creating snapshots in /var/hammer/root handle PFS #0 using /var/hammer/root snapshots - run prune - run rebalance - run.. reblock - run.... recopy - run.... cleanup /var - HAMMER UPGRADE: Creating snapshots [...] cleanup /tmp - HAMMER UPGRADE: Creating snapshots [...] cleanup /usr - HAMMER UPGRADE: Creating snapshots [...] cleanup /home - HAMMER UPGRADE: Creating snapshots [...] cleanup /usr/obj - HAMMER UPGRADE: Creating snapshots [...] cleanup /var/crash - HAMMER UPGRADE: Creating snapshots [...] cleanup /var/tmp - HAMMER UPGRADE: Creating snapshots [...] cleanup /var/isos - HAMMER UPGRADE: Creating snapshots [...] No snapshots were taken for `/tmp`, `/usr/obj` and `/var/tmp`. This is because the PFSes are flagged as `nohistory`. HAMMER tracks history for all files in a PFS, naturally this consumes disk space until the history is pruned. To prevent that temporary files on the mentioned PFSes (e.g., object files, crash dumps) consume disk space, the PFSes are marked as `nohistory`. In `/var` will be a new directory called *hammer* with the following sub directories # cd hammer/ # ls -l total 0 drwxr-xr-x 1 root wheel 0 Oct 13 11:51 home drwxr-xr-x 1 root wheel 0 Oct 13 11:42 root drwxr-xr-x 1 root wheel 0 Oct 13 11:43 tmp drwxr-xr-x 1 root wheel 0 Oct 13 11:51 usr drwxr-xr-x 1 root wheel 0 Oct 13 11:54 var Well let us look inside `/var/hammer/usr` # cd usr/ # ls -l total 0 drwxr-xr-x 1 root wheel 0 Oct 13 11:54 obj lrwxr-xr-x 1 root wheel 25 Oct 13 11:43 snap-20101013-1143 -> /usr/@@0x0000000117ac6cb0 We have a symlink pointing to the snapshot transaction ID shown below. # hammer snapls /usr Snapshots on /usr PFS #3 Transaction ID Timestamp Note 0x0000000117ac6cb0 2010-10-13 11:43:04 IST - # You can read more about snapshots, prune, reblance, reblock, recopy etc from [hammer(8)](http://leaf.dragonflybsd.org/cgi/web-man?command=hammer§ion=8) especially look under the heading "cleanup [filesystem ...]" You can learn more about PFS mirroring [here](http://www.dragonflybsd.org/docs/how_to_implement_hammer_pseudo_file_system__40___pfs___41___slave_mirroring_from_pfs_master/) ## Configuring and Starting the SSH Server Described in detail [[here|/docs/newhandbook/sshserver/]] ## Software/Programs and Configuration Files Location DragonFly default installation contains the base software/programs from the DragonFly project itself and few other software from [pkgsrc](http://www.netbsd.org/docs/software/packages.html) which is the DragonFly official package management system. Ready to install binary software from pkgsrc is referred to as *packages*. The base programs are located in the folders /bin /sbin /usr/bin /usr/sbin The configuration files for the base system can be found in `/etc`. There is also `/usr/local/etc` which is used by third-party programs. The software/programs from pkgsrc are located in `/usr/pkg/bin` and `/usr/pkg/sbin`. Their configuration files are found in `/usr/pkg/etc`. ## Installing Third-party Software Have a look at the [[pkgsrc howto|docs/howtos/HowToPkgsrc/]] for an in-depth description about dealing with third-party pkgsrc packages. ### Using pkgin For those who are new to the DragonFly way of doing things can also have the Debian's apt like way of installing, removing and updating packages. *pkgin* does things similar to *apt-get* or *aptitude* or *yum* for that matter. First we need to configure *pkgin* to use a repository which contains the pkgsrc binary packages. For this example we will use the main DragonFly server. **Note**: Be sure to use a local [[mirror|mirrors/]] for better performance and to reduce load on the main servers. # echo "http://mirror-master.dragonflybsd.org/packages/i386/DragonFly-2.7/stable/All/" > \ /usr/pkg/etc/pkgin/repositories.conf Now to update *pkgin* with the list of latest packages available from that repository. # pkgin update cleaning database from http://mirror-master.dragonflybsd.org/packages/i386/DragonFly-2.7/stable/All/ entries... downloading pkg_summary.bz2: 100% processing remote summary (http://mirror-master.dragonflybsd.org/packages/i386/DragonFly-2.7/stable/All/)... updating database: 100% Now to upgrade packages that are already installed in the system # pkgin full-upgrade 6 packages to be upgraded: freetype2-2.3.12 gtar-info-1.22 openldap-client-2.4.21 png-1.4.2 python26-2.6.5 tiff-3.9.4 1 packages to be removed: asciidoc-8.6.1 6 packages to be installed: png-1.4.3 python26-2.6.5nb1 tiff-3.9.4nb1 freetype2-2.4.2 gtar-info-1.23 openldap-client-2.4.23 (15M to download, 59M to install) proceed ? [y/N] y downloading packages... downloading png-1.4.3.tgz: 100% downloading python26-2.6.5nb1.tgz: 100% downloading tiff-3.9.4nb1.tgz: 100% downloading freetype2-2.4.2.tgz: 100% downloading gtar-info-1.23.tgz: 100% downloading openldap-client-2.4.23.tgz: 100% ..... In order to search for a new package, for example *rdesktop*. # pkgin search rdesktop rdesktop-1.6.0 = Open-source Remote Desktop Protocol client tsclient-0.132nb25 GNOME2 Frontend for rdesktop =: package is installed and up-to-date <: package is installed but newer version is available >: installed package has a greater version than available package To search for a package and install it you can do the following. If there are different versions of the package available in the repository it will show you the list and you need to specify one from them explicitly. At the end of the installation it will show you a message if you need any further configuration for the software to work in a particular way. # pkgin search mysql-client mysql-client-4.1.22nb4 MySQL 4, a free SQL database (client) mysql-client-5.0.91 MySQL 5, a free SQL database (client) mysql-client-5.1.49 MySQL 5, a free SQL database (client) =: package is installed and up-to-date <: package is installed but newer version is available >: installed package has a greater version than available package # pkgin install mysql-client there's more than one version available for this package. please re-run pkgin with a package name matching one of the following: mysql-client-4.1.22nb4 mysql-client-5.0.91 mysql-client-5.1.49 nothing to do. # pkgin install mysql-client-5.1.49 calculating dependencies for mysql-client-5.1.49... nothing to upgrade. 1 packages to be installed: mysql-client-5.1.49 (7620K to download, 24M to install) proceed ? [y/N] y downloading packages... downloading mysql-client-5.1.49.tgz: 100% installing packages... installing mysql-client-5.1.49... [...] processing local summary... updating database: 100% marking mysql-client-5.1.49 as non auto-removable To remove a package # pkgin remove mysql-client 1 packages to delete: mysql-client-5.1.49 proceed ? [y/N] y removing mysql-client-5.1.49... processing local summary... updating database: 100% *pkgin* is very similar to *apt-get, aptitude , yum, emerge, pacman* and friends in the Linux world. All the *pkgin* commands can be seen [here](http://imil.net/pkgin/). *pkgin* comes installed with the default DragonFly install so you can skip the installation part on that page. To install a desktop you can [read the following](http://www.dragonflybsd.org/docs/newhandbook/X/) Other Docs can be found [here](http://www.dragonflybsd.org/docs/newhandbook/X/). ## Installing flash player on firefox. The Flash plugin is distributed by Adobe in *binary form only*. Adobe does not provide a native DragonFlyBSD plugin, but there is a Linux plugin which you can use under Linux emulation. Linux emulation software is installed from *pkgsrc* and is tested to be working fine on x86 Platform. The steps are ### Install *multimedia/libflashsupport* from *pkgsrc*. # cd /usr/pkgsrc/multimedia/libflashsupport # bmake package This will get you all packages needed for Linux Emulation. Currently the Linux Emulation package installs software from [Suse 10]( http://ftp.hosteurope.de/mirror/ftp.opensuse.org/discontinued/10.0/suse/i586/) distribution. You could see the list of packages installed using pkg_info. # pkg_info |grep suse suse_openssl-10.0nb5 Linux compatibility package for OpenSSL suse_gtk2-10.0nb4 Linux compatibility package for GTK+-2.x suse_gtk-10.0nb2 Linux compatibility package for GTK+-1.x suse_libjpeg-10.0nb2 Linux compatibility package for JPEG suse_base-10.0nb5 Linux compatibility package suse_slang-10.0nb3 Linux compatibility package for S-Lang suse_locale-10.0nb2 Linux compatibility package with locale files suse_fontconfig-10.0nb6 Linux compatibility package for fontconfig suse_libtiff-10.0nb4 Linux compatibility package for TIFF suse_openmotif-10.0nb2 Linux compatibility package for OpenMotif suse_libpng-10.0nb4 Linux compatibility package for PNG suse_libcups-10.0nb4 Linux compatibility package for CUPS suse_gdk-pixbuf-10.0nb3 Linux compatibility package for gdk-pixbuf suse_expat-10.0nb2 Linux compatibility package for expat suse_vmware-10.0nb2 Linux compatibility package to help run VMware suse_libxml2-10.0nb2 Linux compatibility package for libxml2 suse_compat-10.0nb3 Linux compatibility package with old shared libraries suse_x11-10.0nb4 Linux compatibility package for X11 suse_glx-10.0nb4 Linux compatibility package for OpenGL/Mesa suse_freetype2-10.0nb5 Linux compatibility package for freetype-2.x suse_aspell-10.0nb2 Linux compatibility package for aspell suse-10.0nb4 SUSE-based Linux binary emulation environment ### Configure Linux Support # echo "linux_load=yes" >> /boot/loader.conf # echo "linux_enable=yes" >> /etc/rc.conf # echo "proc /compat/linux/proc linprocfs rw 0 0" >> /etc/fstab *Reboot DragonFly* ( not necessarry but easier for new users ) so that Linux Emulation is loaded to the kernel and configured correctly. ### Install *www/nspluginwrapper* This willallow DragonFly to use the Linux Binary Flash Plugin # cd /usr/pkgsrc/www/nspluginwrapper # bmake package ### Install multimedia/ns-flash This is the Linux Flash Plugin itself. # cd /usr/pkgsrc/multimedia/ns-flash # bmake NO_CHECKSUM=yes package You can check if the Flash plugin is installed right by. # /usr/pkg/bin/nspluginwrapper --list /usr/pkg/lib/netscape/plugins/npwrapper.libflashplayer.so Original plugin: /usr/pkg/lib/netscape/plugins/libflashplayer.so Wrapper version string: 1.2.2 /usr/pkg/lib/netscape/plugins/npwrapper.libflashplayer.so Original plugin: /usr/pkg/lib/netscape/plugins/libflashplayer.so Wrapper version string: 1.2.2 Don't worry if it is listed twice as above. Now Start Firefox and type "*about:plugins*" in the address bar and you should find the flash plugins listed as [shown in this Picture](http://leaf.dragonflybsd.org/~sgeorge/PICs/flash-plugin-in-firefox.png). You can watch Streaming Flash now.