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.