Có một mô-đun hạt nhân bị hỏng, do đó tôi thậm chí không thể tải HĐH, vì vậy tôi không thể xóa hoặc sửa nó. Có thể bỏ qua mô-đun này khi khởi động, sử dụng các tham số của kernel hoặc cái gì đó không?
Có một mô-đun hạt nhân bị hỏng, do đó tôi thậm chí không thể tải HĐH, vì vậy tôi không thể xóa hoặc sửa nó. Có thể bỏ qua mô-đun này khi khởi động, sử dụng các tham số của kernel hoặc cái gì đó không?
Câu trả lời:
Danh sách đen mô-đun như đã đề cập trong câu trả lời trước là cách tốt nhất để tránh hoàn toàn mô-đun hạt nhân. Ngoài danh sách đen, không có cách chung nào để vô hiệu hóa một mô-đun.
Một số bản phân phối Linux cung cấp các tham số khởi động kernel để làm những việc như thế này.
load_modules=off
buộc udev bỏ qua tự động tải. Điều này sẽ cho phép bạn khởi động mà không tải các mô-đun, đưa vào danh sách đen một mô-đun gây rắc rối và khởi động lại bình thường mà không tải mô-đun gặp rắc rối.Để biết thêm thông tin, xem tài liệu Thông số hạt nhân . Có các tham số để vô hiệu hóa các hệ thống con cụ thể. Ví dụ:
nousb
vô hiệu hóa hỗ trợ USB kernelcgroup_disable=[name]
vô hiệu hóa một bộ điều khiển cụ thể; tuy nhiên, "bộ nhớ" là ví dụ duy nhất được hỗ trợ cụ thểlibata.noacpi
vô hiệu hóa sử dụng ACPI trong libata (bộ điều khiển SATA); đây là một ví dụ về việc truyền tham số mô-đun qua kernelVô hiệu hóa các module cụ thể là có thể từ bộ nạp khởi động, nhưng có vẻ như distro phụ thuộc vào thực tế.
Một mặt, các tài liệu Tham số hạt nhân Linux , kể từ tháng 8 năm 2016:
module_blacklist=
[KNL] Không tải danh sách mô-đun được phân tách bằng dấu phẩy. Hữu ích để gỡ lỗi các mô-đun vấn đề.
Mặt khác, tùy chọn phù hợp với tôi với openSUSE 42.1 (Linux 4.1.31) được mô tả trong các mô-đun Arch Kernel wiki:
Bạn cũng có thể liệt kê các mô-đun từ bộ tải khởi động. Đơn giản chỉ cần thêm
modprobe.blacklist=modname1,modname2,modname3
đến dòng kernel của bộ nạp khởi động của bạn, như được mô tả trong các tham số Kernel. Khi bạn nằm trong danh sách đen nhiều hơn một mô-đun, hãy lưu ý rằng chúng chỉ được phân tách bằng dấu phẩy. Dấu cách hoặc bất cứ thứ gì khác có thể phá vỡ cú pháp.
(Cảm ơn @gertvdijk tại unix.SE đã chỉ ra điều này.)
Cũng đáng đề cập là phương pháp sau :
Để ngăn chặn các mô-đun nhất định được tải bởi kernel bằng dòng lệnh grub, bạn cần truyền chúng dưới dạng tham số cho dòng kernel bằng cú pháp dưới đây.
$module_name.blacklist=yes
Tôi không biết họ đã lấy nó từ đâu, nhưng chắc chắn sẽ không đau khi thử bất kỳ phương pháp nào khác nếu tất cả đều thất bại.
Bạn có thể thêm nó vào /etc/modprobe.d/blacklist hoặc danh sách đen 'modulename'