Giới thiệu
Trong lab này, chúng ta sẽ khám phá lệnh rmmod
của Linux, được sử dụng để gỡ bỏ một kernel module khỏi hệ thống đang chạy. Kernel module là các đoạn mã có thể được tải và gỡ tải vào kernel khi cần, cung cấp một cách để mở rộng chức năng của kernel. Lab này sẽ bao gồm việc tìm hiểu mục đích của lệnh rmmod
, gỡ bỏ một kernel module bằng rmmod
, và khám phá các tình huống thực tế cho việc sử dụng nó. Chúng ta sẽ bắt đầu bằng cách liệt kê các kernel module hiện đang được tải bằng lệnh lsmod
, và sau đó trình bày cách gỡ bỏ một module cụ thể bằng rmmod
.
Tìm hiểu Mục đích của Lệnh rmmod
Trong bước này, chúng ta sẽ khám phá mục đích và cách sử dụng của lệnh rmmod
trong hệ điều hành Linux. Lệnh rmmod
được sử dụng để gỡ bỏ một kernel module khỏi hệ thống đang chạy.
Kernel module là các đoạn mã có thể được tải và gỡ tải vào kernel khi cần, mà không cần khởi động lại toàn bộ hệ thống. Chúng cung cấp một cách để mở rộng chức năng của kernel, cho phép bạn thêm hỗ trợ cho phần cứng mới, hệ thống tập tin, giao thức mạng, và hơn thế nữa.
Lệnh rmmod
được sử dụng để gỡ bỏ một kernel module khỏi hệ thống. Điều này có thể hữu ích khi bạn không còn cần chức năng được cung cấp bởi một module cụ thể, hoặc khi bạn cần thay thế một module bằng một phiên bản mới hơn.
Hãy bắt đầu bằng cách liệt kê các kernel module hiện đang được tải bằng lệnh lsmod
:
sudo lsmod
Ví dụ đầu ra:
Module Size Used by
vboxsf 106496 1
vboxguest 454656 0
snd_hda_codec_realtek 114688 1
snd_hda_codec_generic 86016 1 snd_hda_codec_realtek
snd_hda_intel 53248 0
snd_hda_codec 135168 3 snd_hda_codec_generic,snd_hda_codec_realtek,snd_hda_intel
snd_hda_core 90112 5 snd_hda_codec_generic,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec
snd_hwdep 16384 1 snd_hda_codec
snd_pcm 106496 4 snd_hda_intel,snd_hda_codec
snd_timer 32768 1 snd_pcm
snd 98304 21 snd_hda_codec_generic,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer
soundcore 16384 1 snd
Đầu ra này hiển thị các kernel module hiện đang được tải. Để gỡ bỏ một module, bạn có thể sử dụng lệnh rmmod
theo sau là tên module. Ví dụ, để gỡ bỏ module vboxsf
, bạn sẽ chạy:
sudo rmmod vboxsf
Sau khi chạy lệnh này, bạn có thể xác minh rằng module đã được gỡ bỏ bằng cách chạy lại lsmod
:
sudo lsmod
Ví dụ đầu ra:
Module Size Used by
vboxguest 454656 0
snd_hda_codec_realtek 114688 1
snd_hda_codec_generic 86016 1 snd_hda_codec_realtek
snd_hda_intel 53248 0
snd_hda_codec 135168 3 snd_hda_codec_generic,snd_hda_codec_realtek,snd_hda_intel
snd_hda_core 90112 5 snd_hda_codec_generic,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec
snd_hwdep 16384 1 snd_hda_codec
snd_pcm 106496 4 snd_hda_intel,snd_hda_codec
snd_timer 32768 1 snd_pcm
snd 98304 21 snd_hda_codec_generic,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer
soundcore 16384 1 snd
Bạn có thể thấy rằng module vboxsf
không còn được liệt kê, cho biết rằng nó đã được gỡ bỏ thành công.
Gỡ bỏ một Kernel Module Sử dụng rmmod
Trong bước này, chúng ta sẽ học cách gỡ bỏ một kernel module bằng lệnh rmmod
.
Đầu tiên, hãy liệt kê các kernel module hiện đang được tải bằng lệnh lsmod
:
sudo lsmod
Ví dụ đầu ra:
Module Size Used by
vboxguest 454656 0
snd_hda_codec_realtek 114688 1
snd_hda_codec_generic 86016 1 snd_hda_codec_realtek
snd_hda_intel 53248 0
snd_hda_codec 135168 3 snd_hda_codec_generic,snd_hda_codec_realtek,snd_hda_intel
snd_hda_core 90112 5 snd_hda_codec_generic,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec
snd_hwdep 16384 1 snd_hda_codec
snd_pcm 106496 4 snd_hda_intel,snd_hda_codec
snd_timer 32768 1 snd_pcm
snd 98304 21 snd_hda_codec_generic,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer
soundcore 16384 1 snd
Giả sử chúng ta muốn gỡ bỏ module vboxguest
. Để làm điều này, chúng ta có thể sử dụng lệnh rmmod
:
sudo rmmod vboxguest
Sau khi chạy lệnh này, hãy xác minh rằng module đã được gỡ bỏ bằng cách kiểm tra đầu ra của lsmod
một lần nữa:
sudo lsmod
Ví dụ đầu ra:
Module Size Used by
snd_hda_codec_realtek 114688 1
snd_hda_codec_generic 86016 1 snd_hda_codec_realtek
snd_hda_intel 53248 0
snd_hda_codec 135168 3 snd_hda_codec_generic,snd_hda_codec_realtek,snd_hda_intel
snd_hda_core 90112 5 snd_hda_codec_generic,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec
snd_hwdep 16384 1 snd_hda_codec
snd_pcm 106496 4 snd_hda_intel,snd_hda_codec
snd_timer 32768 1 snd_pcm
snd 98304 21 snd_hda_codec_generic,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer
soundcore 16384 1 snd
Bạn có thể thấy rằng module vboxguest
không còn được liệt kê, cho biết rằng nó đã được gỡ bỏ thành công.
Khám phá Các Tình huống Thực tế cho Việc Sử dụng rmmod
Trong bước cuối cùng này, chúng ta sẽ khám phá một số tình huống thực tế trong đó lệnh rmmod
có thể hữu ích.
Một tình huống phổ biến là khi bạn cần cập nhật một kernel module. Ví dụ, giả sử bạn đã cài đặt trình điều khiển đồ họa mới và muốn thay thế trình điều khiển cũ. Bạn có thể sử dụng lệnh rmmod
để gỡ bỏ module trình điều khiển cũ, và sau đó cài đặt trình điều khiển mới.
Đầu tiên, hãy liệt kê các kernel module hiện đang được tải:
sudo lsmod
Ví dụ đầu ra:
Module Size Used by
nvidia_drm 106496 0
nvidia_modeset 1028096 0
nvidia 28540928 1 nvidia_modeset
drm_kms_helper 184320 1 nvidia_drm
drm 516096 4 nvidia_drm,drm_kms_helper
Trong ví dụ này, chúng ta có thể thấy rằng module nvidia
hiện đang được tải. Để gỡ bỏ nó, chúng ta có thể sử dụng lệnh rmmod
:
sudo rmmod nvidia
Sau khi chạy lệnh này, chúng ta có thể xác minh rằng module đã được gỡ bỏ:
sudo lsmod
Ví dụ đầu ra:
Module Size Used by
nvidia_drm 106496 0
nvidia_modeset 1028096 0
drm_kms_helper 184320 1 nvidia_drm
drm 516096 4 nvidia_drm,drm_kms_helper
Bây giờ, bạn có thể tiến hành cài đặt module trình điều khiển đồ họa mới.
Một tình huống thực tế khác để sử dụng rmmod
là khi bạn cần khắc phục sự cố hệ thống. Nếu bạn nghi ngờ rằng một kernel module cụ thể đang gây ra sự cố, bạn có thể thử gỡ bỏ nó để xem sự cố có được giải quyết hay không.
Ví dụ: nếu bạn đang gặp sự cố về kết nối mạng, bạn có thể thử gỡ bỏ module trình điều khiển mạng và sau đó kiểm tra xem sự cố đã được giải quyết hay chưa.
sudo rmmod e1000e
Sau khi gỡ bỏ module, bạn có thể kiểm tra kết nối mạng và xem sự cố đã được giải quyết hay chưa.
Hãy nhớ rằng, khi gỡ bỏ một kernel module, bạn phải luôn đảm bảo rằng module đó không được sử dụng và việc gỡ bỏ nó sẽ không khiến bất kỳ thành phần hệ thống quan trọng nào ngừng hoạt động. Nếu bạn không chắc chắn, tốt nhất là tham khảo tài liệu hoặc tìm kiếm sự hỗ trợ từ các systemadmin có kinh nghiệm.
Tóm tắt
Trong lab này, chúng ta đã khám phá mục đích và cách sử dụng của lệnh rmmod
trong hệ điều hành Linux. Chúng ta đã học được rằng kernel module là các đoạn mã có thể được tải và gỡ tải vào kernel khi cần, và lệnh rmmod
được sử dụng để gỡ bỏ một kernel module khỏi hệ thống đang chạy. Chúng ta cũng đã thực hành sử dụng lệnh lsmod
để liệt kê các kernel module hiện đang được tải, và sau đó gỡ bỏ module vboxsf
bằng lệnh rmmod
. Điều này cho phép chúng ta quản lý chức năng của kernel bằng cách thêm hoặc gỡ bỏ các module khi cần thiết.