Я следовал инструкциям создать базовый образ в Docker документах и создал 32-битное изображение RHEL 6, используя их скрипт mkimage-yum. sh. Скрипт почти работал из коробки, мне просто пришлось изменить строку 146, чтобы сохранить файл tar в файловой системе, вместо того, чтобы передать его в docker.
Проблема в том, что когда я запускаю созданный образ, Команда arch
печатает x86_64
, а команда uname
также сообщает о 64-битной системе.
[root@1bbebc25abe2 /]# arch
x86_64
[root@1bbebc25abe2 /]# uname -a
Linux 1bbebc25abe2 4.19.93 #1-NixOS SMP Sat Jan 4 18:13:46 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@1bbebc25abe2 /]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.10 (Santiago)
[root@1bbebc25abe2 /]# cat /etc/system-release-cpe
cpe:/o:redhat:enterprise_linux:6server:ga:server
[root@1bbebc25abe2 /]# cat /etc/system-release
Red Hat Enterprise Linux Server release 6.10 (Santiago)
У меня есть сценарии оболочки, которые должны иметь возможность отличить 32-битную систему от 64-битной системы. Можно ли как-нибудь "исправить" команду arch
? Или есть какой-то другой способ, которым я должен был бы выполнять обнаружение системной дуги?
ARCH=$(arch)
if [[ ${ARCH} == 'x86_64' ]]; then
...
elif [[ ${ARCH} == 'i686' ]]; then
...
else
echo "Unexpected arch ${ARCH}"
exit 1
fi
В настоящее время я думаю сделать следующее, но это не переносимо (требуется rpm
)
[root@1bbebc25abe2 /]# rpm --eval '%{_arch}'
i386