tunctlは、/ etc / qemu-ifupスクリプトで使用されているデバイスまたはリソースが使用されているかどうかを訴えます。

tunctlは、/ etc / qemu-ifupスクリプトで使用されているデバイスまたはリソースが使用されているかどうかを訴えます。

バイナリの/etc/qemu-ifup起動時に実行される次のスクリプトがあります。/usr/bin/qemu-system-i386

#!/bin/sh

set -x

switch=br0

if [ -n "$1" ];then
        /usr/sbin/tunctl -u `whoami` -t $1
        /sbin/ip link set dev $1 up
        sleep 0.5s
        /sbin/brctl addif $switch $1
        exit 0
else
        echo "Error: no interface specified"
        exit 1
fi

問題は、tunctlデバイスまたはリソースが使用中であると文句を言うことです。

root@VM-host:~# qemu -hda /root/1.raw -device e1000,netdev=net0,mac=DE:AD:BE:EF:69:01 -netdev tap,id=net0 -display vnc=:1
+ switch=br0
+ [ -n tap0 ]
+ whoami
+ /usr/sbin/tunctl -u root -t tap0
TUNSETIFF: Device or resource busy
+ /sbin/ip link set dev tap0 up sleep 0.5s
Error: either "dev" is duplicate, or "sleep" is a garbage.
+ /sbin/brctl addif br0 tap0
+ exit 0

単に実行すると、問題なく/usr/sbin/tunctl -u root -t tap0thentap0が生成されます。

root@VM-host:~# /usr/sbin/tunctl -u root -t tap0
Set 'tap0' persistent and owned by uid 0
root@VM-host:~# 

この動作の原因は何ですか?

ベストアンサー1

(いつからはわかりません)qemuは最初にタブを作成してからスクリプトを呼び出します/etc/qemu-ifup。したがって、同じ蛇口がすでに存在するため、エラーレポートが表示されます。

参照: qemu ソースコード: (net/tap-linux.c機能を見る:) tap_open()

おすすめ記事