diff options
author | Scott Rifenbark <srifenbark@gmail.com> | 2018-01-29 15:18:03 -0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-02-14 15:25:29 +0000 |
commit | ae06e04cd225d2c2147ca355e2dd39b4f6cf6775 (patch) | |
tree | c920e85262a91e7626279e7dcbbd56a299919f49 /documentation/getting-started/eclipse/html/getting-started/fakeroot-and-pseudo.html | |
parent | ebc7de094881dd8f2450aa4fdf548f2e9c835df1 (diff) | |
download | poky-ae06e04cd225d2c2147ca355e2dd39b4f6cf6775.tar.gz |
documentation: Created new "Getting Started" manual.
Creation involved removing the overview-manual and replacing it
with the getting-started manual. All links to the string
"&YOCTO_DOCS_OVERVIEW_URL" had to be replaced with
"&YOCTO_DOCS_GS_URL" across the entire YP manual set. I renamed
files used to create the manual with prefixes suited for the
new manual name, which is "Getting Started With Yocto Project".
The style sheet for the new manual needed updating to display the
new .PNG image for the title page. The mega-manual file had to
be updated to include the files. The mega-manual.sed file had
to be updated to include the new manual and not use the overview
manual.
(From yocto-docs rev: 6c7abf9192390121000f577d6c98f259d290d15d)
Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation/getting-started/eclipse/html/getting-started/fakeroot-and-pseudo.html')
-rw-r--r-- | documentation/getting-started/eclipse/html/getting-started/fakeroot-and-pseudo.html | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/documentation/getting-started/eclipse/html/getting-started/fakeroot-and-pseudo.html b/documentation/getting-started/eclipse/html/getting-started/fakeroot-and-pseudo.html new file mode 100644 index 0000000000..8354ad6730 --- /dev/null +++ b/documentation/getting-started/eclipse/html/getting-started/fakeroot-and-pseudo.html | |||
@@ -0,0 +1,91 @@ | |||
1 | <html> | ||
2 | <head> | ||
3 | <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> | ||
4 | <title>3.5. Fakeroot and Pseudo</title> | ||
5 | <link rel="stylesheet" type="text/css" href="../book.css"> | ||
6 | <meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> | ||
7 | <link rel="home" href="index.html" title="Getting Started With Yocto Project"> | ||
8 | <link rel="up" href="overview-concepts.html" title="Chapter 3. Yocto Project Concepts"> | ||
9 | <link rel="prev" href="automatically-added-runtime-dependencies.html" title="3.4. Automatically Added Runtime Dependencies"> | ||
10 | <link rel="next" href="wayland.html" title="3.6. Wayland"> | ||
11 | </head> | ||
12 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="section" title="3.5. Fakeroot and Pseudo"> | ||
13 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | ||
14 | <a name="fakeroot-and-pseudo"></a>3.5. Fakeroot and Pseudo</h2></div></div></div> | ||
15 | <p> | ||
16 | Some tasks are easier to implement when allowed to perform certain | ||
17 | operations that are normally reserved for the root user (e.g. | ||
18 | <a class="link" href="../ref-manual/ref-tasks-install.html" target="_self"><code class="filename">do_install</code></a>, | ||
19 | <a class="link" href="../ref-manual/ref-tasks-package_write_deb.html" target="_self"><code class="filename">do_package_write*</code></a>, | ||
20 | <a class="link" href="../ref-manual/ref-tasks-rootfs.html" target="_self"><code class="filename">do_rootfs</code></a>, | ||
21 | and | ||
22 | <a class="link" href="../ref-manual/ref-tasks-image.html" target="_self"><code class="filename">do_image*</code></a>). | ||
23 | For example, the <code class="filename">do_install</code> task benefits | ||
24 | from being able to set the UID and GID of installed files to | ||
25 | arbitrary values. | ||
26 | </p> | ||
27 | <p> | ||
28 | One approach to allowing tasks to perform root-only operations | ||
29 | would be to require BitBake to run as root. | ||
30 | However, this method is cumbersome and has security issues. | ||
31 | The approach that is actually used is to run tasks that benefit | ||
32 | from root privileges in a "fake" root environment. | ||
33 | Within this environment, the task and its child processes believe | ||
34 | that they are running as the root user, and see an internally | ||
35 | consistent view of the filesystem. | ||
36 | As long as generating the final output (e.g. a package or an image) | ||
37 | does not require root privileges, the fact that some earlier | ||
38 | steps ran in a fake root environment does not cause problems. | ||
39 | </p> | ||
40 | <p> | ||
41 | The capability to run tasks in a fake root environment is known as | ||
42 | "<a class="ulink" href="http://man.he.net/man1/fakeroot" target="_self">fakeroot</a>", | ||
43 | which is derived from the BitBake keyword/variable | ||
44 | flag that requests a fake root environment for a task. | ||
45 | </p> | ||
46 | <p> | ||
47 | In the OpenEmbedded build system, the program that implements | ||
48 | fakeroot is known as Pseudo. | ||
49 | Pseudo overrides system calls by using the environment variable | ||
50 | <code class="filename">LD_PRELOAD</code>, which results in the illusion | ||
51 | of running as root. | ||
52 | To keep track of "fake" file ownership and permissions resulting | ||
53 | from operations that require root permissions, Pseudo uses | ||
54 | an SQLite 3 database. | ||
55 | This database is stored in | ||
56 | <code class="filename">${</code><a class="link" href="../ref-manual/var-WORKDIR.html" target="_self"><code class="filename">WORKDIR</code></a><code class="filename">}/pseudo/files.db</code> | ||
57 | for individual recipes. | ||
58 | Storing the database in a file as opposed to in memory | ||
59 | gives persistence between tasks and builds, which is not | ||
60 | accomplished using fakeroot. | ||
61 | </p> | ||
62 | <div class="note" title="Caution" style="margin-left: 0.5in; margin-right: 0.5in;"> | ||
63 | <h3 class="title">Caution</h3> | ||
64 | If you add your own task that manipulates the same files or | ||
65 | directories as a fakeroot task, then that task also needs to | ||
66 | run under fakeroot. | ||
67 | Otherwise, the task cannot run root-only operations, and | ||
68 | cannot see the fake file ownership and permissions set by the | ||
69 | other task. | ||
70 | You need to also add a dependency on | ||
71 | <code class="filename">virtual/fakeroot-native:do_populate_sysroot</code>, | ||
72 | giving the following: | ||
73 | <pre class="literallayout"> | ||
74 | fakeroot do_mytask () { | ||
75 | ... | ||
76 | } | ||
77 | do_mytask[depends] += "virtual/fakeroot-native:do_populate_sysroot" | ||
78 | </pre> | ||
79 | </div> | ||
80 | <p> | ||
81 | For more information, see the | ||
82 | <a class="link" href="../bitbake-user-manual/var-FAKEROOT.html" target="_self"><code class="filename">FAKEROOT*</code></a> | ||
83 | variables in the BitBake User Manual. | ||
84 | You can also reference the | ||
85 | "<a class="ulink" href="http://www.ibm.com/developerworks/opensource/library/os-aapseudo1/index.html" target="_self">Pseudo</a>" | ||
86 | and | ||
87 | "<a class="ulink" href="https://github.com/wrpseudo/pseudo/wiki/WhyNotFakeroot" target="_self">Why Not Fakeroot?</a>" | ||
88 | articles for background information on Pseudo. | ||
89 | </p> | ||
90 | </div></body> | ||
91 | </html> | ||