## Fedora Demo VM Before running the script, ensure that virt-install is available on the system. `./build_bpf_demo.sh -n bpf-demo -k bpf_demo.ks.erb` After setting up the initial VM, log in (the default password is 'iovisor') and determine the DHCP IP. SSH to this IP as root. To set up a kernel with the right options, run `bpf-kernel-setup`. ``` [root@bpf-demo ~]# bpf-kernel-setup Cloning into 'net-next'... ``` After pulling the net-next branch, the kernel config menu should pop up. Ensure that the below settings are proper. ``` General setup ---> [*] Enable bpf() system call Networking support ---> Networking options ---> QoS and/or fair queueing ---> BPF-based classifier BPF based action [*] enable BPF Just In Time compiler ``` Once the .config is saved, the build will proceed and install the resulting kernel. This kernel has updated userspace headers (e.g. the bpf() syscall) which install into /usr/local/include...proper packaging for this will be distro-dependent. Next, run `bpf-llvm-setup` to pull and compile LLVM with BPF support enabled. ``` [root@bpf-demo ~]# bpf-llvm-setup Cloning into 'llvm'... ``` The resulting libraries will be installed into /opt/local/llvm. Next, reboot into the new kernel, either manually or by using the kexec helper. ``` [root@bpf-demo ~]# kexec-4.1.0-rc1+ Connection to 192.168.122.247 closed by remote host. Connection to 192.168.122.247 closed. ``` Reconnect and run the final step, building and testing bcc. ``` [root@bpf-demo ~]# bcc-setup Cloning into 'bcc'... ... Linking CXX shared library libcc.so [100%] Built target bcc ... Running tests... Test project /root/bcc/build Start 1: py_test1 1/4 Test #1: py_test1 ......................... Passed 0.24 sec Start 2: py_test2 2/4 Test #2: py_test2 ......................... Passed 0.53 sec Start 3: py_trace1 3/4 Test #3: py_trace1 ........................ Passed 0.09 sec Start 4: py_trace2 4/4 Test #4: py_trace2 ........................ Passed 1.06 sec 100% tests passed, 0 tests failed out of 4 ```