Для поднятия сети на одной железке возникла необходимость создать 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