[poky] Question about apply eglibc configurability to create minimal image
Kang Kai
Kai.Kang at windriver.com
Fri Jun 17 03:05:02 PDT 2011
On 2011?06?09? 23:20, Mark Hatle wrote:
> On 6/9/11 5:57 AM, Kang Kai wrote:
>> Hi Mark,
>>
>> I am focus on eglibc itself compilation with disabling all the
>> configurable options, right now eglibc can be compiled with disable all
>> the configurable options.
>>
>> But when I build core-image-minimal in a clear new directory, some
>> packages build failed and they need eglibc supports, such as
> core-image-minimal is simply to large of an image to see some of the advantages
> of the eglibc configuration. Realistically the advantages come on single
> application or small (busybox + single application) systems.
>
>> gcc-runtime depends on libc-libm
> The above looks like a bug to me and should be investigated.. (a bug in gcc that
> is..)
>
>> ncurse depends on libc-posix-wchar-io libc-posix-clang-wchar
> ncurses can be configured WITHOUT wide character support, the needs to be done
> with any of the wchar options disabled in eglibc.
>
>> openssl depends on libc-inet libc-nsswitch
> I'm not sure why openssl needs either inet or nsswitch. inet perhaps if it
> tries to make certain socket calls, but libc-nsswitch should never be required
> outside of eglibc. This is likely a configuration issue in openssl -- or a bug
> in eglibc.
>
>> gettext depends on libc-spawn libc-locale-code
>> libc-getlogin libc-utmp
>> ...
> Once we introduce gettext (beyond simply it's m4 macros) we're no longer in
> "small" system territory. gettext and many others really want some of the
> larger system capabilities as they are designed for multilingual systems.
>
>> After enable those options, the image size only decrease from 9.6M to
>> 9.4M(qemux86). And the dependencies on eglibc is hard to break,
>> something like libcrypt getlogin(function) can't be breaken.
>> Could you give me some directions what should I do with eglibc
>> configurability?
> My suggest is to start with a new custom configuration. (ignore the gcc-runtime
> for right now and enable libm.) The goal of this configuration is a small,
> local system -- without network connectivity.
>
> Walk through the core-image-minimal, and you'll see:
> IMAGE_INSTALL = "task-core-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP}"
>
> Looking at task-core-boot:
>
> RDEPENDS_task-core-boot = "\
> base-files \
> base-passwd \
> busybox \
> initscripts \
> ${@base_contains("MACHINE_FEATURES", "keyboard", "keymaps", "", d)} \
> modutils-initscripts \
> netbase \
> sysvinit \
> tinylogin \
> udev \
> ${VIRTUAL-RUNTIME_update-alternatives} \
> ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS}"
>
> RRECOMMENDS_task-core-boot = "\
> ${MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS}"
>
> From the above, I'm pretty sure that "netbase" will require a lot of networking
> components, specifically adding things like libc-inet. So avoid netbase.
>
> It's possible that keyboard/keymaps may cause additional stuff to come in due to
> locale requirements.. so I'd dump those as well..
>
> sysvinit may also introduce some additional items -- so if it causes problems,
> remove it and switch to the init located within busybox.
>
> update-alternatives is what included gettext -- so this might need some
> enhancement to avoid gettext as a requirement. So I'd suggest skipping it.
> (Note without it, it's likely busybox, tinylogin may not get setup properly...)
>
> udev is quite complex and drags in a number of components -- so drop that..
>
> Leaving:
>
> base-files \
> base-passwd \
> busybox \
> initscripts \
> modutils-initscripts \
> sysvinit \
> tinylogin
Hi Mark,
According this list, expand with their run time depency(show in the
attachment minimal-image-runtime-dependies.png) , and the list is:
base-files \
base-passwd \
busybox \
busybox-syslog \
busybox-udhcpc \
initscripts \
makedevs \
modutils-initscripts \
sysvinit \
sysvinit-pidof \
sysvinit-inittab \
tinylogin
When only enable eglibc libm, busybox, sysvinit and tinylogin can't be
compiled.
busybox depends on
* libc-crypt
* libc-getlogin
* libc-inet
* libc-posix-regexp
I wonder that maybe libc-crypt can NOT be disabled? Other 3 options can
be disabled by closing some busybox feature and builtin commands.
sysvinit depends on
* libc-inet
* libc-sunrpc
* libc-crypt
I don't how to resolve them, so as you said, remove it and use busybox
init instead.
tinylogin depends on
* libc-crypt
* libc-utmp
* libc-getlogin
I am trapped here, and could you give me some more help here, please?
The picture named eglibc-options-deps-for-minimal-image.png in
attachment is the packages depends on every eglibc option that required
by other packages.
There are some other dependencies cause problems.
linux-yocto requires elfutils python and perl.
elfutils requires gettext and gettext depends on:
* libc-locale-code
* libc-spawn
* libc-getlogin
python requires ncurses and openssl.
* ncurses could be update bb file to choose support wchar or not.
* openssl depends on:
o libc-inet
o libc-nsswitch
perl depends on:
* libc-crypt
* libc-fcvt
* libc-inet
* libc-utmp
How to remove these dependencies? One way is to remove the "elfutils
python perl" from linux-yocto depencies, and the other is to disable
related features of these packages, and I wonder this is too hard to finish.
Thanks a lot.
Regards,
Kai
> First see if you can compile the above with a minimal eglibc configuration. If
> not I can help you work through those issues.. If you can, you SHOULD see a
> fairly dramatic decrease in size.
>
> --Mark
>
>> Thanks a lot!
>>
>> I made a mistake that try eglibc configurability in a directory which
>> has build core-image-minimal, so the packages which depend on eglibc
>> didn't rebuild, and I didn't find the dependency before. I am sorry!
>>
>> Regards,
>> Kai
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/poky/attachments/20110617/a91b1b91/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: eglibc-options-deps-for-minimal-image.png
Type: image/png
Size: 280448 bytes
Desc: not available
URL: <http://lists.yoctoproject.org/pipermail/poky/attachments/20110617/a91b1b91/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: minimal-image-runtime-dependies.png
Type: image/png
Size: 117500 bytes
Desc: not available
URL: <http://lists.yoctoproject.org/pipermail/poky/attachments/20110617/a91b1b91/attachment-0001.png>
More information about the poky
mailing list