Bỏ qua mô-đun kernel khi khởi động


12

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:


1

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.

  • Trong Arch Linux , load_modules=offbuộ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.
  • Knoppix có một danh sách dài các tham số khởi động bổ sung (còn gọi là "cheatcodes") ; đây là sự pha trộn của các tham số khởi động hạt nhân bình thường và các tính năng bổ sung dành riêng cho Knoppix.

Để 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 kernel
  • cgroup_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.noacpivô 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 kernel

7

Vô hiệu hóa các module cụ thể 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.


Tôi có cùng một câu hỏi về lý do tại sao "$ module_name.blacklist = yes" hoạt động và tôi nghĩ nó có liên quan đến phần này của mã hạt nhân: git.kernel.org/pub/scm/linux/kernel/git/urdy/linux- ổn định.git / Lôi
Johnlcf

1

Bạn có thể thêm nó vào /etc/modprobe.d/blacklist hoặc danh sách đen 'modulename'


điều này sẽ hoạt động nhưng yêu cầu khởi động vào kernel khác (nếu có) hoặc hệ thống LiveCD.
quack quixote
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.