Редактирование снимка экрана для этой статьи — в Haiku


TL;DR: Производительность намного лучше, чем изначально. Виноват был ACPI. Запуск в виртуальной машине работает прекрасно для показа экрана. Git и менеджер пакетов встроены в файловый менеджер. Публичные беспроводные сети не работают. Разочарование с python.


На прошлой неделе я открыл для себя Haiku, неожиданно хорошую систему. И даже сейчас, на второй неделе я продолжаю находить множество скрытых алмазов и приятных сюрпризов, ну и, само собой, еженедельную порцию различных нюансов.


Производительность


Как оказалось, плачевная производительность первой недели, особенно в браузере (задержки при наборе текста, к примеру), возможно, связаны с кривой реализацией ACPI в BIOS моего компьютера.


Для того, чтобы отключить ACPI я делаю:


sed -i -e 's|#acpi false|acpi false|g' /boot/home/config/settings/kernel/drivers/kernel

и перезагружаюсь. Теперь моя система наконец-то отзывается быстро, как и было отмечено в прошлом другими рецензентами. Но в результате я больше не могу перезагружаться без kernel panic (выключить можно с сообщением "Теперь питание компьютера можно отключить").


ACPI, DSDT, iasl


Да ладно, скорее всего, надо выполнить отладку ACPI, я что-то смутно помню об этом с тех времен, когда работал над PureDarwin, потому что ядру xnu частенько были нужны поправленные файлы DSDT.aml


Погнали...


Качаю и собираю iasl, программу отладки ACPI от Intel. Вообще-то нет, он уже был портирован:


~>  pkgman install iasl

Сохраняю таблицы ACPI:


~> acpidump  -o DSDT.dat
Cannot open directory - /sys/firmware/acpi/tables
Could not get ACPI tables, AE_NOT_FOUND

Оказывается, оно еще не работает в Haiku, решаю перезагрузиться на Linux, там и сниму содержимое ACPI. Затем я поправил ошибки с помощью iasl, текстового редактора и некоторых знаний (можно поискать в Google "patch dsdt fix") и бездны терпения. Тем не менее, в результате у меня все равно не получилось загрузить исправленный DSDT с помощью загрузчика Haiku. Правильным решением, возможно, будет перенос ACPI on-the-fly patching, в загрузчик Haiku (примерно так же, как это делает загрузчик Clover, исправляя DSDT на лету по меткам и шаблонам). Я открыл заявку.


Виртуальные машины


Вообще, я не фанат виртуальных машин, поскольку они чаще всего потребляют больше оперативной памяти и других ресурсов, которые мне доступны. Кроме того, мне не нравятся накладные расходы. Но мне пришлось рискнуть и воспользоваться ВМ, поскольку Haiku пока не умеет записывать видеотрансляции со звуком (поскольку на моем оборудовании не работают драйвера звука и есть карта, подключаемая по usb1 (первой версии), а ее драйвер должен быть собран вручную). Что хочу сказать: для такого решения удалось получить очень хороший результат при создании моей видеотрансляции. Оказалось, что Virtual Machine Manager — настоящее чудо. Возможно, в это ПО (которое я лет 15 игнорировал) компания RedHat вложила все свои инженерные деньги. Во всяком случае, к моему большому удивлению, виртуализированная Haiku работает чуть быстрее, чем на таком же оборудовании (в это трудно поверить. но мне так кажется). [Не кажется, был аналогичный опыт в 2007 году с только что вышедшей Centos5, которую можно было установить виртуализированной в Xen. — прим. переводчика]


Видеотрансляция


Телодвижений, на мой вкус, понадобилось многовато, поэтому я записал пошаговое руководство (по большей части для себя же, чтобы воспроизвести потом), но вы также можете воспользоваться этой информацией для записи своих видеотрансляций Haiku (что совершенно точно стоит попробовать).


Кратко:


  • Используйте приличные наушники и звуковую карту C-Media USB
  • Загрузите компьютер с помощью живого образа Pop!OS NVIDIA (для аппаратного ускорения кодирования nvenc)
  • Скачайте ночной образ Haiku Anyboot 64bit
  • Настройте KVM, как было описано в статье выше
  • Скачайте OBS Studio AppImage (не забудьте сказать разработчикам, что хотите официальный)
  • Добавьте фильтр для шумоподавления в Desktop Audio (щелкаем правой кнопкой мыши по Desktop Audio, потом "Filters", потом "+", потом "Noise Suppression", уровень оставьте по-умолчанию)
  • Пройдитесь по настройкам звука в XFCE
  • Щелкните правой кнопкой мыши по Desktop Audio, потом "Properties", выберите устройство "Audio Adapter Analog Stereo"
  • Зайдите в меню XFCE, в "Workspaces"
  • Выставьте там число рабочих столов: 2
  • Ctr-Alt-ПраваяСтрелка переключит на второй рабочий стол
  • Исправьте ярлык для запуска Virtual Machine Manager так, чтобы он запускался от root (добавляя в начале sudo), иначе он у меня не работал
  • Запустите Haiku на втором рабочем столе
  • Загрузитесь до ее рабочего стола, выставьте разрешение FullHD (мне не удалось заставить Haiku сделать это автоматически, возможно есть способ заставить QEMU\KVM передавать EDID от монитора, но я не нашел такую настройку в Virtual Machine Manager) [надо было поставить еще одну видеокарту и пробросить ее в Haiku… — прим. переводчика]
  • Нажмите Ctrl+Alt для того, чтобы клавиатура и мышь "вернулись" к Linux
  • Ctr-Alt-ЛеваяСтрелка переключит на первый рабочий стол
  • В OBS добавьте "Window Capture (XComposite)", и выберите окно "Haiku on QEMU\KVM", включите галку "Swap red and blue".
  • Запишите видео, отредактируйте его с помощью Shotcut (запустите его от пользователя root, чтобы работало аппаратное ускорение nvenc)
  • Звуковая дорожка из музыкальной библиотеки YouTube "Timelapsed Tides". Фильтры: "Audio fade in", "Audio fade out", громкость -35db (ладно, хватит, это же не инструкция для Shotcut)
  • Экспорт, "YouTube", загрузка. Видео станет FullHD на YouTube без особой постобработки

Вуаля!


https://youtu.be/CGs-lZEk1h8
Видеотрансляция Haiku с помощью QEMU\KVM, звуковой карты USB, OBS Studio и Shotcut


Я счастлив, хотя был бы намного счастливее, если бы звуковая карта, OBS Studio и Shotcut изначально работали в Haiku, и мне не пришлось бы выполнять эту длинную настройку. [Взял бы VirtualBox, там все есть сразу для записи видеотрансляции прямо в настройках виртуальной машины. — прим. переводчика]


Tracker и его дополнения


Tracker для Haiku такая же вещь, как Finder в Mac, или Explorer в Windows. Попробую поискать tracker add-on в HaikuDepot.


Интеграция Git в файловой менеджере


Просто цитирую картинки с его домашней страницы



TrackGit включен в файловый менеджер Haiku



Можно даже склонировать репозиторий


Это что, шутка?! Пароль открытым текстом? Удивительно, что они не используют "keychain", для этого в Haiku есть BKeyStore. Оставил заявку.



Пароль открытым текстом?


Интеграция менеджера пакетов в файловый менеджер


Согласно домашней страницы проекта:


Находит пакет(-ы) любого выбранного файла(-ов), открывая его в предпочтительном приложении. По-умолчанию это HaikuDepot, где можно посмотреть описание пакета, а на вкладке "Содержимое" можно увидеть другие файлы, которые являются частью этого пакета, а также их местоположение.

Вероятно, остался только один шаг для удаления пакета...


Autostart/rc.local.d


Как же запускать что-либо автоматически при загрузке?


  • rc.local.d = /boot/home/config/settings/boot/userbootscript
  • Autostart = /boot/home/config/settings/boot/user/launch

Мне надо найти команду синхронизации локального времени по NTP… Я слышал, что оно вообще должно работать автоматически, но у меня почему-то не работает. Что очень плохо, поскольку у меня сдохшая батарея для RTC, что означает сброс времени при отключении питания.


Больше подсказок


Приложение Tipster показывает полезные советы и рекомендации (ознакомьтесь с ними!).


Публичные беспроводные сети


У меня не получилось подключиться к беспроводным сетям во время прогулки несмотря на то, что домашняя беспроводная сеть у меня работает. Публичные места (аэропорты, отели, вокзалы) обычно покрыты множеством беспроводных сетей, каждая из которых обычно состоит из нескольких точек доступа.



Центральный ж/д вокзал Франкфурта


А что же мы найдем на ж/д вокзале Франкфурта? Кучу разных сетей:



Обычная ситуация для публичных мест. Здесь: Центральный ж/д вокзал Франкфурта


Возможностей для подключения — хоть отбавляй. А что делает Haiky с этими сетями? На самом деле не много: сильно путается в них. Ведь я был отключен от сети все это время.


Не работает передача точек доступа?


Все начинается с того, что каждая точка доступа показывается отдельно, — даже если они принадлежат одной сети с общим SSID, — не то что на любой другой, знакомой мне, ОС.



Показывается несколько точек с одинаковым SSID. Ну, и как будет работать передача обслуживания в таких условиях?


А должен отображаться только один SSID, для которого будет подбираться точка доступа с самым сильным сигналом. Клиент должен выбрать другую точку с более сильным сигналом, но с тем же SSID (при доступности), если связь с текущей точкой доступа станет слишком слабой — все работает даже при перемещении (передача обслуживания клиента между точками доступа). Создал заявку.


Никаких открытых сетей?



Haiku настаивает на том, что должен быть пароль, даже если сеть открытая.


Haiku продолжает требовать пароль сети, хотя самой сети никаких паролей не нужно. Также создал заявку.


Путаница из-за captive portals?


Многие беспроводные сети используют captive portals, когда пользователь перенаправляется на страницу авторизации, где может принять условия и соглашения, прежде чем использовать сеть. Возможно, это запутало мою ОС еще больше. В конце концов, по всей видимости, беспроводная подсистема у меня заблокировалась полностью.



Спустя некоторое время вся беспроводная подсистема полностью заблокировалась


Нет доступа к сети во время путешествия, печаль-тоска.


Разочарование с Python


Как легко и непринужденно запустить "случайно" выбранную программу на Python? Оказалось, не все так просто. По крайней мере я сам не до конца все понял...


git clone https://github.com/micahflee/onionshare.git
cd onionsharepython3 -m venv venv
pkgman i setuptools_python36 # pkgman i setuptools_python installs for 3.7
pip3 install -r install/requirements.txt

Could not find a version that satisfies the requirement PyQt5==5.12.1 (from -r install/requirements.txt (line 15)) (from versions: )
No matching distribution found for PyQt5==5.12.1 (from -r install/requirements.txt (line 15))

# stalled here - does not continue or exit

pkgman i pyqt

# No change, same error; how do I get it into the venv?
# Trying outside of venv

Could not find a version that satisfies the requirement PyQt5==5.12.1 (from -r install/requirements.txt (line 15)) (from versions: )
No matching distribution found for PyQt5==5.12.1 (from -r install/requirements.txt (line 15))

Подвисший pip — известная проблема (ему нужна поддержка hardlinks, которые не поддерживаются в Haiku). Мне подсказали, что надо использовать python3.6 (я бы сказал, что это бардак). Открыл заявку с pip


Куда идем дальше?


Haiku является примером сфокусированной операционной системы для ПК, и как таковая имеет отличные принципы, значительно упрощающие общие рабочие процессы. Её разработка была стабильной, но неспешной — последние лет 10, в результате чего поддержка оборудования осталась достаточно ограниченной, а сама система относительно неизвестной. Но ситуация меняется: поддержка оборудования обеспечивает возможность запуска Haiku на относительно широком списке машин (хотя и с ошибками), а с учетом того, что версия системы не 1.0 — системе надо привлечь большее внимание общественности. Чем я могу помочь лучше всего? Полагаю, эта серия статей будет полезна. Спустя 2 недели я начал сообщать об ошибках, а также начал серию видеотрансляций.


Еще раз выражаю огромную благодарность команде разработчиков Haiku, вы лучшие! Обязательно дайте знать, если придумаете, как я смогу внести вклад в развитие проекта, хотя я и не планирую писать на с++ в ближайшее время.


Попробуйте сами! Ведь проект Haiku предоставляет образы для загрузки с DVD или USB, формируемые ежедневно.
Появились вопросы? Приглашаем вас в русскоязычный telegram-канал.


probono — основатель и ведущий разработчик проекта AppImage, основатель проекта PureDarwin, участник различных проектов с открытым исходным кодом. Снимки экрана были сделаны на Haiku. Благодарность выражается разработчикам на канале #haiku в сети irc.freenode.net


Обзор ошибок: Как выстрелить себе в ногу в C и C++. Сборник рецептов Haiku OS


От автора перевода: это девятая и заключительная статья из цикла про Haiku.


Список статей: Первая Вторая Третья Четвертая Пятая Шестая Седьмая Восьмая

Комментарии (1)


  1. ASCIIst
    19.09.2019 18:47

    >реализацией ACPI в BIOS
    Интересно, сколько нужно рук чтобы посчитать все материнки без каких-либо проблем с ACPI, выпущенные за последние 10 лет. Думаю 2 будет достаточно.