Lại tản mạn về vai trò của Linux

Nghe đồn giới IoT muốn ứng dụng Bluetooth LE nhưng gặp khó.

Quay đi quay lại thì mình thấy thư viện về Bluetooth có độ hoàn thiện nhất là BlueZ. Khó ở đây là thư viện này được tạo ra với mục đích dành cho viết ứng dụng Linux, vì nó dùng event loop của GLib ở trỏng. GLib là một trong những thành phần lõi của bộ GTK, bộ toolkit dành cho lập trình giao diện đồ họa của Linux. Đã thế nó còn dùng D-Bus nữa chứ. D-Bus là một đường giao tiếp chung, cho phép các ứng dụng desktop giao tiếp với nhau. Sau đây là ví dụ về ứng dụng của D-Bus: Vào thời mà Yahoo Messenger còn phổ biến, dân Linux thường chat Yahoo bằng một phần mềm "nhiều trong một" tên là Pidgin (ngoài Yahoo ra, còn có thể chat cùng lúc với Google Hangout, Facebook Messenger). Phần mềm này có khả năng thú vị là nhận biết khi nào máy bạn đang có mạng, rớt mạng để hiện chỉ thị tương ứng (trạng thái màu xám, các avatar bạn bè bị phủ màu xám). Khi có mạng trở lại thì phần mềm này sẽ tự đổi trạng thái, tự đăng nhập vào các dịch vụ chat và cập nhật danh sách bạn bè. Để nhận biết tình trạng mạng, nó không chơi trò cơ bắp là liên tục kết nối đại vào server nào đấy. Thay vì vậy nó trao đổi với một phần mềm khác tên là NetworkManager. Khi rớt mạng hoặc có mạng, NetworkManager sẽ thông báo trên đường D-Bus và các phần mềm khác "đăng ký" vào D-Bus sẽ nhận được tin.

Đối với những người cần dùng thiết bị USB-3G (như cục D-Com 3G của Viettel chẳng hạn), trên Linux cũng có một phần mềm tên là ModemManager, chạy ngầm để khai thác thiết bị này, ví dụ như chọn sóng của nhà mạng nào, nhập username, password để quay số vào nhà mạng đó, bật sang chế độ data, gửi tin nhắn SMS v.v. ModemManager cũng cho phép giao tiếp qua D-Bus. Chẳng hạn khi cắm thiết bị vào thì danh mục của Network Manager sẽ xuất hiện mục để kết nối mạng 3G, hoặc bạn có thể viết ứng dụng riêng để gửi tin nhắn SMS, lấy các danh bạ lưu trong SIM, tất cả bằng việc giao tiếp với ModemManager qua D-Bus.

...

Let VirtualBox bridge network adapter work with Alpine Linux guest

There are many times that I need to launch a virtual Linux server to test something. If no Ubuntu specific feature is needed, I often use Alpine Linux for the virtual machine, for its lightness.

When I run a Linux VM, I always need to SSH to it, so in VirtualBox, I need to select "Bridge Adapter" as network adapter. Things just work fine if the guest machine is Ubuntu. But the first time setup for Alpine Linux (as guest machine), it doesn't work and the virtual machine cannot talk DHCP. In that case, you have to do one more step. Under Network Adapter > Advanced, look for "Adapter Type" and change it to "Paravirtualized Network (virtio-net)".

virtio-net

For more info about VirtIO, you can read here: https://www.ibm.com/developerworks/library/l-virtio/

...