Lệnh mkinitrd trong Linux

Giới thiệu

Trong lab này, bạn sẽ học cách sử dụng lệnh mkinitrd của Linux để tạo và tùy chỉnh một ảnh RAM disk ban đầu (initramfs), vốn là một thành phần quan trọng của quá trình khởi động Linux. Bạn sẽ hiểu mục đích của lệnh mkinitrd, tạo một ảnh initramfs tùy chỉnh và khắc phục sự cố khởi động kernel bằng tiện ích này. Lab này bao gồm các kỹ năng quản lý hệ thống tệp và đĩa quan trọng, cung cấp các ví dụ thực tế và hướng dẫn từng bước.

Tìm hiểu Mục đích của Lệnh mkinitrd

Trong bước này, bạn sẽ tìm hiểu về mục đích của lệnh mkinitrd trong Linux. Lệnh mkinitrd được sử dụng để tạo ảnh RAM disk ban đầu (initramfs), vốn là một thành phần quan trọng của quá trình khởi động Linux.

Initramfs là một hệ thống tệp tạm thời được tải vào bộ nhớ trong giai đoạn đầu của quá trình khởi động. Nó chứa các driver và module cần thiết để gắn kết hệ thống tệp root, có thể nằm trên nhiều thiết bị lưu trữ khác nhau, chẳng hạn như ổ cứng, mảng RAID hoặc bộ nhớ gắn mạng.

Nếu không có initramfs, kernel sẽ không thể truy cập hệ thống tệp root và hoàn thành quá trình khởi động. Lệnh mkinitrd chịu trách nhiệm tạo ảnh initramfs này, có thể được tùy chỉnh để bao gồm các driver, module và tiện ích cụ thể cần thiết cho hệ thống của bạn.

Hãy khám phá lệnh mkinitrd và cách sử dụng nó:

sudo mkinitrd -v -f /boot/initramfs-$(uname -r).img $(uname -r)

Ví dụ đầu ra:

Creating initramfs image file '/boot/initramfs-5.15.0-58-generic.img'
Copying modules to initramfs image...
Preparing initramfs image...

Lệnh trên tạo một tệp ảnh initramfs mới có tên initramfs-$(uname -r).img và lưu trữ nó trong thư mục /boot. Tùy chọn -v cho phép đầu ra chi tiết và tùy chọn -f buộc tạo một tệp ảnh mới.

Lệnh mkinitrd đọc phiên bản kernel từ lệnh uname -r và sử dụng nó để tạo ảnh initramfs cho kernel tương ứng.

Tạo Ảnh initramfs Tùy chỉnh

Trong bước này, bạn sẽ học cách tạo ảnh initramfs tùy chỉnh bằng lệnh mkinitrd. Tùy chỉnh initramfs có thể hữu ích trong các trường hợp bạn cần bao gồm các driver, module hoặc tiện ích bổ sung không phải là một phần của initramfs mặc định.

Hãy bắt đầu bằng cách tạo một thư mục để lưu trữ các tệp initramfs tùy chỉnh:

mkdir ~/project/custom-initramfs
cd ~/project/custom-initramfs

Tiếp theo, chúng ta sẽ tạo một tệp cấu hình tùy chỉnh cho initramfs. Tệp này sẽ chỉ định nội dung bổ sung mà chúng ta muốn đưa vào ảnh.

nano ~/project/custom-initramfs/initramfs.conf

Thêm nội dung sau vào tệp initramfs.conf:

add_dracutmodules+="custom-module"

Cấu hình này sẽ bao gồm một module tùy chỉnh có tên custom-module trong ảnh initramfs.

Bây giờ, hãy tạo ảnh initramfs tùy chỉnh:

sudo mkinitrd -v -f /boot/custom-initramfs.img --with-modules --with-firmware --with-usb --with-i18n --with-nfs --with-crypt --with-dm --with-lvm --with-raid --with-md --with-fips --with-selinux --with-plymouth --with-shutdown --with-network --with-multipath --with-kernel-modules=custom-module

Lệnh trên tạo một ảnh initramfs tùy chỉnh có tên custom-initramfs.img và lưu trữ nó trong thư mục /boot. Các tùy chọn --with-* chỉ định các module, driver và tiện ích bổ sung sẽ được bao gồm trong initramfs.

Ví dụ đầu ra:

Creating initramfs image file '/boot/custom-initramfs.img'
Copying modules to initramfs image...
Preparing initramfs image...

Khắc phục sự cố Khởi động Kernel bằng mkinitrd

Trong bước này, bạn sẽ học cách sử dụng lệnh mkinitrd để khắc phục sự cố khởi động kernel. Ảnh initramfs được tạo bởi mkinitrd là một thành phần quan trọng của quá trình khởi động Linux và nếu nó không được cấu hình đúng cách, nó có thể dẫn đến các vấn đề khởi động.

Hãy mô phỏng một sự cố khởi động bằng cách sửa đổi ảnh initramfs và sau đó sử dụng mkinitrd để khắc phục sự cố.

Đầu tiên, hãy tạo một bản sao lưu của ảnh initramfs hiện tại:

sudo cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak

Bây giờ, hãy cố tình làm hỏng ảnh initramfs bằng cách xóa một tệp quan trọng:

sudo rm /boot/initramfs-$(uname -r).img

Nếu bạn thử khởi động lại hệ thống ngay bây giờ, bạn có thể gặp phải sự cố khởi động kernel, vì ảnh initramfs bị thiếu.

Để khắc phục sự cố, chúng ta có thể sử dụng lệnh mkinitrd để tạo lại ảnh initramfs:

sudo mkinitrd -v -f /boot/initramfs-$(uname -r).img $(uname -r)

Ví dụ đầu ra:

Creating initramfs image file '/boot/initramfs-5.15.0-58-generic.img'
Copying modules to initramfs image...
Preparing initramfs image...

Sau khi chạy lệnh mkinitrd, ảnh initramfs sẽ được tạo lại và kernel sẽ có thể khởi động thành công.

Để xác minh rằng sự cố đã được giải quyết, bạn có thể khởi động lại hệ thống và kiểm tra nhật ký khởi động để tìm bất kỳ lỗi nào liên quan đến initramfs.

Tóm tắt

Trong lab này, trước tiên bạn đã tìm hiểu về mục đích của lệnh mkinitrd trong Linux, được sử dụng để tạo ảnh RAM disk ban đầu (initramfs). Initramfs là một thành phần quan trọng của quá trình khởi động Linux, vì nó chứa các driver và module cần thiết để gắn kết hệ thống tệp root. Sau đó, bạn đã khám phá cách tạo ảnh initramfs tùy chỉnh bằng cách bao gồm các driver, module hoặc tiện ích bổ sung không phải là một phần của initramfs mặc định. Cuối cùng, bạn đã học cách khắc phục sự cố khởi động kernel bằng lệnh mkinitrd, có thể hữu ích trong các trường hợp initramfs mặc định không thể gắn kết hệ thống tệp root.

400+ câu lệnh phổ biến trong Linux