我是 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 模块,例如: