13 minutes reading time
Không gì tuyệt vời hơn việc vặn ra một ít oxi cho một cái web đã chết vào đầu năm mới. Nếu bạn chú ý thì tôi đã lôi cái web bome này về nhà, chửi bên hosting cũ và port nó sang zola. Thế nên logic mà nói tôi nên viết cái gì đó vì tôi không còn có thể tự đổ lỗi do bên hosting làm việc như cái quần nữa.
Nói trắng ra là tôi ghét Microslop, nếu bạn phải đọc doc của Microslop và thực hiện các tác vụ ngoài chơi game trên Microslop như quản trị, deploy trên Microslop thì bạn cũng sẽ ghét nó như tôi thôi. Thế nên là nhân dịp trend nhà nhà chuyển sang Linux tôi sẽ viết một bài nho nhỏ để thả ít đá vào cái bao tải Microslop và cùng nhau chúng ta vứt nó xuống sông.
Đối tượng hướng tới, developer, anh em quan tâm tới máy tính hoặc hứng thú với các concept. Dù bạn có thể đọc nó như một người sử dụng bình thường nhưng mục tiêu của post này là đưa ra một cái nhìn tổng quan và trả lời một số câu hỏi đơn giản cho người mới về ý tưởng thiết kế. Các post dạng này đưa keyword cho anh em nghiên cứu chứ không sinh ra để normie đọc vì nó sẽ dài dòng và khó hiểu.
Bước đầu tiên luôn là phân loại đối tượng và tác động của việc chuyển đổi hệ điều hành với các đối tượng này. Từ đây bạn cũng có thể quyết định có nên bắt bạn gái, bố, mẹ thậm chí hàng xóm chuyển sang Linux hay không. Tuy nhiên hãy nhớ những hành động thế này đồng nghĩa bạn sẽ là maintainer đồng thời là nguồn cơn chửi rủa khi hệ thống không hoạt động. Hãy lựa chọn thông minh.
Ok, các đối tượng:
Ultra-Mega-Normie (UML) : đặc điểm nhận dạng, dùng máy tính chỉ để lướt web, xem youtube và chửi nhau trên facebook hay thread. Những đối tượng này về cơ bản không dùng thêm phần mềm phụ, họ không quan tâm máy tính và cũng chả đủ kiến thức để quan tâm. Bạn có thể cài Linux Desktop cho đối tượng này và 9/10 họ cũng chả biết điều gì sảy ra, miễn bạn vẫn cài Google Chrome trên màn hình chính là được.
Your-Normie (YN) : cũng là Normie nhưng biết dùng Office, là bố, mẹ, vợ hay bạn gái của bạn. Bạn không thể từ chối và cơ bản đối tượng cũng không có quá nhiều yêu cầu về máy tính, miễn nó chạy và làm được Office. Ngoài ra đa phần các phần mềm office trừ dạng văn bản thì đều là webservice cả, support nghiêm túc mà nói không khó khăn.
The-Normie (TN) : Anh em người dùng cơ bản, luôn than thở về việc "ối dồi ôi, em chỉ biết dùng Windows thôi vì phần mềm em dùng nó chỉ có ở trên Windows" hay "Nhưng mà Linux dành cho hacker mà, nhìn đau mắt lắm", "Em cũng muốn thử lắm nhưng mà Linux không chơi game được". Lời khuyên của tôi rất đơn giản, họ không thích thì keconme họ, bạn cũng không nên thử.
Tech-Enthusiasts (TE) : Biết về công nghệ nhưng bị dính lại Windows vì thói quen, đa phần cũng khó chịu do Microslop cài đủ thứ theo dõi cũng như chiếm dụng tài nguyên nhưng chưa biết bắt đầu từ đâu. Đối tượng cần hướng dẫn nghiên cứu Linux
Junior-Techie (JT) : Có hứng thú công nghệ nhưng thiếu góc nhìn tổng quan, cơ bản chả khác gì TE nhưng mà nghề của các cháu bắt buộc phải học và sớm muộn cũng phải dùng. Nên nghiên cứu.
Thằng-SysAdmin (TS) : Bạn không cần phải dạy nó.
Đây là các đối tượng trong xã hội phần tiếp theo là phần technical, niềm vui chửi rủa chỉ dừng ở đây thôi.
Câu trả lời là: "Không, lý do nó lắm Distro đơn giản vì nó không phải Microslop hay AppleMeoMeo không ai dí vào mồm bạn bắt bạn update hay dùng chỉ một phiên bản gì đấy mà bạn không có khả năng kiểm soát, vì Linux là sản phẩm của toàn thiên hạ và không ai bắt ai phải dùng cái gì dẫn tới những người hứng thú với các concept khác nhau sẽ tạo ra các sản phẩm dựa theo khung ý tưởng của chính họ. Chúng ta nên nhìn nhận mọi thứ dưới dạng ý tưởng và chọn ra một thứ phù hợp!!"
Sự khác biệt giữa các Distro bao gồm: default package-manager-system, default network-stack, default windown-manager, default file-system, pre-installed application. Mỗi cách triển khai các đối tượng nêu trên sẽ dẫn tới một hệ điều hành khác nhau và các đối tượng trên chỉ là các đối tượng chính mà ai cũng thấy.
Các loại Distro thì rất nhiều nhưng chúng ta sẽ chia ra làm mấy dòng chính sau, cung cách phân chia này là do tôi có một góc nhìn của mình, mong không đánh giá.
Historical Linux: Dòng Linux mà từ chục hay 2 chục năm trước bạn đã nghe tới, những Ubuntu, Mint, CentOS etc. Không có nhiều đặc biệt trong ý tưởng thiết kế khác biệt chủ yếu do vấn đề cãi vặt trong lịch sử và va cấp trong việc quyền sử dụng dẫn tới các tệp đối tượng và các stack system khác nhau. Đối tượng thích hợp sử dụng TS JT TE UML, tệp tech TS JT TE dùng vì hoặc là quen thuộc hoặc cần thử và nghiên cứu kiến trúc Linux, UML dùng vì họ dùng cái ếch gì cũng như nhau cả =)) họ vẫn lướt web thôi.
Hardcore Linux: Dòng Linux dành cho anh em bị ám ảnh bởi cảm giác mình luôn ngu dốt hoặc anh em nỡ ngồi máy tính quá nhiều bị bụng to và quyết định dành cả phần đời còn lại của mình định hình nhân cách dựa trên một distro cụ thể. Các dòng này bao gồm Linux From Scratch (LFS), Void Linux, Gentoo Linux etc. Bạn tự chọn cách hệ thống khởi động, cách nó cài phần mềm, nguồn phần mềm, cách nó hiển thị vân vân mây mây. Đối tượng sử dụng gồm tụi bụng bia TS, anh em ám ảnh ngu dốt TE. Tất cả các đối tượng còn lại nên tránh xa dòng này.
New-Gen Linux: Các dòng Linux nhắm tới đối tượng người dùng muốn thử nghiệm Linux di cư từ Windows và Mac, hướng tới tiện dụng, UI quen thuộc và đẹp đẽ. Tệp này đa phần mang khá nhiều su hướng thiết kế nhưng tựu chung là nhắm tới người dùng mong muốn cài phát ăn ngay. Ví dụ điển hình như Pop!OS của System76 mà giờ đang xây Cosmos hoàn toàn bằng Rust, ZorinOS đưa quả UI lóe mắt cho người dùng mới. Đối tượng sử dụng TN EN UML JT.
Specific Purpose Linux: các sản phẩm chuyên biệt dùng cho việc quản trị NAS như OpenVault Media, quản trị VM như Promox hay quản trị mạng như OpenWRT. Đây là các đối tượng không hướng tới người dùng thiếu kiến thức hoặc không hứng thú vượt qua máy tính cá nhân, chúng ta sẽ thấy TS và JT sử dụng.
Immutable Linux: một dạng New-Gen nhưng hướng tới triết lý thiết kế khác biệt, dòng một tạo một lớp ngăn cách gồm cả tính giới hạn quản trị như đè core hoặc cấm thay đổi base như SteamOS hoặc Atomic Fedora, dòng hai tạo ra một triết lý thiết kế mà bản chất không có version nào kế thừa nhau như Nixos. Đối tượng TS JT TE TN EN UML, lý do bao gồm Immutable có một lớp stupid proof có thể ngăn cản hệ thống bị hỏng hay phá hoại, có tính ổn định cao và có những sản phẩm có khả năng quản trị đặc biệt dẫn tới tính rõ ràng trong tinh chỉnh hệ thống. Mặt Hại, thiếu khả năng config sâu hoặc do có một lớp quản trị phía trên dẫn tới không thể học được Linux đáy, ít guide online hơn các Historical Linux.
Giờ phân tích sang các đối tượng chính người ta hay mang làm selling point hoặc bản chất cần quan tâm của hệ thống.
Linux Kernel là cái mà ai cũng nghe tới nhưng chính xác nó là gì, về lý thuyết đây là lớp kết dính giữa phần cứng sang tới phần mềm. Nói đơn giản hơn khi bạn cắm GPU cắm CPU cắm ổ cứng, bạn tắm tai nghe hay Mainboard thậm chí là máy in trong mạng. Tất cả đều phải được nhận biết về phương thức kết nối, giao thức kết nối, và tính năng hỗ trợ. Tất cả đề được nhét trực tiếp vào Linux Kernel. Đây chính là lý do tại sao tại thời điểm này việc bạn cài một hệ thống Linux thì mọi thứ đơn giản là hoạt động với nhau, hoặc hoạt động nhưng không hết công suất, nhưng nó hoạt động. Ví dụ: bạn mua một cái main mới ví dụ B650M-HDVM.2, trong trang chủ có để main dùng xử lý âm thanh Realtek ALC897, bạn search Linux kernel support https://www.kernel.org/doc/html/latest/sound/hd-audio/index.html nhưng không tìm thấy nhưng hệ thống vẫn chạy, đơn giản là linux có một hệ thống generic config fallback cho gần như tất cả các hardware, mọi thứ đơn giản là hoạt động nhưng có thể không đủ tính năng do chưa được config riêng. Đa phần bạn sẽ không phải nghịch thứ này, đây là khu vực của TS và các Developer chuyên biệt như Kernel Dev, Embeded Dev hoặc eBPF Dev. Nhân tiện đây tất cả chúng ta hãy cùng quỳ xuống và cảm tạ "our Lord and Savior Linus Torvalds"
Đây là những thứ bạn dùng hàng ngày, copy dữ liệu, điều khiển code, hiển thị các thứ các thứ kiểu: ls, cd, pwd, mv, touch etc. Tất cả các doc cho người mới về Linux nhắm tới phần này, nó thừa trên mạng nên tôi không nói nhiều, nhưng một lần nữa hãy quỳ xuống vả cảm tạ "our Lord and Savior Richard Matthew Stallman" người tạo ra opensource.
Qùy tới đây cũng mỏi rồi giờ chúng ta quay lại kĩ thuật. Sự khác biệt lớn nhất của các Distro đó là cách mà nó quản trị app. Hay nói rõ ra là cách nó quản trị Package. Nếu là một lập trình viên bạn sẽ hiểu rõ việc thứ chúng ta tạo ra không hoạt động chỉ trên chính nó, nó có sự kế thừa và sử dụng từ rất nhiều thành phần, một số thành phần tồn tại sẵn trong OS một số cần phải cài thêm từ bên thứ 3. Từ đó tạo ra các cung cách quản lý những thành phần này mà cổ điển nhất chúng ta có những apt, yum. Đơn giản hóa hơn thì có apk nhắm tới tối ưu bộ nhớ. Xây dựng một cấu trúc kế thừa hoàn toàn đảm bảo đóng gói đúng version và tách biệt hệ thống như nix. Hay các xu hướng đóng gói như distrobox hay flatpak đối xử mọi thứ chỉ như một container hay nói rõ ra là một layer hệ thống.
Đây là một phần có thể research rất sâu về cấu trúc xử lý etc, nguyên tắc hoạt động và ý tưởng thiết kế.
Nhắm tới đối tượng sử dụng máy tính cá nhân, những sản phẩm chuyên biệt đa phần sẽ sử dụng web-base nên chúng ta không nhắc tới ở đây. Windows manger bao gồm các vấn đề và ý tưởng về cách người dùng thao tác trên màn hình trong đó phổ biến nhất vẫn là các mẫu như Ubuntu Gnome kiểu chả khác gì Winslow hay Mác Ót tập trung vào việc thao tác chuột. Tiếp tới là các mẫu tilling manager như hyprland hướng tới quản lý mọi thứ chủ yếu dùng bàn phím. Ngoài ra còn rất nhiều biến thể kiểu scrollable-tiling như niri etc. Đây là khu vực khoe mẽ để thể hiện là máy mình đẹp nhìn nó hacker mà nó quái nhân. Đa phần chả ai quan tâm nhưng nếu tò mò bạn có thể lên Unix-Porn để xem ae Ricing ra sao (rice là một từ mượn từ cộng đồng anh em dân tổ Race-Inspired Cosmetic Enhancement, có ý nghĩa dạng làm cho đẹp chứ chả để làm mẹ gì, bạn có thể tìm vài clip các bố nhật bản gắn nhựa làm cái xe nó to ra xong keo củng linh tinh, cái xe nó chậm đi nhưng nó đẹp).
Nếu bạn dùng Windows thì chắc bạn có xem NTFS một sản phẩm vứt đi, nói chung là bài toán về việc quản lý dữ liệu thế nào trên máy tính luôn là bài toán lớn dẫn tới những câu chuyện như RAID, như zip etc. Ví dụ: bạn dùng máy tính và đặt câu hỏi, tại sao tao phải chờ cho máy tính copy một file trong ổ cứng của mình trong khi rõ ràng nó vẫn trong cùng 1 ổ. Câu hỏi có vẻ ngu vì rõ ràng bạn mong muốn copy nó hay nói cách khác duplicate nó, nhưng thật ra nó không ngu, từ câu hỏi này chúng ta có Copy on Write system mà mọi thứ hoạt động dưới dạng con trỏ dữ liệu. Hay bạn đặt câu hỏi về việc mình có thể nén những dữ liệu ít dùng lại để tối ưu bộ nhớ một cách tự động không, rõ ràng là có rồi người anh em, hãy xem ZFS và BtrFS. Phần này sẽ động tới khi bạn gặp các vấn đề về phân vùng, quản trị, lưu trữ dữ liệu, nó sẽ dính tới các đánh đổi về hiệu năng, vùng lưu trữ và backup etc.
Đây là list keyword mà bạn cần trong quá trình học Linux. Như mọi khi tôi chả rõ tại sao tôi đi ngồi viết thế này, chắc tại tự nhiên mất ngủ.