« Busybox » : différence entre les versions

De Wiki doc

(Ajout de netcat)
(Correction de faute d'orthographe + ajout de la section "Serveur DHCP" (à compléter))
Ligne 1 : Ligne 1 :
[[Category:linux]]
[[Category:linux]]
[https://fr.wikipedia.org/wiki/BusyBox Busybox] est un exécutable regroupant une multitude d'utilitaires généralement disponibles via [https://fr.wikipedia.org/wiki/GNU_Core_Utilities GNU Core Utilities]. Il a l'avantage de ne prendre que très peu de place est peut être utilisé pour faire des systèmes embarqués très simples.
[https://fr.wikipedia.org/wiki/BusyBox Busybox] est un exécutable regroupant une multitude d'utilitaires généralement disponibles via [https://fr.wikipedia.org/wiki/GNU_Core_Utilities GNU Core Utilities]. Il a l'avantage de ne prendre que très peu de place et peut être utilisé pour faire des systèmes embarqués très simples.
=Installation=
=Installation=
==Via le gestionnaire de paquet==
==Via le gestionnaire de paquet==
Ligne 21 : Ligne 21 :
* '''make allyesconfig''': Sélectionnez absolument tout. Cela crée une version statiquement liée de Busybox remplie de code de débogage, avec des dépendances sur ''selinux'', en utilisant des noms de ''devfs'' ... Cela s'assure que tout est compilé. Que le résultat fasse quelque chose d'utile ou non est une question ouverte.
* '''make allyesconfig''': Sélectionnez absolument tout. Cela crée une version statiquement liée de Busybox remplie de code de débogage, avec des dépendances sur ''selinux'', en utilisant des noms de ''devfs'' ... Cela s'assure que tout est compilé. Que le résultat fasse quelque chose d'utile ou non est une question ouverte.
* '''make randconfig''': Créer une configuration aléatoire à des fins de tests.
* '''make randconfig''': Créer une configuration aléatoire à des fins de tests.
=Usage=
=Usage=
Nous allons partir du principe que l'emplacement de notre binaire ''busybox'' se trouve dans notre variable d'environnement <source lang="bash" inline>$PATH</source>.
Nous allons partir du principe que l'emplacement de notre binaire ''busybox'' se trouve dans notre variable d'environnement <source lang="bash" inline>$PATH</source>.
'''Lister les programmes disponibles dans notre busybox'''
'''Lister les programmes disponibles dans notre busybox'''
  busybox
  busybox
==Serveur WEB==
==Serveur WEB==
'''Utiliser le serveur WEB intégré'''
'''Utiliser le serveur WEB intégré'''
Ligne 34 : Ligne 36 :
* '''-v''': affiche les IP des clients se connectant et le message renvoyé par le serveur
* '''-v''': affiche les IP des clients se connectant et le message renvoyé par le serveur
* '''-h''': Spécifie le répertoire de travail du serveur. Si ce paramètre n'est pas renseigné, le répertoire courant est utilisé
* '''-h''': Spécifie le répertoire de travail du serveur. Si ce paramètre n'est pas renseigné, le répertoire courant est utilisé
==Serveur DHCP==
'''Créer le fichiers du processus'''
touch /tmp/udhcpd.pid
'''Créer le fichier contenant les baux DHCP'''
touch /tmp/udhcpd.leases
'''Créer un fichier de configuration'''
<source lang="python">
cat > /tmp/udhcpd.conf << EOF
# Plage d'adresse attribuable
start 192.168.0.1 #Par défaut: 192.168.0.20
end 192.168.0.253 #Par défaut: 192.168.0.254
# Interface réseau d'écoute
interface eth1 #Par défaut: eth0
# Nombre maximum de baux
max_leases 253 #Par défaut: 254
# Stoquer le temps restant pour chaque bail dans le fichier des baux
# C'est utile sur les systèmes embarqués ne pouvants garder l'heure après un redémarrage
# Si cette valeur est définie à "no", l'heure de fin de bail sera stoqué dans le fichier
# des baux au lieu du temps restant avant expirsation
#remaining yes #Par défaut: yes
#Localisation du fichier des baux
lease_file /tmp/udhcpd.leases
#Localisation du fichier processus
pidfile /tmp/udhcpd.pid #Par défaut: /var/run/udhcpd.pid
# Les options suivantes sont pour le PXE
#siaddr 192.168.0.22 #Par défaut: 0.0.0.0
#sname zorak #Par défaut: (none)
#boot_file /var/nfs_root #Par défaut: (none)
# Options DHCP
# Elles peuvent être spécifiées via le mot clé "option" ou "opt" qui est un alias.
# La seule options définie par défaut est "lease" pour définir la durée des baux
opt dns 192.168.170.171 80.67.169.12
option subnet 255.255.255.0
opt router 192.168.0.254
#opt wins 192.168.10.10 # Ajoute un serveur WINS
#option dns 129.219.13.81 # Ajoute un autre DNS aux 2 autres ci-dessus
option domain local
option lease 864000 # 10 jours en secondes
EOF
</source>
Paramètres possibles:
{| class="wikitable"
|-
! Paramètre !! Effet !! Valeur par défaut
|-
| Paramètre 1 || Il fait ça || yes
|}
Liste exhaustive des options supportés. Voir le fichier source options.c:
{| class="wikitable"
|-
! Option !! Effet
|-
| toto || titi
|}
'''Exécuter le serveur DHCP'''
busybox udhcpd -fv /tmp/udhcpd.conf
Paramètres:
* '''-f''': Ne rend pas la main. Ça permet de fermer le serveur DHCP avec un <source lang="bash" inline>ctrl+c</source> au lieu de ce faire chier avec les commandes <source lang="bash" inline>ps</source> et <source lang="bash" inline>kill</source>
* '''-v''': affiche les requêtes ''ACK'' et ''OFFER'' entre le serveur et les clients (on voit l'IP attribué de ce fait)
'''Sources de la section'''
* Page officielle de udhcpd: https://udhcp.busybox.net/
* Fichier de configuration exemple: https://udhcp.busybox.net/udhcpd.conf
==Netcat==
==Netcat==
Les commandes [[netcat]] sont identique à la version ''apt''.
Les commandes [[netcat]] sont identique à la version ''apt''.

Version du 20 février 2018 à 23:54

Busybox est un exécutable regroupant une multitude d'utilitaires généralement disponibles via GNU Core Utilities. Il a l'avantage de ne prendre que très peu de place et peut être utilisé pour faire des systèmes embarqués très simples.

Installation

Via le gestionnaire de paquet

apt install busybox

Via les sources

Le paquet build-essential est nécessaire pour utiliser la commande make.

wget https://busybox.net/downloads/busybox-1.27.2.tar.bz2
tar xf busybox-1.27.2.tar.bz2
cd busybox-1.27.2/
make defconfig
make

Un exécutable busybox a été créé dans le répertoire courant.

La commande make defconfig permet de créer le fichier de configuration pour make (.config). Les commandes de pré-configurations possibles sont:

  • make defconfig: Créé la configuration la plus saine possible. Ça active la plupart des fonctionnalités sans quelques outils de débogage ainsi que les outils nécessitants des modifications du système comme les noms de périphériques selinux ou devfs. Utiliser cette option si vous voulez démarrer depuis un Busybox complet pour, par la suite, écrémer les fonctionnalités pour en avoir un plus petit.
  • make allnoconfig: Désactive tout. Cela crée une petite version de Busybox qui ne fait rien. Commencez ici si vous savez exactement ce que vous voulez et que vous souhaitez sélectionner uniquement ces fonctionnalités.
  • make menuconfig: Modifie interactivement le fichier .config via une interface de menu à plusieurs niveaux. Utilisez-le après l'un des deux précédents.

Les autres options sont:

  • make oldconfig: Mettre à jour un vieux fichier .config pour une nouvelle version de Busybox.
  • make allyesconfig: Sélectionnez absolument tout. Cela crée une version statiquement liée de Busybox remplie de code de débogage, avec des dépendances sur selinux, en utilisant des noms de devfs ... Cela s'assure que tout est compilé. Que le résultat fasse quelque chose d'utile ou non est une question ouverte.
  • make randconfig: Créer une configuration aléatoire à des fins de tests.

Usage

Nous allons partir du principe que l'emplacement de notre binaire busybox se trouve dans notre variable d'environnement $PATH. Lister les programmes disponibles dans notre busybox

busybox

Serveur WEB

Utiliser le serveur WEB intégré

busybox httpd -f -v -h /tmp/foo/

Le serveur httpd ne liste pas les fichiers, il faut entrer une URL complète comme pour le TFTP. Cependant, il redirige automatiquement sur un index.html si présent.

Paramètres:

  • -f: Ne rend pas la main. Ça permet de fermer le serveur web avec un ctrl+c au lieu de ce faire chier avec les commandes ps et kill
  • -v: affiche les IP des clients se connectant et le message renvoyé par le serveur
  • -h: Spécifie le répertoire de travail du serveur. Si ce paramètre n'est pas renseigné, le répertoire courant est utilisé

Serveur DHCP

Créer le fichiers du processus

touch /tmp/udhcpd.pid

Créer le fichier contenant les baux DHCP

touch /tmp/udhcpd.leases

Créer un fichier de configuration

cat > /tmp/udhcpd.conf << EOF
# Plage d'adresse attribuable
start 		192.168.0.1	#Par défaut: 192.168.0.20
end		192.168.0.253	#Par défaut: 192.168.0.254

# Interface réseau d'écoute
interface	eth1		#Par défaut: eth0

# Nombre maximum de baux 
max_leases	253		#Par défaut: 254

# Stoquer le temps restant pour chaque bail dans le fichier des baux
# C'est utile sur les systèmes embarqués ne pouvants garder l'heure après un redémarrage
# Si cette valeur est définie à "no", l'heure de fin de bail sera stoqué dans le fichier
# des baux au lieu du temps restant avant expirsation

#remaining	yes		#Par défaut: yes

#Localisation du fichier des baux
lease_file	/tmp/udhcpd.leases

#Localisation du fichier processus
pidfile	/tmp/udhcpd.pid	#Par défaut: /var/run/udhcpd.pid

# Les options suivantes sont pour le PXE
#siaddr		192.168.0.22		#Par défaut: 0.0.0.0
#sname		zorak			#Par défaut: (none)
#boot_file	/var/nfs_root		#Par défaut: (none)

# Options DHCP
# Elles peuvent être spécifiées via le mot clé "option" ou "opt" qui est un alias.
# La seule options définie par défaut est "lease" pour définir la durée des baux
opt	dns	192.168.170.171 80.67.169.12
option	subnet	255.255.255.0
opt	router	192.168.0.254
#opt	wins	192.168.10.10	# Ajoute un serveur WINS
#option	dns	129.219.13.81	# Ajoute un autre DNS aux 2 autres ci-dessus
option	domain	local
option	lease	864000		# 10 jours en secondes
EOF

Paramètres possibles:

Paramètre Effet Valeur par défaut
Paramètre 1 Il fait ça yes

Liste exhaustive des options supportés. Voir le fichier source options.c:

Option Effet
toto titi

Exécuter le serveur DHCP

busybox udhcpd -fv /tmp/udhcpd.conf

Paramètres:

  • -f: Ne rend pas la main. Ça permet de fermer le serveur DHCP avec un ctrl+c au lieu de ce faire chier avec les commandes ps et kill
  • -v: affiche les requêtes ACK et OFFER entre le serveur et les clients (on voit l'IP attribué de ce fait)

Sources de la section

Netcat

Les commandes netcat sont identique à la version apt.

busybox nc -l -p 2323
busybox nc ipserver 2323

Sources