Try   HackMD

How to Install Mininet in WSL2

Compile a new kernel (to include some necessary modules)

In WSL:

git clone https://github.com/microsoft/WSL2-Linux-Kernel
cd WSL2-Linux-Kernel
cp Microsoft/config-wsl .config
sudo apt update
sudo apt install cmake libncurses-dev flex bison libboost-all-dev openssl libspdlog-dev build-essential libssl-dev libelf-dev dwarves
make menuconfig
  • Set the following option to a custom name you like:
General-setup -> Local version - append to kernel release
  • Set the following options to <M> (by pressing M):
Networking support -> Networking options -> 802.1d Ethernet Bridging
Networking support -> Networking options -> QoS and/or fair queueing -> (Everything)
Networking support -> Networking options -> Open vSwitch

In QoS and/or fair queueing, perhaps only HTB, NETEM, HFSC, TBF, and RED are needed (according to some code in mininet/link.py), but I didn't want to risk missing something and having to rebuild the kernel, so I just <M> everything

  • Save and Exit
make
cp arch/x86/boot/bzImage /mnt/c/Users/[USERNAME]/Desktop

Install the new kernel

  • Copy bzImage from Desktop to C:\Windows\System32\lxss\tools
  • Rename kernel to kernel.old
  • Rename bzImage to kernel

In cmd or powershell:

wsl --shutdown

In WSL:

Use uname -r to check if you're in the new kernel.

cd WSL2-Linux-Kernel
sudo make modules_install

Install Mininet

cd ~
git clone https://github.com/mininet/mininet
sudo PYTHON=python3 mininet/util/install.sh -a

Run these lines everytime WSL restarts

sudo modprobe -a openvswitch sch_htb sch_netem sch_hfsc sch_tbf sch_red
sudo /etc/init.d/openvswitch-switch start

Or maybe add them to somwhere like .bashrc? But then you'll have to type the password everytime you open a shell, which is annoying

X11 Forwarding

(so you can use xterm in mininet)

https://stackoverflow.com/questions/61110603/how-to-set-up-working-x11-forwarding-on-wsl2

Reference

https://zhuanlan.zhihu.com/p/138933513