在 VMware 中最小化安裝完 CentOS 7, 正常安裝 VMware Tools, 發現在設置主機共享目錄的時候提示”無法更新運行時文件夾共享狀態:在客戶機操作系統內裝載共享文件夾文件系統時出錯” , 找了很久終於搞定.
系統環境
VMware Workstation Pro 12.5.2
CentOS 7.3 minimal
修復 bug 安裝 VMware Tools
如按菜單上的 “安裝 VMware Tools” 安裝到最後會看到幾處錯誤提示, 都是有關 “wait_on_bit” 的, 最終結果就是 vmhgfs 組件編譯出錯, 不能共享文件夾.
1 2 | warning: passing argument 3 of ‘wait_on_bit’ ... error: too many arguments to function ‘wait_on_bit’ ... |
要解決這個問題需要修改 hgfs 相關的源碼.
啓動虛擬機, 以 root 用戶登錄
安裝必備軟件
1 | yum install perl gcc kernel-headers kernel-devel |
先安裝 open-vm-tools
1 2 | #此 vm tools 提供除了與主機文件共享外的其他功能 yum install open-vm-tools |
創建光盤掛載點
1 | mkdir /mnt/cdrom |
點擊 vm 菜單上的 虛擬機->安裝 VMware Tools 項, 將 VMware Tools 光盤載入光驅.
掛載光盤到剛創建的目錄
1 | mount /dev/cdrom /mnt/cdrom |
進入掛載後的目錄, 找到 VMwareTools-xxxx.tar.gz 文件, 將它解壓到其他目錄, 我這裏解壓到 /root 下
1 2 | cd /mnt/cdrom tar zxf VM*.gz -C /root |
修改 hgfs 源碼
1 2 3 4 5 6 7 | #進入源碼目錄 cd /root/vmware-tools-distrib/lib/modules/source #解壓 hgfs 源碼 tar xf vmhgfs.tar cd vmhgfs-only #編輯 page.c 文件, 如果沒有安裝 nano 用 yum 安裝 nano page.c |
按 Ctrl + w 打開搜索框, 輸入以下內容, 按回車搜索.
1 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) |
多次 Ctrl + w 查找, 直到找到包含以下內容的代碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | int HgfsWbRequestWait(HgfsWbPage *req) { #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) return wait_on_bit_io(&req->wb_flags, PG_BUSY, TASK_UNINTERRUPTIBLE); #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) return wait_on_bit(&req->wb_flags, PG_BUSY, #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) HgfsWbRequestWaitUninterruptible, #endif TASK_UNINTERRUPTIBLE); #else wait_event(req->wb_queue, !test_bit(PG_BUSY,&req->wb_flags)); return 0; #endif } |
將 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) 中的 3, 19, 0 替換爲 3, 10, 0
1 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) |
保存退出
1 2 3 | cd .. #將改好的代碼重新打包 tar cf vmhgfs.tar vmhgfs-only |
開始安裝
1 2 | cd /root/vmware* ./vmware-install.pl |
一路回車,直到安裝完畢.
重啓系統
1 | reboot |
設置共享文件夾, 之後再次重啓系統, 共享目錄就生效了
1 2 | reboot ls /mnt/hgfs |
修改控制檯分辨率
剛安裝的系統 分辨率非常小, 不方便操作, 這裏修改分辨率爲 1152 * 864 32位色.
CentOS 7 使用 grub2 啓動, 修改分辨率的參數放在 /etc/default/grub 文件中
1 | nano /etc/default/grub |
在 GRUB_CMDLINE_LINUX=”xxxx” 項最後插入 vga=0x342 (分辨率爲 1152*864*32)
1 | GRUB_CMDLINE_LINUX="xxxx vga=0x342" |
保存退出
令配置生效
1 | grub2-mkconfig -o /root/grub2/grub.cfg |
重啓系統就能看到分辨率變化了.
1 | reboot |
如果想查看所有支持的分辨率, 可將0x342改爲ask, 當系統啓動時會列出所有分辨率供選擇.
記住要改的分辨率對應的三位數編碼再按上面的方法改 /etc/default/grub 就可以了.