1. Linux Kernel là gì?
2. Cách thức hoạt động của Linux Kernel
Linux Kernel dựa trên cấu trúc nguyên khối (monolithic):
Linux Kernel sử dụng mô hình nguyên khối, trong đó toàn bộ hệ thống hoạt động trong không gian kernel. Các chức năng cốt lõi như quản lý bộ nhớ, quản lý tiến trình, quản lý tệp và giao tiếp với phần cứng đều được thực hiện trong không gian kernel này. Mô hình này cho phép các thành phần của kernel truy cập và tương tác với nhau một cách nhanh chóng và hiệu quả, do không phải chuyển đổi giữa user space và kernel space thường xuyên.
Ưu điểm:
- Hiệu suất cao vì các chức năng chủ yếu được thực hiện trong không gian kernel.
- Đơn giản hóa việc phát triển và bảo trì kernel.
Nhược điểm:
- Lớn và phức tạp hơn so với microkernel, do toàn bộ hệ thống được xây dựng trong kernel space.
- Độ tin cậy thấp hơn trong trường hợp lỗi xảy ra có thể ảnh hưởng đến toàn bộ hệ thống.
Ở hình trên, có thể thấy rằng kernel kiểu nguyên khối quản lý toàn bộ giao tiếp giữa các ứng dụng với phần cứng.
3. Linux Kernel nằm ở đâu trong hệ thống?
Linux Kernel, thành phần cốt lõi của hệ điều hành, được lưu trữ trong một phân vùng khởi động riêng biệt để đảm bảo tính an toàn và ổn định. Khi hệ thống khởi động (reboot), kernel sẽ được tự động tải vào bộ nhớ và bắt đầu quản lý các tài nguyên hệ thống.
Vị trí lưu trữ Linux Kernel:
- Thường nằm trong thư mục
/boot
trên các hệ thống Debian/Ubuntu. - Có thể nằm ở phân vùng khởi động riêng biệt trên các hệ thống khác.
Để truy cập được vào Linux Kernel, bạn cần biết được phiên bản Linux Kernel hiện tại đang sử dụng. Xem cách kiểm tra phiên bản Linux Kernet nhanh bằng cách sử dụng lệnh:
Trong đó:
- 5 – Phiên bản kernel chính, đánh dấu những thay đổi lớn về tính năng và kiến trúc
- 3 – Bản sửa đổi chính, bao gồm các tính năng mơips và những cải tiến đáng kể. Trước đây, là số chẵn (2,4,6…) thường là chỉ phiên bản ổn định còn số lẽ (3,5,7…) là phiên bản phát triển.
- 0 – Bản sửa đổi phụ, tập trung vào việc sửa lỗi vá các lỗ hổng bảo mật.
4. Chức năng và ứng dụng của Linux Kernel
Linux Kernel và nhiệm vụ quản lý bộ nhớ
Linux Kernel là trái tim của hệ điều hành, chịu trách nhiệm quản lý tài nguyên hệ thống và cung cấp các dịch vụ cần thiết cho các ứng dụng. Một trong những nhiệm vụ chính của Kernel là quản lý bộ nhớ, bao gồm cả bộ nhớ vật lý và bộ nhớ ảo. Dưới đây là các cơ chế quản lý bộ nhớ của Linux Kernel:
– Bảng page: Là cơ chế ánh xạ địa chỉ ảo sang địa chỉ vật lý. Bảng page cho phép Kernel quản lý hiệu quả bộ nhớ bằng cách theo dõi các trang bộ nhớ và ánh xạ chúng tới các vị trí tương ứng trong bộ nhớ vật lý.
– Phân bổ (paging): Kernel chia bộ nhớ thành các page có kích thước cố định (thường là 4096 byte), giúp quản lý và phân bổ bộ nhớ một cách hiệu quả hơn. Việc phân bổ này cũng giúp giảm thiểu phân mảnh bộ nhớ và tối ưu hóa việc sử dụng tài nguyên.
– Phân mảnh bộ nhớ: Khi bộ nhớ được chia thành nhiều phần không liền kề, có thể dẫn đến phân mảnh bộ nhớ. Kernel sử dụng các thuật toán để giảm thiểu phân mảnh và cải thiện hiệu suất hệ thống.
– Bộ nhớ ảo: Cho phép các tiến trình sử dụng nhiều bộ nhớ hơn bộ nhớ vật lý thực tế của hệ thống. Bộ nhớ ảo tạo ra một không gian địa chỉ riêng biệt và bảo vệ hệ thống khỏi các truy cập trái phép.
Hầu hết các tác vụ trong Kernel được thực hiện thông qua system call, là cơ chế mà các tiến trình sử dụng để tương tác với Kernel. Một ví dụ cụ thể là system call để truy xuất kích thước page trong bộ nhớ, giúp ứng dụng có thể biết kích thước của mỗi trang bộ nhớ để tối ưu hóa việc sử dụng bộ nhớ.
Chức năng quản lý bộ nhớ có nhiệm vụ paging (phân bổ bộ nhớ) và swapping (hoán đổi page) trong bộ nhớ ảo. Bộ nhớ ảo được phân bổ cho process được tách biệt hoàn toàn, từ đó tạo thêm một lớp bảo vệ hệ điều hành khỏi các chương trình độc hại.
Các lệnh Linux như htop
và atop
có thể được dùng để giám sát các thông tin liên quan đến bộ nhớ cho từng process đang chạy.
Quản lý Process
Linux Kernel quản lý mọi chương trình đang chạy trong hệ thống như là các tiến trình. Kernel chịu trách nhiệm tạo, chạy và xoá các tiến trình này. Các system call như fork()
hoặc exec()
là những công cụ quan trọng trong môi trường đa tiến trình, cho phép Kernel tạo ra các tiến trình mới hoặc thay đổi chương trình chạy của một tiến trình hiện có.
Mỗi tiến trình trong hệ thống cần sử dụng CPU để thực thi, và Kernel cũng quản lý việc lên lịch cho các tiến trình (Process Scheduler). Process Scheduler là một phần quan trọng để sắp xếp lịch cho các tiến trình theo nhiều thuật toán khác nhau, giúp tối ưu hóa sử dụng CPU và đảm bảo công bằng cho các tiến trình.
Ngoài ra, Linux Kernel còn đảm nhận vai trò quan trọng trong IPC (Inter-Process Communication) – Giao tiếp giữa các tiến trình. Các cơ chế như pipe, semaphore và các thành phần IPC khác được điều phối bởi Kernel, giúp duy trì giao tiếp hiệu quả và an toàn giữa các tiến trình trong hệ thống.
Để theo dõi các tiến trình đang chạy trong hệ thống, bạn có thể sử dụng lệnh htop
trong Terminal. Lệnh này cung cấp thông tin về các tiến trình như thứ tự ưu tiên trong lịch và tỷ lệ CPU đang sử dụng, giúp bạn quản lý và kiểm soát hiệu quả hoạt động của hệ thống.
5. Hướng dẫn cài đặt Linux Kernel
Một đặc điểm đặc biệt của Linux Kernel là khả năng cho phép người dùng thay đổi sang các phiên bản kernel khác nhau. Tuy nhiên, quá trình này tương đối phức tạp, do đó Vietnix chỉ đề cập ngắn gọn đến những bước cơ bản để cài đặt một phiên bản kernel cụ thể như sau:
Bước 1: Tải xuống file kernel cần cài đặt từ trang web chính thức của Linux Kernel. Sau đó, giải nén và cấu hình file bằng lệnh make
.
Bước 2: Chạy lệnh make menuconfig
. Điều này mở ra một cửa sổ để người dùng có thể chọn các module và tính năng cho kernel mới. Một cách nhanh chóng hơn là sao chép file cấu hình hiện tại của kernel đang chạy vào thư mục đã giải nén.
Lệnh ở trên có nhiệm vụ copy file config có trong directory boot của kernel hiện tại, rồi lưu lại dưới dạng một file config mới với tên .config
.
- Bước 3: Tiếp theo, bạn cần cài đặt một số công cụ và compiler để biên dịch file kernel. Nếu bạn dùng Debian/Ubuntu có thể sử dụng lệnh dưới đây:
Kernel image được biên dịch bằng lệnh make
bên trong directory chứa file kernel mới. Quá trình biên dịch có thể mất khá nhiều thời gian, nên bạn bạn chờ thêm một chút nhé!
- Bước 4: Sau khi quá trình biên dịch hoàn tất, bạn cần cài đặt các module và kernel image bằng lệnh sau:
Trong đó, phần lệnh đầu tiên cài đặt module của kernel, phần lệnh sau có nhiệm vụ cài đặt kernel hoàn chỉnh cùng với các hình ảnh và file quan trọng bên trong thư mục /boot
.
- Bước 5: Bây giờ ta có thể chuyển sang phiên bản kernel mới vừa cài đặt:
Trong đó, PHIEN_BAN_KERNEL_MOI
phải khớp với tên của file image vừa mới cài đặt.
- Bước 6: Ở bước cuối cùng, bạn chỉ cần restart lại hệ thống bằng lệnh
reboot
để áp dụng các thay đổi.
Cài đặt Linux Kernel trên Ubuntu
Ubuntu hỗ trợ Kernel PPA để người dùng download các gói kernel từ phiên bản 2.6 đến 5.19 (Mới nhất).
- Bước 1: Bạn có thể download package
.deb
cho một phiên bản kernel.
Bên cạnh bản 64-bit (amd64
) thì PPA cũng hỗ trợ các kiến trúc CPU khác như arm64/armhf, ppc64el
và s390x
.
- Bước 2: Sau khi download package xong, bạn có thể cài đặt bằng lệnh
apt
trong Terminal như sau:
- Bước 3: Cuối cùng là restart lại máy rồi kiểm tra phiên bản Linux Kernel hiện tại bằng lệnh:
Cài đặt Linux Kernel trong Fedora
Tương tự như Ubuntu thì Fedora cũng có Kernel Vanilla Repositories để lưu trữ các gói Kernel Linux mới nhất.
Các dòng cho kiến trúc CPU amd64
và arm64
:
- kernel-vanilla-mainline – Bản kernel mới nhất trong giai đoạn tiền phát hành (còn gọi là rc kernel).
- kernel-vanilla-mainline-wo-mergew – Tương tự ở trên nhưng bỏ kernel khỏi cửa sổ merge.
- kernel-vanilla-stable – Bản kernel ổn định mới nhất, theo kernel.org.
- kernel-vanilla-stable-rc – Tương tự ở trên, kèm theo kernel RC.
- kernel-vanilla-fedora – Bản phát hành mới nhất của dòng kernel mặc định cho Fedora.
- Bước 1: Trước tiên, mở Terminal rồi nhập lệnh sau để thiết lập repo:
- Bước 2: Sau đó cài đặt bản Kernel mới nhất bằng lệnh:
Trong đó, thay kernel-vanilla-stable
bằng các option bạn muốn theo ở trên.
- Bước 3: Cuối cùng là restart lại máy tính để thử nghiệm bản Linux kernel mới cho Fedora.
Linux Kernel là trái tim của hệ điều hành Linux, là nơi quản lý và điều phối các tài nguyên của hệ thống. Việc nghiên cứu về Linux Kernel sẽ giúp bạn hiểu sâu hơn về cách hoạt động của hệ điều hành này và cách sử dụng các tính năng của kernel để tối ưu hóa hiệu suất và bảo mật của hệ thống. Bài viết từ Vietnix ở đây hy vọng đã cung cấp cho bạn những kiến thức cơ bản về kernel, giúp bạn tiếp cận và khám phá thế giới Linux một cách hiệu quả hơn. Chúc các bạn thành công trong việc nghiên cứu và áp dụng Linux Kernel!