Я новичок в сервисах GCP и пытаюсь развернуть mininet-wifi скрипт в облако. На физических машинах установка, описанная по ссылке, и сценарий Python SDN работают нормально. Однако по какой-то причине на экземпляре GCP Ubuntu этого не происходит.
Когда я запускаю скрипт python, я получаю эту ошибку:
modprobe: FATAL: Module mac80211_hwsim not found in directory /lib/modules/4.13.0-1006-gcp
find: ‘/sys/kernel/debug/ieee80211’: No such file or directory
Warning! Error when loading mac80211_hwsim. Please run sudo 'mn -c' before running your code.
Во время установки никаких ошибок по модулю не отображалось. Я пытался добавить вручную, но недоступны:
# modprobe mac80211_hwsim
modprobe: FATAL: Module mac80211_hwsim not found in directory /lib/modules/4.13.0-1006-gcp
# modprobe mac80211
modprobe: FATAL: Module mac80211 not found in directory /lib/modules/4.13.0-1006-gcp
Мне трудно найти какое-то работающее / обновленное руководство по сборке этих модулей вручную. Вы знаете, позволяет ли GCP создавать и добавлять новые модули в ядро?
Сегодня я узнал, что случилось. По какой-то причине linux-image-extra был каким-то образом "частично" установлен, т.е. некоторые из его модулей, конечно же, не установили те, которые мне были нужны. После простого apt-get install linux-image-extra-$(uname -r)
они есть и все работает как надо.
Похоже, ядра * -gcp по умолчанию не собираются с доступным модулем ядра mac80211_hwsim, поэтому вам придется его где-то получить или установить / скомпилировать с ним новое ядро.
Как бы то ни было, вы упомянули, что используете Ubuntu 16, а с пакетом mininet-wifi идет сценарий установки на util / install.sh, который автоматически извлекает необходимые зависимости из git и компилирует все. Смотрите эту часть сценария:
# Install Mininet-WiFi deps
function wifi_deps {
echo "Installing Mininet-WiFi dependencies"
$install wireless-tools rfkill python-numpy python-scipy pkg-config \
python-matplotlib libnl-3-dev libnl-genl-3-dev libssl-dev make libevent-dev patch
pushd $MININET_DIR/mininet-wifi
git submodule update --init --recursive
pushd $MININET_DIR/mininet-wifi/hostap
patch -p0 < $MININET_DIR/mininet-wifi/util/hostap-patches/config.patch
pushd $MININET_DIR/mininet-wifi/hostap/hostapd
cp defconfig .config
sudo make && make install
pushd $MININET_DIR/mininet-wifi/hostap/wpa_supplicant
cp defconfig .config
sudo make && make install
pushd $MININET_DIR/mininet-wifi/iw
sudo make && make install
cd $BUILD_DIR
if [ -d mac80211_hwsim_mgmt ]; then
echo "Removing mac80211_hwsim_mgmt..."
rm -r mac80211_hwsim_mgmt
fi
git clone --depth=1 https://github.com/ramonfontes/mac80211_hwsim_mgmt.git
pushd $BUILD_DIR/mac80211_hwsim_mgmt
sudo make install
}
Поэтому я рекомендую вам использовать его, я тестировал его на экземпляре Google Cloud Platform Ubuntu 16, и он заработал в кратчайшие сроки. Если вы все еще хотите сделать это вручную, просто найдите недостающие зависимости и модули ядра и модпробируйте их в.
Я мог найти здесь модуль mac80211_hwsim, например: