解決Parallels Tools無法安裝在Ubuntu 18.04、ElementaryOS-5.0 以及其他核心版本大於4.15的Linux之問題
解決Parallels Tools無法安裝在Ubuntu 18.04、ElementaryOS-5.0 以及其他核心版本大於4.15的Linux之問題
問題描述:
在parallels desktop 12中安裝elementaryos-5.0後,無法安裝parallels_tools
發生問題過程:
前置parallels_tools安裝流程
1.掛載parallels_tools映像檔
2.執行./install
3.執行./install失敗
在查看錯誤log和網上爬文後,發現執行失敗原因是在Kernel version >= 4.15 時parallels_tools安裝會有 問題。
解決步驟:
需要修改parallels_tools映像檔內的三個文件後重新安裝
複製parallels_tools映像檔內的內容到新目錄,例:
xxxxxxxxxx
mkdir ~/Desktop/parallels_fixed cd ~/Desktop/parallels_fixed
解壓縮 parallels_fixed/kmods/prl_mod.tar.gz並刪掉(之後要重包)
tar -xzf prl_mod.tar.gz rm prl_mod.tar.gz
文件一 parallels_fixed/kmods/prl_eth/pvmnet/pvmnet.c
修改line 438
MODULE_LICENSE("Parallels");
改成
MODULE_LICENSE("GPL");
保存
文件二 parallels_fixed/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c
修改line 1535
MODULE_LICENSE("Parallels");
改成以下code後保存
MODULE_LICENSE("GPL");
文件三 parallels_fixed/kmods/prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze/prl_fs_freeze.c
修改line 212的function:thaw_timer_fn
void thaw_timer_fn(unsigned long data)
{
struct work_struct *work = (struct work_struct *)data;
schedule_work(work);
}
改成
void thaw_timer_fn(unsigned long data)
{
struct work_struct *work = (struct work_struct *)data;
schedule_work(work);
}
void thaw_timer_fn_new_kernel(struct timer_list *data)
{
struct work_struct *work = data->expires;
schedule_work(work);
}
再來修改line 220
DEFINE_TIMER(thaw_timer, thaw_timer_fn, 0, (unsigned long)&(thaw_work));
改成
DEFINE_TIMER(thaw_timer, thaw_timer_fn_new_kernel);
DEFINE_TIMER(thaw_timer, thaw_timer_fn, 0, (unsigned long)&(thaw_work));
最後將改好的檔案壓縮後重新安裝
cd ~/Desktop/parallels_fixed
tar -zcvf prl_mod.tar.gz . dkms.conf Makefile.kmods
回到上層,更改檔案權限使其可執行
1.修改install檔案權限
xxxxxxxxxx
chmod +x install
2.修改parallels_fixed/installer下執行檔
xcd installer
chmod +x installer.* *.sh prl_*
3.回到上層執行
cd ..
sudo ./install
參考資料:https://gist.github.com/rudolfratusinski/a4d9e3caff11a4d9d81d2e84abc9afbf
留言
張貼留言