armhf
на arm64
? Я уже заставил его сделать "multiarch", но я не уверен, что это лучшее решение. Как мне поступить?apt
и заменить armhf
на arm64
, где это возможно/доступно?У меня есть резервная копия образа диска, поэтому я не против решений, которые могут разрушить сервер - я могу просто переустановить образ, если что-то пойдет не так.
Я хотел бы перейти с armhf на arm64 на моем Raspberry Pi 3 B. Я следовал инструкциям здесь и создал рабочий 64-битный Ubuntu Bionic Server (что здорово). Однако я заметил, что, хотя я могу устанавливать и запускать arm64
(т.е. 64-битные) пакеты, большинство пакетов на моем сервере - armhf
(т.е. 32-битные). Я хотел бы заменить все (или как можно больше) armhf
на arm64
. В настоящее время сервер указывает arm64
как "чужую" архитектуру, а armhf
как родную архитектуру. Могу ли я поменять их местами?
ubuntu@ubuntu:~$ dpkg --print-architecture
armhf
ubuntu@ubuntu:~$ dpkg --print-foreign-architectures
arm64
Есть ли способ заставить систему поменять их местами, чтобы arm64
стала по умолчанию, а armhf
использовалась только там, где пакеты arm64
недоступны?
Пожалуйста, обратите внимание: у меня нет опыта в компьютерных науках, поэтому простите мою наивность. Я думаю, что 64-битные вычисления будут в среднем быстрее 32-битных, поскольку любое программное обеспечение, пытающееся работать с большими числами или высокой точностью, может просто использовать 64-битную архитектуру чипа ARMv8 на Pi 3 B, а не растягивать обработку чисел на несколько тактов. Я видел обсуждения на форумах Raspberry Pi, где высказывались противоречивые мнения о плюсах и минусах перехода на 64-битную архитектуру. Я был бы очень благодарен, если бы кто-нибудь смог составить простой список плюсов и минусов, поскольку я не понимаю всей сложности этих обсуждений.
В настоящее время я не знаю, будет ли прирост производительности при переходе на 64-бит, но что за черт - это же Raspberry Pi - вы должны играть с ними!
Я следовал инструкциям на странице Ubuntu Wiki; сделав это:
sudo dpkg --add-architecture arm64
sudo apt update
я обнаружил
dpkg --print-foreign-architectures
возврат
arm64
Для подтверждения 64-битной природы сервера:
uname -a
который возвращает:
Linux ubuntu 4.15.0-1022-raspi2 #24-Ubuntu SMP PREEMPT Wed Aug 29 10:40:48 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
Дополнительно:
dpkg-architecture --list
возврат
DEB_BUILD_ARCH=armhf
DEB_BUILD_ARCH_ABI=eabihf
DEB_BUILD_ARCH_BITS=32
DEB_BUILD_ARCH_CPU=arm
DEB_BUILD_ARCH_ENDIAN=little
DEB_BUILD_ARCH_LIBC=gnu
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_GNU_CPU=arm
DEB_BUILD_GNU_SYSTEM=linux-gnueabihf
DEB_BUILD_GNU_TYPE=arm-linux-gnueabihf
DEB_BUILD_MULTIARCH=arm-linux-gnueabihf
DEB_HOST_ARCH=armhf
DEB_HOST_ARCH_ABI=eabihf
DEB_HOST_ARCH_BITS=32
DEB_HOST_ARCH_CPU=arm
DEB_HOST_ARCH_ENDIAN=little
DEB_HOST_ARCH_LIBC=gnu
DEB_HOST_ARCH_OS=linux
DEB_HOST_GNU_CPU=arm
DEB_HOST_GNU_SYSTEM=linux-gnueabihf
DEB_HOST_GNU_TYPE=arm-linux-gnueabihf
DEB_HOST_MULTIARCH=arm-linux-gnueabihf
DEB_TARGET_ARCH=armhf
DEB_TARGET_ARCH_ABI=eabihf
DEB_TARGET_ARCH_BITS=32
DEB_TARGET_ARCH_CPU=arm
DEB_TARGET_ARCH_ENDIAN=little
DEB_TARGET_ARCH_LIBC=gnu
DEB_TARGET_ARCH_OS=linux
DEB_TARGET_GNU_CPU=arm
DEB_TARGET_GNU_SYSTEM=linux-gnueabihf
DEB_TARGET_GNU_TYPE=arm-linux-gnueabihf
DEB_TARGET_MULTIARCH=arm-linux-gnueabihf
Это, кажется, предполагает, что всякий раз, когда я устанавливаю пакет с помощью apt, система по умолчанию будет использовать armhf
пакет.
Я хотел бы сделать arm64
не иностранной архитектурой, а armhf - иностранной архитектурой на этом сервере.