Преобразование из armhf в arm64 на Raspberry Pi 3 B под управлением 64-битного Ubuntu Server 18.04 LTS (Bionic)

Вопросы

  1. Могу ли я преобразовать архитектуру моего сервера Ubuntu 18.04 LTS с armhf на arm64? Я уже заставил его сделать "multiarch", но я не уверен, что это лучшее решение. Как мне поступить?
  2. Как я могу систематически просмотреть все установленные пакеты 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 - иностранной архитектурой на этом сервере.

1
задан 19 September 2018 в 17:28

0 ответов

Другие вопросы по тегам:

Похожие вопросы: