diff options
| -rw-r--r-- | documentation/dev-manual/dev-manual-common-tasks.xml | 87 |
1 files changed, 70 insertions, 17 deletions
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml index 544a14693a..5da9861c85 100644 --- a/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/documentation/dev-manual/dev-manual-common-tasks.xml | |||
| @@ -2209,8 +2209,8 @@ | |||
| 2209 | <para> | 2209 | <para> |
| 2210 | This section presents information that shows you how you can | 2210 | This section presents information that shows you how you can |
| 2211 | trim your distribution to even smaller sizes than the | 2211 | trim your distribution to even smaller sizes than the |
| 2212 | 8 Mbytes <filename>poky-tiny</filename> distribution that | 2212 | <filename>poky-tiny</filename> distribution, which is around |
| 2213 | can be built out-of-the-box using the Yocto Project. | 2213 | 5 Mbytes, that can be built out-of-the-box using the Yocto Project. |
| 2214 | </para> | 2214 | </para> |
| 2215 | 2215 | ||
| 2216 | <section id='tiny-system-overview'> | 2216 | <section id='tiny-system-overview'> |
| @@ -2269,19 +2269,21 @@ | |||
| 2269 | <title>Understand What Gives Your Image Size</title> | 2269 | <title>Understand What Gives Your Image Size</title> |
| 2270 | 2270 | ||
| 2271 | <para> | 2271 | <para> |
| 2272 | You will need to have an image from which you can | 2272 | It is easiest to have something to start with when creating |
| 2273 | work. | 2273 | your own distribution. |
| 2274 | The Yocto Project ships with the ability to create a | 2274 | You can use the Yocto Project out-of-the-box to create the |
| 2275 | <filename>poky-tiny</filename> distribution. | 2275 | <filename>poky-tiny</filename> distribution. |
| 2276 | This distribution consists of a small, sub-8 Mbyte kernel | 2276 | Ulitmately, you will want to make changes in your own |
| 2277 | that works with two shipped Board Support Packages (BSPs): | 2277 | distribution that are likely modeled after |
| 2278 | Fish River Island 2 and QEMU. | 2278 | <filename>poky-tiny</filename>. |
| 2279 | You can use this distribution as a starting point and trim | 2279 | <note> |
| 2280 | the size down from there. | 2280 | To use <filename>poky-tiny</filename> in your build, |
| 2281 | If you need to build out the <filename>poky-tiny</filename> | 2281 | set the <filename>DISTRO</filename> variable in your |
| 2282 | distribution, see the | 2282 | <filename>local.conf</filename> file to "poky-tiny" |
| 2283 | "<link linkend='creating-your-own-distribution'>Creating Your Own Distribution</link>" | 2283 | as described in the |
| 2284 | section for information. | 2284 | "<link linkend='creating-your-own-distribution'>Creating Your Own Distribution</link>" |
| 2285 | section. | ||
| 2286 | </note> | ||
| 2285 | </para> | 2287 | </para> |
| 2286 | 2288 | ||
| 2287 | <para> | 2289 | <para> |
| @@ -2292,8 +2294,9 @@ | |||
| 2292 | in the code), and BSS (uninitialized data) sections. | 2294 | in the code), and BSS (uninitialized data) sections. |
| 2293 | Dynamic memory contains memory that is allocated at runtime, | 2295 | Dynamic memory contains memory that is allocated at runtime, |
| 2294 | stacks, hash tables, and so forth. | 2296 | stacks, hash tables, and so forth. |
| 2295 | Temporary memory is decompressed from the expanded kernel | 2297 | Temporary memory is recovered after the boot process. |
| 2296 | after boot and also includes the <filename>__init__</filename> | 2298 | This memory consists of memory used for decompressing |
| 2299 | the kernel and for the <filename>__init__</filename> | ||
| 2297 | functions. | 2300 | functions. |
| 2298 | </para> | 2301 | </para> |
| 2299 | 2302 | ||
| @@ -2304,7 +2307,8 @@ | |||
| 2304 | the <filename>scripts</filename> directory: | 2307 | the <filename>scripts</filename> directory: |
| 2305 | <itemizedlist> | 2308 | <itemizedlist> |
| 2306 | <listitem><para><filename>ksize.py</filename>: Reports | 2309 | <listitem><para><filename>ksize.py</filename>: Reports |
| 2307 | component sizes for the kernel files.</para></listitem> | 2310 | component sizes for the kernel build objects. |
| 2311 | </para></listitem> | ||
| 2308 | <listitem><para><filename>dirsize.py</filename>: Reports | 2312 | <listitem><para><filename>dirsize.py</filename>: Reports |
| 2309 | component sizes for the root filesystem.</para></listitem> | 2313 | component sizes for the root filesystem.</para></listitem> |
| 2310 | </itemizedlist> | 2314 | </itemizedlist> |
| @@ -2503,6 +2507,55 @@ | |||
| 2503 | </para> | 2507 | </para> |
| 2504 | </section> | 2508 | </section> |
| 2505 | 2509 | ||
| 2510 | <section id='look-for-other-ways-to-minimize-size'> | ||
| 2511 | <title>Look for Other Ways to Minimize Size</title> | ||
| 2512 | |||
| 2513 | <para> | ||
| 2514 | Depending on your particular circumstances, other areas that you | ||
| 2515 | can trim likely exist. | ||
| 2516 | The key to finding these areas is through tools and methods | ||
| 2517 | described here combined with experimentation and iteration. | ||
| 2518 | Here are a couple of areas to experiment with: | ||
| 2519 | <itemizedlist> | ||
| 2520 | <listitem><para><filename>eglibc</filename>: | ||
| 2521 | In general, follow this process: | ||
| 2522 | <orderedlist> | ||
| 2523 | <listitem><para>Remove <filename>eglibc</filename> | ||
| 2524 | features from | ||
| 2525 | <ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></ulink> | ||
| 2526 | that you think you don't need.</para></listitem> | ||
| 2527 | <listitem><para>Build your distribution. | ||
| 2528 | </para></listitem> | ||
| 2529 | <listitem><para>If the build fails due to missing | ||
| 2530 | symbols in a package, determine if you can | ||
| 2531 | reconfigure the package to not need those | ||
| 2532 | features. | ||
| 2533 | For example, change the configuration to not | ||
| 2534 | support wide character support as is done for | ||
| 2535 | <filename>ncurses</filename>. | ||
| 2536 | Or, if support for those characters is needed, | ||
| 2537 | determine what <filename>eglibc</filename> | ||
| 2538 | features provide the support and restore the | ||
| 2539 | configuration. | ||
| 2540 | </para></listitem> | ||
| 2541 | <listitem><para>Rebuild and repeat the process. | ||
| 2542 | </para></listitem> | ||
| 2543 | </orderedlist></para></listitem> | ||
| 2544 | <listitem><para><filename>busybox</filename>: | ||
| 2545 | For BusyBox, use a process similar as described for | ||
| 2546 | <filename>eglibc</filename>. | ||
| 2547 | A difference is you will need to boot the resulting | ||
| 2548 | system to see if you are able to do everything you | ||
| 2549 | expect from the running system. | ||
| 2550 | You need to be sure to integrate configuration fragments | ||
| 2551 | into Busybox because BusyBox handles its own core | ||
| 2552 | features and then allows you to add configuration | ||
| 2553 | fragments on top. | ||
| 2554 | </para></listitem> | ||
| 2555 | </itemizedlist> | ||
| 2556 | </para> | ||
| 2557 | </section> | ||
| 2558 | |||
| 2506 | <section id='iterate-on-the-process'> | 2559 | <section id='iterate-on-the-process'> |
| 2507 | <title>Iterate on the Process</title> | 2560 | <title>Iterate on the Process</title> |
| 2508 | 2561 | ||
