Эльбрус/rtc/перепаковка

Материал из ALT Linux Wiki

Для запуска x86-приложений на e2k под бинарным транслятором необходимо подготовить окружение, достаточное для выполнения целевого приложения; в случае динамически скомпонованного исполняемого файла это обычно чрут с нужными библиотеками, а вот для статического бинарника без особых файлов конфигурации может ничего и не понадобиться, запуск осуществляется командой вида rtc --path_prefix / -- /путь/к/программе

rtc-storcli

Пример упакечивания статического x86-бинарника для запуска под rtc:

Name: rtc-storcli
Version: 1704
Release: alt1.E2K.1

Summary: storcli repackaged for use with rtc
License: proprietary
Group: System/Configuration/Hardware

Source: storcli64
AutoReqProv: no
Requires: rtc >= 4.1-alt1.E2K.5

%define scdir %prefix/libexec
%add_debuginfo_skiplist %scdir
%set_verify_elf_method none

%description
%summary

%prep

%build
cat > storcli64.sh << EOF
#!/bin/sh
exec rtc64 --path_prefix / -- %scdir/storcli64 "\$@"
EOF

%install
install -pDm755 %SOURCE0 %buildroot%scdir/storcli64
install -pDm755 storcli64.sh %buildroot%_sbindir/storcli64

%files
%_sbindir/*
%scdir/storcli64

%changelog
* Fri Oct 14 2022 Michael Shigorin <mike@altlinux.org> 1704-alt1.E2K.1
- initial repackage

Запуск: /usr/sbin/storcli64

rtc-megacli

Пример перепаковки динамического x86-бинарника со специфической библиотекой для запуска под rtc.

statifier

Для начала приготовим статический бинарник из динамического (см. тж. howto).

На x86 готовим чрут из p10, помещаем в него целевой megacli, смотрим:

# cat /usr/sbin/megacli
#!/bin/sh
LD_LIBRARY_PATH="/usr/lib/megacli:$LD_LIBRARY_PATH" /usr/lib/megacli/megacli.real "$@"

Такое же окружение понадобится и для запуска statifier из одноименного пакета:

# apt-get install -y statifier
# mount /proc
# export LD_LIBRARY_PATH="/usr/lib/megacli:$LD_LIBRARY_PATH"
# statifier /usr/lib/megacli/megacli.real /root/megacli
# umount /proc
# ldd /root/megacli

Полученный бинарник без внешних библиотечных зависимостей проверяем на функционирование: /root/megacli -h; затем перепаковываем как rtc-megacli.

rtc-megacli.spec

Name: rtc-megacli
Version: 8.07.14
Release: alt1.E2K.1

Summary: megacli repackaged for use with rtc
License: proprietary
Group: System/Configuration/Hardware

Source: megacli
AutoReqProv: no
Requires: rtc >= 4.1-alt1.E2K.5

%define mcdir %prefix/libexec
%add_debuginfo_skiplist %mcdir
%set_verify_elf_method none

%description
%summary

%prep

%build
cat > megacli.sh << EOF
#!/bin/sh
exec rtc64 --path_prefix / -- %mcdir/megacli "\$@"
EOF

%install
install -pDm755 %SOURCE0 %buildroot%mcdir/megacli
install -pDm755 megacli.sh %buildroot%_sbindir/megacli

%files
%_sbindir/*
%mcdir/megacli

%changelog
* Tue Oct 18 2022 Michael Shigorin <mike@altlinux.org> 8.07.14-alt1.E2K.1
- initial repackage

Запуск: /usr/sbin/megacli