added suggestion to consider playing with a VM
[ikiwiki.git] / docs / newhandbook / environmentquickstart / index.mdwn
1 # DragonFly BSD Quick Start
2
3 This document describes the DragonFly environment one will find on a newly installed system.  While you are getting started please pay careful attention to the version or level of DragonFly that the documentation was written for.  Some documentation on this site may be out of date. Watch for the marker `(obsolete)` on items that are out of date or need updating.
4
5 [[!toc levels=3 ]]
6 ## Some Unix and BSD Fundamentals
7
8 If you have used another Unix flavor, another BSD or Linux before, you may need to spend some time learning basic subjects.  If you have never used any flavor of Unix, BSD or otherwise, and have only used Windows before, please be prepared for a lengthy period of learning.
9
10 If you already know your way around a Unix filesystem, and already know what the `/etc` folder is, how to use `vi` or `vim` to edit a file, how to use a shell like `tcsh` or `bash`, how to configure that shell, or change what shell you're using, how `su` and `sudo` work, and what a `root` account is, then you may get a lot farther in using any BSD variant (like Dragonfly BSD) then the rest of this page may be enough to orient you to your surroundings.
11
12 You should understand everything in the [[Unix Basics|/docs/newhandbook/UnixBasics/]] section before you proceed with trying to use your new system.
13
14 A really great way to experiment with Dragonfly BSD is to install it inside a virtual machine environent like VMWare, or HyperV or VirtualBox.  VirtualBox has the advantage of being free software, so if you have never used any BSD flavor Unix before, you might want to create a "safe sandbox" environment to play with and learn in, inside a VM before you try using it as the operating system on your primary computer.
15
16 ## Disk layout
17
18 If you chose to install on the HAMMER file system during installation you will be left with a system with the following disk configuration:
19
20     # df -h
21     Filesystem                Size   Used  Avail Capacity  Mounted on
22     ROOT                      288G    12G   276G     4%    /
23     devfs                     1.0K   1.0K     0B   100%    /dev
24     /dev/serno/9VMBWDM1.s1a   756M   138M   558M    20%    /boot
25     /pfs/@@-1:00001           288G    12G   276G     4%    /var
26     /pfs/@@-1:00002           288G    12G   276G     4%    /tmp
27     /pfs/@@-1:00003           288G    12G   276G     4%    /usr
28     /pfs/@@-1:00004           288G    12G   276G     4%    /home
29     /pfs/@@-1:00005           288G    12G   276G     4%    /usr/obj
30     /pfs/@@-1:00006           288G    12G   276G     4%    /var/crash
31     /pfs/@@-1:00007           288G    12G   276G     4%    /var/tmp
32     procfs                    4.0K   4.0K     0B   100%    /proc
33
34 In this example
35
36 * `/dev/serno/9VMBWDM1` is the hard disk specified with serial number,
37 * `/dev/serno/9VMBWDM1.s1` is the first slice on the hard disk.
38
39 The disklabel looks at follows
40
41     # disklabel /dev/serno/9VMBWDM1.s1
42
43     # /dev/serno/9VMBWDM1.s1:
44     #
45     # Informational fields calculated from the above
46     # All byte equivalent offsets must be aligned
47     #
48     # boot space:    1044992 bytes
49     # data space:  312567643 blocks # 305241.84 MB (320069266944 bytes)
50     #
51     # NOTE: If the partition data base looks odd it may be
52     #       physically aligned instead of slice-aligned
53     #
54     diskid: e67030af-d2af-11df-b588-01138fad54f5
55     label:
56     boot2 data base:      0x000000001000
57     partitions data base: 0x000000100200
58     partitions data stop: 0x004a85ad7000
59     backup label:         0x004a85ad7000
60     total size:           0x004a85ad8200    # 305242.84 MB
61     alignment: 4096
62     display block size: 1024        # for partition display only
63
64     16 partitions:
65     #          size     offset    fstype   fsuuid
66       a:     786432          0    4.2BSD    #     768.000MB
67       b:    8388608     786432      swap    #    8192.000MB
68       d:  303392600    9175040    HAMMER    #  296281.836MB
69       a-stor_uuid: eb1c8aac-d2af-11df-b588-01138fad54f5
70       b-stor_uuid: eb1c8aec-d2af-11df-b588-01138fad54f5
71       d-stor_uuid: eb1c8b21-d2af-11df-b588-01138fad54f5
72
73
74 The slice has 3 partitions:
75
76 * `a` - for `/boot`
77 * `b` - for swap
78 * `d` - for `/`, a HAMMER file system labeled ROOT
79
80 When you create a HAMMER file system you must give it a label, here the installer labeled it as "ROOT" and mounted it as
81
82     ROOT                      288G    12G   276G     4%    /
83
84 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 `/`.
85
86 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`:
87
88     # cat /etc/fstab
89
90     # Device                Mountpoint      FStype  Options         Dump    Pass#
91     /dev/serno/9VMBWDM1.s1a         /boot           ufs     rw      1       1
92     /dev/serno/9VMBWDM1.s1b         none            swap    sw      0       0
93     /dev/serno/9VMBWDM1.s1d         /               hammer  rw      1       1
94     /pfs/var                /var            null    rw              0       0
95     /pfs/tmp                /tmp            null    rw              0       0
96     /pfs/usr                /usr            null    rw              0       0
97     /pfs/home               /home           null    rw              0       0
98     /pfs/usr.obj    /usr/obj                null    rw              0       0
99     /pfs/var.crash  /var/crash              null    rw              0       0
100     /pfs/var.tmp    /var/tmp                null    rw              0       0
101     proc                    /proc           procfs  rw              0       0
102
103
104 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&section=8).
105
106 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.
107
108 Now if you look in `/var`
109
110     # cd /var/
111     # ls
112     account   backups   caps   cron    empty   log   msgs   run   spool   yp  at        
113     cache     crash     db     games   lib     mail  preserve   rwho  tmp
114
115 you will find the above directories.
116
117 If you look at the status of one of the PFSes, e.g. `/usr` you will see `/var/hammer` is the default snapshot directory.
118
119     # hammer pfs-status /usr/
120     /usr/   PFS #3 {
121         sync-beg-tid=0x0000000000000001
122         sync-end-tid=0x0000000117ac6270
123         shared-uuid=f33e318e-d2af-11df-b588-01138fad54f5
124         unique-uuid=f33e31cb-d2af-11df-b588-01138fad54f5
125         label=""
126         prune-min=00:00:00
127         operating as a MASTER
128         snapshots directory defaults to /var/hammer/<pfs>
129     }
130
131 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`
132
133     # hammer snapls /usr
134     Snapshots on /usr       PFS #3
135     Transaction ID          Timestamp               Note
136
137 Snapshots will appear automatically each night as the system performs housekeeping on the Hammer filesystem.  For a new volume, an immediate snapshot can be taken by running the command 'hammer cleanup'.  Among other activites, it will take a snapshot of the filesystem.
138
139     # sudo hammer cleanup
140     cleanup /                    - HAMMER UPGRADE: Creating snapshots
141             Creating snapshots in /var/hammer/root
142      handle PFS #0 using /var/hammer/root
143                snapshots - run
144                    prune - run
145                rebalance - run..
146                  reblock - run....
147                   recopy - run....
148     cleanup /var                 - HAMMER UPGRADE: Creating snapshots
149     [...]
150     cleanup /tmp                 - HAMMER UPGRADE: Creating snapshots
151     [...]
152     cleanup /usr                 - HAMMER UPGRADE: Creating snapshots
153     [...]
154     cleanup /home                - HAMMER UPGRADE: Creating snapshots
155     [...]
156     cleanup /usr/obj             - HAMMER UPGRADE: Creating snapshots
157     [...]
158     cleanup /var/crash           - HAMMER UPGRADE: Creating snapshots
159     [...]
160     cleanup /var/tmp             - HAMMER UPGRADE: Creating snapshots
161     [...]
162     cleanup /var/isos            - HAMMER UPGRADE: Creating snapshots
163     [...]
164
165 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`.
166
167 In `/var` will be a new directory called *hammer* with the following sub directories
168
169
170     # cd hammer/
171     # ls -l
172     total 0
173     drwxr-xr-x  1 root  wheel  0 Oct 13 11:51 home
174     drwxr-xr-x  1 root  wheel  0 Oct 13 11:42 root
175     drwxr-xr-x  1 root  wheel  0 Oct 13 11:43 tmp
176     drwxr-xr-x  1 root  wheel  0 Oct 13 11:51 usr
177     drwxr-xr-x  1 root  wheel  0 Oct 13 11:54 var
178
179
180 Well let us look inside `/var/hammer/usr`
181
182
183     # cd usr/
184     # ls -l
185     total 0
186     drwxr-xr-x  1 root  wheel   0 Oct 13 11:54 obj
187     lrwxr-xr-x  1 root  wheel  25 Oct 13 11:43 snap-20101013-1143 -> /usr/@@0x0000000117ac6cb0
188
189
190 We have a symlink pointing to the snapshot transaction ID shown below.
191
192
193     # hammer snapls /usr
194     Snapshots on /usr       PFS #3
195     Transaction ID          Timestamp               Note
196     0x0000000117ac6cb0      2010-10-13 11:43:04 IST -
197     #
198
199
200 You can read more about snapshots, prune, reblance, reblock, recopy etc from [hammer(8)](http://leaf.dragonflybsd.org/cgi/web-man?command=hammer&section=8) especially look under the heading "cleanup [filesystem ...]"
201
202 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/)
203
204 In order to correctly map hard disk sernos to device names you can use the 'devattr' command.
205
206     # udevd
207     # devattr -d "ad*" -p serno
208     Device ad4:
209             serno = Z2AD9WN4
210     Device ad4s1:
211     Device ad4s1d:
212
213     Device ad5:
214             serno = 9VMRFDSY
215     Device ad5s1:
216     Device ad5s1d:
217
218     Device ad3:
219             serno = Z2AD9WLW
220     Device ad3s1:
221     Device ad3s1a:
222     Device ad3s1b:
223     Device ad3s1d:
224
225 Or if your disks are 'da', just change it as appropiate.
226
227 ## Configuring and Starting the SSH Server
228
229 Described in detail [[here|/docs/newhandbook/sshserver/]]
230
231 ## Software/Programs and Configuration Files Location 
232
233 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*.
234
235 The base programs are located in the folders 
236
237     /bin    /sbin
238     /usr/bin   /usr/sbin
239
240 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`.
241
242 ## Installing Third-party Software
243
244 Have a look at the [[dports howto|/docs/howtos/HowToDPorts/]] for an in-depth description about dealing with packaging systems. Note that DragonFly BSD has several older package managers (like `pkgin`), but that the most modern binary package installation system as of 2014, is `pkg`.
245
246 ### Using pkg
247
248 Read [[dports howto|/docs/howtos/HowToDPorts/]] then for some errata, read [[this|http://lists.dragonflybsd.org/pipermail/users/2013-November/090339.html]].
249
250
251 You can look at the help and the man page for the pkg tool like this:
252
253 `pkg help install`
254
255 Example: Read man page for pkg-install
256
257 `man pkg-install`
258
259
260 ### Installing an X desktop environment
261
262 If it's already on your system run X by typing `startx`. If it's not, install
263 it using `pkg install`.
264
265 `(obsolete)`
266 Slightly out of date instructions on installing a GUI (X desktop) environment  are in the [new handbook](http://www.dragonflybsd.org/docs/newhandbook/X/).
267