СофтХабрахабр

[Перевод] Мой первый день с Haiku: она неожиданно хороша

Особенно по сравнению с рабочими окружениями, доступными на Linux TL:DR; Новичок попробовал Haiku в первый раз и решил, что она потрясная.

В этом обзоре я опишу первые впечатления от Haiku, операционной системы с открытым исходным кодом для персональных компьютеров. Я уже делился своими идеями (а также разочарованиями) по поводу #LinuxUsability (part 1, part 2, part 3, part 4, part 5, part 6). Иногда первые впечатления бывают полезными, но так как первые впечатления получаешь только раз — я свои сохранил здесь.


Система, на которой я пишу этот обзор

Также дружелюбные люди на канале #haiku в сети irc.freenode.net помогали мне подсказками — их я также опубликую. Возможно, они будут полезными для разработчиков Haiku и\или других заинтересованных сторон.
Где-то я могу ошибаться, поскольку всего-лишь описываю личный (читай: на голубом глазу) первый опыт. Благодарю вас, разработчики Haiku!

Что хотел сказать: Haiku еще не на 100% идеальна, но в ней уже есть крепко сбитое рабочее окружение.

Установка

Я использовал флешку USB-3. Проект Haiku предоставляет образы для загрузки с CD или DVD, формируемые ежедневно. Мне говорили, что загрузка с USB-3 может не пойти, но на моих двух тестовых системах на базе Intel все работает безупречно.

Загрузка работает как с EFI, так и без него — мои аплодисменты за предоставление подобного образа. Сам процесс установки я начал с загрузки образа для 64bit, который затем записал на флешку с помощью программы Etcher.

Вообще, для системы достаточно 600мб, но для дополнительных приложений надо больше места. Haiku использует собственную файловую систему BeFS для загрузочного раздела, хотя, в принципе, заявлена поддержка FAT32 и NTFS.

На FAT32 есть файл /EFI/BOOT/BOOTx64. По-умолчанию создается раздел на 600мб с BeFS и раздел с FAT32 размером 3Гб. К сожалению я не нашел программ по увеличению размера BeFS, и надеюсь, в будущем сделают другую схему разбивки диска, потому что размер образа раздела зафиксирован небольшим и может не хватить свободного места для дополнительного ПО. EFI, что подразумевает возможность загрузки на системах с поддержкой EFI. Было бы неплохо, если бы дополнительные пакеты с ПО сохранялись на втором разделе FAT32.

Под Linux уже есть поддержка чтения BeFS, есть реализации на чтение-запись BeFS под FUSE. Это же решение стало бы преимуществом для тех, кто желает получить доступ к файлам напрямую с других систем.


Установщик Haiku

Также надо будет установить вручную и загрузчик, используя отдельную программу. Мне дали совет: хочешь использовать более емкий раздел — установи Haiku на другую флешку.
Для меня этот этап, в принципе, лишний, поскольку установщик Haiku не умеет разбивать диски, а просто запускает программу DriveSetup, в которой надо вручную разбить диск, добавить раздел, который потом форматировать в BeFS, после чего управление возвращается к установщику. Не помешал бы установщик, умеющий автоматическую разбивку включая особенности EFI. К сожалению, у меня не получилось загрузиться с EFI при такой разбивке, поскольку при этом отсутствует FAT32 раздел с загрузочными файлами для EFI.


BootManager устанавливает загрузчик на диск

При этом копируется вся система, состоящая "всего-лишь" из 4751 файла. Сам процесс установки занимает чуть менее трех минут, что весьма быстро. Что интересно — есть достаточно много "свободных" файлов, например, png. Причиной этому — тот факт, что большинство ПО опакечено в виде hpkg файлов (чем-то похожих на пакеты Snap в Linux системах), которые никогда не устанавливаются, а просто монтируются. Почему они не опакечены?

(я говорил о 4751 файле, поскольку запустил перед установкой HaikuDepot, который накачал кучу всего. Как я уже говорил, даже ядро операционной системы поставляется в виде hpkg файла. Круто! Чистая установка, по всей видимости, не содержит их все, и может быть установлена быстрее примерно с 200 пакетов. Ого, а вот, похоже, и первый отчет об ошибке, написанный с моей подачи). Как мне сказали, то, что загруженные файлы не игнорируются при установке — это программная ошибка.

Первая загрузка

Система загружается, показывая симпатичную заставку, а потом останавливается: после загрузки моя видеокарта (Radeon) показывает черный экран.

В принципе можно было заморочиться с загрузчиком для получения работы с FullHD, но на другом компьютере с видеокартой от Intel все заработало безотказно. Мне посоветовали загрузку в безопасном режиме экрана с разрешением 1024х768 на FullHD мониторе.

Вы получите реальную систему при загрузке с USB, в отличие от тормозных "живых" Linux образов. Сама система работает отзывчиво с флешки, по всей видимости, из-за того, что на флешку при работе не пишется ничего, так что я надеюсь использовать флешку в качестве основной рабочей системы.

В отличие от типичных дистрибутивов Linux, ядро и GUI здесь созданы и подогнаны друг для друга! Во время загрузки не мигает экран, не видно сообщений ядра, нет ощущения, что Xorg прикручен к ядру синей изолентой.

Все просто, точно то, что требуется для личного компьютера. Нет приглашения для входа в систему, поскольку система сделана для одного пользователя.

Нужна поддержка нескольких пользователей — раздайте им по флешке, каждая из которых стоит не дороже $5.

Первые впечатления от рабочего окружения

Клавиша "command" работает точно так же как и в Mac. Если сравнивать первое ощущение — больше похоже на Mac, чем, к примеру, на Linux с Gnome. Хорошо!


Ничто не сравнится с пространственным файловым менеджером, по ощущениям — старый добрый Mac!

0), к сожалению каждое окно не запоминает свои настройки (например просмотр в виде списка или в виде иконок). Файловый менеджер по-умолчанию пространственный (как Macintosh System 1. (К сожалению, писать отчеты "мимокрокодилу" в bugtracker для Haiku сложно — используется оригинальная система, не основанная на GitLab или GitHub, в которую также невозможно и войти с их помощью). Как мне сказали — это ошибка, исправить которую, я полагаю, будет несложно. Куда лучше, чем рабочие окружения для Linux, чувствуется простота. Файлы получают свои иконки, нет проблем с отдельными файлами на рабочем столе и иконками.
Хорошо!

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

Не чувствуется раздутых слоев ПО. Операционная система работает шустро даже на маломощном оборудовании типа нетбука на Atom. Хорошо!

Lunduke сказал, что LibreOffice, по ощущениям, работает быстрее, чем на других операционках, но я это еще не проверял.

Haiku OS Beta — обзор и впечатления Bryan Lunduke.

Командная строка

В целом, несмотря на небольшие различия с Linux я сразу освоился с ним, на самом деле — обычный bash, что весьма порадовало. В составе имеется терминал.

Welcome to the Haiku shell.
In it, you can easily launch applications that are on the $PATH:
~> Touchpad
~> echo $PATH
.:/boot/home/config/non-packaged/bin:/boot/home/config/bin:/boot/system/non-packaged/bin:/bin:/boot/system/apps:/boot/system/preferences

"." в $PATH! Ух ты! Отлично! Это означает, что можно запускать команды прямо из текущего каталога (Линуксоиды однажды сказали мне, что мир взорвется, если я попробую так сделать).


bash, запущенный в терминале Haiku

Что еще крутого в терминале — можно нажать ctrl + c для копирования, так же как и в прочих приложениях, в отличие от рабочих окружений Linux, где нужно жать ctrl + shift + c в терминале.
Мелочи, которые показывают целостность всей системы.

Структура файловых систем

Как просто!
Никакой кучи /etc, /usr, /bin… Просто /home и /system. Раздел, откуда идет загрузка, смонтирован в /boot. Хорошо! Чисто, просто, понятно. Зачем? (Не совсем: они есть, но скрыты. Я думаю, разработчики должны избавиться от устаревших вещей, сделанных для совместимости, поскольку это только усложняет понимание.) Потому что /bin это /system/bin, нет необходимости отображать это в Tracker, но скрипты все еще используют его.

packagefs

Файловая система, которая делает эту магию, зовется packagefs. Я уже упоминал ранее о файлах hpkg, которые чем-то напоминают пакеты на Linux, но они не устанавливаются, а просто монтируются (подобно пакетам snap). Она монтирует hpkg файлы поверх других, в результате таким путем создается весь каталог /system.

Команда mount, к сожалению, не показывает, что смонтировано.

~> mount
usage: mount [-ro] [-t fstype] [-p parameter] [device] directory
-ro mounts the volume read-only
-t specifies the file system to use (defaults to automatic recognition)
-p specifies parameters to pass to the file system (-o also accepted)
if device is not specified, NULL is passed (for in-memory filesystems)

[К счастью, если запустить mount или df где-то на хосте с docker, можно пару экранов мотать! Мне рекомендовали попробовать mountvolume, которая покажет смонтированные разделы, но, к сожалению, она тоже не показывает точки монтирования с packagefs (покажет только те, что связаны с разделами или дисковыми образами). переводчика] Но можно провернуть трюк с df : — прим.

~> df -h Mount Type Total Free Flags Device
----------------------------------
/boot bfs 600.0 MiB 6.0 KiB QAM-P-W /dev/disk/usb/0/0/0
/boot/system packagefs 4.0 KiB 4.0 KiB QAM-P -
/boot/home/config packagefs 4.0 KiB 4.0 KiB QAM-P -
/no name fat 2.8 MiB 2.3 MiB - M-PRW /dev/disk/usb/0/0/1

Сможет ли packagefs совместить лучшее? Как видно, /system и /home/config внутри /boot это как раз packagefs.
Знающие меня люди в курсе, что я фанат поддержки drag-and-drop в файловых менеджерах: например, использую комплекты приложений NeXT-style, или AppImages.
В любом случае, есть недостатки и в таком формате распространения ПО.

packagefs живет в ядре, так что это не файловая система для FUSE (хотя мне известно, что FUSE тоже есть в Haiku). Как видно, в моем случае (системный раздел заполнен, но я хочу поставить приложения) изящнее было бы качать куда-нибудь приложения, используя браузер, прямо как я это делаю с файлами .dmg для Mac или AppImage. Такое мне по вкусу — ведь если дисковый раздел будет на съемном носителе, я смогу сесть за другой компьютер и получить там работающие приложения. Также мне сказали, что, возможно, в будущем будут сделаны дополнительные "зоны packagefs", а это, вероятнее всего, означает, что я смогу указать packagefs сохранять пакеты, например, на отдельных дисковых разделах.

Если перетягивать пакет с неудовлетворенными зависимостями — система запросит их предварительную установку. Еще сказали, что методом drag-and-drop также работает и установка пакетов: достаточно перетянуть файл в /system/packages или в /home/config/packages для установки, а если вытянуть файл оттуда — он удалится.

(Один из разработчиков сказал, цитата: "сама packagefs не содержит чего-либо, мешающего установке нескольких пакетов с одним и тем же именем, но поскольку применяется libsolv из OpenSuse для разрешения зависимостей, которая не позволяет так делать, — было запрещено так делать и самому HaikuDepot в настройках". Сперва мне было непонятно, как packagefs обрабатывает множественные версии одного и того же пакета, что будет, если я захочу поставить, к примеру, разные версии gcc, или других GUI программ? Я могу пояснить, почему мне нравится идея с пакетами .app, AppDir и AppImages).

Динамические библиотеки

Да, это видно, например, если вы запускаете приложение с отсутствующими библиотеками двойным кликом: Есть ли технология динамических библиотек?


Можете представить такое в gnome, kde или xfce?

Давайте посмотрим, как долго оно будет делаться в разных окружениях: В Linux подобный запуск ничего бы не показал.

А что насчет проверок?

~> ldd
bash: ldd: command not found

Надо использовать замену:

~> objdump -x /bin/bash | grep NEEDED
NEEDED libreadline.so.7
NEEDED libhistory.so.7
NEEDED libncurses.so.6
NEEDED libintl.so.8
NEEDED libroot.so

В принципе ldd был бы лучше, поскольку он дополнительно показывает пути, откуда библиотеки будут загружаться.
А откуда они реально загружаются?

~> echo $LIBRARY_PATH
%A/lib:/boot/home/config/non-packaged/lib:/boot/home/config/lib:/boot/system/non-packaged/lib:/boot/system/lib

Как же круто! Так что можно поместить библиотеки рядом с исполняемым файлом, и он будет "просто работать". Хорошо! Можно просто подключить отдельные библиотеки к приложению без возни с rpath или установки переменной LD_LIBRARY_PATH как на Linux.

6. Есть библиотека (ужасная на Linux) /boot/system/lib/libstdc++.so. 24.
Что если приложению требуется версия новее, чем имеющаяся в /boot/system/lib?
Обычный пользователь, наверное, обновится до последней версии, потому что в этой системе нет пользователя "Administrator" с паролем root [автор намекает на простоту — прим. 0. (На самом деле "пользователь" является аналогом root. переводчика].
Ну по крайней мере так это выглядит. Разработчики сказали мне, что по-умолчанию все приложения запускаются от root. Можно установить пароль с помощью команды passwd, после чего указать PermitRootLogin=yes в sshd_config, а далее можно будет подключиться снаружи по ssh. В конечном итоге, они, может, и доработают это… Но не уверен, понравится ли мне.)

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

Ресурсы и регистратор

Мне подсказали, что есть особый сервис-регистратор, который знает о приложениях, типах файлов, иконках. Как уже было сказано выше, приложения получают тип и иконку, так что вам не надо возиться с файлами на рабочем столе и тому подобными вещами. А ведь это то, что отсутствует в рабочих окружениях на Linux. Он всегда уведомляется при установке пакета или пометке файла для исполнения (используя программу chmod или mimeset).
Чем-то напоминает Launch Services на Mac. Отлично!

Почти так же, как было на Macintosh System 1. Двоичные файлы получают встроенные иконки в виде ресурсов, так что вам не нужна отдельная иконка в дополнение к файлам на рабочем столе. Круто!


Типы приложений, поддерживаемые типы документов, встроенные ресурсы и информация о версии

Это то, что я ждал от рабочих окружений на Linux уже более 10 лет.
Все это весьма доставляет. Tracker (файловый менеджер) автоматически помечает двоичные файлы исполняемыми. Жизнь становится такой простой. Ведь круто же! Или вот это... Это утонченнее и более похоже на Mac, чем XDG на Linux.


Приложение на Linux без установленного бита исполняемости

Аплодирую стоя! В Gnome убрали возможность запуска исполняемых файлов из файлового менеджера, но сообщество подняло шумиху — и все вернули.
Также мне рассказали, что приложения используют функцию find_paths() вместо жестко указанных /usr/bin и /usr/share (общая черта рабочих окружений на Linux), что означает возможность перемещения их по файловой системе. На Linux это как обычно "сложно".

Что меня удивило

  • Смутило, что /boot это точка монтирования раздела, откуда загружается система. Почему не "/"? Ну или /Haiku? (Пояснение: действительно, /boot это всегда загрузочный раздел, он отображается на рабочем столе как "Haiku", потому что это его имя. СМотрите на "/" как на аналог рабочего стола в Mac System 1, корень иерархии, реально не существующей на дисках).
  • Точкой монтирования для пакетов, установленных пользователем, является /home/config. Почему не просто /home? (Один из разработчиков пояснил мне, что они не хотят засорять домашний каталог, но мне кажется, config — название неудачное, потому что внутри есть подкаталог bin/, так что это не просто хранение настроек).
  • Какова лицензия для всего? К примеру в браузере WebPositive при просмотре "О программе" явного указания нет. В поле "Об этой системе" написано, что код Haiku находится под лицензией MIT. Отлично! (Также мне сказали, что WebPositive поставляется вместе с операционкой по той же лицензии, однако его движок WebKit поставляется, по большей части, под двухпунктовой BSD).

Что работало не так, как я ожидал

На моем нетбуке на основе Atom заработало все, включая WLAN. Прежде всего меня поразил уровень поддержки оборудования. Но есть некоторые особенности в работе.

  • Полная неработоспособность на оборудовании Macintosh, независимо от режима EFI или эмуляции BIOS ("Windows"). Система просто зависает, если выбрать иконку в загрузчике Mac. Мне сказали, что это известная особенность и можно загрузиться, используя rEFIt, но эти настройки для меня слишком сложные.
  • Ускорение графики. Похоже, пользоваться Radeon пока невозможно (у меня был черный экран), но и на Intel не все гладко. Ускорение видео в WebPositive только программное, включая H.264. Удивительно, ведь изначальная ориентация — на видео. Один из разработчиков уточнил, что видео в WebPositive работает, используя тормозные хаки.
  • Нет звука? "Драйвера для звуковых карт все еще в пролете", — сказал разработчик. Вероятно, нужен кто-то, чтобы поддержать драйвер HDA аналогично USB-3. Сейчас для получения звука достаточно горячей перезагрузки из другой операционки, и я верю, что это как-нибудь да исправят.
  • Не работают кнопки управления яркостью и громкостью. (Основа уже есть в виде приложения Shortcuts: можно сделать привязку любого клавиатурного сочетания с любой понравившейся функцией, но пока что Haiku не умеет работать с медиаклавишами. Может, есть добровольцы?)
  • Двупальцевое управление touchpad. Не работает из коробки. Есть панель настроек, которая сообщила, что "No touchpad found, the settings will have no effect." (Известная проблема с ELAN Input Device, ACPI ETD050A).
  • С имеющимся приложением для чтения файлов с цифровых камер и смартфонов на Android у меня не работала синхронизация в режимах MTP и PTP. Было бы отлично, если они монтировались как другие разделы в системе.
  • Закрывание крышки ноутбука, по всей видимости, не обрабатывается. (Мне известно, что Haiku до сих пор не работает с ACPI: реализована поддержка, но не подключена по-умолчанию; нет повторной инициализации драйвера)
  • Я не смог создать учетную запись в bugtracker, поскольку не работает captcha в WebPositive.

Приложения

Я боялся, что под Haiku не будет приложений для реальной работы. Основное предназначение операционной системы — запуск приложений. Также есть и QtCreator (IDE). К счастью, ошибался, поскольку есть надежда на улучшение — когда Haiku станут чаще использовать.
Scribus (приложение для визуальной вёрстки) есть, а это весьма сложное приложение на основе Qt.

Позиция разработчиков Haiku — "явное" предпочтение нативных приложений для Haiku. Мне стало интересно, пишут ли сегодня нативные приложения Be для Haiku, используя нативные инструменты (если они существуют), или достаточно использовать QtCreator (что облегчит портирование кроссплатформенных приложений). Я вот сомневаюсь, что приложения для реальной работы бывают не кроссплатформенные (все применяемые в моей работе приложения — кроссплатформенны). Правда?

Заявлена поддержка WxWindows приложений.

Это значит, что на на Haiku в ближайшее время не будет Gimp (ну, я так думаю), но есть замена в виде Krita! Отсутствие поддержки Gtk+ расстраивает.

Также, я думаю, нужен простой и понятный способ создания приложений для Haiku, вроде этого — используя Travis CI и GitLab CI.

Куда движемся?

Мне кажется, для привлекательности ей надо тщательно выверять новые схемы UX при их принятии, оставаясь при этом верной своим основам.
К примеру: Застрянет ли Haiku в концепции BeOS UX?

  • Оставаться простой, без тех 100500 опций, которые делают Linux "сложным".
  • Использовать для мыши курсор-стрелку вместо странной руки.
  • Будет ли Dock? (Я в курсе, что есть что-то типа Dock под названием LaunchBox, еще более близкий к Dock LnLauncher, но изначальная BeOS еще в 1998 уже имела Dock!)
  • Глобальное меню? (Очевидно, нет, поскольку JLG не видит особой выгоды).
  • Быстрое переключение окон? (Сказали, что можно попробовать активировать "Stack&Tile", зажимая клавишу Windows при перетаскивании окна, но это не интуитивно, более того — не работает у меня).
  • Анимация раскрытия и сворачивания окон?
  • Тени за окнами?
  • Поддержка тем, как в Aqua? (Да, можно, есть инфраструктура и инструменты, например, HaikuThemeManager, но кто-то должен создать темы. Я бы попробовал сам, мне сказали, что есть документация в https://xref.plausible.coop/source /xref/haiku/headers/os/interface/ControlLook.h, но не сейчас).

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

Заключение

Haiku реально открыла мне глаза, показала, как рабочее окружение "просто работает".
Более 10 лет назад я перешел с Mac на Linux и с тех пор искал тот же уровень утонченности и красоты, и Haiku во многом ему соответствует.

Честно говоря, есть огрехи, но на удивление многие вещи, включая аппаратную начинку, к примеру WLAN или принтеры, "просто работают".

Однако, в первую очередь, система имеет концепцию рабочего окружения, отсутствующего в рабочих окружениях на Linux.

Наличие цельной системы (а не ядра и различных конкурирующих пользовательских окружений) делает все простым и последовательным.

Отсутствие различных сборок (дистрибутивов) делает все еще проще.

Расчет на работу только одного пользователя в системе еще более снижает сложность.

Результат: очень простая, утонченная, минималистичная в многих отношениях система, созданная для "простых смертных", а не для системных администраторов UNIX.

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

Приятно знать, что Haiku решает многие затронутые проблемы, включая родовые, которыми страдают рабочие окружения на Linux. Я уже писал о #LinuxUsability в прошлом цикле статей.

Одного дня мне хватило, чтобы убедиться: я хочу использовать это рабочее окружение для ежедневной работы, а также ищу варианты для моего вклада в развитие системы.

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

От автора перевода: это только первая статья из цикла про Haiku, остальные ждут перевода и будут опубликованы позже.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть