From 30a806dcbd8470bb97b52b246aab3b39389bb763 Mon Sep 17 00:00:00 2001 From: Scott Rifenbark Date: Fri, 22 Mar 2013 13:44:47 -0700 Subject: [PATCH] dev-manual: Applied review comments to poky-tiny section Fixes YOCTO #2568 Applied Darren's review comments where I could for his review. Not all questions are answered but this represents the third draft of the section. (From yocto-docs rev: da0bc9542259238caf7b474bb15157d80a2b3651) Signed-off-by: Scott Rifenbark Signed-off-by: Richard Purdie --- .../dev-manual/dev-manual-common-tasks.xml | 54 +++++++++++-------- 1 file 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 @@ Very small distributions have some significant advantages such - as requiring less on-die memory (cheaper), better performance - through efficient cache usage, lower power requirements due to less - memory, faster boot times, and reduced development overhead. + as requiring less on-die or in-package memory (cheaper), better + performance through efficient cache usage, lower power requirements + due to less memory, faster boot times, and reduced development + overhead. Some real-world examples where a very small distribution gives you distinct advantages are digital cameras, medical devices, - small headless systems, and partitioned flash. + and small headless systems. @@ -2217,10 +2218,9 @@ The following list presents the overall steps you need to - consider and perform to create very small systems that - have a kernel and root filesystem under 4 Mbytes, boot to the - shell in under two seconds, maintain ipv4 - functionality, and avoid an initial RAM disk: + consider and perform to create distributions with smaller + filesystems, faster boot times, maintain your critical + functionality, and avoid initial RAM disks: Determine your goals and guiding principles. @@ -2254,7 +2254,7 @@ Do not create any difficult "hacks" to achieve your goals. - Leverage off the device-specific + Leverage the device-specific options. Work in a separate layer so that you keep changes isolated. @@ -2290,11 +2290,10 @@ Memory consists of static, dynamic, and temporary memory. Static memory is the TEXT (the code), DATA (initialized data in the code), and BSS (uninitialized data) sections. - Dynamic memory contains memory that is allocate at runtime, + Dynamic memory contains memory that is allocated at runtime, stacks, hash tables, and so forth. Temporary memory is decompressed from the expanded kernel - after boot. - Temporary memory also includes the __init__ + after boot and also includes the __init__ functions. @@ -2305,9 +2304,9 @@ the scripts directory: ksize.py: Reports - the size of the kernel files. + component sizes for the kernel files. dirsize.py: Reports - the size of the root filesystem. + component sizes for root filesystem. This next tool and command helps you organize configuration fragments and view file dependencies in a human-readable form: @@ -2332,12 +2331,12 @@ section of the Yocto Project Linux Kernel Development Manual and the "Creating Configuration Fragments" section, which is in this manual. - bitbake -u depexp -g core-image-*: + bitbake -u depexp -g <bitbake_target>: Using the BitBake command with these options brings up a Dependency Explorer from which you can view file dependencies. Understanding these dependencies allows you to make - sane decisions when cutting out various pieces of the + informed decisions when cutting out various pieces of the kernel and root filesystem. @@ -2357,7 +2356,7 @@ First, check out what is hogging your file system running the - dirsize.sh script from your root directory: + dirsize.py script from your root directory: $ cd <root-directory-of-image> $ dirsize.py 100000 > dirsize-100k.log @@ -2366,6 +2365,9 @@ You can apply a filter to the script to ignore files under a certain size. This example filters out anything below 100 Kbytes. + The sizes reported by the tool are uncompressed and thus, + will be smaller by a relatively constant factor in a + compressed root filesystem. When you examine your log file, you can focus on areas of the root filesystem that take up large amounts of memory. @@ -2388,7 +2390,8 @@ result in minimal impact on the feature set. For example, you might not need a VGA display. Or, you might be able to get by with devtmpfs - and mdev. + and mdev instead of + udev. @@ -2402,10 +2405,14 @@ - Some other examples of where you can look to eliminate size - from the root filesystem are using ext2 - rather than ext3, which requires a - 1 Mbyte journal. + Finally, you should consider exactly what filesystem you need + to meet your needs while also reducing size. + For example, consider cramfs, + squashfs, ubifs, + ext2, or an initramfs + using initramfs. + Be aware that ext3 requires a 1 Mbyte + journal. If you are okay with running read-only you don't need this journal. @@ -2446,6 +2453,9 @@ taken up with the built-in .o files for drivers, networking, core kernel files, filesystem, sound, and so forth. + The sizes reported by the tool are uncompressed and thus, + will be smaller by a relatively constant factor in a compressed + kernel image. Look to reduce the areas that are large and taking up around the "90% rule".