type
Post
status
Published
slug
2022/12/13/The-BPF-Learning-series/configurate-the-dev-environment
summary
初始开发环境配置(使用推荐的 Vagrant 模式)
tags
BPF
eBPF
Linux
category
BPF
icon
password
new update day
Property
Oct 22, 2023 01:31 PM
created days
Last edited time
Oct 22, 2023 01:31 PM
此系列的学习是跟随下面的这个学习手册进行的,同时相关的实验开发环境也是下面的项目提供的,想了解相关信息的话请参阅下面的链接:

1 实验环境搭建(使用推荐的 Vagrant 模式)

1.1 安装 Vagrant

Vagrant 的安装,可以参考下方给出的官方安装指导手册。

1.2 克隆实验项目到本地

Vagrant 安装完成后,需要克隆实验项目到本地,然后根据项目中 Vagrantfile 文件中的定义完成实验环境的自动化配置。
git clone https://github.com/bpftools/linux-observability-with-bpf.git cd linux-observability-with-bpf

1.3 下载虚拟机镜像

💡
注意!因为项目所使用的虚拟机镜像是 2019 年发布的,因时间过于久远,官方将相关的下载链接从 Vagrant 中移除了,将其进行了归档处理,所以大家在直接启动实验环境的时候会出现无法找到镜像的报错。
在这里给出一个实验项目中使用到的虚拟机镜像的下载链接:

1.4 重新编写 Vagrantfile 文件

  • 定义 fedora.vm.box_url 可以是 file:// 也可以是 http://
  • 注释掉 fedora.vm.box_version
# -*- mode: ruby -*- # vi: set ft=ruby : VAGRANTFILE_API_VERSION = "2" $bootstrap=<<SCRIPT dnf install make glibc-devel.i686 elfutils-libelf-devel wget tar vim tmux jq systemtap-sdt-devel clang bcc strace kernel-devel-5.0.9-301.fc30 -y SCRIPT Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| ipv4 = "192.168.33.10" config.vm.define "bpfbook" do |fedora| fedora.vm.box_url = ["file://Fedora-Cloud-Base-Vagrant-30-1.2.x86_64.vagrant-virtualbox.box", "https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/30/Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-30-1.2.x86_64.vagrant-virtualbox.box"] fedora.vm.box = "fedora/30-cloud-base" #fedora.vm.box_version = "30.20190425.0" net_index = 1 fedora.vm.hostname = "bpfbook" fedora.vm.provider "virtualbox" do |vb| vb.customize ["modifyvm", :id, "--memory", "1024"] end fedora.vm.provider "libvirt" do |lv| lv.memory = 1024 end fedora.vm.network :private_network, ip: "#{ipv4}" fedora.vm.provision :shell, inline: $bootstrap, :args => "#{ipv4}" end end

1.5 启动实验环境

vagrant up
这个 Vagrant 命令,将在 Virtualbox 中启动一个 Fedora 30 虚拟机,你可以使用 SSH 进入机器(在当前终端中登陆 SSH):
vagrant ssh
当然也可以使用其它的 SSH 工具进行远程连接,运行下面的命令查看虚拟机的 SSH 配置,默认虚拟机是使用公私钥进行身份认证的。
vagrant ssh-config
下面显示出了 SSH 的连接地址与监听端口信息(HostNamePort),同时也给出了用户名与身份认证文件所在的详细位置(UserIdentityFile)。
Host bpfbook HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile D:/linux-observability-with-bpf-master/.vagrant/machines/bpfbook/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL

1.6 下载实验环境使用的内核源码

在继续之前,请确保您下载了此存储库中所使用的内核源代码树。某些示例需要使用它作为依赖项。我们将下载内核 5.0.9 的代码——我们在这里避免使用 git 克隆,因为内核的 Git 历史非常长。
在虚拟机中执行以下命令:
cd /tmp wget -c https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.9.tar.gz -O - | tar -xz sudo mv linux-5.0.9 /kernel-src
此时,我们需要编译libbpf库:
cd /kernel-src/tools/lib/bpf make && sudo make install prefix=/

1.7 在虚拟机中创建项目副本

在正式开始进行实验之前,在环境中拥有此存储库的副本会很有用。
git clone https://github.com/bpftools/linux-observability-with-bpf.git ~/linux-observability-with-bpf
💡
重要说明:项目中的例子都假设你已经在主文件夹 ~/linux-observability-with-bpf 中克隆了 repo,如果您没有这样做,请记住你所做的更改!
是的,在这时你已经拥有了一切并且可以按照示例代码进行操作了。
 
 
欢迎加入喵星计算机技术研究院,原创技术文章第一时间推送。
notion image
 
Ubuntu apt 包管理器代理设置BPF 学习系列之 - Hello,BPF World!