GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Windows – Freigegebener Ordner zwischen Qemu Windows Guest und Linux Host?

In der Vergangenheit habe ich Virtual Box verwendet, das sehr gute Unterstützung für die gemeinsame Nutzung eines Ordners auf dem Host mit einem Windows-Gast bietet. Ich suche nach ähnlichen Funktionen für QEMU.

Die Dokumentation schlägt vor, einen Samba-Server bereitzustellen, der irgendwo im Netzwerk läuft, oder den -net user,smb=/path/to/folder zu verwenden um einen Samba-Server zu starten.

Ich hatte kein Glück mit dem -net user,smb Option von QEMU. Es startet lediglich smbd (der aufgrund eines Portkonflikts mit einem anderen Dienst in Konflikt steht, der lokal ausgeführt wird). Es genügt zu sagen, dass dies unbrauchbar ist, insbesondere bei mehreren Gästen. (Für Linux, -virtfs (Plan 9) kann für eine einfache Ordnerfreigabe verwendet werden.)

Andere Probleme mit Samba sind, dass es nicht auf die Ordnerfreigabe beschränkt ist, sondern auch Druckerfreigabe, Benutzerzuordnung und so weiter. Alles, was ich brauche, ist, einen (oder mehrere?) Ordner für den Windows-Gast freizugeben.

Gibt es eine alternative Ordnerfreigabemethode für QEMU, die mit einem Windows-Gast funktioniert?

Oder gibt es eine Möglichkeit, Samba so zu konfigurieren, dass es sich auf eine sehr begrenzte Anzahl von Funktionen beschränkt und es in QEMU integriert? Es sollte:

  • Nicht jeder im Netzwerk sollte auf den Ordner zugreifen können.
  • lokale Benutzer eingeschlossen (wenn möglich).
  • Keine anderen Funktionen bereitstellen (Druckerfreigabe).
  • Anwendungsfall:Ein Git-Verzeichnis für Windows verfügbar machen, es in Windows kompilieren und Linux zur Analyse verwenden.
  • Haben Sie eine akzeptable Geschwindigkeit, Windows verwendet virtio-scsi und virtio-net.
  • In der Lage sein, einen Ordner von einem Linux-Host mit einem Windows 7-Gast zu teilen.

Akzeptierte Antwort:

Der integrierte Samba-Dienst von QEMU

Der nicht funktionierende -net user,smb Option wurde durch eine Inkompatibilität mit neueren Samba-Versionen (>=4) verursacht. Dies wurde in QEMU v2.2.0 und neuer mit diesen Änderungen behoben:

  • b87b8a8 slirp/smb:Ncalrpc-Verzeichnis nach tmp verschieben (seit v2.1.0)
  • 44d8d2b net/slirp:Logbase für smbd angeben (seit v2.2.0)
  • 7912d04 slirp/smbd:Mehrere Parameter in der generierten smbd.conf ändern/setzen (seit v2.2.0, deaktiviert auch den Drucker)

(Debian hat die letzten beiden Patches auf 2.1+dfsg-6 zurückportiert, das in Jessie vorhanden ist.)

Verwendung

Sie können einen Ordner als \10.0.2.4qemu exportieren bei Verwendung des Benutzernetzwerks:

qemu-system-x86_64 
    -net user,smb=/absolute/path/to/folder 
    -net nic,model=virtio 
    ...

Wenn QEMU mit diesen Optionen erfolgreich gestartet wird, wird ein neuer /tmp/qemu-smb.*-*/ Verzeichnis erstellt, das eine smb.conf enthält . Wenn Sie schnell genug sind, können Sie diese Datei ändern, um Pfade schreibgeschützt zu machen oder mehr Ordner zu exportieren.

Funktionsweise

Der Samba-Daemon wird immer dann ausgeführt, wenn über ein „Benutzer“-Netzwerk auf die Ports 139 oder 445 zugegriffen wird. Die Kommunikation erfolgt über Standard Input/Output/Error des smbd-Prozesses. Dies ist der Grund, warum neuere Daemons fehlschlugen, sie würden ihre Fehlermeldung in die Pipe schreiben anstatt Protokollnachrichten.

Aufgrund dieser Betriebsmethode lauscht der Daemon nicht auf Host-Ports und ist daher nur für den Gast zugänglich. Daher können andere Clients im Netzwerk und sogar lokale Benutzer mit diesem Daemon nicht auf Ordner zugreifen.

Verwandte:Windows 7 – Fehler Konfigurieren von Windows-Updates Zurücksetzen von Änderungen Hängt / hängt?

Seit QEMU v2.2.0 die Druckerfreigabe durch die Samba-Konfiguration vollständig deaktiviert ist, ist hier eine weitere Sorge verschwunden.

Die Geschwindigkeit hängt vom Netzwerkadapter ab, daher wird empfohlen, den virtio netkvm zu verwenden Treiber unter Windows.

Beachten Sie auch, dass der Daemon über seinen absoluten Pfad ausgeführt wird (normalerweise /usr/sbin/smbd ) wie bei der Kompilierung angegeben (unter Verwendung der --smbd Möglichkeit). Wann immer Sie eine neue Binärdatei ausprobieren oder smbd zwischenschalten müssen , müssen Sie die Datei in diesem Pfad ändern.

Weitere Einschränkungen

Ausführbare Dateien (*.exe ) muss auf dem Host ausführbar sein (chmod +x FILE ), damit der Gast über Ausführungsberechtigungen verfügt. Um die Ausführung einer beliebigen Datei zuzulassen, fügen Sie acl allow execute always = True hinzu Option zum Teilen.

Beispiel schreibgeschützt smb.conf-Konfiguration, die die Ausführung jeder Datei erlaubt (basierend auf QEMU v2.2.0):

...
[qemu]
path=/home/peter/windows
read only=yes
guest ok=true
force user=peter
acl allow execute always = True

Linux
  1. Linux – Dateien zwischen Linux-Host und Windows-Gast teilen?

  2. Windows-Host-Freigabeordner in Ubuntu 20.04?

  3. Wie greife ich von Linux aus auf freigegebene Windows-Ordner zu?

  4. Kopieren und Einfügen zwischen Hyper-V-Gast und -Host

  5. Skript zur Überwachung auf neue Dateien in einem freigegebenen Ordner (Windows-Host, Linux-Gast)

Mounten und Zuordnen von Freigaben zwischen Windows und Linux mit Samba

Mit NitroShare können Sie Dateien ganz einfach zwischen Linux, Windows und Mac austauschen

So teilen Sie Steam-Spieldateien zwischen Linux und Windows

Freigegebener Ordner in Virtualbox (Ubuntu und Windows 7)?

Nutzung eines Windows 11 Linux-Hosts als IT-Administrator

Freigabe von Dateien zwischen Linux Mint und Windows 10