Для поднятия сети на одной железке возникла необходимость создать bridge. Но загвоздка в том, что система должна при загрузке монтировать nfs в корень. Данное условие необходимо для возможности быстро изменить что-то в системе без необходимости лезть на флешку. Отладка идет полным ходом. Но основная проблема как раз в том, что при создании bridge сеть придется в любом случае оборвать. Nfs такого пережить не может и отваливается. Соответственно система дальше грузиться не может так как нету корневой файловой системы и сеть также сама вернуться не может.

Я уже думал искать какое-то альтернативное решение: как неожиданно мой коллега натолкнулся на небольшую заметку, в которой описано как обойти указанную проблему.

Сущность данного решения сводиться к тому, что надо все файлы, необходимые для настройки bridge, скопировать в раздел с tmpfs, который будет доступен после обрыва сети. Я, например, использовал /tmp. А потом запустить создание bridge из нового окружения. Данный метод работает на ура, нареканий не заметил.

Вот собственно решение с моими малюсенькими изменениями:

set -x
mount -o remount,exec /tmp
R=/tmp/root
IPADDR=192.168.0.159/8

mkdir -p "$R/proc"
cp -r /sbin /bin /lib "$R"
cat > "$R/script" <<EOF
mount -t proc none /proc
brctl addbr br0
brctl addif br0 eth0
ifconfig br0 "$IPADDR"
ifconfig eth0 0.0.0.0
umount /proc
EOF

chroot "$R" sh script
rm -r "$R/sbin" "$R/bin" "$R/lib"

В нутрь script в принципе можно вставить все, что вам будет необходимо.

Хорош ли метод? Мне по крайней мере понравился. Есть еще предложения, как возможно решить данный вопрос?



Comments

comments powered by Disqus