Bookworm – Những điểm mới của Hệ điều hành Raspberry Pi

Bookworm là một phiên bản Debian mới được phát hành dành cho hệ điều hành Raspberry Pi.

Năm 2023 Debian phát hành một phiên bản tên là Bookworm. Như bạn có thể đã biết, các bản phát hành Debian được đặt tên theo các nhân vật trong loạt phim Toy Story của Disney/Pixar, nhưng hiện nay đã có nhiều bản phát hành đến mức tất cả các nhân vật mà bạn có thể từng nghe nói đến đều đã được sử dụng. Bookworm là một nhân vật phụ trong Toy Story 3.

Vậy Bookworm có gì mới? Chà, không phải là nhiều lắm… nhưng cũng có khá nhiều thứ. Hãy cùng theo dõi.

Bản thân Debian Bookworm chủ yếu bao gồm các bản cập nhật gia tăng của phần mềm đã có trong bản phát hành Debian Bullseye trước đó. Có một số thay đổi nhỏ — hãy xem danh sách tại đây (https://wiki.debian.org/NewInBookworm) — nhưng hầu hết chúng sẽ không ảnh hưởng đến người dùng Raspberry Pi. Vì vậy, bản thân Bookworm thực sự không mang lại nhiều thay đổi.

Tuy nhiên, trong khoảng một năm trở lại đây, họ đã nghiên cứu một số thay đổi lớn về kiến trúc đối với Raspberry Pi Desktop và những thay đổi này lần đầu tiên được ra mắt trong bản phát hành Bookworm. Và đây là nơi bạn có thể nhận thấy một số khác biệt.

Wayland

Điều quan trọng nhất trong này là việc chuyển sang sử dụng Wayland (https://wayland.freedesktop.org/) thay vì X11 làm hệ thống hiển thị.

Trong khoảng 35 năm qua, hầu hết các môi trường máy tính để bàn Unix, bao gồm cả Raspberry Pi Desktop, đều dựa trên hệ thống cửa sổ X11. Tuy nhiên, không có gì đáng ngạc nhiên đối với một phần mềm đã có tuổi đời vài thập kỷ, X11 có nhiều hạn chế khác nhau khi sử dụng trên các máy tính hiện đại. Để giải quyết những vấn đề này, hầu hết các bản phân phối Linux đang chuyển sang sử dụng Wayland; những người chưa làm được đang có kế hoạch thực hiện trong tương lai.

Ưu điểm chính của Wayland là hiệu suất. Trong X11, có hai ứng dụng riêng biệt liên quan đến việc vẽ cửa sổ (window). Máy chủ hiển thị (display server) được sử dụng để tạo các cửa sổ trên màn hình và cung cấp cho các ứng dụng một nơi để vẽ nội dung của chúng; trình quản lý cửa sổ (window manager) được sử dụng để định vị các cửa sổ tương đối với nhau và trang trí các cửa sổ bằng thanh tiêu đề (title bar) và khung (frame). Trong hệ thống Wayland, hai chức năng này được kết hợp trong một ứng dụng, được gọi là bộ tổng hợp (compositor), do đó, ứng dụng chỉ cần nói chuyện với một thứ chứ không phải hai để vẽ các cửa sổ của nó.

Điều này cũng mang lại lợi thế về bảo mật. Vì ở X11, tất cả ứng dụng đều liên lạc với máy chủ hiển thị và giao tiếp này lại là hai chiều, tất cả các ứng dụng có thể trao đổi thông tin với nhau. Với Wayland, tất cả ứng dụng đều được cách ly với nhau ở cấp độ tổng hợp (compositor level), vì vậy không ứng dụng nào có thể biết ứng dụng khác đang làm gì.

Bản thân Wayland chỉ là một giao thức (protocol). Để sử dụng nó, bạn cần một bộ tổng hợp hỗ trợ Wayland. Bản phát hành Raspberry Pi OS trước đó đã sử dụng trình quản lý cửa sổ Mutter, trình quản lý này có thể hoạt động như một bộ tổng hợp Wayland (Wayland compositor). Nhưng hóa ra đây lại là một lựa chọn tồi; nó tương đối chậm, cồng kềnh và hơi lỗi thời, đó là lý do tại sao nhà phát hành chỉ cung cấp hỗ trợ Wayland trên cơ sở thử nghiệm dưới thời Bullseye.

Bookworm sử dụng một bộ tổng hợp có tên Wayfire (https://github.com/WayfireWM/wayfire). Điều này sử dụng một thư viện Wayland tiêu chuẩn có tên là wlroots, được sử dụng bởi một số bộ tổng hợp Wayland hiện đại. Và bởi vì Wayfire hoạt động tốt hơn rất nhiều với tư cách là bộ tổng hợp Wayland trên Raspberry Pi so với Mutter, Wayland hiện là chế độ hoạt động mặc định cho máy tính để bàn. (Với một lưu ý – hiện tại, Wayland chỉ là mặc định trên Raspberry Pi 4 và 5. Hiệu suất của Wayfire trên các nền tảng trước đó vẫn đang được tối ưu hóa, vì vậy hiện tại họ sẽ tiếp tục chạy máy chủ hiển thị X11 cũ và trình quản lý cửa sổ Openbox , nhưng đến một lúc nào đó, những nền tảng này cũng sẽ được chuyển sang Wayfire).

Nếu bạn boot Raspberry Pi OS trên Pi 4 hoặc 5, giờ đây bạn sẽ thấy một Wayfire desktop. Nó trông khá giống với desktop quen thuộc từ Bullseye, nhưng bề ngoài rất dễ đánh lừa – phải tốn nhiều công sức để đạt được điểm mà hai môi trường máy tính để bàn trông giống nhau!

Vẫn còn một thanh tác vụ (taskbar) ở phía trên màn hình cho phép bạn chạy ứng dụng và xem trạng thái của các hệ thống khác, nhưng đây là một ứng dụng hoàn toàn mới. Ở phiên bản Bullseye, đây là một ứng dụng có tên lxpanel, nhưng hiện tại ứng dụng này đã được thay thế bằng wf-panel-pi (viết tắt của “wayfire panel for Raspberry Pi”).

Điều này dựa trên wf-shell, ứng dụng bảng mẫu (example panel application) từ các tác giả của Wayfire, nhưng nhà sản xuất đã sửa đổi rất nhiều để nó trông và hoạt động giống như lxpanel. Phần lớn nhất của công việc này là chuyển (port) tất cả các plugin lxpanel hiện có – các icon điều khiển âm lượng, network, Bluetooth, v.v. – để tất cả chúng đều hoạt động với wf-panel-pi.

Bản thân nền màn hình (desktop background) vẫn được vẽ bởi trình quản lý tệp pcmanfm cũ được sử dụng ở Bullseye, nhưng điều này đã được sửa đổi để nó sử dụng Wayland làm giao thức hiển thị thay vì X11, vì vậy giờ đây nó là một ứng dụng hoàn toàn Wayland.

Cách các ứng dụng riêng lẻ hoạt động trong môi trường Wayland phụ thuộc vào cách chúng được viết. Các bộ công cụ đồ họa tiêu chuẩn (standard graphics toolkits), như GTK và Qt, hiện đã tuân thủ Wayland – chúng có thể phát hiện khi một ứng dụng sử dụng chúng đang chạy trong môi trường Wayland và sau đó định tuyến (route) tất cả các lệnh gọi đồ họa qua giao thức Wayland, chạy như các ứng dụng Wayland. Hầu hết các ứng dụng được cài đặt sẵn như một phần của Raspberry Pi Desktop đều sử dụng một trong các bộ công cụ này nên có thể chạy dưới dạng ứng dụng Wayland.

Một số ứng dụng sử dụng bộ công cụ không tuân thủ Wayland hoặc bỏ qua bộ công cụ bằng cách thực hiện các cuộc gọi trực tiếp tới X11. Mặc dù có vẻ như các ứng dụng này không hoạt động trên Wayland nhưng vẫn có cách khắc phục điều đó. Việc implement Wayland bao gồm một phần mềm có tên Xwayland, đây là máy chủ hiển thị X11 (X11 display server) nằm trên top của Wayland. Nó xử lý tất cả các phần phi đồ họa (non-graphical) của chính X và pass bất kỳ phần đồ họa nào sang triển khai Wayland bên dưới. XWayland được thiết kế để tự động khởi chạy ngay khi ứng dụng yêu cầu bất cứ điều gì từ X, vì vậy tất cả điều này sẽ hoạt động liền mạch.

Vậy đó là Wayland. Về cơ bản, mọi thứ bạn nhìn thấy trên desktop hiện được vẽ hoàn toàn khác với cách nó được vẽ trong Bullseye – nhưng bạn sẽ không nhận thấy bất kỳ sự khác biệt đáng kể nào! Một điều bạn có thể nhận thấy là Wayland cho phép chúng ta thêm một số hình ảnh đẹp mắt; các window giờ đây có bóng tinh tế và chúng mở và đóng bằng hình ảnh động thay vì chỉ xuất hiện và biến mất.

Bookworm OS cũng đã thêm một số plugin mới. Plugin “Power” được bật theo mặc định và theo dõi các sự cố về nguồn điện như điện áp nguồn thấp hoặc dòng điện USB quá mức. Nếu một trong hai điều đó xảy ra, một thông báo sẽ được hiển thị để cho bạn biết điều gì đã xảy ra và sau đó một biểu tượng sẽ hiển thị trên taskbar,  click vào đây sẽ đưa bạn đến một trang web có thông tin về sự cố và các cách khắc phục.

Một plugin mới khác là “GPU”. Nó cho thấy một đồ thị tải (load) trên GPU của Raspberry Pi, tương tự như plugin CPU có sẵn. Cái này không được enable mặc định, nó có thể được thêm bằng cách click-phải lên taskbar và chọn “Add/Remove Plugins”.

Như đã nói ở trên, làm việc trên Wayland/Wayfire sẽ tiếp tục. Nó sẽ tiếp tục tối ưu hóa để phù hợp phần cứng của model mới của Raspberry Pi.

PipeWire

Cùng với những thay đổi để vẽ đồ họa, Bookworm OS cũng thay đổi những gì được sử dụng để điều khiển âm thanh.

Ban đầu, desktop sử dụng giao diện âm thanh ALSA của Linux để giao tiếp với phần cứng âm thanh. Cách làm này hiệu quả nhưng còn khá thô sơ và có nhiều hạn chế. Một vài năm trước, Raspberry Pi OS đã chuyển sang sử dụng giao diện PulseAudio, giao diện này nằm trên top của lớp ALSA cấp thấp (low-level ALSA layer). Khiến nó bổ sung thêm rất nhiều tính linh hoạt: nó giúp quản lý những thứ như thiết bị âm thanh Bluetooth dễ dàng hơn, cho phép trộn âm thanh từ nhiều ứng dụng với nhau, và cho phép âm thanh dễ dàng chuyển đổi giữa các đầu ra trong khi play.

Đối với phiên bản này, PulseAudio đã được thay thế bằng hệ thống âm thanh PipeWire (https://pipewire.org/) mới hơn. Điều này được xây dựng dựa trên các tính năng do PulseAudio cung cấp, quan trọng nhất là cung cấp hỗ trợ tốt hơn cho video đi kèm âm thanh. Nó làm giảm độ trễ, điều này rất quan trọng trong nhiều ứng dụng. Nó quản lý các thiết bị âm thanh Bluetooth tốt hơn, ghi nhớ những thiết bị nào đang được sử dụng khi tắt nguồn và tự động kết nối lại chúng khi khởi động. Cuối cùng, nó được thiết kế để hoạt động tốt hơn trong môi trường Wayland bảo mật hơn, nơi các ứng dụng được tách biệt với nhau.

Từ quan điểm người dùng, PipeWire có thể được điều khiển bằng bất kỳ ứng dụng nào điều khiển PulseAudio, do đó, các điều khiển volume và microphone trên taskbar hoạt động chính xác như trong PulseAudio, nhưng với Bookworm, chúng đang nói chuyện với PipeWire chứ không phải PulseAudio.

Network

Đồ họa và âm thanh đều mới, tiếp theo còn gì nữa không?

Trong thời Bullseye, OS này đã triển khai việc sử dụng bộ điều khiển mạng  NetworkManager (https://networkmanager.dev/) như một tùy chọn có thể được chọn trong raspi-config. Đây hiện là cơ chế kiểm soát tiêu chuẩn để kết nối mạng trong hầu hết các bản phân phối Linux và hiện là bộ điều khiển mạng (network controller) mặc định cho Bookworm, thay thế hệ thống trước đó là dhcpcd. NetworkManager thực hiện mọi thứ mà dhcpcd đã làm, nhưng bổ sung thêm một loạt chức năng bổ sung, bao gồm khả năng kết nối với các mạng không dây ẩn (hidden wireless network), kết nối với mạng riêng ảo (virtual private network/VPN) và sử dụng Raspberry Pi làm điểm phát sóng không dây (wireless hotspot). Nó cũng bao gồm nhiều tùy chọn tùy chỉnh hơn cho những ai muốn thử nghiệm sự phức tạp của kết nối mạng.

Plugin network trên taskbar trông gần giống với plugin điều khiển dhcpcd trong Bullseye, nhưng hiện có mục “Advanced Options” ở dưới cùng – điều này cho phép bạn truy cập chức năng mới do NetworkManager cung cấp.

Firefox

Một thay đổi quan trọng khác là Bookworm hiện đang cung cấp tùy chọn trình duyệt thứ hai, với việc ra mắt phiên bản Mozilla Firefox (https://www.mozilla.org/en-GB/firefox/new/) được tối ưu hóa cho Raspberry Pi.

Đây là lần đầu tiên Raspberry Pi OS chính thức hỗ trợ Firefox. Trước đây, phiên bản duy nhất có sẵn Firefox là phiên bản cũ của Debian, trong khi đó những nhà phát triển Bookworm đã thực hiện rất nhiều công việc để đảm bảo trải nghiệm tốt nhất có thể khi chạy phiên bản Firefox mới nhất trên Raspberry Pi. Chúng tôi đã hợp tác chặt chẽ với Mozilla và cộng đồng Firefox, đồng thời chúng tôi đang đóng góp công việc của mình để mang lại lợi ích cho người dùng Firefox trên tất cả các nền tảng.

Một tính năng chính là hỗ trợ V4L2 codec để Firefox có thể sử dụng hardware h.264 decoder trên Raspberry Pi. Trên các model Raspberry Pi cũ hơn, điều này cải thiện đáng kể hiệu suất và giảm tải CPU khi play back video HD. Bookworm còn thêm khả năng hỗ trợ cho Widevine DRM, được một số dịch vụ phát video trực tuyến (video streaming service) sử dụng, và đóng góp các tính năng tối ưu hóa đồ họa nhằm cải thiện hiệu suất trên nhiều website trên các thiết bị tiêu thụ điện năng thấp. Đối với cuộc gọi điện video, Bookworm đảm bảo rằng Firefox trên Raspberry Pi OS hoạt động tốt với camera CSI (sử dụng libCamera) và tính năng chia sẻ màn hình trên Wayland.

Tài liệu

Thật sự đã có nhiều thay đổi ảnh hưởng đến tài liệu, bạn có thể xem ở đây (https://www.raspberrypi.com/documentation/). Nhóm làm tài liệu của Raspberry Pi đã làm việc cật lực để đảm bảo cập nhật phản ánh trạng thái mới của thế giới. Ngoài ra còn những thay đổi đáng kể chưa được đề cập ở đây, chẳng hạn như thay đổi ở module Python được cài đặt như thế nào (http://rptl.io/venv).

Điều gì còn thiếu?

Với những thay đổi quan trọng như thế này, khó đảm bảo rằng mọi thứ ở phiên bản cũ vẫn hoạt động với phiên bản mới, và mặc dù các nhà phát triển Bookworm đã cố gắng hết sức để giữ những điều đó ở mức tối thiểu, vẫn có một số tính năng mà họ chưa đem vào ở lần phát hành này.

  • Sự bồi thường cho các màn hình có sử dụng tính năng overscan rất phức tạp trong Wayland và vẫn chưa làm cho nó hoạt động được nên hiện tại tính năng này đã bị xóa. Phần lớn các màn hình hiện nay không cần đến nó, nhưng nó sẽ trở lại khi họ tìm ra cách tốt nhất để thực hiện điều đó!
  • Khay hệ thống (system tray) – khu vực trên taskbar nơi các ứng dụng có thể để icon của chúng – phải sử dụng cơ chế hoàn toàn mới để hoạt động với security Wayland model. Điều này có nghĩa là một số ứng dụng có thể cần được cập nhật để icon của chúng xuất hiện ở đó.
  • Tương tự, security Wayland model ngăn chặn truy cập máy tính từ xa (remote desktop) trước đây, do đó, một VNC server mới, được gọi là wayvnc, đang được sử dụng thay vì RealVNC. Điều này hạn chế các ứng dụng client có thể kết nối với nó một chút. Có thể sử dụng tốt với ứng dụng TigerVNC client, có sẵn tại đây (https://tigervnc.org/).
  • Hiện tại cũng có một sự hồi quy với bản thân RealVNC server, nó vẫn được sử dụng trong Bookworm trên các model Raspberry Pi cũ hơn chưa chạy Wayland. Phiên bản 64-bit hoạt động tốt, nhưng phiên bản 32-bit hiện không tương thích với Bookworm. Cần chờ bản cập nhật từ RealVNC. Trong thời gian chờ đợi, nếu bạn cần truy cập máy tính từ xa trên Raspberry Pi Zero, 1, 2 hoặc 3, khuyến cáo bạn nên sử dụng Bullseye OS trong thời gian này.

Một số chương trình đã bị gỡ bỏ từ Recommend Software và image:

  • Công cụ kính lúp (Magnifier tool) không hoạt động với Wayfire, nhưng Wayfire đã tích hợp sẵn kính lúp riêng (tốt hơn) – chỉ cần nhấn ctrl-alt-M để bật và tắt.
  • Các IDE BlueJ và Greenfoot Java không tương thích với Wayland và Sonic Pi không tương thích với PipeWire. Đây là các chương trình của bên thứ ba nên đã bị xóa cho đến khi nhà phát triển cập nhật chúng.

Chỉ để đề phòng…

Tất cả những thay đổi này được thiết kế để đưa Raspberry Pi OS phù hợp hơn với những gì các bản phân phối Linux khác đang thực hiện, nhiều bản phân phối đang thực hiện hoặc đã thực hiện chuyển đổi sang Wayland, PipeWire và NetworkManager. Điều này sẽ mang lại cho chúng ta một platform tốt để phát triển trong tương lai, với sự đảm bảo rằng máy tính để bàn của chúng ta đang sử dụng các thành phần cơ bản giống như hầu hết phần còn lại của hệ sinh thái Linux dành cho máy tính để bàn.

Mặc dù chúng tôi đã sử dụng Wayland và PipeWire nội bộ được gần một năm, nhưng quy mô lớn của những thay đổi có nghĩa là, trong một số tình huống sử dụng cụ thể, cái này hay cái kia có thể gây ra sự cố. Vì lý do này, Advanced Settings menu trong raspi-config chứa các tùy chọn để kích hoạt lại hệ thống hiển thị X11/Openbox cũ và PulseAudio. Bạn không cần phải sử dụng những thứ này, nhưng vẫn có tùy chọn để đề phòng!

Làm sao để có nó

Khuyến cáo rằng để nâng cấp phiên bản chính (major version), bạn nên tạo lại image file của SD card của mình và bắt đầu lại bằng một image file sạch. Trước đây, các nhà sản xuất đã đề xuất các quy trình cập nhật image file hiện có lên phiên bản mới, nhưng luôn cảnh báo trước rằng họ không khuyến nghị điều đó và bạn phải tự chịu rủi ro khi thực hiện việc này.

Lần này, do những thay đổi về kiến trúc cơ bản rất đáng kể nên nhà sản xuất không đề xuất bất kỳ quy trình nào để nâng cấp Bullseye image lên Bookworm; bất kỳ nỗ lực nào để thực hiện việc này gần như chắc chắn sẽ dẫn đến việc desktop không khởi động được và mất dữ liệu. Cách duy nhất để có Bookworm là tạo SD card bằng Raspberry Pi Imager (https://www.raspberrypi.com/software/) hoặc bạn tự tải xuống image file (https://www.raspberrypi.com/software/operating-systems/) và flash Bookworm image bằng tool yêu thích của bạn.

(Nguồn raspberrypi.com)

Icons made by Freepik from www.flaticon.com