Konfigurieren Sie eine Schnittstelle, die den Neustart überstehen soll

Konfigurieren Sie eine Schnittstelle, die den Neustart überstehen soll

Ich möchte eine Schnittstelle für die virtuelle Box konfigurieren, die auf meinem Ubuntu-Rechner installiert ist. Wenn ich sie manuell erstelle, funktioniert es:

vboxmanage hostonlyif create
vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1

durch Überprüfen von ifconfig. Es ist da:

Bildbeschreibung hier eingeben

Ich möchte, dass diese Änderungen auch nach einem Neustart bestehen bleiben und beim Systemstart automatisch vorgenommen werden. Dazu habe ich Folgendes getan:

sudo mkdir /opt/systemd/dann sudo mkdir /opt/systemd/dann sudo nano /opt/systemd/vboxhostonlyund kopiere den folgenden Code in die Datei:

#!/bin/bash
vboxmanage hostonlyif create
vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1

dann Strg + X zum Beenden, Y zum Speichern und Eingabe zum Schreiben der Datei.

Dann mache ich die Datei ausführbar

cd /opt/systemd/ then sudo chmod a+x vboxhostonly

ich erstelle einen Dienst, damit

sudo touch /etc/systemd/system/vboxhostonlynic.service

Dann bearbeite ich die Datei, indem ich Folgendes eingebe sudo nano /etc/systemd/system/vboxhostonlynic.serviceund dann Folgendes eintippe:

Description=Setup VirtualBox Hostonly Adapter
After=vboxdrv.service
[Service]
Type=oneshot
ExecStart=/opt/systemd/vboxhostonly
[Install]
WantedBy=multi-user.target

dann Strg + X zum Beenden, Y zum Speichern und Eingabe zum Schreiben der Datei.

Um nun den Dienst zu installieren und sicherzustellen, dass er beim Booten geladen wird, gebe ich Folgendes ein:

systemctl daemon-reload
systemctl enable vboxhostonlynic.service

Aber wenn ich die Maschine neu starte, ist die Schnittstelle nicht da. Ich wäre für jede Hilfe dankbar.

Antwort1

Ihr bashSkript kann nicht finden vboxmanage, da vboxmanagees sich in keinem Verzeichnis des Skripts befindet $PATH. Versuchen Sie, den vollständigen Pfad zu vboxmanage( type -p vboxmanage) zu verwenden, aber Sie müssen möglicherweise mehr von Ihrer Umgebung in das Skript verschieben.

Über Startskripte ausgeführte Jobs systemdwerden nicht in derselben Laufzeitumgebung ausgeführt, die Sie auf Ihrem Desktop haben. systemdStartskripte werden als ausgeführt root. Keine Ihrer PATHÄnderungen oder anderen Einstellungen von Umgebungsvariablen ~/.bashrcwerden automatisch an Ihren Job weitergegeben systemd. Beispielsweise gibt es keine $DISPLAY, daher benötigen GUI-Programme eine spezielle Behandlung (lesen Sie man xhost). Andere benötigte Umgebungsvariablen benötigen möglicherweise ebenfalls Hilfe.

Sehen Sie sich die Ergebnisse echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";aliasin jeder Ihrer Umgebungen an.

verwandte Informationen