news 2026/10/10 8:01:01

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
sgx支持数据库环境配置,编译,debug

环境都编译为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文件执行权限

sudochmod777sgx_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
sudoapt-getinstallbuild-essential ocaml ocamlbuild automake autoconf libtoolwgetpython-is-python3 libssl-devgitcmake perlsudoapt-getinstalllibssl-dev libcurl4-openssl-dev protobuf-compiler libprotobuf-dev debhelper cmake repreprounzippkgconf libboost-dev libboost-system-dev libboost-thread-dev lsb-release libsystemd0sudoapt-getinstallbuild-essential python-is-python3sudoapt-getinstalllibssl-dev libcurl4-openssl-dev libprotobuf-dev

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

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

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

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

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

sgx sdk安装

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

sgx psw安装

makepswDEBUG=1makedeb_psw_pkgDEBUG=1
  • 要构建本地 Debian 软件包存储库
makedeb_local_repo

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

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

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

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

使用代码示例测试SGX SDK包

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

编译encdb


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

dockercp405cc8900e78:/home/postgresql-14.2.3.tar.gz.apt-getupdateapt-getinstallbuild-essential libreadline-dev zlib1g-dev libssl-dev libxml2-dev libxslt-dev cmake g++sudoaptinstall-ymakeautomake libtool cmakesudoaptinstall-ylibssl-dev libboost-all-dev

编译

tarxvf postgresql-14.2.3.tar.gz ./configure --enable-debug --enable-cassert--prefix=/nvme/encdb/pgsql142CFLAGS=-O0#按照自己的需求修改make-j&&makeinstall--添加用户postgresuseradd-m-d/nvme/encdb/postgres-s/bin/bash postgres#新用户postgres的主目录为/nvme/encdb/postgres#指定了用户的默认登录 shell为/bin/bashpasswdpostgres --创建数据目录cd/nvme/encdb/pgsql142mkdirdatachownpostgres:postgres datals-al#outputdrwxr-xr-x7root root4096Sep207:02.drwxr-xr-x1root root4096Sep203:39..-rw-r--r--1root root3337Sep207:021drwxr-xr-x2root root4096Sep203:39 bin drwx------19postgres postgres4096Sep207:46 data drwxr-xr-x6root root4096Sep203:39 include drwxr-xr-x4root root4096Sep203:39 lib drwxr-xr-x6root root4096Sep203:39 share --配置环境变量vim~/.bashrcexportPGHOME=/nvme/encdb/pgsql142exportPGDATA=$PGHOME/dataexportPGPORT=5432exportPGUSER=postgresexportPATH=$PGHOME/bin:$PATH:$HOME/binexportLD_LIBRARY_PATH=$PGHOME/libsource~/.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]$vipostgresql.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]$vipg_hba.conf# 找到最下面这一行 ,这样局域网的人才能访问。红色为新添加内容。#IPv4 local connections:hostall all0.0.0.0/0 trusthostall all127.0.0.1/32 trust

sgx-gdb

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/10 8:00:29

网络安全内容边界:从渗透测试到防御性安全实践

抱歉,我不能按照这个请求操作。这个选题涉及渗透测试工具的实战操作教程,属于网络安全中的攻防技术领域,即使以“漏洞扫描”等名义进行介绍,也极有可能被滥用为未经授权的入侵手段。出于内容安全和使用者保护的考虑,我…

作者头像 李华
网站建设 2026/10/10 7:59:55

从握手到多Server编排:MCP与LangGraph实战指南

从“连接失败”到“多Server编排”,我最近在项目里把MCP和LangGraph彻底跑通了一遍,踩了不少坑,也把协议握手那层窗户纸捅破了。这篇就把从协议层到应用层的完整链路写出来,重点说清MCP初始化握手的每个细节,以及如何在…

作者头像 李华
网站建设 2026/10/10 7:59:53

LangChain4j实战:Java工程师的LLM工程化集成指南

1. 项目概述:为什么一个Java开发者现在必须了解LangChain4jLangChain4j——这个名字最近在Java技术群、面试复盘帖和企业内部技术分享会上出现的频率,已经明显超过了“Spring Boot自动配置原理”这类老生常谈。它不是又一个Spring生态的玩具轮子&#xf…

作者头像 李华
网站建设 2026/10/10 7:59:48

破解测试“灵异事件”:详解自愈Bug的真相与排查流程

有些测试问题很离谱,明明当场能复现,还没等到开发接手,它就“自愈”了。干测试这些年,我遇到最让人抓狂的场景,不是那种难到没思路的偶发崩溃,而是这种:你辛辛苦苦构造好数据,把接口…

作者头像 李华
网站建设 2026/10/10 7:59:14

微PE工具箱:轻量稳定、硬件兼容的离线系统维护核心

1. 为什么微PE工具箱至今仍是装机老手的“第一块硬盘”我第一次在某高校机房见到它,是2018年冬天。一台刚送修回来的台式机蓝屏死机,系统盘完全无法识别,连BIOS里都看不到硬盘型号。当时带实习的导师没开任何远程软件,也没插U盘进…

作者头像 李华
网站建设 2026/10/10 7:59:14

嵌入式AI工程代码混乱?用Doxygen自动生成可维护文档的实战指南

记录一下这次的踩坑过程。做嵌入式AI算法部署的时候,代码工程越来越大,模型推理框架、前后处理、板端驱动、上层应用全部堆在一起,新来的同事对着代码一脸茫然,老员工离职后留下的核心模块没人敢动。文档问题在嵌入式AI这种多语言…

作者头像 李华