Linux là gì: kernel, bản phân phối và hệ thống tệp giải thích đơn giản
Linux là kernel mã nguồn mở của hệ điều hành, quản lý CPU, bộ nhớ, ổ đĩa và mạng; cùng với các tiện ích, trình quản lý gói và hệ thống khởi tạo, kernel tạo thành một bản phân phối như Ubuntu, Debian hay Fedora. Linux chạy trên đa số máy chủ, container và đám mây, nên làm việc được trên Linux là kỹ năng nền tảng của kỹ sư DevOps và quản trị viên.
Linux là kernel của hệ điều hành, mã nguồn mở, và xung quanh nó người ta xây dựng các hệ thống hoàn chỉnh cho máy chủ, máy tính để bàn và thiết bị nhúng. Khi nói "máy chủ chạy Linux", ý là không chỉ một chương trình mà là một bản phân phối (distribution): kernel cộng với bộ tiện ích, thư viện, trình quản lý gói và hệ thống khởi tạo. Bài này giải thích Linux thực sự là gì, gồm những phần nào và vì sao không kỹ sư DevOps nào có thể bỏ qua nó.
Linux là kernel, không phải toàn bộ hệ thống
Nói chính xác, Linux chỉ là kernel. Kernel là chương trình được khởi chạy đầu tiên sau bootloader và nằm trong bộ nhớ suốt thời gian máy hoạt động. Nó phân chia thời gian CPU giữa các tiến trình, cấp phát bộ nhớ, làm việc với ổ đĩa và card mạng thông qua driver, và kiểm tra quyền truy cập.
Chương trình thông thường không điều khiển phần cứng trực tiếp. Khi trình soạn thảo lưu một tệp, nó thực hiện lời gọi hệ thống (open, write, close), và kernel quyết định ghi dữ liệu vào khối nào trên đĩa và tiến trình có quyền làm việc đó hay không. Nhờ cách phân tách này hệ thống ổn định: một chương trình bị lỗi không làm sập cả máy.
Xem phiên bản kernel bằng một lệnh:
$ uname -r
6.8.0-45-generic
Kernel do Linus Torvalds tạo ra năm 1991 và được phát triển công khai từ đó đến nay: mã nguồn theo giấy phép GNU GPL phiên bản 2, ai cũng có thể đọc, sửa đổi và phân phối lại theo cùng điều kiện.
Bản phân phối Linux là gì
Chỉ có kernel thì chưa đủ: cần một shell để gõ lệnh, các tiện ích quản lý tệp, thư viện và trình cài đặt phần mềm. Phần lớn các tiện ích cơ bản (ls, cp, bash, grep) do dự án GNU cung cấp, vì vậy đôi khi hệ thống được gọi là GNU/Linux. Kernel cùng toàn bộ bộ công cụ này, được đóng gói và kiểm thử thành một khối, gọi là bản phân phối.
Các bản phân phối khác nhau chủ yếu ở trình quản lý gói, chính sách cập nhật và đối tượng sử dụng.
| Họ | Ví dụ | Gói | Thường gặp ở đâu |
|---|---|---|---|
| Debian | Debian, Ubuntu, Linux Mint | .deb, apt | máy chủ, đám mây, máy trạm |
| Red Hat | RHEL, Fedora, Rocky Linux, AlmaLinux | .rpm, dnf | máy chủ doanh nghiệp |
| Alpine | Alpine Linux | apk | image Docker, nơi cần kích thước nhỏ |
| Arch | Arch Linux, Manjaro | pacman | người đam mê, phiên bản gói mới nhất |
Biết mình đang dùng bản phân phối nào có thể xem trong tệp /etc/os-release:
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
ID=ubuntu
ID_LIKE=debian
Để học và làm máy chủ, người ta thường chọn Ubuntu LTS hoặc Debian: tài liệu nhiều, và các lệnh trong hướng dẫn trên mạng hầu như dùng được ngay.
Hệ thống được tổ chức thế nào: kernel, shell, không gian người dùng
Có thể hình dung Linux theo các tầng. Dưới cùng là phần cứng. Trên nó là kernel. Cao hơn là không gian người dùng: các dịch vụ hệ thống, thư viện (ví dụ glibc) và chương trình. Giữa người và hệ thống là shell, thường là bash, nhận lệnh và chạy chương trình.
- Kernel — tiến trình, bộ nhớ, hệ thống tệp, mạng, driver.
- Hệ thống khởi tạo — tiến trình đầu tiên có PID 1, trong đa số bản phân phối hiện đại là
systemd. Nó khởi chạy các dịch vụ khác. - Dịch vụ (daemon) — web server, SSH server, cron, nhật ký hệ thống.
- Shell và tiện ích — những thứ bạn làm việc cùng trong terminal.
Trên máy chủ thường không có giao diện đồ họa: quản trị viên kết nối qua SSH và làm việc bằng dòng lệnh. Vì vậy học Linux trước hết là học làm việc với terminal.
Hệ thống tệp Linux: mọi thứ bắt đầu từ gốc /
Trong Linux không có ổ C: và D:. Chỉ có một cây thư mục duy nhất bắt đầu từ gốc — /. Mọi ổ đĩa, USB và thư mục mạng đều được gắn (mount) vào một thư mục nào đó trong cây này. Một nguyên tắc nữa: hầu hết mọi thứ trong Linux được biểu diễn như tệp — tệp thông thường, thư mục, thiết bị, và cả thông tin về tiến trình.
$ ls /
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
Vị trí các thư mục được quy định bởi tiêu chuẩn FHS (Filesystem Hierarchy Standard), nên ở bản phân phối nào các tệp cấu hình cũng nằm ở gần như cùng một chỗ.
| Thư mục | Nội dung |
|---|---|
/etc | cấu hình hệ thống và dịch vụ: /etc/passwd, /etc/ssh/sshd_config, /etc/fstab |
/home | thư mục cá nhân của người dùng: /home/alice |
/root | thư mục cá nhân của superuser root |
/var | dữ liệu thay đổi: nhật ký trong /var/log, cache gói, cơ sở dữ liệu, hàng đợi thư |
/usr | chương trình và thư viện đã cài: /usr/bin, /usr/lib |
/bin, /sbin | lệnh cơ bản; trên bản phân phối hiện đại đây là liên kết tới /usr/bin và /usr/sbin |
/boot | kernel (vmlinuz-*), initramfs và tệp của bootloader |
/dev | tệp thiết bị: /dev/sda, /dev/null |
/proc, /sys | hệ thống tệp ảo: kernel hiển thị tiến trình và thiết lập qua đây |
/tmp | tệp tạm, thường được dọn khi khởi động lại |
/opt | phần mềm bên thứ ba được cung cấp trọn gói |
/mnt, /media | điểm gắn cho ổ đĩa và thiết bị di động |
Đường dẫn tuyệt đối và tương đối
Đường dẫn tuyệt đối bắt đầu bằng / và không phụ thuộc vị trí hiện tại: /var/log/syslog. Đường dẫn tương đối tính từ thư mục hiện tại: ../logs/app.log. Dấu chấm . là thư mục hiện tại, hai dấu chấm .. là thư mục cha, dấu ngã ~ là thư mục cá nhân của bạn.
$ pwd
/home/alice
$ cd /var/log
$ cd ..
$ pwd
/var
$ cd ~
$ pwd
/home/alice
/proc: hệ thống như một tập tệp
Thư mục /proc không được lưu trên đĩa — kernel tạo nó ngay khi được đọc. Ví dụ cat /proc/cpuinfo cho biết bộ xử lý, cat /proc/meminfo cho biết bộ nhớ, và mỗi tiến trình có một thư mục /proc/<PID> chứa dòng lệnh và các tệp đang mở của nó. Nhiều tiện ích như ps và top chỉ đơn giản đọc các tệp này.
Gắn ổ đĩa (mount)
Lệnh df -h cho biết hệ thống tệp nào được gắn ở đâu và còn bao nhiêu chỗ trống:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 40G 12G 26G 32% /
/dev/sda1 1.1G 6.1M 1.1G 1% /boot/efi
tmpfs 393M 1.2M 392M 1% /run
Các điểm gắn cố định được mô tả trong /etc/fstab — hệ thống đọc tệp này khi khởi động.
Linux khởi động thế nào: từ bật nguồn đến màn hình đăng nhập
Hiểu quá trình khởi động giúp xử lý khi máy chủ "không lên" sau khi reboot. Nói đơn giản, chuỗi diễn ra như sau:
- Firmware (UEFI hoặc BIOS) kiểm tra phần cứng và tìm bootloader.
- Bootloader GRUB hiển thị menu và nạp vào bộ nhớ kernel từ
/bootcùng ảnh initramfs. - Kernel khởi tạo phần cứng, dùng initramfs để tìm và gắn hệ thống tệp gốc.
- systemd khởi chạy với PID 1 và bật các dịch vụ theo đúng thứ tự: mạng, nhật ký, SSH, cron và những dịch vụ còn lại.
- Màn hình đăng nhập — trên console hoặc qua SSH.
Thông điệp của kernel khi khởi động xem được bằng sudo dmesg hoặc journalctl -k, còn thời gian từng giai đoạn xem bằng systemd-analyze.
Người dùng và quyền truy cập — cơ chế bảo vệ có sẵn
Linux ngay từ đầu là hệ thống đa người dùng. Mỗi tệp có chủ sở hữu, nhóm và quyền đọc, ghi, thực thi. Người dùng thông thường không thể làm hỏng tệp hệ thống, còn các thao tác quản trị được thực hiện qua sudo. Superuser root có thể làm mọi thứ, nên không nên làm việc thường xuyên dưới tài khoản này.
$ ls -l /etc/passwd
-rw-r--r-- 1 root root 2847 Oct 1 10:12 /etc/passwd
Dòng này đọc như sau: tệp thông thường, chủ sở hữu root có quyền đọc và ghi, những người khác chỉ được đọc.
Vì sao kỹ sư DevOps cần Linux
Với kỹ sư DevOps, Linux không phải một chủ đề trong số nhiều chủ đề, mà là môi trường mà gần như toàn bộ công việc diễn ra. Đây là những nơi họ gặp Linux mỗi ngày:
- Máy chủ. Web server, cơ sở dữ liệu, hàng đợi phần lớn chạy trên Linux.
- Container. Docker sử dụng cơ chế của kernel Linux — namespaces và cgroups. Container về bản chất là một tiến trình Linux được cách ly, còn image dựa trên một bản phân phối như Debian hoặc Alpine.
- Đám mây và Kubernetes. Máy ảo trên đám mây và các node của cụm cũng chạy Linux.
- CI/CD. Các bản build trong pipeline chạy trên runner Linux, và script build thường viết bằng bash.
- Chẩn đoán. Khi một dịch vụ ngừng hoạt động, nguyên nhân được tìm trong
journalctl,top,ss,df— không biết các công cụ này thì không thể xử lý sự cố.
Bộ kỹ năng tối thiểu: di chuyển thoải mái trong hệ thống tệp, hiểu quyền truy cập, cài gói, quản lý dịch vụ bằng systemctl, đọc nhật ký, làm việc với tiến trình, mạng và SSH, và viết được bash script đơn giản.
Bắt đầu học Linux thế nào
Không cần thiết phải cài Linux thay cho hệ điều hành chính. Có vài cách an toàn để thử:
- Máy ảo (VirtualBox, VMware) với Ubuntu Server — có thể phá hỏng rồi khôi phục từ snapshot.
- WSL trên Windows — môi trường Ubuntu đầy đủ trong terminal Windows:
wsl --install. - Máy chủ trên đám mây — gần nhất với công việc thực tế, kết nối qua SSH.
- Container Docker —
docker run -it --rm ubuntu bashcho bạn một shell chỉ trong vài giây.
Hãy bắt đầu với điều hướng (pwd, ls, cd), sau đó đến tệp và quyền truy cập, rồi đến gói, tiến trình và dịch vụ. Trợ giúp có sẵn luôn trong hệ thống: man ls hoặc ls --help.
Tóm lại
Linux là kernel, còn bản phân phối là kernel cộng với tiện ích, thư viện, trình quản lý gói và systemd. Toàn bộ hệ thống là một cây thư mục từ gốc /, trong đó cấu hình nằm ở /etc, nhật ký ở /var/log và chương trình ở /usr. Khi đã hiểu Linux là gì và khởi động ra sao, bạn có nền tảng để làm việc với máy chủ, container và đám mây. Hệ thống tệp, quá trình khởi động và quản trị đều được hướng dẫn thực hành trong khóa học Linux.
Câu hỏi thường gặp
Linux là hệ điều hành hay kernel?
Về mặt chính xác, Linux là kernel, còn hệ điều hành là bản phân phối: kernel cộng với tiện ích GNU, thư viện, trình quản lý gói và hệ thống khởi tạo. Trong giao tiếp hằng ngày, "Linux" thường nói về cả hệ thống.
Linux có miễn phí không?
Kernel và đa số bản phân phối (Ubuntu, Debian, Fedora) được phát hành miễn phí theo giấy phép mã nguồn mở. Thu phí thường là gói hỗ trợ, ví dụ Red Hat Enterprise Linux.
Người mới nên chọn bản phân phối nào?
Với máy chủ và học quản trị, Ubuntu LTS và Debian là lựa chọn tốt: phiên bản ổn định và tài liệu phong phú. Kiến thức dùng chung giữa các bản phân phối, chỉ khác ở trình quản lý gói.
Có cần biết Linux để làm việc với Docker không?
Có, ít nhất ở mức cơ bản. Container được xây dựng trên cơ chế của kernel Linux, bên trong image là một bản phân phối, và việc gỡ lỗi thực hiện bằng lệnh shell.
Linux khác Unix ở điểm nào?
Unix là một họ hệ điều hành xuất hiện từ những năm 1970, còn Linux là kernel được viết độc lập, lặp lại ý tưởng và giao diện của Unix (chuẩn POSIX). Vì vậy lệnh và nguyên tắc làm việc của chúng rất giống nhau.
Chủ đề này được giảng chi tiết kèm thực hành trong khóa học “Linux: с нуля до уверенного администрирования”.
- Linux: с нуля до уверенного администрирования
- Как устроена файловая система Linux: от корня до загрузки ядра