diff options
| -rw-r--r-- | documentation/dev-manual/dev-manual-common-tasks.xml | 54 |
1 files changed, 32 insertions, 22 deletions
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml index 0f6c78b855..aa52d17025 100644 --- a/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/documentation/dev-manual/dev-manual-common-tasks.xml | |||
| @@ -2197,12 +2197,13 @@ | |||
| 2197 | 2197 | ||
| 2198 | <para> | 2198 | <para> |
| 2199 | Very small distributions have some significant advantages such | 2199 | Very small distributions have some significant advantages such |
| 2200 | as requiring less on-die memory (cheaper), better performance | 2200 | as requiring less on-die or in-package memory (cheaper), better |
| 2201 | through efficient cache usage, lower power requirements due to less | 2201 | performance through efficient cache usage, lower power requirements |
| 2202 | memory, faster boot times, and reduced development overhead. | 2202 | due to less memory, faster boot times, and reduced development |
| 2203 | overhead. | ||
| 2203 | Some real-world examples where a very small distribution gives | 2204 | Some real-world examples where a very small distribution gives |
| 2204 | you distinct advantages are digital cameras, medical devices, | 2205 | you distinct advantages are digital cameras, medical devices, |
| 2205 | small headless systems, and partitioned flash. | 2206 | and small headless systems. |
| 2206 | </para> | 2207 | </para> |
| 2207 | 2208 | ||
| 2208 | <para> | 2209 | <para> |
| @@ -2217,10 +2218,9 @@ | |||
| 2217 | 2218 | ||
| 2218 | <para> | 2219 | <para> |
| 2219 | The following list presents the overall steps you need to | 2220 | The following list presents the overall steps you need to |
| 2220 | consider and perform to create very small systems that | 2221 | consider and perform to create distributions with smaller |
| 2221 | have a kernel and root filesystem under 4 Mbytes, boot to the | 2222 | filesystems, faster boot times, maintain your critical |
| 2222 | shell in under two seconds, maintain <filename>ipv4</filename> | 2223 | functionality, and avoid initial RAM disks: |
| 2223 | functionality, and avoid an initial RAM disk: | ||
| 2224 | <itemizedlist> | 2224 | <itemizedlist> |
| 2225 | <listitem><para>Determine your goals and guiding | 2225 | <listitem><para>Determine your goals and guiding |
| 2226 | principles.</para></listitem> | 2226 | principles.</para></listitem> |
| @@ -2254,7 +2254,7 @@ | |||
| 2254 | </para></listitem> | 2254 | </para></listitem> |
| 2255 | <listitem><para>Do not create any difficult "hacks" | 2255 | <listitem><para>Do not create any difficult "hacks" |
| 2256 | to achieve your goals.</para></listitem> | 2256 | to achieve your goals.</para></listitem> |
| 2257 | <listitem><para>Leverage off the device-specific | 2257 | <listitem><para>Leverage the device-specific |
| 2258 | options.</para></listitem> | 2258 | options.</para></listitem> |
| 2259 | <listitem><para>Work in a separate layer so that you | 2259 | <listitem><para>Work in a separate layer so that you |
| 2260 | keep changes isolated. | 2260 | keep changes isolated. |
| @@ -2290,11 +2290,10 @@ | |||
| 2290 | Memory consists of static, dynamic, and temporary memory. | 2290 | Memory consists of static, dynamic, and temporary memory. |
| 2291 | Static memory is the TEXT (the code), DATA (initialized data | 2291 | Static memory is the TEXT (the code), DATA (initialized data |
| 2292 | in the code), and BSS (uninitialized data) sections. | 2292 | in the code), and BSS (uninitialized data) sections. |
| 2293 | Dynamic memory contains memory that is allocate at runtime, | 2293 | Dynamic memory contains memory that is allocated at runtime, |
| 2294 | stacks, hash tables, and so forth. | 2294 | stacks, hash tables, and so forth. |
| 2295 | Temporary memory is decompressed from the expanded kernel | 2295 | Temporary memory is decompressed from the expanded kernel |
| 2296 | after boot. | 2296 | after boot and also includes the <filename>__init__</filename> |
| 2297 | Temporary memory also includes the <filename>__init__</filename> | ||
| 2298 | functions. | 2297 | functions. |
| 2299 | </para> | 2298 | </para> |
| 2300 | 2299 | ||
| @@ -2305,9 +2304,9 @@ | |||
| 2305 | the <filename>scripts</filename> directory: | 2304 | the <filename>scripts</filename> directory: |
| 2306 | <itemizedlist> | 2305 | <itemizedlist> |
| 2307 | <listitem><para><filename>ksize.py</filename>: Reports | 2306 | <listitem><para><filename>ksize.py</filename>: Reports |
| 2308 | the size of the kernel files.</para></listitem> | 2307 | component sizes for the kernel files.</para></listitem> |
| 2309 | <listitem><para><filename>dirsize.py</filename>: Reports | 2308 | <listitem><para><filename>dirsize.py</filename>: Reports |
| 2310 | the size of the root filesystem.</para></listitem> | 2309 | component sizes for root filesystem.</para></listitem> |
| 2311 | </itemizedlist> | 2310 | </itemizedlist> |
| 2312 | This next tool and command helps you organize configuration | 2311 | This next tool and command helps you organize configuration |
| 2313 | fragments and view file dependencies in a human-readable form: | 2312 | fragments and view file dependencies in a human-readable form: |
| @@ -2332,12 +2331,12 @@ | |||
| 2332 | section of the Yocto Project Linux Kernel Development | 2331 | section of the Yocto Project Linux Kernel Development |
| 2333 | Manual and the "<link linkend='creating-config-fragments'>Creating Configuration Fragments</link>" | 2332 | Manual and the "<link linkend='creating-config-fragments'>Creating Configuration Fragments</link>" |
| 2334 | section, which is in this manual.</para></listitem> | 2333 | section, which is in this manual.</para></listitem> |
| 2335 | <listitem><para><filename>bitbake -u depexp -g core-image-*</filename>: | 2334 | <listitem><para><filename>bitbake -u depexp -g <bitbake_target></filename>: |
| 2336 | Using the BitBake command with these options brings up | 2335 | Using the BitBake command with these options brings up |
| 2337 | a Dependency Explorer from which you can view file | 2336 | a Dependency Explorer from which you can view file |
| 2338 | dependencies. | 2337 | dependencies. |
| 2339 | Understanding these dependencies allows you to make | 2338 | Understanding these dependencies allows you to make |
| 2340 | sane decisions when cutting out various pieces of the | 2339 | informed decisions when cutting out various pieces of the |
| 2341 | kernel and root filesystem.</para></listitem> | 2340 | kernel and root filesystem.</para></listitem> |
| 2342 | </itemizedlist> | 2341 | </itemizedlist> |
| 2343 | </para> | 2342 | </para> |
| @@ -2357,7 +2356,7 @@ | |||
| 2357 | 2356 | ||
| 2358 | <para> | 2357 | <para> |
| 2359 | First, check out what is hogging your file system running the | 2358 | First, check out what is hogging your file system running the |
| 2360 | <filename>dirsize.sh</filename> script from your root directory: | 2359 | <filename>dirsize.py</filename> script from your root directory: |
| 2361 | <literallayout class='monospaced'> | 2360 | <literallayout class='monospaced'> |
| 2362 | $ cd <root-directory-of-image> | 2361 | $ cd <root-directory-of-image> |
| 2363 | $ dirsize.py 100000 > dirsize-100k.log | 2362 | $ dirsize.py 100000 > dirsize-100k.log |
| @@ -2366,6 +2365,9 @@ | |||
| 2366 | You can apply a filter to the script to ignore files under | 2365 | You can apply a filter to the script to ignore files under |
| 2367 | a certain size. | 2366 | a certain size. |
| 2368 | This example filters out anything below 100 Kbytes. | 2367 | This example filters out anything below 100 Kbytes. |
| 2368 | The sizes reported by the tool are uncompressed and thus, | ||
| 2369 | will be smaller by a relatively constant factor in a | ||
| 2370 | compressed root filesystem. | ||
| 2369 | When you examine your log file, you can focus on areas of the | 2371 | When you examine your log file, you can focus on areas of the |
| 2370 | root filesystem that take up large amounts of memory. | 2372 | root filesystem that take up large amounts of memory. |
| 2371 | </para> | 2373 | </para> |
| @@ -2388,7 +2390,8 @@ | |||
| 2388 | result in minimal impact on the feature set. | 2390 | result in minimal impact on the feature set. |
| 2389 | For example, you might not need a VGA display. | 2391 | For example, you might not need a VGA display. |
| 2390 | Or, you might be able to get by with <filename>devtmpfs</filename> | 2392 | Or, you might be able to get by with <filename>devtmpfs</filename> |
| 2391 | and <filename>mdev</filename>. | 2393 | and <filename>mdev</filename> instead of |
| 2394 | <filename>udev</filename>. | ||
| 2392 | </para> | 2395 | </para> |
| 2393 | 2396 | ||
| 2394 | <para> | 2397 | <para> |
| @@ -2402,10 +2405,14 @@ | |||
| 2402 | </para> | 2405 | </para> |
| 2403 | 2406 | ||
| 2404 | <para> | 2407 | <para> |
| 2405 | Some other examples of where you can look to eliminate size | 2408 | Finally, you should consider exactly what filesystem you need |
| 2406 | from the root filesystem are using <filename>ext2</filename> | 2409 | to meet your needs while also reducing size. |
| 2407 | rather than <filename>ext3</filename>, which requires a | 2410 | For example, consider <filename>cramfs</filename>, |
| 2408 | 1 Mbyte journal. | 2411 | <filename>squashfs</filename>, <filename>ubifs</filename>, |
| 2412 | <filename>ext2</filename>, or an <filename>initramfs</filename> | ||
| 2413 | using <filename>initramfs</filename>. | ||
| 2414 | Be aware that <filename>ext3</filename> requires a 1 Mbyte | ||
| 2415 | journal. | ||
| 2409 | If you are okay with running read-only you don't need this | 2416 | If you are okay with running read-only you don't need this |
| 2410 | journal. | 2417 | journal. |
| 2411 | </para> | 2418 | </para> |
| @@ -2446,6 +2453,9 @@ | |||
| 2446 | taken up with the built-in <filename>.o</filename> files for | 2453 | taken up with the built-in <filename>.o</filename> files for |
| 2447 | drivers, networking, core kernel files, filesystem, sound, | 2454 | drivers, networking, core kernel files, filesystem, sound, |
| 2448 | and so forth. | 2455 | and so forth. |
| 2456 | The sizes reported by the tool are uncompressed and thus, | ||
| 2457 | will be smaller by a relatively constant factor in a compressed | ||
| 2458 | kernel image. | ||
| 2449 | Look to reduce the areas that are large and taking up around | 2459 | Look to reduce the areas that are large and taking up around |
| 2450 | the "90% rule". | 2460 | the "90% rule". |
| 2451 | </para> | 2461 | </para> |
