Леннарт Поттеринг

Неделю назад кончился жёсткий диск в сервере. Вот в том, который отдал вам сейчас эту страничку. Приказал долго жить бэкапый диск, который не состоял в RAID’е. Проблема лишь в том, что на нём ещё были /boot и GRUB. Потеря загрузчика — не слишком большая беда, так как в этом деле главное не перезагружаться, пока не будет готов диск на замену. Вчера утром он был уже был мной подготовлен, и я собирался ехать в ДЦ, чтобы его поставить в сервер. Инструменты, документы, и надо было сделать live-флешку. Сервер, конечно, должен был штатно стартовать с тем диском, который для него был подготовлен, но мало ли что… Берём флешку, вставляем, делаем dd… и понимаем, что dd мы сделали на ту флешку, на которой[…]

xfce4-terminal и rm -Rf

Мы тут чуть-чуть ембедедом увлеклись и слабали изделие а-ля веб-камера. А работает оно под управлением Debian GNU/Linux. Всё бы ничего, но там нынче systemd, который точно будет насиловать флешку. К гадалке не ходи… По-этому было решено, что root живёт в памяти. Подумал я сначала об aufs, но её тут, оказывается, выпилили из upstream. Не безосновательно, отмечу: её автор всегда любил быдлокод и комментарии на родной японской мове (все японцы редкостные националисты, с их точки зрения тот, кто не умеет в японский язык, — не достоин их код разбирать). Похоже это наконец то надоело тем, кто отвечал за данный сегмент ядра. Тем более, что коммиты от создателя кончились давно, а поддерживать это надо было… Проще оказалось убрать нафиг. Глянул я на[…]

xfce4-terminal и rm -Rf

РусБИТех идёт всем нам известным путём, который протоптал ещё ВНИИНС. Описывать суть этого продвижения я не буду, — могу обидеть кого-нибудь. А мне тут понадобилось видео в H264 с нашего изделия на лету конвертировать и выводить. И я, конечно, обратился к GStreamer’у. Но эти ребятки Астру 1.4 слепили на кодовой базе аж Wheezy! А для того, чтобы работало так, как мне надо, нужен релиз из Jessie. Пришлось извращаться, накладывая патчи поверх пропатченных исходников пакетов (!!!). Как-то так, короче: aliech@arcturus:~$ ls -1R gstreamer1.0_from_jessie/ gstreamer1.0_from_jessie/: gstreamer-base gstreamer-core gstreamer-good gstreamer-libav libav gstreamer1.0_from_jessie/gstreamer-base: build_it_in_astra_1.4se.patch gir1.2-gst-plugins-base-1.0_1.4.4-2+deb8u1_amd64.deb gst-plugins-base1.0_1.4.4-2+deb8u1_amd64.changes gst-plugins-base1.0_1.4.4-2+deb8u1.debian.tar.xz gst-plugins-base1.0_1.4.4-2+deb8u1.dsc gst-plugins-base1.0_1.4.4.orig.tar.xz gstreamer1.0-alsa_1.4.4-2+deb8u1_amd64.deb gstreamer1.0-plugins-base_1.4.4-2+deb8u1_amd64.deb gstreamer1.0-plugins-base-apps_1.4.4-2+deb8u1_amd64.deb gstreamer1.0-plugins-base-dbg_1.4.4-2+deb8u1_amd64.deb gstreamer1.0-plugins-base-doc_1.4.4-2+deb8u1_all.deb gstreamer1.0-x_1.4.4-2+deb8u1_amd64.deb libgstreamer-plugins-base1.0-0_1.4.4-2+deb8u1_amd64.deb libgstreamer-plugins-base1.0-dev_1.4.4-2+deb8u1_amd64.deb gstreamer1.0_from_jessie/gstreamer-core: gir1.2-gstreamer-1.0_1.4.4-2+deb8u1_amd64.deb gstreamer1.0_1.4.4-2+deb8u1_amd64.changes gstreamer1.0_1.4.4-2+deb8u1.debian.tar.xz gstreamer1.0_1.4.4-2+deb8u1.dsc gstreamer1.0_1.4.4.orig.tar.xz gstreamer1.0-doc_1.4.4-2+deb8u1_all.deb gstreamer1.0-tools_1.4.4-2+deb8u1_amd64.deb libgstreamer1.0-0_1.4.4-2+deb8u1_amd64.deb libgstreamer1.0-0-dbg_1.4.4-2+deb8u1_amd64.deb libgstreamer1.0-dev_1.4.4-2+deb8u1_amd64.deb gstreamer1.0_from_jessie/gstreamer-good: build_it_in_astra_1.4se.patch gst-plugins-good1.0_1.4.4-2+deb8u3_amd64.changes gst-plugins-good1.0_1.4.4-2+deb8u3.debian.tar.xz gst-plugins-good1.0_1.4.4-2+deb8u3.dsc gst-plugins-good1.0_1.4.4.orig.tar.xz[…]

libvirt и qemu-kvm

Короче, я тут на днях беглым взглядом просматривал документацию на libvirt, на предмет того, как можно автоматизировать процесс извлечения ядра и initrd из файловой системы гостя. И оказалось, что libvirt несколько раз запускает файл с хуком, в строку запуска его отдавая параметры и xml’ку виртуальной машины. Для меня это стало, прямо скажем, открытием. Во времена появления libvirt’а, модой на системы виртуализации правила VMware, фактически предлагавшая десктопную виртуализацию, отмасштабированную до размеров сервера. Основной целевой аудиторией были виндоводы, которым было лень иметь под не прожорливые сервисы отдельные физические машины. Да, в первую очередь речь шла именно о ссаживании на одной железке того, что нельзя мешать в рамках одной ОС, а не об обеспечении быстрой миграции и не о прочих «киллер-фичах виртуализации». Конечно[…]

xfce4-terminal и rm -Rf

Всё, что будет происходить при сборке, с большой вероятностью, описано в файле debian/rules. В случае c Postgresql и 1С придётся заменить в COMMON_CONFIGURE_FLAGS флаг «—enable-integer-datetimes» на «—disable-integer-datetimes». Ну вообще я удивлён, конечно. Исходники для dpkg-source разделены на начальные исходники, патчи к ним, и, в конце, ещё накладывается патч для сборки в среде Debian. Вот они не осилили его поправить? Или малоинформативная приписка в readme Для использования PostgreSQL 9.6.3-3.1C с версиями 1С:Предприятия ниже 8.3.10 необходимо его собрать с установленным значением параметра integer_datetimes=off нужна, чтобы всякие левые люди не могли собрать корректно PG? Типа пользуйтесь бинарниками нашими или топайте в лес? Ну и, конечно, он не собрался. Спасибо вам, фирма 1С, что держите марку! debian/rules:213: recipe for target ‘override_dh_auto_test-arch’ failed make[1]: ***[…]

Урал в Севастополе

Все же знают о том, что если что-то попало в интернет, то оно оттуда никогда уже и не денется? Так вот, это очень удачная замена фотоальбомам. Например внезапно можно случайно найти посты о том, как собирал и распространял образы Debian для одного arm-лаптопа, сильно до того, как это стало мейнстримо… до того, как хипстерам дали Raspberry Pi. Сам то я тогда и вовсе на Генте сидел, а красноглазие моё не знало пределов. От слова «совсем». Иногда попадются «хаутушки» за моим авторством, например по которым можно сообразить почтарь за пять минут, ну и, что характерно, люди это повторяли, ставили себе тоже и также на боевые сервера. Некоторые на свои сайты передирали данный текст, иногда целиком, иногда частями… Тогда мне казалось это[…]

Orange Pi Plus 2E

Закалачивать гвозди микроскопом? Да! Спасать копеечные флешки от перезаписи тестировщиками внедрением в схему одноплатного компьютера? Почему бы нет?! Ну а в этом нам поможет скрипт: #!/bin/sh echo «Создаём RAM-диск» modprobe brd rd_nr=1 rd_size=1572864 max_part=0 while [ ! -b /dev/sda ]; do echo «Не найдено блочное устройство, ждём несколько секунд…» sleep 5 done echo 0 `blockdev —getsz /dev/sda` snapshot /dev/sda /dev/ram0 N 64 | dmsetup create snap modprobe g_mass_storage file=/dev/mapper/snap exit 0 Как бы это логичное продолжение поста об плате Orange Pi Plus 2E.

Orange Pi Plus 2E

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

Контейнеры

Последние несколько недель я изучал контейнеризацию окружений, точнее то, как нынче принято это делать. И повод есть: anotherhosting.net весь в виртуалках живёт, виртуалки содержаться на моём «облаке», ну а контейнеризация, насколько известно, помогает снизить накладные расходы, что ведёт к росту КПД «облака». Ну это в теории. Да и глупо это, казалось бы, иметь гипервизор, виртуализацию в CPU, когда любой продакшн-дистрибутив умеет и cgroup и namespaces. Но нет… Счастья не будет. Если сильно не растекаться мыслью по листу… по текстбоксу, да, то всё упёрлось в недалёкость разработчиков современных. Вот что делали годные хардкорные админы при инициализации сервисов: приложение запускается, открывает все нужные для работы дескрипторы, которые нельзя открыть из chroot’а, например порты и сокеты; делается chroot куда-то; сброс привилегий до заданного[…]

На самом деле звук на платах с 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[…]