配置一个接口,我希望它在重启后仍然有效

配置一个接口,我希望它在重启后仍然有效

我想为安装在我的 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 保存并按 Enter 写入文件。

然后我让文件可执行

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 保存并按 Enter 写入文件。

现在要安装服务并确保它在启动时加载,我输入:

systemctl daemon-reload
systemctl enable vboxhostonlynic.service

但是当我重新启动机器时界面不存在,有什么帮助吗?

答案1

您的bash脚本找不到vboxmanage,因为vboxmanage不在脚本 的任何目录中。请尝试使用( )$PATH的完整路径,但您可能需要将更多环境移动到脚本。vboxmanagetype -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查看每个环境中的结果 。

相关内容