On 4/21/2010 11:57 AM, Jamie Lokier wrote:
> Jeff Bacon wrote:
>   
>> On 4/21/2010 11:04 AM, Lennart Sorensen wrote:
>> What version of Busybox are you using? I am finding it difficult to make
>> a newer version (1.15.x, 1.16.0) that small. In fact, when I configure
>> it with a single applet, I still somehow get a ~200kB binary. Are there
>> other options you are using in the build process to make your BB binary
>> so small?
>>     
> You don't have to have just one busybox binary containing everything.
>
> On my 32MB ARM7-ish system, I have init, telnetd and udhdpc each in
> separate one-program busybox executables, compiled non-XIP.
>
> Those are individual because they are each long-running programs.
> They are not XIP because there is only one instance, so XIP overhead
> isn't justified.
>
> Then I have a busybox containing exactly these: test, true, false and
> msh.  Those are compiled XIP because there are many instances of them
> at once.
>
> Those are the shell, because it is instantiated many times so I want
> it to have as little extra stuff as possible.  test, true, false are
> forced on by Busybox when msh is enabled, that's why they are included.
>
> Then I have awk, fdisk and login individually, because those are quite
> large, or in the case of login, a large data segment (due to password
> encryption tables).  Those are all non-XIP, because I don't use them
> much. Taking them out of the "big" Busybox makes it quite a lot
> smaller.  Reducing data segment size from the big Busybox is more
> valuable than reducing code size.
>
> Then I have all the rest of the enabled Busybox programs in a single
> executable, compiled with XIP so that multiple instances share code.
>
> All of them are linked statically with uClibc.  Mainly because shared
> libs are difficult without FD-PIC, but also it probably makes the data
> segment smaller than if there was one large shared uClibc.  But on the
> other hand, larger code size and in larger chunks per program, so more
> sensitive to fragmentation.  Pros and cons.
>
> The above was done because, despite having 32MB to play with, and
> about 10MB free most of the time, when I had one big Busybox and
> non-XIP, the system could easily get into a state where allocating
> 256kB to launch telnetd or a shell from telnetd wasn't possible, so
> even remote logging in and rebooting my device wasn't possible.
>
> -- Jamie
>   

Do you have this set up automatically when building your system, or is a
one-time, manually intensive, build process which you then set each BB
version aside into some pre-compiled binary folder for inclusion into
your RFS?

-JB
_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

Reply via email to