无法在 GCP Ubuntu 16.04 实例上安装 mac80211(_hwsim)模块

无法在 GCP Ubuntu 16.04 实例上安装 mac80211(_hwsim)模块

我是 GCP 服务新手,尝试部署mininet-wifi脚本到云。在物理机器上,链接中描述的安装和 SDN python 脚本运行良好。然而,出于某种原因,在 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 是否允许构建和向内核添加新模块吗?

答案1

今天我发现了发生了什么。由于某种原因,linux-image-extra 以某种方式“部分”安装,即它的某些模块没有安装,当然是我需要的模块。经过简单的安装后,apt-get install linux-image-extra-$(uname -r)它们就可以使用了,一切都正常。

答案2

看起来 *-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 实例上测试了它,它很快就能正常工作了。如果你仍然想手动执行此操作,只需查找缺少的依赖项和内核模块,然后对其进行 modprobe 即可。

我可以在这里找到 mac80211_hwsim 模块,例如:

https://github.com/jlopex/mac80211_hwsim

相关内容