vfs: check userland buffers before reading them.
[haiku.git] / docs / userguide / en / filesystem-layout.html
blob1553f51f1baa65e3adf4ff8db48a97088ae845b3
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
4 <head>
5 <!--
7 * Copyright 2008-2013, Haiku. All rights reserved.
8 * Distributed under the terms of the MIT License.
10 * Authors:
11 * Humdinger <humdingerb@gmail.com>
13 -->
14 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
15 <meta http-equiv="Content-Style-Type" content="text/css" />
16 <meta name="robots" content="all" />
17 <title>Filesystem layout</title>
18 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
19 <link rel="stylesheet" type="text/css" href="../Haiku-doc.css" />
20 </head>
21 <body>
23 <div id="banner">
24 <div><span>User guide</span></div>
25 </div>
27 <div class="nav">
28 <div class="inner">
29 <ul class="lang-menu">
30 <li class="now"><img src="../images/flags/gb.png" alt="" /> English</li>
31 <li><a href="../ca/filesystem-layout.html"><img src="../images/flags/ca.png" alt="" />Català</a></li>
32 <li><a href="../de/filesystem-layout.html"><img src="../images/flags/de.png" alt="" />Deutsch</a></li>
33 <li><a href="../es/filesystem-layout.html"><img src="../images/flags/es.png" alt="" />Español</a></li>
34 <li><a href="../fr/filesystem-layout.html"><img src="../images/flags/fr.png" alt="" />Français</a></li>
35 <li><a href="../it/filesystem-layout.html"><img src="../images/flags/it.png" alt="" />Italiano</a></li>
36 <li><a href="../hu/filesystem-layout.html"><img src="../images/flags/hu.png" alt="" />Magyar</a></li>
37 <li><a href="../pl/filesystem-layout.html"><img src="../images/flags/pl.png" alt="" />Polski</a></li>
38 <li><a href="../pt_PT/filesystem-layout.html"><img src="../images/flags/pt_PT.png" alt="" />Português</a></li>
39 <li><a href="../pt_BR/filesystem-layout.html"><img src="../images/flags/pt_BR.png" alt="" />Português (Brazil)</a></li>
40 <li><a href="../ro/filesystem-layout.html"><img src="../images/flags/ro.png" alt="" />Română</a></li>
41 <li><a href="../sk/filesystem-layout.html"><img src="../images/flags/sk.png" alt="" />Slovenčina</a></li>
42 <li><a href="../fi/filesystem-layout.html"><img src="../images/flags/fi.png" alt="" />Suomi</a></li>
43 <li><a href="../sv_SE/filesystem-layout.html"><img src="../images/flags/sv_SE.png" alt="" />Svenska</a></li>
44 <li><a href="../zh_CN/filesystem-layout.html"><img src="../images/flags/zh_CN.png" alt="" /> 中文 [中文]</a></li>
45 <li><a href="../ru/filesystem-layout.html"><img src="../images/flags/ru.png" alt="" />Русский</a></li>
46 <li><a href="../uk/filesystem-layout.html"><img src="../images/flags/uk.png" alt="" />Українська</a></li>
47 <li><a href="../jp/filesystem-layout.html"><img src="../images/flags/jp.png" alt="" />日本語</a></li>
48 </ul>
49 <span>
50  «  <a href="bootloader.html">Boot Loader</a> 
51 ::  <a href="contents.html" class="uplink">Contents</a> 
52 ::  <a href="gui.html">Haiku's GUI</a>  »
53 </span></div>
54 </div>
56 <div id="content">
57 <div>
59 <h1>Filesystem layout</h1>
61 <p>Haiku's filesystem layout is quite transparent, trying to always use non-cryptic names for files and folders, that don't leave the user guessing. Files and folders that are important for the system to function properly, are protected from accidental tempering by showing one of these alerts:</p>
62 <img src="images/filesystem-layout-images/achtung-user.png" alt="achtung-user.png" /> 
63 <img src="images/filesystem-layout-images/achtung-system.png" alt="achtung-system.png" />
64 <p>The second alert pops up if you try to rename or delete something in the system hierarchy. Here, the "<span class="button">Rename</span>" button will only become clickable when you're holding down the <span class="key">SHIFT</span> key.</p>
65 <p>Generally, there are two separate branches springing from the root folder of the boot volume:</p>
66 <table summary="layout" border="0" cellspacing="0" cellpadding="2">
67 <tr><td><span class="path">/boot/system/</span></td><td> </td><td>Contains system files and applications/packages shared by all users.</td></tr>
68 <tr><td><span class="path">/boot/home/</span></td><td> </td><td>This is your personal folder where you keep your data and settings and the applications/packages that are <i>not</i> shared by all users.</td></tr>
69 </table>
70 <p>As long as Haiku isn't multi-user, this distinction between shared and not-shared applications/packages has no apparent effect, as there's only one user with one home folder. But since there will be support for more users than one eventually, it makes sense to learn the right way from the start.</p>
72 <h2>
73 <a href="#"><img src="../images/up.png" style="border:none;float:right" alt="index" /></a>
74 <a id="system" name="system">The system folder - <span class="path">/boot/system/</span></a></h2>
75 <p>Under Haiku's predecessor BeOS, this folder was named <span class="path">/boot/beos/</span>. You may still find it in some older documentation (e.g. in the original BeBook).<br />
76 Most of the folders inside <span class="path">/boot/system/</span> are read-only, which is sensible as they contain the files necessary for Haiku to function correctly and therefore have to be safe from (accidental) alteration. The only user-writable folders are:</p>
77 <table summary="layout" border="0" cellspacing="0" cellpadding="2">
78 <tr><td><span class="path">/boot/system/cache/</span></td><td> </td><td>Contains cached files and the temporary folder linked to <span class="path">/tmp/</span>.</td></tr>
79 <tr><td class="onelinetop"><span class="path">/boot/system/non-packaged/</span></td><td> </td><td>Contains a hierarchy for files that aren't part of a .hpkg (probably from old BeOS archives).</td></tr>
80 <tr><td><span class="path">/boot/system/packages/</span></td><td> </td><td>Besides holding Haiku's system packages, you can add/remove packages shared by all users.</td></tr>
81 <tr><td><span class="path">/boot/system/settings/</span></td><td> </td><td>Contains system-wide settings.</td></tr>
82 <tr><td><span class="path">/boot/system/var/</span></td><td> </td><td>Contains logs like the syslog (important when troubleshooting) and is the default location for the swap file.</td></tr>
83 </table>
84 <p><span class="box-info">For more information on the <span class="path">packages</span> and <span class="path">non-packaged</span> folders, see topic <a href="applications.html">Applications</a>.</span></p>
86 <h2>
87 <a href="#"><img src="../images/up.png" style="border:none;float:right" alt="index" /></a>
88 <a id="home" name="home">The home folder - <span class="path">/boot/home/</span></a></h2>
89 <p>This folder belongs to you. Here you can create and delete files and folders as you wish. (By the way, the tilde ("<tt>~</tt>") is a shortcut for your home folder, so you don't always have to write "<span class="path">/boot/home/</span>" in Terminal.)<br />
90 Files that you'd like to share with other users in a future multi-user environment have do be put outside <span class="path">/boot/home/</span>. For example, you could create a folder <span class="path">/boot/all-users/</span> and put the stuff there.</p>
92 <table summary="layout" border="0" cellspacing="0" cellpadding="4">
93 <tr><td><span class="path">~/Desktop/</span></td><td style="width:10px;"> </td>
94 <td>Holds the files of your desktop. Double-clicking won't open it, as it is already always visible. When your files happen to be obscured by open windows, just switch quickly to another <a href="workspaces.html">Workspace</a>. Of course, <a href="tracker.html#drill-down">drilling</a> down by right-clicking is also possible.</td></tr>
95 <tr><td><span class="path">~/mail/</span></td><td style="width:10px;"> </td>
96 <td>This is the default location for your mails.</td></tr>
97 <tr><td><span class="path">~/people/</span></td><td style="width:10px;"> </td>
98 <td>This is the default location for you contact files, see <a href="applications/people.html">People</a>.</td></tr>
99 <tr><td><span class="path">~/queries/</span></td><td style="width:10px;"> </td>
100 <td><a href="queries.html">Queries</a> are stored here, by default temporarily for 7 days.</td></tr>
101 </table>
103 <p>The folder <span class="path">/boot/home/config/</span> is special: just like <span class="path">/boot/system/</span> it's mostly under the control of the package management and therefore read-only. It too contains these similar user-writable folders:</p>
105 <table summary="layout" border="0" cellspacing="0" cellpadding="4">
106 <tr><td><span class="path">~/config/packages/</span></td><td style="width:10px;"> </td>
107 <td>Here you can add/remove packages that are <i>not</i> shared by all users.</td></tr>
109 <tr><td class="onelinetop"><span class="path">~/config/non-packaged/</span></td><td> </td>
110 <td>Contains a hierarchy for files that aren't part of a .hpkg (probably from old BeOS archives) and are <i>not</i> shared by all users.</td></tr>
112 <tr><td><span class="path">~/config/settings/</span></td><td> </td>
113 <td>This folder contains the settings to all applications and a few configurations for the system. Some applications manage their settings in their own subfolders, others simply put their configuration file in there.</td></tr>
114 </table>
116 <p><span class="box-info">For more information on the <span class="path">packages</span> and <span class="path">non-packaged</span> folders, see topic <a href="applications.html">Applications</a>.</span></p>
117 <p>Here are some of the more interesting subfolders in <span class="path">~/config/settings/</span>:</p>
119 <table summary="layout" border="0" cellspacing="0" cellpadding="4">
120 <tr><td><span class="path">boot/</span></td><td style="width:10px;"> </td>
121 <td>This folder is the place for <a href="bash-scripting.html#user-scripts">User Scripts</a> that are executed before or after the system boots up or shuts down.</td></tr>
123 <tr><td><span class="path">boot/launch/</span></td><td> </td>
124 <td>Links to programs or documents in this folder are automatically launched on every boot-up.</td></tr>
126 <tr><td><span class="path">beos_mime/</span></td><td> </td>
127 <td>In this <acronym title="Multipurpose Internet Mail Extensions">MIME</acronym> database Haiku keeps track of all the different <a href="filetypes.html">filetypes</a> and their settings.</td></tr>
129 <tr><td class="onelinetop"><span class="path">deskbar/menu/</span></td><td> </td>
130 <td>Copied or linked to files/folders/queries in this folder appear in the <a href="deskbar.html#deskbar-menu">Deskbar menu</a>.</td></tr>
132 <tr><td class="onelinetop"><span class="path">kernel/drivers/</span></td><td> </td>
133 <td>There's one settings file that may be of interest: <span class="cli">kernel</span> offers some low level configurations like disabling <acronym title="Symmetric Multi Processing">SMP</acronym>, activating serial debugging or enabling advanced power management. You activate a configuration line by removing the commentary symbol "<tt>#</tt>". Be careful here!</td></tr>
135 <tr><td><span class="path">Tracker/</span></td><td> </td>
137 <td>Besides the various settings files for Tracker, there are some interesting subfolders:</td></tr>
138 <tr><td align="right"><span class="path">DefaultFolderTemplate/</span></td><td style="width:10px;"></td><td>Show and arrange all attributes and the window size to your liking. Every new folder you create will use it as a template.</td></tr>
140 <tr><td align="right"><span class="path">DefaultQueryTemplates/</span></td><td></td><td>You can define the layout of query result windows for certain filetypes. See topic <a href="queries.html#result-window">Query: The result window</a>.</td></tr>
142 <tr><td align="right"><span class="path">Go/</span></td><td></td><td>Put links to your favorite locations in here to make them available e.g. in open and save panels. See topic <a href="gui.html#favorites-recent">Haiku's GUI: Favorites and recent folders</a>.</td></tr>
144 <tr><td align="right"><span class="path">Tracker New Template/</span></td><td></td><td>Add a template for any filetype that's then available from Tracker's <span class="menu">File | New...</span> menu. See topic <a href="tracker.html#working-with-files">Tracker: Working with files</a>.</td></tr>
145 </table>
147 </div>
148 </div>
150 <div class="nav">
151 <div class="inner"><span>
152  «  <a href="bootloader.html">Boot Loader</a> 
153 ::  <a href="contents.html" class="uplink">Contents</a> 
154 ::  <a href="gui.html">Haiku's GUI</a>  »
155 </span></div>
156 </div>
158 </body>
159 </html>