web-dev-qa-db-fra.com

Comment puis-je démarrer Busybox au démarrage, à partir de GRUB, ou même avant GRUB?

La plupart des questions Busybox sont liées au fait que les utilisateurs sont déposés dans un shell Busybox en raison de problèmes inconnus au démarrage. Cela doit faire de Busybox l'un des logiciels les plus détestés.

Mon problème est le contraire. Je veux délibérément démarrer Busybox au démarrage soit à partir de GRUB, soit même avant GRUB. Est-ce possible? Comment puis-je le faire? Le but est d'exécuter certaines commandes avant que la séquence de démarrage ne soit relancée. Donc, fondamentalement, je veux exécuter certaines commandes pour mettre du matériel à la disposition du chargeur de démarrage.

1
user12681

Vous devrez créer un initrd personnalisé.

Extraire un initrd, notez que j'utilise ~/initrd comme répertoire de travail

cp /boot/initrd_your_version ~
cd ~/initrd
gzip -dc ../initrd_your_version | cpio -imvd --no-absolute-filenames

Vous n'avez pas mentionné ce que vous vouliez faire, donc je ne peux que donner des conseils généraux ici.

Maintenant, ajoutez toutes les bibliothèques et/ou binaires dont vous avez besoin dans le ~/initrd. Utilisez ldd pour identifier les dépendances.

Editez ~/initrd/init, c'est un script Shell, alors ajoutez ce dont vous avez besoin.

Emballez-le

cd ~/initrd
find . | cpio --quiet --dereference -o -H newc | gzip -9 > ../initrd-custom.img.your_version

Voir aussi: http://en.gentoo-wiki.com/wiki/Initramfs

Bien sûr, ce lien est gentoo, mais je ne connais aucun document détaillé pour Ubuntu.

Voir aussi: http://www.busybox.net/about.html

1
Panther

J'ai utilisé cette méthode pour déverrouiller une partition cryptée à distance, donc je suppose que cela pourrait fonctionner pour votre besoin.

  • Intégrez dropbear dans les initramfs.

apt-get install openssh-server dropbear busybox

  • Copiez la clé SSH qui a été générée automatiquement.

scp [email protected]:/etc/initramfs-tools/root/.ssh/id_rsa ~/id_rsa.initramfs

  • Dans le cas où vous n'utilisez pas DHCP, éditez /etc/default/grub et ajoutez une ligne similaire avec votre configuration:

GRUB_CMDLINE_LINUX="ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>"

  • Recharger la configuration de grub update-grub

et

  • reboot

Faites attention car les différentes versions de grub ont différentes options de configuration.

Vous devriez maintenant pouvoir vous connecter à distance via votre clé SSH et passer quelques commandes sur le processus de démarrage.

Vous pouvez trouver plus d'informations ici .

0
pl1nk