Не используйте вет + мост! Используйте маквлан!
Недавно я боролся с veth + bridge, как и вы, к счастью, сегодня вечером я нашел эту ссылку , в которой говорится:
Before MACVLAN, if you wanted to connect to physical network from a VM or namespace, you would have needed to create TAP/VETH devices and attach one side to a bridge and attach a physical interface to the bridge on the host at the same time, as shown below.
Now, with MACVLAN, you can bind a physical interface that is associated with a MACVLAN directly to namespaces, without the need for a bridge.
И вот что я сделал:
$ sudo ip netns add ns0
$ sudo ip netns exec ns0 ip link set lo up
$ sudo ip link add macvlan0 link eth0 type macvlan mode bridge
$ sudo ip link set macvlan0 netns ns0
$ sudo ip netns exec ns0 ip link set macvlan0 up
$ sudo ip netns exec ns0 ip addr add 172.29.6.123/21 dev macvlan0
$ sudo ip netns exec ns0 ping 172.29.0.1
PING 172.29.0.1 (172.29.0.1) 56(84) bytes of data.
64 bytes from 172.29.0.1: icmp_seq=1 ttl=64 time=0.360 ms
64 bytes from 172.29.0.1: icmp_seq=2 ttl=64 time=0.412 ms
Работает!
То, что вы видите, на самом деле является ошибкой в файле udev. 60 -постоянных -storage.rules, которые теперь должны быть исправленыhttps://github.com/dsd/systemd/commit/dd1afeea4ed9b60b8a4d8b2a6d211f919cb5202eОбсуждается вhttps://github.com/systemd/systemd/issues/14408
Без исправления файла правил любой раздел без LABEL, т.е. потому что у него нет файловой системы, можно украсть МЕТКУ файловой системы в базе устройство. Таким образом, вашему образу раздела EFI потребуется LABEL, а не другие разделы. за исключением того, что должен присутствовать монтируемый раздел ISO.
Что ж, вы уже узнали, как это обойти. Итак, следующее больше для архивов:
Вы можете получить таблицу разделов только с монтируемыми разделами, добавив образ файловой системы EFI в качестве раздела вместо того, чтобы помечать файл в ISO как раздел.
- -boot_image any efi_boot_part=--efi-boot-image \
- -boot_image any partition_table=on \
+ -append_partition 2 0xef /...path.on.disk.../efi.img \
Если вы хотите использовать GPT вместо MBR, добавьте:
-boot_image any appended_part_as=gpt \
-boot_image any partition_offset=16 \
-padding 0 \
-compliance no_emul_toc \
Если вы хотите опустить файл efi.img внутри файловой системы ISO 9660:
- -boot_image any efi_path='/efi.img'
- -boot_image any platform_id=0xef \
-append_partition 2 0xef /u/FERTIG/SX \
+ -boot_image any cat_path=/boot.cat \
+ -boot_image any efi_path='--interval:appended_partition_2:all::' \
+ -boot_image any platform_id=0xef \
(Необходимость в cat _path=/boot.cat возникает из-за ошибки xorriso, которую я обнаружил прямо сейчас. В пути к каталогу должен быть "/", и xorriso делает это неправильно, если cat _path= не установлен и нет «/» в efi _path=.)
Использование MBR вместо GPT кажется единственным надежным способом добиться такой адресации.
xorriso \
-volid "FooInstall" \
-map /path/to/content \
-boot_image any appended_part_as=mbr \
-boot_image any partition_offset=16 \
-boot_image any partition_table=on \
-boot_image any efi_path='/efi.img' \
-boot_image any platform_id=0xef \
-boot_image any iso_mbr_part_type=0x83 \
-boot_image any next \
-append_partition 2 0xef "/path/to/content/efi.img" \
-boot_image any efi_path=--interval:appended_partition_2:all:: \
-end
...а также добавление -n OTHERNAME
в командную строку mkdosfs
для устранения неоднозначности имени тома ISO приводит к носителям, для которых создается ссылка /dev/disk/by-label/FooInstall
, указывающая на ISO.