配置一個接口,我希望它能夠在重新啟動後繼續存在

配置一個接口,我希望它能夠在重新啟動後繼續存在

我想為安裝在我的 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查看每個環境中的結果 。

相關內容