Dive in Linux — phần hai: Các bản phân phối
Trong bài trước, chúng ta đã lặn một chút vào khái niệm của phần mềm nhân có tên Linux. Chúng ta cũng đã biết qua về sự tồn tại của các bản phân phối và mối quan hệ dòng họ giữa chúng. Ở phần thứ hai này của loạt bài, chúng ta sẽ lặn sâu xuống hơn một chút, ngắm rõ hơn những gì trong lòng một bản phân phối, là đi ghé thăm qua một số vùng biển bản phân phối phổ biến.
Các thành phần của một bản phân phối
Về cơ bản thì bản phân phối là một phần mềm hệ điều hành có kiến trúc phân tầng. Mỗi tầng có một nhiệm vụ, và nhiệm vụ đó được đảm nhiệm bởi rất nhiều gói phần mềm khác nhau. Các nhà phát triển bản phân phối sẽ lựa chọn phần mềm được sử dụng, chọn phiên bản, và tùy chỉnh cấu hình cho các phần mềm đó. Tùy theo tính chất mà họ muốn có trên bản phân phối mà sẽ có các tổ hợp khác nhau.
Nói nghe đơn giản nhưng thật ra kiến trúc của một bản phân phối rất phức tạp, dưới đây là một cách mô tả khá dễ hiểu.
Kernel
Là tầng thấp nhất, kernel là tầng “hiểu” phần cứng nhất. Kernel chịu trách nhiệm đảm bảo cho các lớp trên có một giao diện thống nhất và ổn định để làm việc với các thiết bị của máy tính.
Dĩ nhiên, chỉ có duy nhất một kernel Linux, nhưng bản thân kernel cũng có nhiều phiên bản, mỗi phiên bản lại có chức năng khác đi một chút. Kernel Linux hiện tại đã phát hành phiên bản 5, nhưng phiên bản 3 vẫn đang được tích cực phát triển, và rất nhiều bản phân phối vẫn chỉ sử dụng đến phiên bản 3 mà thôi.
Công cụ hệ thống, các Dịch vụ, và các Thư viện
Các tác vụ mà kernel đảm nhiệm đều rất nhỏ, rất cơ bản và phục vụ những nhu cầu ở mức rất chi tiết. Kernel giúp bạn nhặt ra hay lắp xuống một mảnh lego, tại một tọa độ chính xác, theo một chiều chính xác, và kernel làm việc đó rất tốt. Nhưng để có khả năng xây và điều khiển số lượng lego ở tầm cỡ một thành phố hay quốc gia, chúng ta cần những lệnh điều khiển tổng quan hơn. Đó chính là nhiệm vụ của các công cụ hệ thống: chúng trao ý nghĩa cho các khả năng của kernel.
X-Server
Một lớp vỏ khác của kernel là display server, mà một phần mềm phổ biến trong vai trò này. Về cơ bản, display servergiúp các phần mềm có được giao diện đồ họa. “Có một phần mềm tên là Chrome, giúp tôi cho nó một cửa sổ ở khu vực a, cho tôi nút đỏ ở tọa độ b, nút xanh ở tọa độ c” — đó chính xác là cách mà các lớp trên giao tiếp với display server, và display server sẽ làm những việc cần thiết để nhờ Kernel tạo ra dòng tín hiệu mong muốn đi vào card đồ họa.
PS: mặc dù phổ biến, X khá cũ, nhiều lỗi và khá kém bảo mật. Khi tìm hiểu sâu hơn về các bản phân phối, bạn sẽ thấy là có khá nhiều bản phân phối đang dần chuyển sang sử dụng các display server khác thay vì X. Wayland chẳng hạn.
Display Manager
Bản phân phôi sử dụng display manager để giúp tạo nên một kết nối tới display server, với điều kiện là người dùng nhập đúng dấu hiệu xác thực. Việc này là cần thiết để ngăn chặn các truy cập trái phép tới display server — thứ vốn nằm rất sâu dưới hệ thống và có thể can thiệp vào rất nhiều thành phần nhạy cảm.
Các daemons
- Daemons là các phần mềm chạy ngầm dưới hệ thống mà không có giao diện. Chẳng hạn như netword manager — thứ giúp bạn có được kết nối mạng sau khi cắm dây mạng hay nhập đúng pass wifi. Ví dụ như vậy chắc là đủ để mô tả tầm quan trọng của các daemons.
- Bản phân phối có daemon nào là do tay người tạo ra bản phân phối đó sắp đặt. Nhưng daemon phổ biến và được đọc tên nhiều nhất chắc là systemd — daemon quản lý toàn bộ các daemon khác. Nó là process đầu tiên được chạy sau khi kernel đã được khởi động, một cách dễ hiểu — process id của nó là 1.
Package Manager
Bởi tính chất quan trọng áp đảo của package manager đối với người dùng, mình sẽ có một bài chi tiết về package manager sau. Nhưng tại thời điểm hiện tại, bạn tạm hiểu rằng package manager giúp người dùng cài đặt cũng như gỡ bỏ các gói phần mềm, mà không phải tự tải mã nguồn, build, copy các tập tin thực thi vào đúng chỗ, cấu hình biến môi trường.
Package Manager thật ra không hề cá biệt. Npm, Composer, hay Apps của iOS và Android cũng là các package manager, và chúng vô cùng phổ biến. Bạn chẳng qua là ít để ý đến package manager của các bản phân phối mà thôi. Chúng có thể là apt của họ Debian, yum của họ Fedora hay packman của Arch Linux.
Các package manager khác nhau ở độ ổn định, số lượng tính năng, cùng với số lượng và chất lượng phần mềm có trên kho phần mềm của mình.
Desktop Environment
Desktop Environment có thể coi là nốt điểm nhãn cuối cùng để tạo thành một bản phân phối hoàn chỉnh. Nó là một nhóm các phần mềm ứng dụng có khả năng giúp người dùng cuối có một môi trường làm việc hoàn chỉnh, bao gồm giao diện đồ họa, trình duyệt web, trình soạn thư, soạn thảo văn bản, mở các tập tin media, … và rất nhiều tính năng dành cho người dùng cuối khác.
Có rất, rất nhiều DE khác nhau. Chúng khác nhau ở bộ phần mềm tạo nên giao diện người dùng cũng như danh sách các phần mềm năng suất khác. Các cái tên nổi tiếng là GNOME, KDE, Unity, LXCE, XFCE. Chúng ta sẽ ghé tham từng DE này tại một bài khác.
ADN của các bản phân phối
Cấu trúc tổng quan của các bản phân phối không khác nhau quá nhiều, nhưng bởi sự đa dạng của hệ sinh thái phần mềm mã nguồn mở mà tạo nên rất nhiều công thức phối trộn. Đội ngũ thiết kế bản phân phối thường trước tiên sẽ tìm ra một vị đặc trưng của món ăn của mình, rồi sau đó mới thiết kế theo đặc trưng đó.
Đôi khi, họ không thiết kế từ đầu, mà dựa trên bản thiết kế của một bản phân phối nào đó khác, giữ lại phần họ muốn và thay đổi một vài thành phần khác, và điều này tạo nên “dòng họ” của các bản phân phối.
Chúng ta sẽ tìm hiểu qua một số bản phân phối phổ biến để tìm hiểu.
Arch Linux
Arch được thiết kế để trao cho người dùng cơ hội được sử dụng Linux “theo cách của Arch” — tức là được tự tay làm mọi thứ. Bạn bắt đầu cài đặt Arch bằng một shell, và kết thúc bởi một shell, bạn tự chọn lấy tổ hợp các package bạn muốn dùng trong lúc cài đặt, theo cách bạn muốn — nhiều tính năng hay nhanh và nhỏ, đẹp hay tiết kiệm hiệu năng…
Arch không phát hành các bản cập nhật lớn, hay nói chính xác hơn, Arch cập nhật thường xuyên, liên tục các gói của nó — mỗi khi có phiên bản ổn định của chúng được xuất bản. Nghĩa là Arch luôn sử dụng phiên bản mới nhất, tối tân nhất của các gói.
Nếu bạn yêu thích mày mò tìm hiểu, đừng động vào Arch, kẻo bạn sẽ mất ngủ mất ;)
Debian
Một trong những bản phân phối cổ xưa nhất còn tồn tại. Có hai đặc trưng nổi trội ở Debian. Đầu tiên phải kể đến đó là tính ổn định. Tất cả các phiên bản chính thức của Debian đều có thời gian hỗ trợ chính thức rất lâu (5 năm). Để làm được điều đó, Debian tuân thủ một chính sách cập nhật phiên bản của các gói rất nghiêm ngặt. Để một phiên bản “mới”của một gói nào đó được đưa vào Debian bản chính thức, nó phải chờ vài năm là không hề hiếm.
Đặc trưng thứ hai là apt — trình quản lý gói của Debian. Đây là một trong những trình quản lý gói tốt nhất của hệ sinh thái Linux. Nó có tính năng tuyệt vời và độ ổn định cao. Trên thực tế, chính bởi có apt mà Debian được rất nhiều nhóm phân phối chọn làm gốc để chế biến thành các bản phân phối khác, mà trong đó nổi tiếng nhất phải kể đến là Ubuntu.
Ubuntu
Nhóm thiết kế của Ubuntu chỉ có một mong ước: đem Linux đến với tất cả mọi người dùng, từ bà nội trợ đến nhà khoa học ai cũng phù hợp để dùng. Tính dễ sử dụng được đặt lên hàng đầu. Do đó DE của Ubuntu được chăm chút rất kỹ lưỡng. Họ thậm chí đã từng tự phát triển và duy trì một DE rất nổi tiếng trong lịch sử có tên là Unity (nếu bạn từng thấy một giao diện Linux với một thanh taskbar nằm dọc bên trái màn hình thì khả năng cao đó chính là Unity), trước khi quay trở lại dùng GNOME gần đây. Họ thậm chí kỹ đến mức phát triển nhiều bản Ubuntu khác nhau cho mỗi DE khác nhau, gọi là Ubuntu’s flavors, chúng ta sẽ điểm qua các flavors này tại bài viết về các DE.
Ubuntu được kế thừa từ Debian, và thứ được giữ lại là apt — nhưng đi kèm với một kho phần mềm lớn hơn, mới hơn, dễ tham gia phát triển hơn. Và theo độ phổ biến của Ubuntu, apt cũng trở thành một trong những package manager được dùng phổ biến nhất hiện tại. Nếu bạn cần Google về cách cài đặt cái gì đấy, phần lớn thời gian bạn sẽ nhận được hướng dẫn cài đặt bằng apt.
Nếu bạn cần một môi trường làm việc hiệu quả cho máy PC của mình, Ubuntu có khả năng cao trở thành lựa chọn của bạn.
Fedora
Nhắc đến Fedora thì phải nói đến RedHat. Là một trong những tổ chức dẫn đầu về phát triển nền tảng Linux và phần mềm mã nguồn mở, RedHat duy trì một bản phân phối thương mại có tên là Red Hat Enterprise Linux, mục đích của bản phân phối RedHat này là phục vụ nhu cầu triển khai cho máy server với khả năng mở rộng cao. Và Fedora có thể coi là một phiên bản RedHat được phân phối miễn phí cho cộng đồng.
Không giống như Debian, Fedoro sử dụng một kho package dường như luôn cập nhật phiên bản mới nhất có thể — có nghĩa là bạn sẽ luôn được sử dụng những gì tối tân nhất trong hệ sinh thái mã nguồn mở.
Fedora có nhiều nhánh phân phối dành cho nhiều mục đích khác nhau, bởi thế nó rất đa dụng. Bạn có thể dùng Fedora tại máy trạm, máy client, tại thiết bị IoT… Linus Torvalds — cha để của nhân Linux, được biết đến là người sử dụng Fedora cho tất cả mọi việc.
Centos
Cũng tương tự như Fedora, Centos cũng là một bản phân phối thuộc họ RedHat, trên thực tế, Fedora đóng vai trò như một phiên bản tiền trạm cho Red Hat Enterprise Linux, còn Centos thì gần hơn với phiên bản “hiện tại”.
Tuy vậy Centos có cùng tư duy của Debian: một bản phân phối ổn định. Tất cả các phiên bản của Centos đều được hỗ trợ trong thời gian 10 năm — rất lâu. Chinh vì lý do này, Centos luôn là ưu tiên hàng đầu để cài đặt cho các máy server. Nếu bạn muốn có một server chạy RedHat nhưng lại miễn phí, hay bạn muốn ít khi phải bảo trì nâng cấp, thì Centos chính là lựa chọn của bạn.
Tổng kết
Vậy là bạn vừa đi sâu thêm một chút xuống dưới của mỗi bản phân phối, có thể bạn sẽ muốn tìm hiểu kỹ hơn về các gói phần mềm hệ thống, mà trong đó có hệ thống Shell nổi tiếng. Hay bạn sẽ tìm hiểu nhiều hơn về package manager thay vì chỉ dừng lại ở apt-get update. Hoặc bạn sẽ muoons chạy ngay đi ngắm nghĩa những DE xịn sò nhất trong hệ sinh thái Linux hiện tại.
Bạn cũng đã biết được câu chuyện về ADN đằng sau của một số bản phân phối Linux phổ biến. Giờ chắc hẳn bạn đã xác định được một bản phân phối nào đó là dành cho mình.
Chúc các bạn nghịch vui.