Cụ thể vấn đề là khi bạn xây dựng mô-đun của mình, cây nguồn kernel có thể đã thiếu tệp Modules.symvers. Hệ thống kbuild thực sự cảnh báo bạn về điều này khi bạn xây dựng mô-đun của mình. Nếu Modules.symvers bị thiếu, bạn sẽ thấy:
Cảnh báo: Phiên bản biểu tượng dump /usr/src/linux-2.6.34-12/Modules.symvers bị thiếu; mô-đun sẽ không có phụ thuộc và sửa đổi.
Nếu kernel của bạn đã CONFIG_MODVERSIONS
được bật, thì trong giai đoạn modpost xây dựng trình điều khiển của bạn, nó sẽ chạy scripts / mod / modpost với tùy chọn -m. Nếu bạn dũng cảm và xem nguồn script / mod / modpost.c , bạn sẽ thấy tùy chọn -m thêm biểu tượng _module_layout_ từ vmlinux, tuy nhiên nếu bạn không có Modules.symvers từ kernel, bạn sẽ không nhận được giá trị CRC cho biểu tượng này và bạn sẽ nhận được thông báo lỗi này.
Vì vậy, có hai cách xung quanh này.
1) chạy bản dựng đầy đủ của hạt nhân đang chạy của bạn để tạo Modules.symvers, sau đó xây dựng lại mô-đun của bạn. [http://www.mjmwired.net/kernel/Documentation/kbuild/modules.txt[[1]
51 === 2. How to Build External Modules
52
53 To build external modules, you must have a prebuilt kernel available
54 that contains the configuration and header files used in the build.
55 Also, the kernel must have been built with modules enabled. If you are
56 using a distribution kernel, there will be a package for the kernel you
57 are running provided by your distribution.
58
59 An alternative is to use the "make" target "modules_prepare." This will
60 make sure the kernel contains the information required. The target
61 exists solely as a simple way to prepare a kernel source tree for
62 building external modules.
63
64 NOTE: "modules_prepare" will not build Module.symvers even if
65 CONFIG_MODVERSIONS is set; therefore, a full kernel build needs to be
66 executed to make module versioning work.
2) Tùy chọn khác là yêu cầu modprobe ngu ngốc bỏ qua tất cả những thứ nhảm nhí đó và chỉ cần tải mô-đun của bạn bằng mọi cách:
modprobe -f <module>
Tôi có xu hướng ủng hộ lựa chọn 2 :)