Це непарний рік, тому є новий великий випуск Debian, і зараз ми випускаємо відповідну версію ОС Raspberry Pi.
Цьогорічний випуск Debian називається Bookworm. (Як Ви, мабуть, знаєте, випуски Debian названі на честь персонажів із франшизи Історії іграшок Disney/Pixar, але наразі випусків так багато, що всі персонажі, про яких Ви могли чути, уже використані. Книжковий хробак був другорядним персонажем у Історії іграшок 3 — і ні, ми його теж не пам'ятаємо...)
Отже, що нового в Bookworm? Ну, не дуже багато… але все ж майже все. Дозвольте пояснити.
Сам Debian Bookworm здебільшого складається з поступових оновлень програмного забезпечення, яке було в попередньому випуску Debian Bullseye. Є кілька невеликих змін — перегляньте тут список, — але вони переважно не вплинуть на користувачів Raspberry Pi. Отже, сам Bookworm не приніс багато змін.
Однак протягом останнього року чи близько того ми працювали над деякими серйозними змінами архітектури робочого столу Raspberry Pi, і вони вперше запущені у випуску Bookworm. І тут Ви можете помітити деякі відмінності.
Wayland
Найважливішим із них є перехід до використання Wayland замість X11 як системи відображення.
Протягом останніх 35 років або близько того більшість робочих середовищ Unix, включаючи робочий стіл Raspberry Pi, базувалися на віконній системі X11. Але, як це не дивно для програмного забезпечення, якому кілька десятиліть, X11 має різні обмеження при використанні на сучасних комп’ютерах. Щоб вирішити ці проблеми, більшість дистрибутивів Linux переходять на використання Wayland; ті, хто ще не зробив цього, планують зробити це в майбутньому.
Головною перевагою Wayland є продуктивність. У X11 є дві окремі програми, які беруть участь у малюванні вікна. Сервер відображення використовується для створення вікон на екрані та надання додаткам місця для малювання свого вмісту; менеджер вікон використовується для розташування вікон відносно одне одного та для прикраси їх рядками заголовків і рамками. У системі Wayland ці дві функції об’єднані в одній програмі, яка називається композитором, тому програмі потрібно спілкуватися лише з одним предметом, а не з двома, щоб намалювати вікна.
Це також дає перевагу безпеки. Оскільки в X11 усі програми спілкувалися з дисплеєм-сервером, і цей зв’язок був двостороннім, усі програми могли обмінюватися інформацією одна з одною. У Wayland всі програми ізольовані одна від одної на рівні композитора, тому жодна програма не може бачити, що робить інша програма.
Сам Wayland — це просто протокол. Щоб використовувати його, вам потрібен композитор, який підтримує Wayland. У попередньому випуску ОС Raspberry Pi ми використовували диспетчер вікон Mutter, який міг функціонувати як композитор Wayland. Але це виявилося невдалим вибором; він був відносно повільним і громіздким, і трохи застарілим, тому ми пропонували підтримку Wayland лише на експериментальній основі під Bullseye.
Для Bookworm ми використовуємо композитор під назвою Wayfire. Для цього використовується стандартна бібліотека Wayland під назвою wlroots, яка використовується кількома сучасними композиторами Wayland. І оскільки Wayfire набагато краще працює як композитор Wayland на Raspberry Pi, ніж Mutter, Wayland тепер є режимом роботи за умовчанням для робочого столу. (З одним застереженням — наразі Wayland є типовим лише для Raspberry Pi 4 і 5. Продуктивність Wayfire на попередніх платформах все ще оптимізується, тому наразі вони продовжуватимуть запускати старий дисплейний сервер X11 і віконний менеджер Openbox , але в якийсь момент ці платформи також будуть переведені на Wayfire.)
Якщо ви завантажите ОС Raspberry Pi на Pi 4 або 5, ви отримаєте робочий стіл Wayfire. Він має виглядати майже ідентично робочому столу, до якого ви звикли з Bullseye, але зовнішній вигляд оманливий — потрібно було багато працювати, щоб досягти того моменту, коли два робочих середовища виглядають однаково!
У верхній частині екрана все ще є панель завдань, яка дозволяє запускати програми та переглядати стан різних систем, але це абсолютно нова програма. Під Bullseye це була програма під назвою lxpanel, але тепер її замінено на wf-panel-pi (скорочення від «wayfire panel for Raspberry Pi»).
Це базувалося на wf-shell, зразковій програмі панелі від авторів Wayfire, але ми суттєво модифікували її, щоб виглядати та працювати як lxpanel. Найбільша частина цієї роботи полягала в перенесенні всіх існуючих плагінів lxpanel – піктограм, які керують гучністю, мережею, Bluetooth тощо, щоб тепер усі вони працювали з wf-panel-pi.
Сам фон робочого столу все ще малюється старим файловим менеджером pcmanfm, який використовувався під Bullseye, але його було змінено так, що він використовує Wayland як протокол відображення, а не X11, тож тепер це рідна програма Wayland.
Те, як окремі програми працюють у середовищі Wayland, залежить від того, як вони написані. Стандартні набори графічних інструментів, такі як GTK і Qt, тепер сумісні з Wayland — вони можуть визначати, коли програма, що їх використовує, працює в середовищі Wayland, а потім направляють усі графічні виклики через протокол Wayland, запускаючись як власні програми Wayland. Більшість програм, попередньо встановлених як частина робочого столу Raspberry Pi, використовують один із цих наборів інструментів, тому тепер працюють як програми Wayland.
Кілька програм використовують набір інструментів, який не сумісний з Wayland, або повністю обходять набір інструментів, здійснюючи прямі виклики до X11. Хоча здається, що ці програми не працюватимуть на Wayland, для цього є виправлення. Наша реалізація Wayland включає частину програмного забезпечення під назвою XWayland — це дисплейний сервер X11, який розташований поверх Wayland. Він обробляє всі неграфічні частини самого X і передає будь-які графічні частини базовій реалізації Wayland. XWayland розроблений для автоматичного запуску, щойно програма запитує будь-що від X, тому все має працювати без проблем.
Отже, це Wayland. По суті, все, що Ви бачите на робочому столі, тепер малюється зовсім не так, як це було намальовано під Bullseye — але якщо ми зробили свою роботу правильно, Ви не повинні помітити суттєвих відмінностей! Одна річ, яку Ви можете помітити, це те, що Wayland дозволяє нам додати трохи гарних зображень; вікна тепер мають тонкі тіні, і вони відкриваються та закриваються з анімацією, а не просто з’являються та зникають.
Ми також додали кілька нових плагінів. Плагін «Power» увімкнено за замовчуванням і відстежує проблеми з живленням, як-от низька напруга джерела живлення або надмірний струм USB. У будь-якому випадку з’явиться сповіщення про те, що сталося, а на панелі завдань з’явиться піктограма — натиснувши цю кнопку, Ви перейдете на веб-сторінку з додатковою інформацією про проблему та можливі способи її вирішення.
Інший новий плагін — «GPU», який показує графік навантаження на графічний процесор Raspberry Pi, подібний до того, який показав існуючий плагін CPU для ЦП. Це не ввімкнено за замовчуванням, але його можна додати, клацнувши правою кнопкою миші панель завдань і вибравши «Додати/видалити плагіни».
Як ми вже казали вище, робота над Wayland/Wayfire триває — ми все ще оптимізуємо апаратне забезпечення попередніх моделей Raspberry Pi і сподіваємося, що згодом зможемо розгорнути робочий стіл Wayland для всіх моделей Raspberry Pi.
PipeWire
Отже, ми змінили те, що використовується для малювання всієї графіки. Разом з цим, ми також змінили те, що використовується для керування звуком.
Спочатку робочий стіл використовував звуковий інтерфейс Linux ALSA для зв’язку з аудіоапаратним забезпеченням. Це спрацювало, але було досить примітивним і мало численні обмеження. Кілька років тому ми перейшли на використання інтерфейсу PulseAudio, який розташований поверх низькорівневого рівня ALSA. Це додало набагато більше гнучкості: стало легше керувати такими речами, як аудіопристрої Bluetooth, дозволяючи мікшувати аудіо з кількох програм і дозволяючи легко перемикатися між виходами під час відтворення.
У цьому релізі PulseAudio було замінено на новішу аудіосистему PipeWire. Це базується на функціях, які пропонує PulseAudio, головним чином у забезпеченні кращої підтримки аудіо, що супроводжує відео. Це зменшує затримку, що важливо в багатьох програмах. Він краще керує аудіопристроями Bluetooth, запам’ятовуючи, які з них використовувалися після вимкнення живлення, і автоматично підключаючи їх під час завантаження. Нарешті, він розроблений для кращої роботи в безпечнішому середовищі Wayland, де програми ізольовані одна від одної.
З точки зору користувача, PipeWire можна контролювати за допомогою будь-якої програми, яка керує PulseAudio, тому елементи керування гучністю та мікрофоном на панелі завдань працюють точно так само, як і в PulseAudio, але в Bookworm вони спілкуються з PipeWire, а не з PulseAudio.
Інтернет
Графіка та звук нові — що ще?
Під час Bullseye ми розгорнули використання мережевого контролера NetworkManager як параметр, який можна вибрати в raspi-config. Тепер це стандартний механізм керування мережею в більшості дистрибутивів Linux, а також стандартний мережевий контролер для Bookworm, який замінює попередню систему dhcpcd. NetworkManager робить те, що робив dhcpcd, але додає купу додаткових функцій, включаючи можливість підключення до прихованих бездротових мереж, підключення до віртуальних приватних мереж (VPN) і використання Raspberry Pi як бездротової точки доступу. Він також містить набагато більше параметрів налаштування для тих, хто хоче приділяти більше уваги дрібницям свого мережевого підключення.
Мережевий плагін на панелі завдань виглядає майже ідентично тому, який керував dhcpcd у Bullseye, але тепер має пункт «Додаткові параметри» внизу — це дає вам доступ до нової функціональності, запропонованої NetworkManager.
Firefox
Ще одна значна зміна полягає в тому, що тепер ми пропонуємо другий варіант браузера, запустивши версію Mozilla Firefox, оптимізовану для Raspberry Pi.
Це перший раз, коли ми офіційно обслуговуємо Firefox — раніше єдиною доступною версією була стара версія від Debian, тоді як зараз ми виконали багато роботи, щоб забезпечити найкращий досвід під час запуску останньої версії Firefox на Raspberry Рі. Ми тісно співпрацюємо з Mozilla та спільнотою Firefox і докладаємо зусиль, щоб допомогти користувачам Firefox на всіх платформах.
Однією з ключових особливостей було ввімкнення підтримки кодека V4L2, щоб Firefox міг використовувати апаратний декодер h.264 на Raspberry Pi. У старих моделях Raspberry Pi це значно покращує продуктивність і зменшує навантаження на ЦП під час відтворення HD-відео. Ми ввімкнули підтримку Widevine DRM, який використовується багатьма службами потокового відео, і внесли оптимізацію графіки, яка покращує продуктивність низки веб-сайтів на пристроях із низьким енергоспоживанням. Ми переконались, що для відеодзвінків Firefox на ОС Raspberry Pi працює з камерами CSI (за допомогою libcamera) і спільним доступом до робочого столу на Wayland.
Документація
Як і слід було очікувати від таких кардинальних змін, наша документація мала величезний побічний ефект, і команда працювала за лаштунками, щоб переконатися, що вона відображає новий стан світу. Це стосується особливо речей, про які ми навіть ніколи не згадували, як-от зміни в способі встановлення модулів Python.
Це була величезна робота, з великою кількістю змін у всьому стосі документації, тож якщо ви натрапите на місце, де документація не оновлена для Bookworm, будь ласка, напишіть нам про це!
Чого не вистачає?
З будь-якою значною зміною, як ця, може бути важко переконатися, що все зі старої версії все ще працює в новій, і хоча ми дуже старалися звести такі речі до мінімуму, є кілька функцій, які ми не змогли потрапити в цей випуск.
- Компенсація для дисплеїв, які використовують overscan, складову Wayland, і ми ще не повністю запрацювали, тому це наразі видалено. Переважній більшості сучасних дисплеїв це не потрібно, але ми повернемо це назад, коли визначимо, як найкраще це зробити!
- Системний трей — область на панелі завдань, де програми можуть розміщувати власні піктограми — має використовувати абсолютно новий механізм для роботи з моделлю безпеки Wayland. Це означає, що деякі програми, можливо, потрібно оновити, щоб їхні значки з’явилися там.
- Подібним чином модель безпеки Wayland запобігає традиційному доступу до віддаленого робочого столу, тому замість RealVNC використовується новий сервер VNC під назвою wayvnc. Це дещо більше обмежень з точки зору клієнтських програм, які можуть до нього підключатися — ми досягли хороших результатів із клієнтом TigerVNC, доступним тут.
- Наразі також існує регресія самого сервера RealVNC, який досі використовується в Bookworm на старіших моделях Raspberry Pi, які ще не запускають Wayland. 64-розрядна версія працює нормально, але 32-розрядна версія наразі несумісна з Bookworm — ми чекаємо оновлення від RealVNC. Тим часом, якщо вам потрібен віддалений доступ до робочого столу на Raspberry Pi Zero, 1, 2 або 3, ми рекомендуємо поки що використовувати Bullseye.
Кілька програм видалено з рекомендованого програмного забезпечення та повного зображення:
- Емулятор SenseHAT наразі несумісний із Bookworm — зараз ми над цим працюємо, і сподіваємося, що він відновиться за кілька тижнів.
- Інструмент спеціальних можливостей Magnifier не працює з Wayfire, але Wayfire вже має власну (кращу) вбудовану лупу — просто натисніть ctrl-alt-M, щоб увімкнути або вимкнути її.
- BlueJ і Greenfoot Java IDE несумісні з Wayland, а Sonic Pi несумісний з PipeWire — це програми сторонніх розробників, тому їх було видалено, доки їхні розробники не оновлять їх.
Про всяк випадок…
Усі ці зміни спрямовані на те, щоб ОС Raspberry Pi відповідала тому, що роблять інші дистрибутиви Linux — багато з них роблять або вже зробили перехід на Wayland, PipeWire та NetworkManager. Таким чином, це дає нам гарну платформу для майбутнього розвитку, запевняючи, що наш робочий стіл базується на тих самих базових компонентах, що й більшість решти екосистеми настільного комп’ютера Linux.
Хоча ми використовуємо Wayland і PipeWire внутрішньо вже майже рік, самий масштаб змін означає, що в деяких конкретних сценаріях використання те чи інше може спричинити проблеми. З цієї причини меню додаткових налаштувань у raspi-config включає параметри повторного ввімкнення старої системи відображення X11/Openbox і PulseAudio. Вам не потрібно використовувати їх, але варіант є на всякий випадок!
Як його отримати
Ми завжди говорили, що для основного оновлення версії Вам слід повторно створити образ вашої SD-карти та почати заново з чистого образу. Раніше ми пропонували процедури оновлення існуючого зображення до нової версії, але завжди із застереженням, що ми не рекомендуємо цього, і Ви робите це на власний ризик.
Цього разу, оскільки зміни базової архітектури є дуже значними, ми не пропонуємо жодної процедури для оновлення образу Bullseye до Bookworm; будь-яка спроба зробити це майже напевно закінчиться незавантаженим робочим столом і втратою даних. Єдиний спосіб отримати Bookworm — це або створити SD-карту за допомогою Raspberry Pi Imager, або завантажити та прошити образ Bookworm звідси за допомогою обраного Вами інструмента.