Збираємо систему для Orange Pi PC, Дещо Про Слонів

Дистрибутив Debian для Orange PI PC поставляється з досить обмеженою кількістю підтримуваних пристроїв "з коробки", тому має сенс дозбирати потрібні модулі самому.

Тому завдання вирішуватимемо комплексно.

Нам знадобиться або живий комп'ютер з Ubuntu, або віртуальна машина. Я тестував на 14.04 LTS 64bit, все пройшло досить гладко.

Для початку поставимо git штатними засобами

sudo apt-get install git

Швидше за все, потрібно буде доставити ще й ці пакети:

sudo apt-get install uboot-mkimage sudo apt-get install u-boot-tools sudo apt-get install libusb-1.0-0-dev sudo apt-get install debootstart sudo apt-get install debootstrap sudo apt-get install qemu-user -static sudo apt-get install ia32-libs sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 sudo apt-get install lib32stdc++6 sudo apt-get install mkimage sudo apt-get install -tools zlib1g-dev libncurses5-dev

Після цього схиляємо репозитарій ядра.

git clone https://github.com/loboris/OrangePI-Kernel

На диску у вашій робочій директорії з'явиться ще одна:

В принципі, там немає нічого складного, скрипти для збирання та конфігурації в комплекті, тому можна ознайомитись з readme та й запускати їх так, як там описано.

У своєму варіанті перед збиранням я запустив

і ввімкнув усі можливі wifi-usb драйвера.

Після збирання НЕ ЗАБУВАЄМО зібрати всі варіанти script.bin. Вони нам знадобляться. Для цього є спеціальний скрипт -

Втім, readme досить вичерпне, головне - пам'ятати, який девайс ми використовуємо.

Після успішного складання потрібно зібрати образ системи. Для цього потрібно схилювати ще одинрепозиторій.

==Увага, не виконуйте цю команду в директорії, де збирали ядро. Тут і далі мається на увазі, що папки з ядром і з образом системи лежать "поруч".

git clone https://github.com/loboris/OrangePi-BuildLinux

Якщо все добре, у вас тепер дві директорії – одна з ядром, інша з запчастинами для збирання образу.

Перейдемо до папки OrangePi-BuildLinux і зробимо так, щоб для складання використовувалися наше ядро, яке ми зібрали на попередньому кроці, а не те, що приїхало з GIT.

cd OrangePi-BuildLinux rm -rf orange ln -s ../OrangePI-Kernel/build orange

На цьому етапі ми заміняємо папку orange з репозиторію на те, що ми збирали до цього.

Тут ми вказуємо, що хочемо Jessie, це ніфіга не Raspbian і репозитарій використовуватимемо хорватську. До речі це можна змінити на бажаний.

Далі – збираємо згідно README. sudo ./create_image

Процес довгий. І будьте уважні - фінальний образ розміщується у файлі з розширенням .img.xz. Не треба використовувати просто .img.

Образ потрібно розпакувати та записати на microSD (як зазвичай). Після чого, підкласти правильний script.bin - тобто перейменувати файл виду script.bin.platform.video просто на script.bin. Не помиліться – це важливо для роботи всього. Він знаходиться на партиції FAT32, тому операцію можна виконати навіть у Windows. Не забувайте витягти флешку "правильно".

Це була прелюдія =).

Навіщо це все ? Лише для забезпечення можливості встановлення сторонніх модулів шляхом збирання їх із вихідних текстів. Збирати ми їх будемо на тій же машині з Ubuntu. Отже, припустимо ми видобули вихідник “дрів” для диво-вайфая за ціною 3 рублі за пучок у Китаї.

Розпакуємо вміст і перейдемо вдиректорію.

tar -xzvf super_wifi_src_driver_for_linux.tar.gz cd super_wifi_src_driver_for_linux

Ну а далі нам допоможуть 2 команди або одна, або інша.

make LINUX_SRC=/home/user/OrangePI-Kernel/linux-3.4/ ARCH=arm CROSS_COMPILE=/home/user/OrangePI-Kernel/brandy/gcc-linaro/bin/arm-linux-gnueabi-

Або команда два:

make KSRC=/home/user/OrangePI-Kernel/linux-3.4/ ARCH=arm CROSS_COMPILE=/home/user/OrangePI-Kernel/brandy/gcc-linaro/bin/arm-linux-gnueabi-

Як видно, вони відрізняються лише ім'ям змінної, що описує місцезнаходження ядра.

Щоб зрозуміти, яку саме, потрібно заглянути в Makefile.

grep KSRC Makefile

Інша справа техніки - якщо у вас "вилупилося" один або кілька .ko файлів, то можна переносити їх на цільову систему, класти у відповідну папку (уже місцезнаходження повинні знати) і запускати depmod -a.

За допомогою цього “прийому” було зібрано такі модулі:

  • Оновлений модуль Realtek 8188 – протестований
  • Стабільний модуль для mt7601 – протестований. Він, до речі, "заточений" на ядра менше 3.10 (наш випадок)
  • Модуль для mt7601 для роботи в режимі точки доступу – зібраний, не протестований

Загалом все не так погано. Залишається дочекатися працюючого ядра 4.x і життя заграє зовсім іншими фарбами:).