# A quoi sert busybox dans Gentoo ? (resolu)

## GentooUser@Clubic

Salut, 

Voila en faisant emerge -e system je me suis rendu compte que busybox faisait partie des paquets installé.

busybox regroupe les programmes les plus courants (rm, ls, chvt et pleins d'autres) en un seul exécutable.

J'ai cherché dans /bin, /sbin, /usr/bin et /usr/sbin des programmes qui serait des liens vers busybox mais rien ;

En plus les programmes courants sont déjà fournis par le paquet coreutils.

Alors il sert a quoi busybox sur une Gentoo de base ?Last edited by GentooUser@Clubic on Mon Sep 04, 2006 1:40 am; edited 1 time in total

----------

## guitoo

```

 $ sudo equery f busybox

[ Searching for packages matching busybox... ]

* Contents of sys-apps/busybox-1.1.3:

/bin

/bin/bb

/bin/busybox

....................

```

```
 $ busybox

BusyBox v1.1.3 (2006.07.11-04:45+0000) multi-call binary

Usage: busybox [function] [arguments]...

   or: [function] [arguments]...

        BusyBox is a multi-call binary that combines many common Unix

        utilities into a single executable.  Most people will create a

        link to busybox for each function they wish to use and BusyBox

        will act like whatever it was invoked as!

Currently defined functions:

        [, [[, addgroup, adduser, adjtimex, ar, arping, ash, awk, basename,

        bb, bbconfig, bunzip2, busybox, bzcat, cal, cat, chattr, chgrp,

        chmod, chown, chroot, chvt, clear, cmp, comm, cp, cpio, crond,

        cut, date, dd, deallocvt, delgroup, deluser, devfsd, df, dirname,

        dmesg, dnsd, dos2unix, dpkg-deb, du, dumpkmap, dumpleases, e2fsck,

        e2label, echo, egrep, eject, env, ether-wake, expr, fakeidentd,

        false, fbset, fdflush, fdformat, fdisk, fgrep, find, findfs, free,

        freeramdisk, fsck, fsck.ext2, fsck.ext3, fsck.minix, fuser, getopt,

        getty, grep, gunzip, gzip, halt, hdparm, head, hexdump, hostid,

        hostname, httpd, hwclock, id, ifconfig, ifdown, ifup, init, insmod,

        install, ip, ipaddr, ipcrm, ipcs, iplink, iproute, iptunnel, kill,

        killall, klogd, last, length, less, linux32, linux64, linuxrc,

        ln, loadfont, loadkmap, logger, login, logread, losetup, ls, lsattr,

        lsmod, lzmacat, makedevs, md5sum, mdev, mesg, mkdir, mke2fs, mkfifo,

        mkfs.ext2, mkfs.ext3, mkfs.minix, mknod, mkswap, mktemp, modprobe,

        more, mount, mountpoint, mt, mv, nameif, nc, netstat, nice, nohup,

        nslookup, openvt, passwd, patch, pidof, ping, ping6, pipe_progress,

        pivot_root, poweroff, printenv, printf, ps, pwd, rdate, readlink,

        readprofile, realpath, reboot, renice, reset, rm, rmdir, rmmod,

        route, run-parts, runlevel, rx, sed, seq, setarch, setconsole,

        setkeycodes, setsid, sh, sha1sum, sleep, sort, start-stop-daemon,

        stat, strings, stty, su, sum, swapoff, swapon, switch_root, sync,

        sysctl, syslogd, tail, tar, tee, telnet, telnetd, test, time,

        top, touch, tr, traceroute, true, tty, tune2fs, udhcpc, udhcpd,

        umount, uname, uncompress, uniq, unix2dos, unlzma, unzip, uptime,

        usleep, vconfig, vi, vlock, watch, watchdog, wc, wget, which,

        who, whoami, xargs, yes, zcat, zcip
```

Quand a savoir l'interet de busybox, j'en ai aucune idée.

----------

## zyprexa

J'ai trouvé ca : https://forums.gentoo.org/viewtopic-t-478070-highlight-busybox.html

Ca permet d'avoir un binaire rassemblant les fonctions basiques, en cas de problème majeur avec les libs système. (si j'ai bien traduit)

----------

## GentooUser@Clubic

Merci   :Wink: 

Le pire c'est que je me suis retrouvé dans le cas de l'exemple, et j'ai reinstallé sans savoir   :Crying or Very sad: 

----------

## Enlight

Mais c'est génial ce truc!!!!! tu le compiles en static comme ça quoi qu'il arrive tu pourras toujours te sortir des pire merdiers...

----------

## kernelsensei

 *Enlight wrote:*   

> Mais c'est génial ce truc!!!!! tu le compiles en static comme ça quoi qu'il arrive tu pourras toujours te sortir des pire merdiers...

 

ben oui, ya meme init dedans  :Smile: 

ya 2 facons de l'utiliser :

1. Faire un lien, busybox appelera alors le module portant le nom du lien

2. Faire busybox <mon module> [args du module]

----------

## kaworu

donc si on rajoute le use static lorsque l'on compile busybox, il sauve ta peau en cas de (gros) pépin ?

----------

## Enlight

 *kaworu wrote:*   

> donc si on rajoute le use static lorsque l'on compile busybox, il sauve ta peau en cas de (gros) pépin ?

 

oui ça permets de survivre même quand la glibc est pétée, en général je le faisais pour bash et quelques autres... remarque que pour bash on doit pas être dispensés.

----------

## guilc

 *Enlight wrote:*   

> remarque que pour bash on doit pas être dispensés.

 

bah si : busybox a un shell intégré. Certes ça permet pas de faire des scripts poussés, mais pour sauver un systeme, ça suffit  :Wink: 

----------

## Enlight

 *guilc wrote:*   

>  *Enlight wrote:*   remarque que pour bash on doit pas être dispensés. 
> 
> bah si : busybox a un shell intégré. Certes ça permet pas de faire des scripts poussés, mais pour sauver un systeme, ça suffit 

 

My bad, j'ai cherché bash au lieu de sh; par contre en admettant que tu pètes ta libc et que tu perdes ton bash dynamique avec, t'as plus rien pour faire un exec et lancer le sh de la busybox, où bien? à la limite reboot avec init=... ? dans ce cas ça marche avec des agruments (i.e. si on a pas fait le symlink avant du sh par exemple)?

----------

## CryoGen

Tient je vais suivre le thread là car j'ai justement peter ma libc lors de la migration vers 2006.1/gcc4 ... impossible de se loguer ni de choorter ! Obliger de tout reinstaller... bon j'ai fait un peu le bourrin j'etais mal reveillé y'avait surement un truc de mieux à faire XD. Mais je ne connaissais pas busybox non plus...   :Embarassed: 

----------

## kaworu

J'ai aussi fait sauté ma glibc une fois (je voulais la downgrader pour pouvoir installer firefox/thunderbird) et boom, kernel panic : no init found (youpi).

J'ai du monter mes partoches depuis un liveCD et décompresser une libc (de la bonne version) précompilée, et après tout marchais parfaitement.

est-ce que init="/bin/busybox sh" dans la ligne de grub ça peut passer ?

Si c'est compilé en static, ça veut dire qu'il va créer une lib exprès pour lui (indépendante du reste du système) ?

EDIT : Y'a même vi dans busybox !  :Shocked: 

EDIT2 : Je vois pas de use static pour bash... mais autrement il y'en a un pour sysinit.

----------

## Enlight

pour bash je mets -static dans les CFLAGS pour init c'est la question que je me pose.

----------

## zyprexa

Vraiment bluffant en effet j'aurai jamais imaginé qu'on pouvait faire tout ca avec ce petit binaire... je saurai quoi faire la prochaine fois que je pourris ma glibc   :Very Happy: 

----------

## doublehp

Pour répondre à la question initiale

 *Quote:*   

> Alors il sert a quoi busybox sur une Gentoo de base ?

 

- indispensable pour la réparation d'urgence

- Gentoo est architecturé autour pour la sequence de boot

- c'est indispensable (ok, "très très très fortement recommandé") pour les boot avec initrd ...

Depuis quelques années, les autres distribes l'incluent aussi en standard. C'est ZE truc indispensable pour avoir un interpréteur de commande quand l'initrd ne trouve pas le / . (non je ne parle pas du site de trolls). C'est du concentré d'intelligence pour faciliter le developpement des séquenceurs de boot, et divers outils devant rester IMPéRATIVEMENT légers ... quand on ne sait pas encore si on a 2Go de RAM ou 16Mo ... (oui j'ai moi meme des machines qui bootent avec 16Mo ...)

----------

## CryoGen

Roh le détérage de topic   :Twisted Evil: 

(perso j'ai activé le flag static pour busybox dans le use.conf/package.use   :Laughing:  )

----------

## doublehp

 *CryoGen wrote:*   

> Roh le détérage de topic  
> 
> (perso j'ai activé le flag static pour busybox dans le use.conf/package.use   )

 

septembre 2006 ? à peine 6 mois ???

Pour moi, le déterrage commence pas avant 1 ou 2 ans ...

J'ai récement rafraichi un truc de 2003 ... CA c'est du désordinausage !  :Razz: 

----------

## titoucha

C'est super, car à l'époque j'avais pas du le voir ce fil et il est très intéressant, alors merci pour ce déterrage   :Very Happy: 

----------

## CryoGen

 *titoucha wrote:*   

> C'est super, car à l'époque j'avais pas du le voir ce fil et il est très intéressant, alors merci pour ce déterrage  

 

On peut savoir où tu étais au lieu de trainer ici   :Evil or Very Mad: 

XD

----------

## Mickael

Mais pourquoi les devs n'imposent pas le flag static à busybox? : 

```

eix -s busybox

[I] sys-apps/busybox

     Available versions:  1.2.2.1 (~)1.3.1 (~)1.4.1-r1 (~)1.4.1-r2

     Installed versions:  1.4.1-r2(10:14:50 21.02.2007)(-debug -make-symlinks -savedconfig -static)

     Homepage:            http://www.busybox.net/

     Description:         Utilities for rescue and embedded systems
```

----------

## widan

 *MickTux wrote:*   

> Mais pourquoi les devs n'imposent pas le flag static à busybox?

 

Parce-qu'il y en a déjà une version statique (/bin/bb):

```
widan@phuket ~ $ file /bin/bb /bin/busybox 

/bin/bb:      ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, statically linked, for GNU/Linux 2.6.9, stripped

/bin/busybox: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
```

Il me semble que le USE-flag "static" lui dit de ne créer que la version statique, au lieu d'une statique et une dynamique.

----------

## doublehp

[quote="widan"] *MickTux wrote:*   

> Il me semble que le USE-flag "static" lui dit de ne créer que la version statique, au lieu d'une statique et une dynamique.

 

$ euse -i static

$ man euse

(peux pas vous dire, suis sous une autre distro ATM ... chroot sux).

----------

## titoucha

 *CryoGen wrote:*   

>  *titoucha wrote:*   C'est super, car à l'époque j'avais pas du le voir ce fil et il est très intéressant, alors merci pour ce déterrage   
> 
> On peut savoir où tu étais au lieu de trainer ici  
> 
> XD

 

Nan c'est un secret   :Laughing: 

----------

