Назад | Перейти на главную страницу

Не удается установить модуль mac80211 (_hwsim) на экземпляр GCP Ubuntu 16.04

Я новичок в сервисах 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, например:

https://github.com/jlopex/mac80211_hwsim