Я только что получил Raspberry Pi 3 и хотел бы начать с ним экспериментировать, особенно в отношении 64-битного набора команд.
Я хорошо осведомлен о плюсах и минусах 32-битного и 64-битного набора команд, поэтому, пожалуйста, придерживайтесь первоначального вопроса: возможно ли запустить 64-битное ядро с использованием современных 32-битных приложений пользовательского пространства ?
Достаточно скомпилировать ядро с 64-битным компилятором и загрузить изображение в RasPi или есть какие-то другие шаги, о которых мне следует знать? Не могли бы вы дать мне обзор высокого уровня того, что я должен рассматривать в качестве дорожной карты? Мол, модули / драйверы, которые могут / сломаются, если я установлю 64-битное ядро. Нужно ли перекомпилировать все?
Просматривая Интернет, я знаю, что это возможно для некоторых других классов устройств, и что обычно запуск этой «гибридной» конфигурации нарушает работу менеджеров пакетов, но в данный момент меня не беспокоит управляемость. Поэтому, даже если это нарушит работу менеджеров пакетов и это адское обслуживание, я бы хотел понять, как это делается.
Помните, что я все еще учусь компилировать ядро, но у меня есть опыт разработки приложений на C / C ++ в течение длительного времени. Это мой любимый проект для глубокого понимания архитектуры Linux и внутренних компонентов ядра.
источник
Ответы:
Да. Некоторые готовые изображения уже готовы к работе:
Использование multiarch с Raspbian нецелесообразно, так как у него нет 64-битных исходных пакетов, а ближайший 64-битный родственник (Debian arm64) имеет несовместимые версии пакетов. Для запуска 64-битных программ под Raspbian вы можете использовать статические двоичные файлы, контейнеры (LXC, systemd-nspawn) или chroot [1] . Такая изоляция позволяет избежать типичных конфликтов пакетов, присущих mutiarch.
Вам не нужно ничего перекомпилировать, потому что двоичные файлы для всего вышеперечисленного (32-битный пользовательский Raspbian, 64-битное ядро, пакеты пользовательского интерфейса Debian arm64) легко доступны.
Известно, что на момент написания камеры SoC ускоренное декодирование видео с помощью MMAL и высокоскоростная поддержка USB (через FIQ) были нарушены в 64-битных ядрах Raspberry Pi.
[1] См. 64-битную ОС на Raspberry Pi 4 для получения инструкций о том, как создать такой chroot.
источник
Конечно, это возможно. 64-битные операционные системы делают это постоянно *. Это происходит, когда вы работаете в 64-битной ОС и открываете 32-битное приложение (32-битное приложение пользовательского пространства).
Но иногда могут возникнуть проблемы с библиотеками / зависимостями. Однажды я столкнулся с ошибкой на ПК , что-то около
wrong ELF class
. Решается установкой соответствующей 32-битной библиотекиia32-libs
.Я не совсем уверен, как это будет вести себя на компьютере ARM, так как нет официального 64-битного ядра для Pi, с которым я могу играть (пока).
Кроме того, нельзя просто скомпилировать ядро с помощью 64-битного компилятора и загрузить его на Pi. Если бы это было так просто, мы бы уже работали с Pi 3 с 64-битным ядром.
источник
C:\Program Files
, а 32-битные приложения хранятся вC:\Program Files (x86)
.SysWOW64
, и 64-разрядная версия, которая хранится вsystem32
. Windows идентифицирует исполняемый файл и делает его таким, чтобы 32-разрядное приложение виделоSysWOW64
какsystem32
. То же самое происходитProgram Files
и с реестром. 32-битные приложения выглядятC:\Program Files (x86)
просто,C:\Program Files
но любые изменения в них идутC:\Program Files (x86)
.Вам нужны оба набора библиотек и обе архитектуры, скомпилированные для правильных библиотек, поэтому 2 среды сборки. Посмотрите на несколько арок и ваш любимый bsse, чтобы получить указатели. подобно
https://wiki.debian.org/MultiarchCrossToolchainBuild
Таким образом, вам нужно сделать что-то подобное, но в расбианском пространстве. Так что создание ядра arm64 и пользователя armhf и оба набора библиотек правильно связаны для каждого.
Здесь вы можете увидеть, как кто-то делает это на другой доске:
https://groups.google.com/forum/#!topic/linux.debian.ports.arm/ankucgztcI8
И увидеть их опыт.
источник