
我想為安裝在我的 ubuntu 機器中的虛擬盒子配置一個介面。當我手動創建它時,它可以工作:
vboxmanage hostonlyif create
vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
透過檢查 ifconfig,它就在那裡:
我想讓這些變更在重新啟動後保留並在系統啟動期間自動設定。
sudo mkdir /opt/systemd/
然後
sudo mkdir /opt/systemd/
將
sudo nano /opt/systemd/vboxhostonly
以下程式碼複製到文件中:
#!/bin/bash
vboxmanage hostonlyif create
vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
然後Ctrl + X退出,Y儲存並進入寫入檔案。
然後我使文件可執行
cd /opt/systemd/ then sudo chmod a+x vboxhostonly
我創建了一個服務所以
sudo touch /etc/systemd/system/vboxhostonlynic.service
sudo nano /etc/systemd/system/vboxhostonlynic.service
然後我透過鍵入然後鍵入以下內容來編輯文件:
Description=Setup VirtualBox Hostonly Adapter
After=vboxdrv.service
[Service]
Type=oneshot
ExecStart=/opt/systemd/vboxhostonly
[Install]
WantedBy=multi-user.target
然後Ctrl + X退出,Y儲存並進入寫入檔案。
現在要安裝該服務並確保它在啟動時加載,我輸入:
systemctl daemon-reload
systemctl enable vboxhostonlynic.service
但是當我重新啟動機器時,介面不存在,任何幫助將不勝感激?
答案1
您的bash
腳本找不到vboxmanage
,因為vboxmanage
它不在腳本的$PATH
.嘗試使用vboxmanage
( )的完整路徑type -p vboxmanage
,但您可能需要將更多環境移至腳本中。
透過啟動腳本執行的作業systemd
不會在桌面上相同的執行時間環境中執行。systemd
啟動腳本作為root
.您的任何PATH
變更或其他環境變數設定都不會~/.bashrc
自動傳播到您的systemd
作業。例如,沒有$DISPLAY
,因此 GUI 程式需要特殊處理(讀取man xhost
)。其他所需的環境變數可能也需要協助。
echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias
查看每個環境中的結果 。