At least on my machine recent the changes related to the tap interface
setup for Qemu broke even more than already discussed e.g. here:
https://lists.openembedded.org/g/openembedded-core/message/183176
These patches should fix and improve the related scripts:
- First interface is now tap1 with IP address 192.168.7.3. Go back to
tap0 with IP 192.168.7.1.
- Rather than looping over all tap interfaces which are available on a
machine, handle only interfaces with a name like tap*. (I need my VPN.)
- New feature: Make the tap interface names configurable at least for
the basic runqemu use case.
- Cleanup unused parameters and variables. Scripts are supposed to be
backward compatible. They print warnings for deprecated parameters.
I did not yet run the self tests, but I tested it like that:
Without these patches:
The tap interfaces get created with index 1 instead of 0. Also the ip starts at
3 instead of 1.
This breaks probably several things which use the well known 7.2 IP.
$ sudo -E ./scripts/runqemu-gen-tapdevs 1000 1000 0
$BUILDDIR/tmp/sysroots-components/x86_64/qemu-helper-native/usr/bin
$ ip l
#OK no tap interfaces
$ sudo -E ./scripts/runqemu-gen-tapdevs 1000 1000 2
$BUILDDIR/tmp/sysroots-components/x86_64/qemu-helper-native/usr/bin
Creating 2 tap devices for UID: 1000 GID: 1000...
Creating tap0
Creating tap1
$ ip l
80: tap1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state
DOWN mode DEFAULT group default qlen 1000
link/ether 36:74:1b:fa:be:df brd ff:ff:ff:ff:ff:ff
81: tap2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state
DOWN mode DEFAULT group default qlen 1000
link/ether e2:49:ac:ff:cf:0f brd ff:ff:ff:ff:ff:ff
$ ip address show dev tap1
80: tap1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state
DOWN group default qlen 1000
link/ether 36:74:1b:fa:be:df brd ff:ff:ff:ff:ff:ff
inet 192.168.7.3/32 brd 192.168.7.255 scope global tap1
valid_lft forever preferred_lft forever
# Bug: Why not tap0? Also the first IP is now 192.168.7.3 instead of 192.168.7.1
With these patches:
$ sudo -E ./scripts/runqemu-gen-tapdevs 1000 1000 0
$BUILDDIR/tmp/sysroots-components/x86_64/qemu-helper-native/usr/bin
Warning: Ignoring the <native-sysroot-basedir> parameter. It is no longer
needed.
Warning: Ignoring the <uid> parameter. It is no longer needed.
Note: Destroying pre-existing tap interface tap0...
Note: Destroying pre-existing tap interface tap1...
$ ip l
#OK no tap interfaces
$ sudo -E ./scripts/runqemu-gen-tapdevs 1000 1000 2
$BUILDDIR/tmp/sysroots-components/x86_64/qemu-helper-native/usr/bin
Warning: Ignoring the <native-sysroot-basedir> parameter. It is no longer
needed.
Warning: Ignoring the <uid> parameter. It is no longer needed.
Creating 2 tap devices for GID: 1000...
Creating tap0
Creating tap1
$ ip a
84: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state
DOWN group default qlen 1000
link/ether 1e:d7:db:93:1d:dc brd ff:ff:ff:ff:ff:ff
inet 192.168.7.1/32 brd 192.168.7.255 scope global tap0
valid_lft forever preferred_lft forever
85: tap1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state
DOWN group default qlen 1000
link/ether 36:74:1b:fa:be:df brd ff:ff:ff:ff:ff:ff
inet 192.168.7.3/32 brd 192.168.7.255 scope global tap1
valid_lft forever preferred_lft forever
#OK: fixed start index of tap
Without these patches the scripts try to delete other tap interfaces asa well:
$ sudo ip tuntap add foo-tap mode tap group 1000
sudo -E ./scripts/runqemu-gen-tapdevs 1000 1000 0
$BUILDDIR/tmp/sysroots-components/x86_64/qemu-helper-native/usr/bin
Note: Destroying pre-existing tap interface tap0...
Note: Destroying pre-existing tap interface tap1...
--> Note: Destroying pre-existing tap interface foo-tap...
With these patches this is fixed:
$ sudo -E ./scripts/runqemu-gen-tapdevs 1000 2
Creating 2 tap devices for GID: 1000...
Creating tap0
Creating tap1
$ sudo ip tuntap add foo-tap mode tap group 1000
$ ip l
89: foo-tap: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT
group default qlen 1000
link/ether 8a:93:d3:4f:0d:ae brd ff:ff:ff:ff:ff:ff
90: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state
DOWN mode DEFAULT group default qlen 1000
link/ether 1e:d7:db:93:1d:dc brd ff:ff:ff:ff:ff:ff
91: tap1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state
DOWN mode DEFAULT group default qlen 1000
link/ether 36:74:1b:fa:be:df brd ff:ff:ff:ff:ff:ff
$ sudo -E ./scripts/runqemu-gen-tapdevs 1000 0
Note: Destroying pre-existing tap interface tap0...
Note: Destroying pre-existing tap interface tap1...
ip l
89: foo-tap: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT
group default qlen 1000
link/ether 8a:93:d3:4f:0d:ae brd ff:ff:ff:ff:ff:ff
New feature: OE_TAP_NAME variable allows to rename the tap
export OE_TAP_NAME=tap-yocto-
$ sudo -E ./scripts/runqemu-gen-tapdevs 1000 2
Creating 2 tap devices for GID: 1000...
Creating tap-yocto-0
Creating tap-yocto-1
Note: For systems running NetworkManager, it's recommended
Note: that the tap devices be set as unmanaged in the
Note: NetworkManager.conf file. Add the following lines to
Note: /etc/NetworkManager/NetworkManager.conf
[keyfile]
unmanaged-devices=interface-name:tap-yocto-*
$ ip a
92: tap-yocto-0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel
state DOWN group default qlen 1000
link/ether f2:9c:14:41:b1:e3 brd ff:ff:ff:ff:ff:ff
inet 192.168.7.1/32 brd 192.168.7.255 scope global tap-yocto-0
valid_lft forever preferred_lft forever
93: tap-yocto-1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel
state DOWN group default qlen 1000
link/ether 06:08:16:73:be:48 brd ff:ff:ff:ff:ff:ff
inet 192.168.7.3/32 brd 192.168.7.255 scope global tap-yocto-1
valid_lft forever preferred_lft forever
runqemu serialstdio
...
runqemu - INFO - Using preconfigured tap device tap-yocto-0
runqemu - INFO - If this is not intended, touch
/tmp/qemu-tap-locks/tap-yocto-0.skip to make runqemu skip tap-yocto-0.
runqemu - INFO - Network configuration:
ip=192.168.7.2::192.168.7.1:255.255.255.0::eth0:off:8.8.8.8
...
Adrian Freihofer (9):
runqemu-ifup: remove uid parameter
runqemu-ifup: configurable tap names
runqemu-ifup: fix tap index
runqemu-ifup: remove only our taps
runqemu-gen-tapdevs: remove staging dir parameter
runqemu-gen-tapdevs: remove uid parameter
runqemu-gen-tapdevs: configurable tap names
runqemu-gen-tapdevs: remove only our taps
runqemu: configurable tap names
scripts/runqemu | 8 +++++--
scripts/runqemu-gen-tapdevs | 45 ++++++++++++++++++++++---------------
scripts/runqemu-ifup | 30 +++++++++++++++++--------
3 files changed, 54 insertions(+), 29 deletions(-)
--
2.41.0
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#183277):
https://lists.openembedded.org/g/openembedded-core/message/183277
Mute This Topic: https://lists.openembedded.org/mt/99702213/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-