busybox

BusyBox, çeşitli komutları tek bir ikili dosya altında toplar. BusyBox, ls, cp, mv, rm gibi temel komutları, ağ yönetimi, dosya sistemleri ve sistem yönetimi gerekli araçları içinde barındıran tek ikili dosyadır.

Örneğin; Kullanıcı, BusyBox ile bir dosyayı kopyalamak için aşağıdaki komut kullanılabilir:

busybox cp kaynak_dosya hedef_dosya

Derleme

#--------------------------------------------------------------------------------------------------------------------
#!/usr/bin/env bash
version="1.36.1"
name="busybox"
depends="glibc"
description="linux araç paketi static derlenmiş hali"
source="https://busybox.net/downloads/${name}-${version}.tar.bz2"
display=":$(ls /tmp/.X11-unix/* | sed 's#/tmp/.X11-unix/X##' | head -1)"  # Display adı
user=$(who | grep "(${display})" | awk '{print $1}')                      # Display kullanıcısı

ROOT="/home/$user/distro"
ROOTBUILDDIR="$ROOT/build"                # Derleme dizini
BUILDDIR="$ROOT/build/build-${name}-${version}" # Alt dizin
DESTDIR="$ROOT/rootfs"                     # Yükleme dizini
PACKAGEDIR=$(pwd)                          # Paket dizini
SOURCEDIR="$ROOT/build/${name}-${version}" # Kaynak dizini

initsetup(){
        mkdir -p  $ROOTBUILDDIR #derleme dizini yoksa oluşturuluyor
        rm -rf $ROOTBUILDDIR/* #içeriği temizleniyor
        cd $ROOTBUILDDIR #dizinine geçiyoruz
        wget ${source}
        for f in *\ *; do mv "$f" "${f// /}"; done #isimde boşluk varsa silme işlemi yapılıyor
        dowloadfile=$(ls|head -1)
        filetype=$(file -b --extension $dowloadfile|cut -d'/' -f1)
        if [ "${filetype}" == "???" ]; then unzip  ${dowloadfile}; else tar -xvf ${dowloadfile};fi
        director=$(find ./* -maxdepth 0 -type d)
        directorname=$(basename ${director})
        if [ "${directorname}" != "${name}-${version}" ]; then mv $directorname ${name}-${version};fi
        mkdir -p $BUILDDIR&&mkdir -p $DESTDIR&&cd $SOURCEDIR
}
setup(){
        cp -prfv $PACKAGEDIR/files $SOURCEDIR/
        make defconfig
        sed -i "s|.*CONFIG_STATIC_LIBGCC .*|CONFIG_STATIC_LIBGCC=y|" .config
        sed -i "s|.*CONFIG_STATIC .*|CONFIG_STATIC=y|" .config
}
build(){
        make
}
package(){
        mkdir -p $DESTDIR/bin
        install busybox ${DESTDIR}/bin/busybox
        # install udhcpc script and service
        mkdir -p ${DESTDIR}/usr/share/udhcpc/ ${DESTDIR}/etc/init.d/
        install ../files/udhcpc.script ${DESTDIR}/usr/share/udhcpc/default.script
        install ../files/udhcpc.openrc ${DESTDIR}/etc/init.d/udhcpc
        cd $DESTDIR/bin&&ln -s busybox hostname
        cd $DESTDIR/bin&&ln -s busybox udhcpc
        cd $DESTDIR/bin&&ln -s busybox ps
        cd $DESTDIR/bin&&ln -s busybox which
        ${DESTDIR}/sbin/ldconfig -r ${DESTDIR}           # sistem guncelleniyor
}
initsetup       # initsetup fonksiyonunu çalıştırır ve kaynak dosyayı indirir
setup           # setup fonksiyonu çalışır ve derleme öncesi kaynak dosyaların ayalanması sağlanır.
build           # build fonksiyonu çalışır ve kaynak dosyaları derlenir.
package         # package fonksiyonu çalışır, yükleme öncesi ayarlamalar yapılır ve yüklenir.

Ek dosyaları indirmek için tıklayınız. Paket Derleme Yöntemi konusunda anlatıldığı gibi derleme işlemini yapınız.