Unable to star services. Ảnh mượn của Ubuntu |
Bắt đầu nào!
Đầu tiên ta di chuyển vào thư mục module của VMware:
# cd /usr/lib/vmware/modules/source
Giải nén 2 file vmnet.tar và vmmon.tar:
# tar -xf vmnet.tar
# tar -xf vmmon.tar
Sửa lại file vmnet-only/userif.c:Tìm đoạn sau hoặc tương tự:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
retval = get_user_pages(addr, 1, 1, 0, &page, NULL);
#else
retval = get_user_pages(current, current->mm, addr,
1, 1, 0, &page, NULL);
#endif
Thay thành:retval = get_user_pages(addr, 1, 1, 0, &page, NULL);
#else
retval = get_user_pages(current, current->mm, addr,
1, 1, 0, &page, NULL);
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
retval = get_user_pages(addr, 1, 0, &page, NULL);
#else
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
retval = get_user_pages(addr, 1, 1, 0, &page, NULL);
#else
retval = get_user_pages(current, current->mm, addr,
1, 1, 0, &page, NULL);
#endif
#endif
Lưu ý: thay 4, 9, 0 thành 4, 9, 5 nếu bạn dùng kernel 4.9.5 nhé!retval = get_user_pages(addr, 1, 0, &page, NULL);
#else
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
retval = get_user_pages(addr, 1, 1, 0, &page, NULL);
#else
retval = get_user_pages(current, current->mm, addr,
1, 1, 0, &page, NULL);
#endif
#endif
Lưu lại và tiếp tục sửa file vmmon-only/linux/hostif.c:
Tìm đoạn tương tự như sau:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
retval = get_user_pages((unsigned long)uvAddr, numPages, 0, 0, ppages, NULL);
#else
retval = get_user_pages(current, current->mm, (unsigned long)uvAddr,
numPages, 0, 0, ppages, NULL);
#endif
Và cũng thay thành:retval = get_user_pages((unsigned long)uvAddr, numPages, 0, 0, ppages, NULL);
#else
retval = get_user_pages(current, current->mm, (unsigned long)uvAddr,
numPages, 0, 0, ppages, NULL);
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
retval = get_user_pages((unsigned long)uvAddr, numPages, 0, ppages, NULL);
#else
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
retval = get_user_pages((unsigned long)uvAddr, numPages, 0, 0, ppages, NULL);
#else
retval = get_user_pages(current, current->mm, (unsigned long)uvAddr,
numPages, 0, 0, ppages, NULL);
#endif
#endif
Lưu ý: thay 4, 9, 0 thành 4, 9, 5 nếu bạn dùng kernel 4.9.5 nhé!retval = get_user_pages((unsigned long)uvAddr, numPages, 0, ppages, NULL);
#else
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
retval = get_user_pages((unsigned long)uvAddr, numPages, 0, 0, ppages, NULL);
#else
retval = get_user_pages(current, current->mm, (unsigned long)uvAddr,
numPages, 0, 0, ppages, NULL);
#endif
#endif
Sao lưu hai file nén ở trên lại:
# mv vmnet.tar vmnet.tar.BACKUP
# mv vmmon.tar vmmon.tar.BACKUP
Tạo 2 file nén mới từ hai thư mục đã chỉnh sửa:
# tar -cf vmnet.tar vmnet-only
# tar -cf vmmon.tar vmmon-only
Như vậy là xong, hãy thử khởi động VMware Workstation nào!Lời kết:
Về nguyên nhân thì do VMware chưa hỗ trợ cho phiên bản Kernel mới, cụ thể là như thế nào mình sẽ cập nhật sau vậy. Chúng ta khắc phục lỗi này trước nào! Chúc các bạn thành công.Nguồn tham khảo: rglinuxtech.com | askubuntu.com
0 Comments