Lệnh rmmod trong Linux

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.

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