Как увеличить количество dummy в Fedora

Когда-то драйвер dummy сетевого устойства отличался тем, что позволял создавать дополнительные dummy устройства простой уставновкой модуля и созданием алиаса. А в какой-то версии ядра это положение изменилось. Так как же увеличить количество dummies (dummy) в новых Fedora?

К этому моменту один интерфейс dummy0 у меня уже был и работал. Мне понадобилось создать второй. Я создал файл ifcfg-dummy1

# cat /etc/sysconfig/network-scripts/ifcfg-dummy0
DEVICE=dummy0
BOOTPROTO=static
IPADDR=192.168.201.1
NETMASK=255.255.255.255
ONBOOT=yes
IPV6INIT=no
# cat /etc/sysconfig/network-scripts/ifcfg-dummy1
DEVICE=dummy1
BOOTPROTO=static
IPADDR=192.168.201.3
NETMASK=255.255.255.255
ONBOOT=yes
IPV6INIT=no

В файле /etc/modprobe.d/dist.conf есть два алиаса на модуль dummy

# grep -i dumm /etc/modprobe.d/*
dist.conf:alias dummy0 dummy
dist.conf:alias dummy1 dummy
dist.conf:install dummy0 /sbin/modprobe -o dummy0 --ignore-install dummy
dist.conf:install dummy1 /sbin/modprobe -o dummy1 --ignore-install dummy
# modinfo dummy
filename:       /lib/modules/2.6.35.13-91.fc14.i686/kernel/drivers/net/dummy.ko
alias:          rtnl-link-dummy
license:        GPL
srcversion:     33ED5A95D8BDD087F0FBEBA
depends:        
vermagic:       2.6.35.13-91.fc14.i686 SMP mod_unload 686 
parm:           numdummies:Number of dummy pseudo devices (int)

Как видно появилась опция numdummies которая отвечает за количество dummy псевдо устройств. Пробуем сделать два. На ходу.

# /sbin/modprobe dummy numdummies=2

Вот это самый отвратительный момент! Система проглатывает опцию и ничего не говорит. А реально никаких действий по увеличению количества dummies не произодится.

Как следствие:

# ifup dummy1
dummy device dummy1 does not seem to be present, delaying initialization.

Смотрим что получилось:

ls -al /sys/class/net/
total 0
drwxr-xr-x  2 root root 0 Jan 18 19:17 .
drwxr-xr-x 37 root root 0 Jan 18 19:17 ..
lrwxrwxrwx  1 root root 0 Jan 18 19:17 dummy0 -> ../../devices/virtual/net/dummy0
lrwxrwxrwx  1 root root 0 Jan 18 19:17 eth0 -> ../../devices/pci0000:00/0000:00:04.0/virtio1/net/eth0
lrwxrwxrwx  1 root root 0 Jan 18 19:17 eth1 -> ../../devices/pci0000:00/0000:00:05.0/virtio2/net/eth1
lrwxrwxrwx  1 root root 0 Jan 23 17:02 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx  1 root root 0 Jan 18 19:17 tun1 -> ../../devices/virtual/net/tun1

Интерфейса нету.
Смотрим что загружено:

# lsmod 
Module                  Size  Used by
ipt_LOG                 4243  1 
iptable_nat             3945  1 
nf_nat                 16298  1 iptable_nat
tun                    11054  2 
dummy                   1455  0 
i2c_piix4              10534  0 
i6300esb                4171  0 
i2c_core               21552  1 i2c_piix4
virtio_balloon          3557  0 
virtio_net             11023  0 
virtio_blk              4059  3 
virtio_pci              4798  0

теперь попробуем выгрузить модуль и загрузить снова

# rmmod dummy
# ls -al /sys/class/net/
total 0
drwxr-xr-x  2 root root 0 Jan 18 19:17 .
drwxr-xr-x 37 root root 0 Jan 18 19:17 ..
lrwxrwxrwx  1 root root 0 Jan 18 19:17 eth0 -> ../../devices/pci0000:00/0000:00:04.0/virtio1/net/eth0
lrwxrwxrwx  1 root root 0 Jan 18 19:17 eth1 -> ../../devices/pci0000:00/0000:00:05.0/virtio2/net/eth1
lrwxrwxrwx  1 root root 0 Jan 23 17:02 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx  1 root root 0 Jan 18 19:17 tun1 -> ../../devices/virtual/net/tun1
# insmod dummy
insmod: can't read 'dummy': No such file or directory

Так не проходит.
Укажем где лежит драйвер и передадим параметр

# insmod /lib/modules/2.6.35.13-91.fc14.i686/kernel/drivers/net/dummy.ko numdummies=2
# ls -al /sys/class/net/
total 0
drwxr-xr-x  2 root root 0 Jan 18 19:17 .
drwxr-xr-x 37 root root 0 Jan 18 19:17 ..
lrwxrwxrwx  1 root root 0 Jan 23 23:05 dummy0 -> ../../devices/virtual/net/dummy0
lrwxrwxrwx  1 root root 0 Jan 23 23:05 dummy1 -> ../../devices/virtual/net/dummy1
lrwxrwxrwx  1 root root 0 Jan 18 19:17 eth0 -> ../../devices/pci0000:00/0000:00:04.0/virtio1/net/eth0
lrwxrwxrwx  1 root root 0 Jan 18 19:17 eth1 -> ../../devices/pci0000:00/0000:00:05.0/virtio2/net/eth1
lrwxrwxrwx  1 root root 0 Jan 23 17:02 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx  1 root root 0 Jan 18 19:17 tun1 -> ../../devices/virtual/net/tun1

Теперь всё на месте.

Ну и поднимем интерфейсы после удаления модуля они были опущены.

# ifup dummy0
# ifup dummy1

Проверяем доступность второго dummy1 (первый работал)

# ping 192.168.201.3 -c 4
PING 192.168.201.3 (192.168.201.3) 56(84) bytes of data.
64 bytes from 192.168.201.3: icmp_req=1 ttl=64 time=0.044 ms
64 bytes from 192.168.201.3: icmp_req=2 ttl=64 time=0.025 ms
64 bytes from 192.168.201.3: icmp_req=3 ttl=64 time=0.019 ms
64 bytes from 192.168.201.3: icmp_req=4 ttl=64 time=0.024 ms

--- 192.168.201.3 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.019/0.028/0.044/0.009 ms

теперь осталось сделать чтобы он создавался при загрузке системы.
Создаём файлик с опцией options dummy numdummies=2

# echo options dummy numdummies=2  >> /etc/modprobe.d/dummy.conf

Перезагужаем и проверяем что всё поднялось.