You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.0 KiB
69 lines
2.0 KiB
|
|
## 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 --->
|
|
<M> BPF-based classifier
|
|
<M> 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
|
|
```
|