开发环境

设备信息

操作系统:Centos 8 发行版

Hypervisor:VMWare

[root@localhost ~]# cat /etc/*release
CentOS Linux release 8.2.2004 (Core)
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"CentOS Linux release 8.2.2004 (Core)
CentOS Linux release 8.2.2004 (Core)
[root@localhost ~]#
[root@localhost ~]# uname -a
Linux 192.168.72.138 4.18.0-193.el8.x86_64 #1 SMP Fri May 8 10:59:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  1
Core(s) per socket:  2
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               142
Model name:          Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
Stepping:            9
CPU MHz:             2904.008
BogoMIPS:            5808.01
Virtualization:      VT-x
Hypervisor vendor:   VMware
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            4096K
NUMA node0 CPU(s):   0,1
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc cpuid aperfmperf pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch epb invpcid_single pti tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp
[root@localhost ~]# free -htotal        used        free      shared  buff/cache   available
Mem:          3.7Gi       1.1Gi       299Mi       4.0Mi       2.3Gi       2.3Gi
Swap:         3.9Gi        16Mi       3.9Gi
[root@localhost ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             1.9G     0  1.9G   0% /dev
tmpfs                1.9G     0  1.9G   0% /dev/shm
tmpfs                1.9G  9.8M  1.9G   1% /run
tmpfs                1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/cl-root   46G   11G   35G  24% /
/dev/sda1            976M  193M  716M  22% /boot
tmpfs                376M  1.2M  375M   1% /run/user/42
tmpfs                376M  4.0K  376M   1% /run/user/0
overlay               46G   11G   35G  24% /var/lib/docker/overlay2/dfa135f70d10d320af252c3773ed7a4d200f9378d5614a3220cfa3b8bc8e6765/merged
[root@localhost ~]#

安装环境依赖组件

yum install -y gcc make git openssl

编译环境搭建

下载kata安装包

wget https://github.com/kata-containers/kata-containers/archive/refs/tags/2.0.2.tar.gz

安装golang开发环境

wget https://dl.google.com/go/go1.16.3.linux-amd64.tar.gz

解压golang安装包

tar -C /usr/local -xf go1.16.3.linux-amd64.tar.gz

配置golang开发环境

mkdir /root/go
echo "export GOROOT=/usr/local/go" >> /etc/profile
echo "export GOPATH=/root/go" >> /etc/profile
echo "export GO111MODULE=on" >> /etc/profile
echo "export PATH=$PATH:$GOPATH/bin" >> /etc/profile
source /etc/profile

安装rust环境

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
根据提示选择默认配置:1
安装完成后配置环境变量
source $HOME/.cargo/env
创建config文件,配置rust加速源
[root@localhost ~]# cat /root/.cargo/config
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"

编译kata-containers v2

kata-containers release 2.0.2版本顶层目录make编译会因为rust编译失败,所以分别进入不同组件目录进行编译;或者编辑顶级目录的Makefile注释“TOOLS += agent-ctl”配置,取消agent-ctl编译可以编译出kata-runtime和kata-agent

编译kata-runtime

cd kata-containers-2.0.2/src/runtime
make
第一次编译会出现找不到yq命令错误提示:INFO: yq was not found, installing it
编译脚本会在golang环境中自动下载,编译完成后执行:make install 完成kata-runtime安装
安装完成后会显示二进制以及配置文件安装详情:
• Summary:destination install path (DESTDIR) : /binary installation path (BINDIR) : /usr/local/binbinaries to install :- /usr/local/bin/kata-runtime- /usr/local/bin/containerd-shim-kata-v2- /usr/local/bin/kata-monitor- /usr/libexec/kata-containers/kata-netmon- /usr/local/bin/data/kata-collect-data.shconfigs to install (CONFIGS) :- cli/config/configuration-acrn.toml- cli/config/configuration-clh.toml- cli/config/configuration-fc.toml- cli/config/configuration-qemu.tomlinstall paths (CONFIG_PATHS) :- /usr/share/defaults/kata-containers/configuration-acrn.toml- /usr/share/defaults/kata-containers/configuration-clh.toml- /usr/share/defaults/kata-containers/configuration-fc.toml- /usr/share/defaults/kata-containers/configuration-qemu.tomlalternate config paths (SYSCONFIG_PATHS) : - /etc/kata-containers/configuration-acrn.toml- /etc/kata-containers/configuration-clh.toml- /etc/kata-containers/configuration-fc.toml- /etc/kata-containers/configuration-qemu.tomldefault install path for qemu (CONFIG_PATH) : /usr/share/defaults/kata-containers/configuration.tomldefault alternate config path (SYSCONFIG) : /etc/kata-containers/configuration.tomlqemu hypervisor path (QEMUPATH) : /usr/bin/qemu-system-x86_64cloud-hypervisor hypervisor path (CLHPATH) : /usr/bin/cloud-hypervisorfirecracker hypervisor path (FCPATH) : /usr/bin/firecrackeracrn hypervisor path (ACRNPATH) : /usr/bin/acrn-dmassets path (PKGDATADIR) : /usr/share/kata-containersshim path (PKGLIBEXECDIR) : /usr/libexec/kata-containers

执行kata-runtime kata-check检测kata-runtime运行环境是否正常,如果运行在vmware环境中会因为vmware加载了一些 vmware的模块并使用 vsock从而产生冲突

WARN[0000] modprobe insert module failed: modprobe: ERROR: could not insert 'vhost_vsock': Device or resource busy  arch=amd64 error="exit status 1" module=vhost_vsock name= pid=159576 source=runtime
ERRO[0000] kernel property not found                     arch=amd64 description="Host Support for Linux VM Sockets" name=vhost_vsock pid=159576 source=runtime type=module

创建/etc/modprobe.d/blacklist-vmware.conf文件,限制系统启动加载vmware模块

blacklist vmw_vsock_virtio_transport_common
blacklist vmw_vsock_vmci_transport

编译kata-agent

cd kata-containers-2.0.2/src/agent
make
第一次编译出现如下错误:
error[E0463]: can't find crate for `core`|= note: the `x86_64-unknown-linux-musl` target may not be installedrust安装x86_64-unknown-linux-musl:
rustup target add x86_64-unknown-linux-musl
重新编译

编译rootfs

编译rootfs过程会下载、安装依赖组件,最好使用docker环境进行编译避免安装过多组件在系统,所以在准备开发环境时卸载了podman,安装了docker

cd /root/katav2/kata-containers-2.0.2/tools/osbuilder/rootfs-builder
编译rootfs
script -fec 'sudo -E USE_DOCKER=true SECCOMP=no ./rootfs.sh centos'
编译过程中可能会因为网络原因导致编译失败:
Step 6/12 : RUN cd /tmp ; curl -OL https://storage.googleapis.com/golang/go1.14.4.linux-amd64.tar.gz---> Running in 473c0ff8c147% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed0     0    0     0    0     0      0      0 --:--:--  0:00:21 --:--:--     0
curl: (35) TCP connection reset by peer
重新编译

如果需要编译带console的镜像需要在制作镜像时指定添加额外的组件

script -fec 'USE_DOCKER=true EXTRA_PKGS="bash coreutils" ./rootfs.sh centos'

成功编译rootfs后会有如下提示,会在rootfs中自动安装kata-agent和kata-agent的systemd文件

Installing systemd unit files...
install -D -m 644 kata-agent.service /root/katav2/kata-containers-2.0.2/tools/osbuilder/rootfs-builder/rootfs/usr/lib/systemd/system/kata-agent.service || exit 1;      install -D -m 644 kata-containers.target /root/katav2/kata-containers-2.0.2/tools/osbuilder/rootfs-builder/rootfs/usr/lib/systemd/system/kata-containers.target || exit 1;
~/katav2/kata-containers-2.0.2/tools/osbuilder/rootfs-builder
[OK] Agent installed
INFO: Check init is installed
[OK] init is installed
INFO: Create /etc/resolv.conf file in rootfs if not exist
INFO: Creating summary file
INFO: Created summary file '/var/lib/osbuilder/osbuilder.yaml' inside rootfs
Script done, file is typescript

编译rootfs image

进入编译image目录
cd /root/katav2/kata-containers-2.0.2/tools/osbuilder/image-builder执行编译脚本
script -fec 'sudo -E USE_DOCKER=true ./image_builder.sh /root/katav2/kata-containers-2.0.2/tools/osbuilder/rootfs-builder/rootfs'成功后如下提示
OK!
1+0 records in
1+0 records out
2097152 bytes (2.1 MB, 2.0 MiB) copied, 0.00454381 s, 462 MB/s
1044480+0 records in
1044480+0 records out
534773760 bytes (535 MB, 510 MiB) copied, 15.3046 s, 34.9 MB/s
Script done, file is typescript

编译kata kernel

cd /root/katav2/kata-containers-2.0.2/tools/packaging/kernel
配置kernel编译环境
./build-kernel.sh setup
出现如下错误是因为编译内核时找不到内核.config文件,原因是build-kernel.sh编译脚本中force_setup_generate_config变量默认false,导致没有执行到make oldconfig命令,所以没有.config文件
*** Configuration file ".config" not found!
***
*** Please run some configurator (e.g. "make oldconfig" or
*** "make menuconfig" or "make xconfig").
***
编译内核
./build-kernel.sh build
安装内核文件到/usr/share/kata-containers/目录
./build-kernel.sh install

katacontainers v2编译相关推荐

  1. vs2017编译boost库 ,解决无法打开文件“libboost_filesystem-vc140-mt-1_58.lib” 问题

    注:本文为工作问题记录,有些还未搞清楚原理,请见谅. 借鉴了网上分享的资料,感谢. 错误 LNK1104 无法打开文件"libboost_filesystem-vc140-mt-1_58.l ...

  2. ADO.NET Data Services Framework 基础概述

    随着.NET Framework 4.0 及 Visual Studio 2010 的发布, ADO.NET Data Services Framework 2.0 的版本也将同时发布,新的.Net ...

  3. UnrealScript语言基础

    总体特征 (1)大小写不敏感.关键字.宏.变量名.函数名以及类名不区分大小写:变量名可以与关键字同名 (2)局部变量.成员变量未初始化时,会被编译器初始化 (3)没有全局变量.全局函数,所有东西必须写 ...

  4. 游戏服务器框架 Leaf/go

    Leaf/go 详细介绍 Leaf 是一个使用 Go 语言开发的开源游戏服务器框架,注重运行效率并追求极致的开发效率.Leaf 适用于几乎所有的游戏类型.其主要的特性: 良好的使用体验.Leaf 总是 ...

  5. Java Generics

    一 Generics简介 Generics 是程序设计语言的一种技术,指将程序中数据类型进行参数化,它本质上是对程序的数据类型进行一次抽象,扩展语言的表达能力,同时支持更大粒度的代码复用. 对于一些数 ...

  6. Android Studio 3.2新功能特性

    android studio3.2预览版本已经发布了,下面这些功能在最新的版本已经提供,但可能尚未在测试版本中发布渠道中提供. 什么是新的助理 Android Studio 3.2有一个新的Assis ...

  7. 使用VIVADO LICENSE 加密VHDL/Verilog 文件(二)

    继上一次编写vivado加密文章之后,细读赛灵思 UG1118,进行详细学习整理如下文.如有疑问可自行阅读英文版本手册. 一.VIVADO加密的TCL命令 Tcl命令在vivado的Tcl Conso ...

  8. 树莓派——9、IO操控代码编程

    编写操控io的代码 关于树莓派的cpu型号: 使用pinout 使用cat /proc/cpuinfo 查阅资料: 查阅资料发现树莓派3b的CPU型号就是BCM2709,也就是pinout中的BCM2 ...

  9. 高级威胁:Ramsay恶意软件针对隔离网络的攻击技术分析

    一.背景 近期,国外安全公司ESET发布了恶意软件Ramsay针对物理隔离网络的攻击报告(见参考链接1).所谓物理隔离网络,是指采用物理方法将内网与外网隔离,从而避免入侵或信息泄露的风险的技术手段.物 ...

  10. 5.15 vs2019 静态编译_xmake v2.3.8 发布, 新增 Intel C++/Fortran 编译器支持

    xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能 ...

最新文章

  1. Java版的开源 Flappy Bird 复刻项目
  2. 【Eclipse】Java Compiler没有Annotaion Processing, 需要安装Eclipse Java Development Tools
  3. linux安装mq报5724,linux下MQ简单配置手册.doc
  4. java 指定打印机打印_java 指定打印机 进行打印
  5. 流量分析的瑞士军刀:Zeek
  6. Oracle基础学习(四) 游标
  7. java中handler机制_自己动手撸一个Handler,让你彻底搞懂Handler机制,揍吻你服不服?...
  8. 《鬼武者3》全攻略宝典
  9. 开源人脸识别项目 —— face_recognition
  10. java面试之自我介绍
  11. 计算机无法还原,win7旗舰版系统无法创建系统还原点 无法还原怎么办
  12. PHP 实现 apple 苹果快捷登录
  13. 有哪些数据恢复软件?13个好用的数据恢复工具分享
  14. PAT乙级 C语言 1024 科学计数法
  15. CCD与CMOS摄像头哪个好
  16. python编写四则运算_python实现四则运算
  17. linux基本功系列之最危险的命令rm
  18. Python - - 面向对象 - - 初始面向对象
  19. 计算机网络(一):计算机网络概念、功能、组成
  20. oracle失效对象是什么意思,Oracle中无效数据库对象的处理方法

热门文章

  1. GIS开源软件大全(备用)
  2. Pycharm内部打不开生成的词云图,且显示Image not loaded,Try to open it externally to fix format problem,外部文件夹中图片可显示
  3. 微信小程序实战–集阅读与电影于一体的小程序项目(二)
  4. ubantu20.04安装PCL
  5. Win10关闭显示器后立即锁定
  6. 163邮箱登录不了Outlook解决方案
  7. php FPDF类库应用实现代码
  8. 从源代码开始构建Ogre图文教程(Ogre 1.8 Source + VS2010)
  9. 中文手机评论情感分析系列(二)
  10. postgresql中查询COMMENT注释的语句