New FAMILUG

The PyMiers

Sunday, 31 January 2021

Chạy OpenBSD trên Laptop ASUS ZenBook 14 2021

## Giới thiệu - Quảng cáo

OpenBSD là hệ điều hành lừng danh về chuyện "bảo mật" nhất trái đất.

Trong suốt hơn 25 năm, chỉ có 2 lỗ hổng lớn xảy ra.


Khi các hệ điều hành khác chạy theo tính năng, thì OpenBSD tập trung vào: security (bảo mật), và code đơn giản, chính xác.

Bảo mật không phải lý do duy nhất, OpenBSD vốn nổi tiếng với việc hệ thống đơn giản (không dùng Systemd), tài liệu (manpage) đầy đủ, dễ đọc, dễ hiểu.

Để thấy rõ hơn sự kiên quyết của OpenBSD đối với bảo mật ra sao, đây là vài gạch đầu dòng: 

- Sau lỗ hổng bảo mật to nhất nhì thập kỷ của Intel mang tên Spectre, OpenBSD quyết định tắt tính năng Hyper-threading đi https://www.mail-archive.com/source-changes@openbsd.org/msg99141.html

Việc này có nghĩa là nếu trên Windows/Linux thấy máy có 8 CPUs thì trên OpenBSD chỉ có 4 CPUs/Core. (thường các máy sẽ tính mỗi CPU nếu có 2 threads thì sẽ hiển thị số core là CPU x 2).

Người dùng có thể tự bật lên nếu muốn (set giá trị = 1 thay vì 0):

$ sysctl hw.smt 

hw.smt=0

- Năm 2021, thế giới qua cơn hoảng loạn COVID-19 thì lỗi bảo mật 

ở câu lệnh sudo khiến mọi hệ điều hành dùng câu lệnh này phải tìm 

cách vá nhanh lỗ hổng.  https://blog.qualys.com/vulnerabilities-research/2021/01/26/cve-2021-3156-heap-based-buffer-overflow-in-sudo-baron-samedit

OpenBSD từ lâu đã không dùng sudo do lo ngại về sự phức tạp của nó, 

thay vào đó, đã tự viết `doas` với ít chức năng hơn, an toàn hơn.

- OpenBSD không hỗ trợ các thiết bị bluetooth do sự đa dạng của chuẩn này dẫn tới rắc rối để bảo mật + không có nhân lực (PS: bình tĩnh nếu bạn cần dùng thiết bị Bluetooth, đọc phần Bluetooth bên dưới). 

Không phải tới 2021 mình mới nghe tới OpenBSD, cách đây lâu năm đã từng tìm hiểu về các hệ điều hành BSD và từng nghịch DragonFlyBSD rồi. Nhưng một sự cố đã thúc đẩy việc chuyển sang dùng hẳn OpenBSD trên laptop...

## Sự cố

Làn sóng quay lại "boring tech" trên HackerNews đã đẩy các bài viết về OpenBSD lên frontpage mỗi tuần.

https://news.ycombinator.com/item?id=24818533

https://news.ycombinator.com/item?id=25949784

Sau vài ngày tập cài OpenBSD trên máy ảo trên VirtualBox chạy trên Ubuntu, việc cài đặt rất trơn tru và mọi việc có vẻ ổn.

Nhưng sự "ổn" trên máy ảo này thực ra rất ... "ánh trăng lừa dối".

Những vấn đề khi thử máy ảo không thấy được:

- Máy ảo không có card wifi/card sound thật, khi chạy dễ dàng cấu hình mạng và âm thanh, dựa trên driver "giả".

- Khi cài máy ảo, không phải quan tâm tới việc phân vùng ổ đĩa nếu muốn chạy DualBoot với Ubuntu (cứ auto chọn full disk rồi next next)

Và sự thật đau đớn chỉ đến khi làm thật. 

Tạo USB để boot OpenBSD rồi chỉ vào để xem "thử" các setting chứ không cài. Nghe rất an toàn cho tới khi nó format luôn ổ cứng.

## Luôn luôn backup

Dù bạn là Linux SuperUser, thì các câu lệnh trên OpenBSD không hoàn toàn giống với Linux-based OS/tools.

Việc phân vùng ổ cứng với fdisk (khác fdisk trên GNU/Linux) và "phân vùng con" với disklabel là một chân trời hoàn toàn mới.

Sự siêu tiện dụng và đơn giản của bộ cài OpenBSD (chỉ cần gõ enter là tự động set mọi thứ tới giá trị default đơn giản) lại vô tình giúp tự động format ổ cứng sau vài câu yes, hay bấm q (phải bấm x để KHÔNG lưu thay đổiphân vùng).

Bài học: luôn luôn backup dữ liệu quan trọng

 trước khi động gì tới format.

## Backup 

không cần phải phức tạp, mua 1 chiếc ổ cứng di động ngày nay giá chỉ còn vài trăm ngàn,

một chiếc USB 16GB thậm chí giờ cũng dưới 100.000 VND. Dữ liệu của bạn có đáng giá hơn không?

Có thể là không, cũng có thể là có nếu đó là file password của ví điện tử chứa hàng chục BTC :haha:

Bạn không cần phải lo backup đống film tải trên mạng hay code đã lưu trên GitHub làm gì, hãy xác định đâu là dữ liệu mà mình không muốn mất (và có giá trị qui ra tiền mặt?).

## Cài đặt

Sau phút hoảng loạn vì đã format mất ổ cứng cài Ubuntu đang dùng. Mọi chuyện trở nên đơn giản khi không còn gì để mất. 

 

Khi đã ở dưới đáy con đường duy nhất chính là đường lên. - rapper Phúc Du

Nhờ đồng bọn ship ngay 1 cái USB boot để cài Ubuntu 20.04, cài lại Ubuntu trên 1/2 ổ cứng.

Xong xuôi, nhét USB cài OpenBSD và chọn phân vùng còn lại để cài OpenBSD.

Việc cài đặt, như đã mô tả, sau khi phân vùng ổ cứng với fdisk xong thì cứ thế mà next.

Sau vài phút copy file xong, OpenBSD sẽ báo cài xong và giờ thì khởi động lại. 

Nhớ chọn tắt SSHD, chọn cài xenodm/X nếu được hỏi.

Sau khi reboot với màn hình xanh xanh rồi đen đen, OpenBSD hiện ra giao diện login, nhập user password rồi login vào.

 Đây sẽ là cú sốc, khi bạn nhìn thấy giao diện mặc định rất không đẹp, sử dụng chương trình quản lý window tên FVWM.

Xấu, nhưng vẫn dùng được, chuột phải sẽ hiện ra menu chọn các chương trình, cứ thế mà bật xterm lên.

Và nhận ra... không có mạng!!!

Nếu laptop bạn có mạng dây, chỉ cần cắm vào,  mọi chuyện sẽ đơn giản.

Nhưng thời điểm này, những laptop đời mới đều đã bỏ cổng Ethernet đi, chỉ có wifi. 

Làm sao để cài driver wifi khi không có mạng để tải driver wifi?

OpenBSD có thể có driver wifi cho laptop của bạn, nhưng nó sẽ không cài sẵn với lý do bản quyền.

Vì vậy, bạn phải tự lo chuyện tải và cài driver này. Nếu có mạng dây, chỉ cần gõ `fw_update`, OpenBSD sẽ tự tìm và tự tải/cài các driver cần thiết. Nếu không, hãy kiếm 1 máy tính khác (hoặc boot sang hệ điều hành khác để tải file driver wireless về). Thật ra phần này đã ghi rõ trong phần chuẩn bị cài đặt của OpenBSD tại đây https://www.openbsd.org/faq/faq4.html#Checklist

Sau khi đã cài xong driver wifi và bắt mạng qua wifi, mọi chuyện còn lại đơn giản là cài đặt/cấu hình phần mềm.

Cài đặt kết nối wifi:

ifconfig để xem các interface hiện có, ví dụ máy này dùng card của Intel sẽ thấy hiện ra 

iwm0

Sửa file /etc/hostname.iwm0 với nội dung chứa tên/password wifi

$ cat /etc/hostname.iwm0

nwid "The Coffee House" wpakey thecoffeehouse

dhcp

Sau đó chạy với quyền root:

# sh -x /etc/netstart

Nếu từng cấu hình wifi bằng câu lệnh trên Ubuntu, bạn sẽ thấy bộ tool của OpenBSD đơn giản,

hoàn thiệt hơn nhiều lần thay vì phải chạy đi khắp nơi tìm các phần mềm khác nhau, các câu 

lệnh khác nhau đề cài wpa_supplicant, dùng ip command.

Mọi thông tin về phần cứng đều có trong câu lệnh: dmesg, 

$ dmesg | grep -i wire

iwm0 at pci0 dev 20 function 3 "Intel Dual Band Wireless AC 9560" rev 0x30, msix

Một điểm cộng khác nữa, để xem nhiệt độ các sensors, chỉ cần gõ:

$ sysctl hw.sensors                                                  

hw.sensors.cpu0.temp0=45.00 degC

...

hw.sensors.acpitz0.temp0=51.00 degC (zone temperature)

hw.sensors.pchtemp0.temp0=45.00 degC


không cần cài thêm bất cứ gì.


Cài một server đơn giản hơn desktop do không cần lo chuyện giao diện,

cài đặt 1 desktop đơn giản hơn laptop do không cần lo về driver wifi, quản lý pin, sleep khi gập màn hình...

## Bluetooth on OpenBSD

Các thiết bị bluetooth của mình đều có thêm kết nối qua USB receiver/dongle (1 cục nhỏ nhỏ cắm vào cổng USB), cái này thì hoạt động bình thường, nếu bạn có tai nghe chỉ có cổng Bluetooth thì sẽ không được hỗ trợ.
2 thiết bị mình đang dùng đều hỗ trợ 2 kiểu kết nối - qua bluetooth và qua USB:
- Bàn phím Logitech ERGO K860

- Chuột Logitech MX3 Master
- Chuột Logitech  M212

## Cài phần mềm trên OpenBSD

Cài phần mềm trên OpenBSD 6.8 thời nay không hề khó hơn cài trên Ubuntu. Chỉ cần chạy với quyền root lệnh:

pkg_add -v git tig

để cài git và tig.

Để tìm package vim, gõ:

pkg_info -Q vim

Liệt kê các file cài bởi package vim:

pkg_info -L vim 

Xem các packages đã cài:

pkg_info

Đơn giản, chỉ có vậy.

## Cấu hình

Sau khi có mạng, gõ syspatch để vá các bản vá bảo mật.

Với những người dùng không chơi hệ tiling-WM như i3 hay awesome, không quen việc cấu hình X tools (xterm, ...) thì tốt nhất nên cài XFCE, một Desktop Environment loại nhẹ (So với GNOME3 - mặc định của Ubuntu, KDE).

pkg_add -v xfce

sau đó thêm dòng sau vào file ~/.xsession

startxfce4

Xong.


 

Reboot lại rồi vào bật terminal lên và cài các phần mềm khác như: firefox, chromium (không có Google Chrome), libreoffice, vlc, keepassxc, calibre...

Gõ Tiếng Việt?

Hiện tại, mình chưa tìm ra giải pháp gõ tiếng Việt trên OpenBSD, các phần mềm như ibus, fcitx, scim đều không có sẵn package hỗ trợ

tiếng Việt. Nhưng có thể dùng 1 giải pháp online gõ trên trang https://vntyping.com/

Tất nhiên nếu lo lắng về mạng hay bảo mật, thì tải cả trang về local mà dùng.

## Các vấn đề

- Card sound trên máy này hiện không hoạt động, mọi thứ đều trông ổn nhưng không nghe tiếng gì.

Chuyện này tạm thời cũng chả sao, mình không xem film/ nghe nhạc trên máy này.

- Máy có vẻ nóng hơn Ubuntu vài độ C

- Các chương trình chạy chậm hơn Ubuntu, ví dụ theo đo đạc thì Python3 chạy bằng 1/4 tốc độ trên Ubuntu. (cũng có thể do bật chế độ 

tiết kiệm pin trên laptop nên không chạy full khả năng)

$ apm    

Battery state: low, 50% remaining, 147 minutes life estimate

A/C adapter state: not connected

Performance adjustment mode: auto (400 MHz)

- Các phần mềm không ở phiên bản mới nhất: FireFox đang chạy bản 82.0 khi upstream đã ra 85.0 mấy hôm trước.

## Môi trường dev

Các phần mềm như vim, emacs, tmux (có sẵn), python3, golang, elixir đều chạy ngon lành và chưa thấy vấn đề gì.

CHÚ Ý: không có Docker

### Tham khảo

- https://www.openbsd.org/faq/index.html

- https://www.c0ffee.net/blog/openbsd-on-a-laptop/#x11

- https://paedubucher.ch/articles/2020-09-12-openbsd-on-the-desktop-part-ii.html

### Kết luận

OpenBSD chạy khá ổn trên laptop ASUS Zenbook 14, hãy thử để biết.

Nhớ backup trước khi cài!

 

Hết.

$ uname -a

OpenBSD obsd.fml.vn 6.8 GENERIC.MP#4 amd64

HVN at "học python tại PyMi" https://pymi.vn and https://www.familug.org  

1 comment:

  1. Thật ấn tượng khi thấy OpenBSD hoạt động trên Asus ZenBook, tôi cũng rất quan tâm đến việc công nghệ đang được tích hợp vào các không gian sống hiện đại, như các dự án khu dân cư cao cấp ở Dubai. Những dự án này đang thiết lập những tiêu chuẩn mới cho nhà thông minh và cuộc sống sang trọng. Thật tuyệt vời khi đổi mới đang định hình cả thiết bị và nơi chúng ta gọi là nhà.

    ReplyDelete