Tôi đã cố gắng cài đặt trình điều khiển AMD mới nhất trên máy Linux của mình, nhưng sau khi biên dịch nó, tôi nhận được thông báo này:
modprobe: ERROR: không thể chèn 'fglrx': Biểu tượng không xác định trong mô-đun hoặc tham số không xác định (xem dmesg) không thành công.
Xin lưu ý rằng tôi không quá giỏi về điều Linux này, vì tôi là người bản địa BSD nhiều hơn.
Chi tiết tình huống
- Arch Linux, x86_64, phát hành 2016.01.01
- Phiên bản hạt nhân: 4.3.3-2
- AMD Radeon R9 290x
- Màu đỏ thẫm, fglrx 15.302
Thực hiện cho đến nay
Ban đầu, tập lệnh cài đặt thậm chí không đến phần EULA, vì tôi phải cài đặt kernel-headers
gói. Tại thời điểm này tôi thực sự có thể bắt đầu cố gắng cài đặt nó.
Chỉ cần chạy tập lệnh đã cho tôi một lỗi:
/usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:634:9: error: void value not ignored as it ought to be
len = seq_printf(m, "%d\n", major);
^
Sau một vài lần googling nhỏ, tôi tìm thấy giải pháp này và thực hiện thủ công/usr/lib/modules/fglrx/build_mod/make.sh
Nhưng quá trình biên dịch kết thúc với những thông điệp sau:
WARNING: "mtrr_add" [/usr/lib/modules/fglrx/build_mod/2.6.x/fglrx.ko] undefined!
WARNING: "mtrr_del" [/usr/lib/modules/fglrx/build_mod/2.6.x/fglrx.ko] undefined!
Tất nhiên, bạn phải bỏ qua cảnh báo và vì vậy tôi đã tiến hành chỉ cài đặt các mô-đun đã biên dịch ... dẫn đến thông báo:
modprobe: ERROR: không thể chèn 'fglrx': Biểu tượng không xác định trong mô-đun hoặc tham số không xác định (xem dmesg) không thành công.
Sau khi xem dmesg, tôi thấy các dòng sau:
[ 2848.332722] fglrx: module license 'Proprietary. (C) 2002 - ATI Technologies, Starnberg, GERMANY' taints kernel.
[ 2848.332725] Disabling lock debugging due to kernel taint
[ 2848.343063] fglrx: Unknown symbol mtrr_del (err 0)
[ 2848.343114] fglrx: Unknown symbol mtrr_add (err 0)
Một số googling dẫn tôi đến tin nhắn danh sách thư này: https://patchwork.ozlabs.org/patch/510277/ trong đó đề cập đến việc loại bỏ mtrr_add()
trên cơ sở của nó là một cách xấu:
Cuộc thập tự chinh để thay thế mtrr_add () bằng kiến trúc agninto arch_phys_wc_add () đã hoàn tất, điều này sẽ đảm bảo việc triển khai kết hợp ghi (PAT trên x86) được tận dụng thay vì sử dụng MTRR. Với cuộc thập tự chinh được thực hiện ngay bây giờ, ẩn truy cập MTRR trực tiếp cho trình điều khiển.
Vậy tôi nên làm gì bây giờ?
Tôi không biết làm thế nào để tiến hành vào thời điểm này? Tôi có nên khác biệt tại nguồn, tìm kiếm các chức năng sử dụng mtrr_add
và mtrr_del
? Có một số bản vá tôi nên áp dụng? Có phải tất cả chỉ là một thất bại lớn và tôi nên từ bỏ?
seq_printf
dù sao thì cuộc gọi) lên tới Linux 4.2. AMD cho biết nó tương thích tới 3.19. Vì vậy, bạn sẽ phải sử dụng một nhánh kernel cũ hơn.