Mục tiêu chương
Sau khi hoàn thành chương này, bạn sẽ có thể:
Hiểu lịch sử Linux
Giải thích nguồn gốc Linux từ UNIX, vai trò của Linus Torvalds, GNU Project và BSD trong việc hình thành Linux hiện đại.
Mã nguồn mở vs. Độc quyền
So sánh phần mềm mã nguồn mở và độc quyền, hiểu tại sao Linux miễn phí và những quyền lợi nó mang lại.
GPL và Giấy phép OSI
Hiểu GNU General Public License và 10 tiêu chí OSI định nghĩa phần mềm mã nguồn mở -- quy tắc phân phối Linux.
Các bản phân phối Linux
Phân biệt Fedora, RHEL, Ubuntu, Debian và các distro chuyên biệt. Biết cách chọn distro phù hợp nhu cầu.
Kiến trúc Linux
Mô tả các thành phần chính: kernel, shell, filesystem, user space và cách chúng tương tác trong hệ điều hành.
Linux trong Cloud & Doanh nghiệp
Nhận biết vai trò Linux trong AWS/Azure/GCP, ảo hóa KVM/Xen, clustering và container với Kubernetes.
Lịch sử và Nền tảng Linux
Nguồn gốc từ UNIX -- Bell Labs
UNIX được tạo ra tại Bell Laboratories bởi Ken Thompson và Dennis Ritchie cuối những năm 1960, sau khi dự án Multics thất bại (1969). UNIX được thiết kế theo triết lý đơn giản và mô-đun: mỗi công cụ làm một việc tốt, kết hợp qua pipes. Năm 1973, UNIX được viết lại bằng ngôn ngữ C -- làm cho nó có thể chuyển đổi sang nhiều loại phần cứng khác nhau.
Năm 1975, UNIX V6 là phiên bản đầu tiên phổ biến rộng rãi ngoài Bell Labs. Đại học California -- Berkeley tạo ra Berkeley Software Distribution (BSD) từ mã nguồn UNIX ban đầu, mở ra kỷ nguyên phát triển mã nguồn mở.
Triết lý UNIX (Dennis Ritchie, 1980): "Những gì chúng tôi muốn bảo tồn không chỉ là một môi trường tốt để lập trình, mà là một hệ thống mà xung quanh đó một cộng đồng có thể hình thành." -- Tinh thần này là nền tảng văn hóa cộng đồng Linux ngày nay.
$ cat file1 file2 | sort | pr | lpr
# cat: nối 2 file lại
# sort: sắp xếp theo alphabet
# pr: định dạng để in
# lpr: gửi đến máy in
# Mỗi lệnh một việc -- kết hợp qua | tạo sức mạnh tổng hợp
GNU Project (1984) -- Richard Stallman
Năm 1984, Richard M. Stallman khởi động GNU Project (GNU Is Not UNIX) -- Free Software Foundation (FSF). Mục tiêu: tái tạo toàn bộ UNIX với mã nguồn tự do. GNU tạo ra hàng nghìn công cụ (bash, gcc, glibc, coreutils...) nhưng không hoàn thiện được kernel. Linux kernel (1991) của Linus Torvalds là mảnh ghép cuối cùng quan trọng nhất.
GNU Bash
Bourne Again Shell -- shell mặc định trên hầu hết các bản phân phối Linux
GCC Compiler
GNU C Compiler -- biên dịch C/C++, Fortran, Go và nhiều ngôn ngữ khác
GNU Coreutils
ls, cp, mv, rm, cat, echo -- các câu lệnh cơ bản của mọi hệ thống Linux
Linus Torvalds và Linux Kernel (1991)
Ngày 25/8/1991, Linus Torvalds -- sinh viên Đại học Helsinki -- đăng thông báo trên nhóm tin comp.os.minix rằng anh đang phát triển một kernel UNIX-like miễn phí cho PC 386. Ngày 5/10/1991, Linux 0.02 phát hành với nhiều mã assembly được viết lại bằng C, cho phép chuyển đổi sang các kiến trúc phần cứng khác.
Chào mọi người đang sử dụng minix -
Tôi đang làm một hệ điều hành (miễn phí) (chỉ là sở thích,
sẽ không lớn lao và chuyên nghiệp như gnu)
cho các bản sao 386(486) AT.
Mọi ý kiến đóng góp đều được chào đón...
-- Linus Benedict Torvalds
Linux Hiện Đại -- Distros và Doanh nghiệp
Các Bản Phân Phối Linux Chính
Một bản phân phối (distro) là Linux kernel + các công cụ GNU + phần mềm bổ sung + trình cài đặt. Mỗi distro nhắm đến đối tượng người dùng khác nhau:
Red Hat Enterprise Linux (RHEL)
Distro doanh nghiệp hàng đầu, hỗ trợ thương mại từ Red Hat (IBM). Sử dụng định dạng RPM và trình quản lý dnf/yum. Hỗ trợ lên đến 10+ năm. Fedora là cộng đồng thượng nguồn của RHEL.
Fedora
Distro cộng đồng do Red Hat bảo trợ. Phát hành mới mỗi 6 tháng, luôn cập nhật tính năng mới nhất, hỗ trợ trong 13 tháng. Đây là "sân thử nghiệm" cho RHEL.
Ubuntu (Canonical)
Dựa trên nền tảng Debian, là distro phổ biến nhất trên desktop Linux. Bản LTS (Long Term Support) ra mắt mỗi 2 năm, hỗ trợ 5 năm. Môi trường desktop mặc định: GNOME.
Debian & Các Distro Khác
Debian -- cộng đồng thuần túy, là nguồn gốc của Ubuntu. SUSE/openSUSE (Châu Âu), Arch Linux (phát hành liên tục), Gentoo (dựa trên mã nguồn), Slackware (cổ điển).
GPL và Các Giấy Phép Mã Nguồn Mở
Giấy phép Công cộng GNU (GPL) bảo vệ 3 quyền cơ bản: (1) Tác giả giữ bản quyền; (2) Cho phép phân phối miễn phí kèm mã nguồn; (3) Các tác phẩm phái sinh phải giữ nguyên giấy phép GPL. Đây gọi là "copyleft". OSI công nhận hơn 100 loại giấy phép mã nguồn mở:
# Copyleft (mạnh nhất -- bắt buộc chia sẻ lại mã nguồn)
GPL v2/v3 --> Linux kernel, GNU tools
AGPL --> Phần mềm phía máy chủ (Server-side)
# Weak copyleft (cho phép liên kết với mã nguồn đóng)
LGPL --> Thư viện: glibc, Qt
MPL --> Mozilla Firefox, Thunderbird
# Permissive (tự do nhất)
Apache 2.0 --> Apache HTTP, Kubernetes, Android
MIT --> Node.js, jQuery, React
BSD 2/3 --> FreeBSD, thành phần macOS
Linux trong Doanh nghiệp và Cloud
Clustering
Nhiều máy chủ hoạt động như một hệ thống duy nhất, phân phối tải (load balancing) và đảm bảo tính sẵn sàng cao (High Availability).
Ảo hóa -- KVM/Xen
Chạy nhiều máy ảo (VM) trên một máy vật lý. KVM là hypervisor loại 1 tích hợp trực tiếp vào kernel, là nền tảng của AWS và Azure.
Container & Kubernetes
Docker + Kubernetes chạy trên Linux để quản lý ứng dụng đã đóng gói (containerized), tự động mở rộng quy mô theo nhu cầu trên đám mây.
Lab Thực Hành
Khám phá hệ thống Linux lần đầu: kiểm tra kernel, distro, phần cứng và các công cụ GNU
Kiểm tra phiên bản kernel Linux
Lệnh uname hiển thị thông tin về kernel. Flag -r chỉ hiện phiên bản, -a hiện toàn bộ thông tin hệ thống.
$ uname -r
6.8.0-45-generic
$ uname -a
Linux fedora 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC
Fri Aug 30 11:07:26 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Xác định bản phân phối Linux
Tệp tin /etc/os-release chứa thông tin chuẩn về distro -- thường dùng trong các script để xác định môi trường hệ điều hành.
$ cat /etc/os-release
NAME="Fedora Linux"
VERSION="40 (Workstation Edition)"
ID=fedora
VERSION_ID=40
PRETTY_NAME="Fedora Linux 40 (Workstation Edition)"
Xem thông tin CPU và phần cứng
Lệnh lscpu tóm tắt thông tin CPU dưới dạng dễ đọc. Tệp /proc/cpuinfo chứa chi tiết cụ thể cho từng nhân (core).
$ lscpu | head -8
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 8
Model name: Intel(R) Core(TM) i7-10700
CPU MHz: 2900.000
Virtualization: VT-x
Kiểm tra bộ nhớ RAM và swap
Lệnh free -h hiển thị RAM và swap dưới dạng MB/GB. Buff/cache là vùng nhớ kernel dùng để tối ưu hóa truy xuất đĩa I/O.
$ free -h
total used free shared buff/cache available
Mem: 15Gi 3.2Gi 8.4Gi 456Mi 3.6Gi 11Gi
Swap: 2.0Gi 0B 2.0Gi
Xem uptime và load average
Lệnh uptime cho biết máy đã hoạt động liên tục trong bao lâu và tải trung bình (load average) trong 1/5/15 phút qua.
$ uptime
14:32:05 up 3 days, 2:15, 2 users, load average: 0.42, 0.38, 0.35
$ w
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
student pts/0 192.168.1.10 12:00 0.00s 0.15s 0.02s w
Kiểm tra các kernel đã cài (Fedora/RHEL)
Trên Fedora/RHEL, dùng rpm -q kernel hoặc dnf info kernel để xem danh sách các phiên bản kernel đang có sẵn trên hệ thống.
$ rpm -q kernel
kernel-6.8.5-301.fc40.x86_64
kernel-6.9.12-200.fc40.x86_64
$ dnf info kernel
Name : kernel
Version : 6.9.12
Release : 200.fc40
Architecture : x86_64
Xem phiên bản các công cụ GNU
Kiểm tra các công cụ GNU cơ bản: bash (shell), gcc (compiler), ldd (glibc) -- những thành phần cốt lõi tạo nên hệ thống GNU/Linux.
$ bash --version
GNU bash, version 5.2.26(1)-release (x86_64-redhat-linux-gnu)
$ gcc --version
gcc (GCC) 14.2.1 20240801 (Red Hat 14.2.1-1)
$ ldd --version | head -1
ldd (GNU libc) 2.39
Câu hỏi ôn tập
Kiểm tra kiến thức về Chương 1: Bắt đầu với Linux
Linux được tạo ra bởi ai, khi nào và tại sao?
Đáp án:
Linus Torvalds -- sinh viên Đại học Helsinki (Phần Lan) -- bắt đầu phát triển Linux năm 1991. Anh muốn có một hệ điều hành UNIX-like chạy trên máy tính cá nhân (PC) 386 của mình, tương tự như hệ thống UNIX anh được dùng tại trường. Thông báo công khai được đưa ra ngày 25/8/1991 trên newsgroup comp.os.minix.
GNU Project là gì và tại sao nó quan trọng với Linux?
Đáp án:
GNU Project (GNU Is Not UNIX) do Richard Stallman khởi động năm 1984 thông qua tổ chức FSF. Mục tiêu là tái tạo toàn bộ hệ điều hành UNIX với mã nguồn hoàn toàn tự do. GNU đã tạo ra hàng nghìn công cụ (bash, gcc, glibc...) nhưng còn thiếu một kernel hoàn thiện. Linux kernel (1991) đã lấp đầy khoảng trống này để tạo nên hệ điều hành "GNU/Linux" hoàn chỉnh theo giấy phép GPL.
Phần mềm mã nguồn mở khác gì phần mềm độc quyền?
Đáp án:
Phần mềm độc quyền (như Windows, macOS): người dùng không thể xem mã nguồn, không thể sửa đổi ở cấp độ hệ thống và không được phép dùng nó để xây dựng hệ điều hành riêng. Mã nguồn mở: mã nguồn được công khai hoàn toàn, cho phép cộng đồng kiểm tra bảo mật, sửa lỗi, tùy biến và phân phối lại. Nhờ đó, các ông lớn như Google, Amazon AWS, Android hay hầu hết các dịch vụ cloud đều ưu tiên dùng Linux.
Lệnh nào dùng để kiểm tra phiên bản kernel Linux đang chạy?
Đáp án:
Sử dụng lệnh uname:
$ uname -r
6.8.0-45-generic
$ uname -a # Xem toàn bộ thông tin hệ thống chi tiết
Sự khác biệt cơ bản giữa Fedora và RHEL là gì?
Đáp án:
Fedora: là bản phân phối cộng đồng miễn phí, phát hành 6 tháng một lần, hỗ trợ ngắn hạn (13 tháng), cập nhật các tính năng mới nhất -- đóng vai trò là "sân thử nghiệm" cho RHEL. RHEL (Red Hat Enterprise Linux): là bản thương mại, cực kỳ ổn định, hỗ trợ lên đến 10+ năm, chuyên dùng trong môi trường sản xuất của doanh nghiệp. RHEL được xây dựng dựa trên mã nguồn của Fedora sau khi đã được kiểm chứng độ tin cậy.
Giấy phép GPL bảo vệ điều gì? Nêu 3 điểm chính.
Đáp án:
(1) Tác giả gốc vẫn giữ bản quyền. (2) Cho phép sao chép và phân phối lại miễn phí kèm theo mã nguồn đầy đủ -- không được phép giữ bí mật mã nguồn. (3) Các tác phẩm phái sinh (dựa trên mã nguồn gốc) bắt buộc phải giữ nguyên các điều khoản của GPL ("copyleft"). Linux kernel được bảo vệ bởi GPL v2.
BSD là gì và nó liên quan đến Linux như thế nào?
Đáp án:
Berkeley Software Distribution (BSD) được phát triển từ mã nguồn UNIX gốc tại UC Berkeley từ năm 1975. BSD suýt chút nữa đã hoàn thiện một hệ điều hành UNIX miễn phí trước Linux, nhưng các vụ kiện tụng từ AT&T vào năm 1992 đã làm chậm tiến độ của họ. Khi vụ kiện kết thúc (1994), Linux đã chiếm lĩnh thị trường. Ngày nay, nền tảng macOS được xây dựng dựa trên BSD. Các nhánh FreeBSD, OpenBSD, NetBSD vẫn đang hoạt động mạnh mẽ.
Linux Foundation là gì và vai trò của tổ chức này?
Đáp án:
Linux Foundation là tổ chức phi lợi nhuận quản lý việc phát triển Linux kernel, bảo vệ pháp lý cho Linux và thiết lập các tiêu chuẩn chung. Linus Torvalds hiện được trả lương bởi tổ chức này để toàn tâm phát triển kernel. Các nhà bảo trợ lớn gồm: IBM/Red Hat, Amazon AWS, Microsoft, Google, Meta, Intel... vì tất cả các gã khổng lồ công nghệ này đều phụ thuộc hoàn toàn vào Linux.
Kể tên 3 tính năng nâng cao của Linux trong doanh nghiệp lớn.
Đáp án:
(1) Clustering: Nhiều máy chủ chạy cùng nhau như một máy ảo lớn, đảm bảo tính sẵn sàng cao (HA). (2) Virtualization: KVM/Xen cho phép chạy hàng trăm máy ảo trên một máy chủ vật lý -- nền tảng của điện toán đám mây. (3) Container & Kubernetes: Quản lý hàng nghìn ứng dụng nhỏ, tự động tăng giảm tài nguyên (scale) theo lưu lượng truy cập thực tế.