Инструкция по настройке окружения для выполнения кросс-компиляции ядра или его модулей для Banana Pi M2U.
Очевидно, что использовать одноплатные ПК с ARM-архитектурой для сборки ядра, дело неблагодарное, т.к. их производительность в этом плане крайне низкая, и времени занимает очень много. В связи с этим широко применяется кросс-компиляция, выполняемая на обычных ПК.
Порядок по настройке окружения для выполнения кросс-компиляции ядра (или его модулей) для Banana Pi M2U получается такой.
Подготавливаем виртуальную машину с 64-разрядной Ubuntu 16.04 (server или desktop). В качестве гипервизора я использовал Oracle VM VirualBox. Размер диска в настройках ВМ указываем не менее 20 Гб. Имя пользователя задаем pi, такое же, как и по умолчанию в Bananapi.
sudo apt-get update
sudo apt-get install bc make git gcc gcc-arm-linux-gnueabihf u-boot-tools ncurses-dev -y
sudo dpkg --add-architecture i386
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 -y
Клонируем официальный репозиторий с исходниками с Github.
cd ~/
git clone https://github.com/BPI-SINOVOIP/BPI-M2U-bsp.git
cd BPI-M2U-bsp
При необходимости редактируем файл build.sh, чтобы выставить предпочитаемый видео выход и его разрешение.
nano build.sh
По умолчанию установлено BOARD=BPI_M2U_LCD5
. Для себя я ставлю BOARD=BPI_M2U_720P
.
Теперь все готово к кросс-компиляции. Запускаем мастер.
sudo ./build.sh
Выбираем нужные опции и ждем окончания. При первом запуске рекомендую выбрать п. 1 и прогнать всю процедуру сборки.
Пересборка ядра мне потребовалась для того, чтобы появилась возможность пользоваться утилитой iotop, которая ни в какую не запускается на дефолтных ядрах в официальных образах для Banana Pi M2U, т. к. в них ядро собрано без трех нужных опций:
sudo iotop -ao
Could not run iotop as some of the requirements are not met:
- Linux >= 2.6.20 with
- I/O accounting support (CONFIG_TASKSTATS, CONFIG_TASK_DELAY_ACCT, CONFIG_TASK_IO_ACCOUNTING)
Чтобы исправить этот казус, внесем изменения в конфиг ядра, выбрав опцию "4. Kernel configure."
В открывшемя редакторе конфигурации ядра включаем нужные модули:
Сохраняем изменения, выходим из конфигуратора и запускаем полную сборку "1. Build all, uboot and kernel and pack to download images."
После завершения в /home/pi/BPI-M2U-bsp/SD
забираем архивы BPI-BOOT-bpi-m2u.tgz
и 3.10.108-BPI-M2U-Kernel.tgz
и переносим их на Banana Pi M2U.
Архив BPI-BOOT-bpi-m2u.tgz
распаковываем в /dev/mmcblk0p1
(раздел загрузчика), предварительно примонтировав его куда-либо:
sudo mount /dev/mmcblk0p1 /media/BPI-BOOT
sudo tar –xvf BPI-BOOT-bpi-m2u.tgz -C /media/BPI-BOOT/
Архив 3.10.108-BPI-M2U-Kernel.tgz
распаковываем в корневой раздел:
sudo tar -xvf 3.10.108-BPI-M2U-Kernel.tgz -C /
Профит!