hoatranlab.io.vn Zalo: 0917516878 Hotline: 0917516878 [email protected]
HoaTranLab Logo HoaTranLab
Linux Bible 11th Edition • Chương 1

Bắt đầu với Linux

Khám phá lịch sử Linux, triết lý mã nguồn mở, các bản phân phối, và lý do vì sao Linux là nền tảng của Internet, di động và điện toán đám mây hiện đại.

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.

Pipes - Triết lý UNIX cơ bản

$ 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.

Thông điệp lịch sử của Linus (25/08/1991)

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ở:

Các loại giấy phép OSI phổ biến

# 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

1

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.

Terminal

$ 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

2

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.

Terminal

$ cat /etc/os-release

NAME="Fedora Linux"

VERSION="40 (Workstation Edition)"

ID=fedora

VERSION_ID=40

PRETTY_NAME="Fedora Linux 40 (Workstation Edition)"

3

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).

Terminal

$ 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

4

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.

Terminal

$ 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

5

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.

Terminal

$ 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

6

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.

Terminal (Fedora/RHEL)

$ 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

7

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.

Terminal

$ 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

1

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.

2

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.

3

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.

4

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:

Terminal

$ uname -r

6.8.0-45-generic

$ uname -a # Xem toàn bộ thông tin hệ thống chi tiết

5

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.

6

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.

7

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ẽ.

8

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.

9

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ế.

Chương trước Trang chủ Chương 2