sgx支持数据库环境配置,编译,debug

news2024/11/19 6:29:29

环境都编译为debug模式,为了开发,并利用sgx的debugger sgx-gdb进行debug

查看cpu是否支持sgx


dell@dell-Precision-3630-Tower  /nvme  lscpu
Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Byte Order:                         Little Endian
Address sizes:                      39 bits physical, 48 bits virtual
CPU(s):                             16
On-line CPU(s) list:                0-15
Thread(s) per core:                 2
Core(s) per socket:                 8
Socket(s):                          1
NUMA node(s):                       1
Vendor ID:                          GenuineIntel
CPU family:                         6
Model:                              158
Model name:                         Intel(R) Xeon(R) E-2288G CPU @ 3.70GHz
Stepping:                           13
CPU MHz:                            3700.000

--到以下网站查看是否支持
https://ark.intel.com/content/www/us/en/ark/products/193743/intel-xeon-e2288g-processor-16m-cache-3-70-ghz.html

在这里插入图片描述

在bios中开启sgx服务,f12,找到sgx选项,设置为enabled,内存设置为最大128mb

sgx debug环境编译


  • 操作系统ubuntu20.04

  • 可参考https://zhuanlan.zhihu.com/p/560110720,但是这个是release版本,如果需要debug,所有都编译为debug

  • 顺序:sgx driver->sgx sdk->six psw

sgx driver

  • 在该下载地址将.bin文件下载,https://download.01.org/intel-sgx/latest/linux-latest/distro/ubuntu20.04-server/

  • 赋予.bin文件执行权限

sudo chmod 777 sgx_linux_x64_driver_2.11.054c9c4c.bin
  • 运行该bin文件,完成驱动安装
sudo ./sgx_linux_x64_driver_2.11.054c9c4c.bin

构建sgx sdk和sgx psw软件包

  • 参考链接:https://github.com/intel/linux-sgx/tree/master
sudo apt-get install build-essential ocaml ocamlbuild automake autoconf libtool wget python-is-python3 libssl-dev git cmake perl
sudo apt-get install libssl-dev libcurl4-openssl-dev protobuf-compiler libprotobuf-dev debhelper cmake reprepro unzip pkgconf libboost-dev libboost-system-dev libboost-thread-dev lsb-release libsystemd0
sudo apt-get install build-essential python-is-python3
sudo apt-get install libssl-dev libcurl4-openssl-dev libprotobuf-dev

注意:要构建 Intel® SGX SDK,gcc 版本需要为 7.3 或更高版本,glibc 版本需要为 2.27 或更高版本。

  • 下载源代码并准备子模块和预构建的二进制文件:
git clone https://github.com/intel/linux-sgx.git
cd linux-sgx && make preparation

上面的代码make preparation将触发脚本download_prebuilt.sh下载预构建的二进制文件。您可能需要为wget脚本使用的工具设置 https 代理(如export https_proxy=http://test-proxy:test-port

注意:如果遇到任何网络下载的问题,自己按照export的方式挂代理

  • 将当前操作系统发行版对应的缓解工具从 external/toolset/{current_distr} 复制到 /usr/local/bin 并确保它们具有执行权限:
sudo cp external/toolset/{current_distr}/* /usr/local/bin
which ar as ld objcopy objdump ranlib

sgx sdk安装

make sdk DEBUG=1
make sdk_install_pkg DEBUG=1
  • 进入linux-sgx文件夹,输入
cd linux/installer/bin
./sgx_linux_x64_sdk_${version}.bin
注意:运行第二条命令时,它询问是否安装在当前文件夹的时候,最好选择“no”,然后输入/opt/intel/, 即将SGX SDK安装在/opt/intel/文件夹下。
  • 安装完成后,根据提示输入source命令。

sgx psw安装

make psw DEBUG=1
make deb_psw_pkg DEBUG=1
  • 要构建本地 Debian 软件包存储库
make deb_local_repo

You can find the local package repository located under linux/installer/deb/sgx_debian_local_repo.

  • 修改/etc/apt/sources.list,添加以下行
deb [trusted=yes arch=amd64] file:/PATH_TO_LOCAL_REPO focal main

PATH_TO_LOCAL_REPO替换为linux/installer/deb/sgx_debian_local_repo的绝对路径

  • 更新apt
sudo apt update
  • 安装
apt-get install libsgx-launch-dbgsym libsgx-urts-dbgsym
apt-get install libsgx-epid-dbgsym libsgx-urts-dbgsym
apt-get install libsgx-quote-ex-dbgsym libsgx-urts-dbgsym
apt-get install libsgx-dcap-ql-dbgsym

使用代码示例测试SGX SDK包

  • 硬件模式下编译并运行代码示例
cd ${sgx-sdk-install-path}/SampleCode/LocalAttestation
make
cd bin
./app

编译encdb


pg的编译参考:https://blog.csdn.net/twi_twi/article/details/127146765,仅做参考

docker cp 405cc8900e78:/home/postgresql-14.2.3.tar.gz .

apt-get update
apt-get install build-essential libreadline-dev zlib1g-dev libssl-dev libxml2-dev 
libxslt-dev cmake g++
sudo apt install -y make automake libtool cmake
sudo apt install -y libssl-dev libboost-all-dev

编译

tar xvf postgresql-14.2.3.tar.gz
./configure --enable-debug --enable-cassert --prefix=/nvme/encdb/pgsql142 CFLAGS=-O0
#按照自己的需求修改
make -j && make install

--添加用户postgres
useradd -m -d /nvme/encdb/postgres -s /bin/bash postgres
#新用户postgres的主目录为/nvme/encdb/postgres
#指定了用户的默认登录 shell为/bin/bash
passwd postgres


--创建数据目录
cd /nvme/encdb/pgsql142
mkdir data 
chown postgres:postgres data
ls -al
#output
drwxr-xr-x  7 root     root     4096 Sep  2 07:02 .
drwxr-xr-x  1 root     root     4096 Sep  2 03:39 ..
-rw-r--r--  1 root     root     3337 Sep  2 07:02 1
drwxr-xr-x  2 root     root     4096 Sep  2 03:39 bin
drwx------ 19 postgres postgres 4096 Sep  2 07:46 data
drwxr-xr-x  6 root     root     4096 Sep  2 03:39 include
drwxr-xr-x  4 root     root     4096 Sep  2 03:39 lib
drwxr-xr-x  6 root     root     4096 Sep  2 03:39 share

--配置环境变量
vim ~/.bashrc
export PGHOME=/nvme/encdb/pgsql142
export PGDATA=$PGHOME/data
export PGPORT=5432
export PGUSER=postgres
export PATH=$PGHOME/bin:$PATH:$HOME/bin
export LD_LIBRARY_PATH=$PGHOME/lib

source ~/.bashrc

--初始化数据库
su - postgres
./initdb -D /nvme/encdb/pgsql142/data

--启动服务
./pg_ctl -D /nvme/encdb/pgsql142/data -l /nvme/encdb/pgsql142/data/startup.log start

##以下的感觉可以不需要
--配置服务
# 修改/usr/local/pgsql/data目录下的两个文件。
# 1) postgresql.conf   配置PostgreSQL数据库服务器的相应的参数。  
# 2) pg_hba.conf        配置对数据库的访问权限。

[postgres@i-vfyxrtmx data]$ vi postgresql.conf 
listen_addresses = '*'                  # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 5432                            # (change requires restart)
#其中,参数“listen_addresses”表示监听的IP地址,默认是在localhost处监听,也就是127.0.0.1的ip地址上监听,只接受来自本机localhost的连接请求,这会让远程的主机无法登陆这台数据库,如果想从其他的机器上登陆这台数据库,需要把监听地址改为实际网络的地址,一种简单的方法是,将行开头的#去掉,把这个地址改为*,表示在本地的所有地址上监听。

[postgres@weekend02 data]$ vi pg_hba.conf 
# 找到最下面这一行 ,这样局域网的人才能访问。红色为新添加内容。
#IPv4 local connections:
host    all             all             0.0.0.0/0               trust
host    all             all             127.0.0.1/32            trust

sgx-gdb

路径:/opt/intel/sgxsdk/bin
使用方式与gdb差不多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1039532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AUTOSAR中的Crypto Stack(一)--概述

前面我们聊到了比较多的关于信息安全的概念,以及主流MCU的信息安全方案。但从软件工程师的角度来看,最终这些信息安全的概念都是会从软件来实现;如何设计出一种合理、安全的信息安全软件框架,我们从AUTOSAR的加密栈来分析。 该协议栈主要从以下几个方面来介绍: AUTOSAR中…

蓝桥杯打卡Day15天

文章目录 买不到的数目错误票据 一、买不到的数目OJ链接 本题思路:引理:给定a,b,若dgcd(a,b)>1 ,则一定不能凑出最大数。结论:如果 a,b均是正整数且互质,那么由 axby,x≥0,y≥0 不能凑出的最大数是 ab−a−b。 证…

Bigemap如何查看历史影像

工具 Bigemap gis office地图软件 BIGEMAP GIS Office-全能版 Bigemap APP_卫星地图APP_高清卫星地图APP 很多人都在寻找历史影像图,这块的需求是非常大,历史影像一般可以用于历史地貌的变迁分析,还原以前的生态场景,对范围面积…

深入探讨Vue.js:从基础到高级(最佳实践)

文章目录 Vue.js 基础1. Vue.js 是什么?2. Vue 实例3. 双向数据绑定 Vue 组件1. 什么是 Vue 组件?2. 组件之间的通信 Vue 模板语法1. 插值和指令2. 条件和循环3. 事件绑定和表单输入绑定 Vue 路由1. Vue Router安装和配置:导航: 2…

企业做软文推广的三大错误有哪些?媒介盒子为您解答

软文营销已经成为企业宣传的主要方式,但有很多企业来找媒介盒子咨询,明明花了大量成本来做软文推广,为什么就是没效果呢?小编看了下,发现大部分企业做软文推广效果不明显,基本上犯了三大错误,接…

风向对风力机发电的影响

目录 1. 摘要2. 简介 1. 摘要 随着风力发电机的增大,风向随高度的变化(风偏转)在入流风场中起到了至关重要的作用。我们使用明尼苏达大学Eolos风能研究站5年的实地数据集来探讨风偏转的特性及其对涡轮性能的影响。风偏转表现出明显的日变化&…

一款值得入手的双节电池1A电流线性充电芯片-YB4028

概述: YB4028 是一款双节串联锂电池充电管理芯片,集成涓流、恒流、恒压三段式线性充电管理,符合锂电池安全充电规范。充电输入耐压高达20V,充电电流高至 10A,可通过片外电阻配置。 YB4028 集成防倒灌电路,输入电压拔…

大数据flink篇之一-基础知识

一、起源 2010至2014年间,由柏林工业大学、柏林洪堡大学和哈索普拉特纳研究所联合发起名Stratosphere的研究项目。2014年4月,项目贡献给Apache基金会,成为孵化项目。更名为Flink2014年12月,成为基金会顶级项目2015年9月&#xff…

MAC word 如何并列排列两张图片

系统:MAC os 参考博客 https://baijiahao.baidu.com/s?id1700824516945958911&wfrspider&forpc 步骤1 新建一个word文档和表格 修改表格属性 去掉自动重调尺寸以适应内容 插入图片 在表格的位置插入对应的图片如下 去除边框 最终结果如下

数据大爆炸:大数据分析如何改变我们的世界

文章目录 大数据分析的基本概念数据的三个V大数据分析的技术 大数据分析在商业中的应用1. 个性化营销2. 风险管理3. 供应链优化4. 客户服务 大数据分析在医疗保健中的应用1. 疾病预测2. 患者治疗3. 医疗设备监控 大数据分析在科学研究中的应用1. 天文学2. 生物学3. 气象学 大数…

mock.js与组件通信之总线的讲解

目录 一Mock.js 1.1简介 1.2 安装配置Mock.js 1.3 mock.js的使用 二. 组件通信之总线 2.1 总线的简介 2.2 总线的使用-以导航栏的收进为例 好啦今天的分享就到这啦!! 一Mock.js 1.1简介 Mock.js 是一个用于生成随机数据的 JavaScript 库。它可以模拟…

关于vantUI的导航组件tab标签页在ios和安卓中运用遇到的坑

vantTab的默认值 应用场景问题描述原始代码更正代码 应用场景 根据路由传值设置默认tab页,获取不同的数据并进行展示 问题描述 ios可正常按照路由传值默认tab页,安卓始终默认tabList的第一个value值,疑安卓系统中不接受dataMap.tabActive为…

虚拟车衣VR云展厅平台扩大了展览的触达范围

传统展厅主要是以静态陈列的形式来传达内容,主要的展示形式有图片、视频等,具有一定的局限性,体验感较差,客户往往不能深入地了解信息和细节内容。 VR全景看车是通过虚拟现实技术实现逼真的汽车观赏和试乘体验。消费者可以通过智能…

Python图像处理-----几何变换

文章目录 一、图像几何变换理论二、图像平移2.1 使用数学公式的实现方式为:2.2 使用矩阵实现的方式为2.3 使用opencv三、图像缩放3.1 用数学式子表示为公式(a为缩放系数):3.2 用矩阵表示如公式所示:一、图像几何变换理论 图像几何变换不改变图像的像素值,在图像平面上进行像…

Docker ---- network中的命令详解

最近一直在使用docker,记录一些遇到的问题。 问题1:在搭建ealsticsearch与kibana时运行成功后第二次想运行出错了或者访问不了? 因为两个启动的容器是被互相隔离的,没有启用网络的互相通信不了。 问题2:怎么查看自己…

Kafka 运维必懂:从原理到调优,看完秒变大佬

1 Kafka 概述 Kafka 起初是 由 LinkedIn 公司采用 Scala 语言开发的一个多分区、多副本且基于 ZooKeeper 协调的分布式消息系统,现已被捐献给 Apache 基金会。 目前 Kafka 已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流…

左神高阶提升班5(贪心尝试、范围上的尝试模型

目录 【案例1 贪心尝试】 【题目描述】 【思路解析】 【代码实现】 【案例2 范围上的尝试模型】 【题目描述】 【思路解析】 【代码实现】 【案例3 范围上的尝试模型】 【题目描述】 【思路解析】 【代码实现】 【案例4 从左至右上尝试的模型 范围上的尝试模型…

ATTCK红队评估实战靶场二

描述 红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习、视频教程、博客三位一体学习。本次红队环境主要Access Token利用、WMI利用、域漏洞利用SMB relay,EWS relay,PTT(PTC),MS14-068,GPP…

Spring学习笔记10 JdbcTemplate

Spring学习笔记9 SpringIOC注解式开发_biubiubiu0706的博客-CSDN博客 JdbcTemplate是Spring提供的一个JDBC模板类,是对JDBC的封装,简化JDBC代码. 新建模块spring-jdbctemplate 引入依赖 <dependencies><!--Spring Context依赖--><dependency><groupId>…

直播软件App开发:10个关键步骤,从零到一掌握

欢迎来到本文&#xff0c;我将为您解析直播软件App开发的关键步骤&#xff0c;帮助您从零开始掌握这一领域。作为该主题领域的专家&#xff0c;我将为您分享十个重要的步骤&#xff0c;带您实现直播软件App的开发目标。 步骤一&#xff1a;市场调研与需求分析 在直播软件App开…