Orange Pi Plus 2E

Копаюсь тут с Orange Pi Plus 2E… Так вот, не знаю, читает ли мой блог наш ОТК’шник… Не знаю. Но, если вдруг Саня ты это читаешь, то просто знай, что они смогли: две заказанные одинаковые платы мало того, что скручены винтом (по-разному, кстати), содержат не повторяющиеся дефекты пайки и промывки, так ещё одна содержит в NAND’е образ u-boot от начала 2017 года, а вторая — android. Хотя обе должны быть пустыми. Такой вот контроль качества и обеспечение повторяемости изделий у Xunlong’а. U-boot из Debian testing не умеет эту плату всё ещё. Просто собрали без неё. Бывает. Пока ещё представлено ядро 4.12, там хоть и есть некоторые новшества, типа OTG и сети, но нет биндингов в devicetree. Собираю 4.13, там появились[…]

На самом деле звук на платах с Allwinner A20, по идее, поддерживается ещё с ядра 4.4. Только вот поддерживается ли оно на конкретной плате — это зависит исключительно от активности мейнтейнеров конкретной платы. Вот мне не повезло: изменения относительно моей платы вносятся только по случаю глобальных перемен, не массовая она. Не то, что Banana Pi или Cubieboard’ы. Короче, для решения моей проблемы надо всего ничего, — поправить devicetree. Для начала нужны исходники ядра, их можно (и логично) взять с kernel.org. Качайте позднюю редакцию той же основной версии, что и у ядра, установленного в ОС. Так для Debian’овского 4.9.0-3-armmp, я возьму 4.9.34. Распакуйте это, отредактируйте devicetree вашей платы, скомпилируйте и загружайте плату с ним. Листинг подготовки devicetree: aliech@fomalhaut:/mnt/build$ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.9.34.tar.xz —2017-06-25[…]

Я думаю, что никто не будет спорить с наличием в IT-сообществе трендов на понижение стоимости решений и повышение их эффективности. Под стоимостью при этом понимается как стоимость инфраструктуры и оборудования, так и стоимость обслуживания решения. Мощности — в аренду! Админ — на аутсорс! Решения — только типовые! Вершиной этого «развития» стало «приватное виртуальное облако», — масштабный кластер виртуализации с централизованным управлением, где клиенты могут сами управлять своими виртуальными машинами, их количеством, выделением вычислительных ресурсов под них. А тарифицируется только то, что клиент распределил под свои машины. Почти что фактическое использование ресурсов. И это ещё не все: клиенту нет дела до фактической архитектуры среды виртуализации. Так если выйдет из строя тот сервер, где исполняется его виртуальная машина, то средства управления облаком[…]

Итак, grub не нужен, нам нужны лишь скрипты для автоматизации. Справедливости ради стоит отметить, что распространённости grub’а способствовала именно поддержка мейтейнеров и то, что вспомогательных скриптов для него ими написано море. Вот и нам надо для U-Boot’а тоже. Итак, для начала скрипт, который вызывается после установки пакета с ядром, /etc/kernel/postinst.d/zz-add-u-boot-file: #!/bin/sh -e version=»$1″ uboot_dir=»/mnt/u-boot» part_num=»2″ kernel_string=»ext4load mmc 0:${part_num} \${kernel_addr_r} /boot/vmlinuz-${version}» dtb_string=»ext4load mmc 0:${part_num} \${fdt_addr_r} /usr/lib/linux-image-${version}/\${fdtfile}» initrd_string=»ext4load mmc 0:${part_num} \${ramdisk_addr_r} /boot/initrd.img-${version}» info_string=»echo \»Booting Debian GNU/Linux with kernel ${version}…\»» boot_string=»bootz \${kernel_addr_r} \${ramdisk_addr_r}:\${filesize} \${fdt_addr_r}» dest_file=»${uboot_dir}/${1}.scr» tmp_file=»/tmp/${1}.src.tmp» if [ -e «${dest_file}» ]; then exit 0 fi /bin/echo «${kernel_string} && ${dtb_string} && ${initrd_string} && ${info_string} && ${boot_string}» > ${tmp_file} /usr/bin/mkimage -Cnone -Aarm -Tscript -d${tmp_file} ${dest_file} rm ${tmp_file} exit 0 Обратите внимание, что мы предполагаем загрузку[…]