Пакет nWipe, скомпилированный в Centos, не работает во встроенном Linux Busybox

Я скомпилировал утилиту с открытым исходным кодом nwipe в Centos. После компиляции он отлично работает на машине, на которой он был скомпилирован. Я также скопировал скомпилированный пакет на другой компьютер с Centos вместе с необходимыми библиотеками, и он отлично работает.

Я попытался упаковать эту утилиту для работы со встроенным linux Busybox RAMBOX. Целью этой утилиты является PXE-загрузка рабочих станций через TFTP и автоматическая очистка всех жестких дисков.

Чтобы добиться этого, я использовал ядро ​​​​Linux с компакт-диска Centos netboot и загрузил busybox, скопировал утилиту nwipe, которую я скомпилировал на другом сервере разработки Centos.

Я также скопировал все необходимые библиотеки. Смотри ниже.

когда я делаю ldd nwipe. Он показывает зависимости для библиотек.

[root@localhost src]# ldd nwipe
        linux-gate.so.1 =>  (0x00a78000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00650000)
        libparted.so.2 => /usr/lib/libparted.so.2 (0x007fd000)
        libpanel.so.5 => /usr/lib/libpanel.so.5 (0x00dd0000)
        libncurses.so.5 => /lib/libncurses.so.5 (0x006db000)
        libc.so.6 => /lib/libc.so.6 (0x004b0000)
        libtinfo.so.5 => /lib/libtinfo.so.5 (0x007e2000)
        /lib/ld-linux.so.2 (0x0048a000)
        libuuid.so.1 => /lib/libuuid.so.1 (0x0025b000)
        libdl.so.2 => /lib/libdl.so.2 (0x00649000)
        libdevmapper.so.1.02 => /lib/libdevmapper.so.1.02 (0x0073c000)
        libselinux.so.1 => /lib/libselinux.so.1 (0x006ba000)
        libsepol.so.1 => /lib/libsepol.so.1 (0x00a2e000)
        libudev.so.0 => /lib/libudev.so.0 (0x0066d000)

поэтому я скопировал все зависимости этих библиотек в папки busybox/lib/usr/lib.

Наконец, я скомпилировал busybox и использовал cpio и gzip, чтобы получить файл initrd.img.

Затем я использую ядро ​​​​centos netboot 2.6 и initrd.img для pxeboot рабочей станции. Все работает нормально, я могу использовать все основные команды Linux busybox. Но когда я выполняю ./nwipe, это не работает. Он просто снова показывает приглашение оболочки.

/# ./nwipe
/#

см. ниже содержимое моего файла инициализации.

#!/bin/sh

#Mount things needed by this script
mount -t proc proc /proc
mount -t sysfs sysfs /sys

#Disable kernel messages from popping onto the screen
echo 0 > /proc/sys/kernel/printk

#Clear the screen
clear

#Create all the symlinks to /bin/busybox
busybox --install -s

#Create device nodes
mknod /dev/null c 1 3
mknod /dev/tty c 5 0
mdev -s

#Function for parsing command line options with "=" in them
# get_opt("init=/sbin/init") will return "/sbin/init"
get_opt() {
        echo "$@" | cut -d "=" -f 2
}

#Defaults
init="/sbin/init"
root="/dev/hda1"

#Process command line options
for i in $(cat /proc/cmdline); do
        case $i in
                root\=*)
                        root=$(get_opt $i)
                        ;;
                init\=*)
                        init=$(get_opt $i)
                        ;;
        esac
done
#Mount the root device
mount "${root}" /newroot

#Check if $init exists and is executable
if [[ -x "/newroot/${init}" ]] ; then
        #Unmount all other mounts so that the ram used by
        #the initramfs can be cleared after switch_root
        umount /sys /proc

        #Switch to the new root and execute init
        exec switch_root /newroot "${init}"
fi

#This will only be run if the exec above failed
echo "Failed to switch_root, dropping to a shell"
exec sh

Может ли кто-нибудь помочь мне, что я должен сделать, чтобы исправить это?

Как я могу запустить свое скомпилированное программное обеспечение с помощью busybox?

Заранее спасибо за прочтение этого поста.


person user2107349    schedule 29.08.2015    source источник
comment
Просто примечание: такие инструменты почти бесполезны. Используйте шифрование заранее. Для SDD у вас все равно проблемы, так как они часто переназначают блоки.   -  person too honest for this site    schedule 29.08.2015
comment
независимо от выпуска ценных бумаг, я просто хочу, чтобы мой busybox мог выполнять nwipe и запускать эту утилиту, вы можете помочь?   -  person user2107349    schedule 29.08.2015
comment
Нет простите. Просто решил сообщить вам.   -  person too honest for this site    schedule 29.08.2015


Ответы (1)


Мне удалось исправить это, не используя busybox. На этот раз я использовал минимальную установку Centos и использовал утилиту dracut для создания ядра и initramfs и монтировал корневую файловую систему как NFS на сервере. Работает как часы.

Он работает как полноценный Linux Centos и довольно быстр.

Спасибо, что посмотрели этот пост :)

person user2107349    schedule 31.08.2015