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 的连接地址与监听端口信息(
HostName
、Port
),同时也给出了用户名与身份认证文件所在的详细位置(User
、IdentityFile
)。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,如果您没有这样做,请记住你所做的更改!是的,在这时你已经拥有了一切并且可以按照示例代码进行操作了。
欢迎加入“喵星计算机技术研究院”,原创技术文章第一时间推送。
- 作者:tangcuyu
- 链接:https://expoli.tech/articles/2022/12/13/The-BPF-Learning-series/configurate-the-dev-environment
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章