服务器信息:

  cpu:华为鲲鹏

  cpu架构:arm v8

  系统:CenOS-AltArch 7.6

相关工具安装

yum更新

yum update

  

安装vim/gcc/git/curl工具软件

yum install vim

yum install gcc

yum install git

yum install curl

安装pip、python-pip

 这一步根据实际提示去操作,步奏省略。博主升级了python版本到3.7 ,安装了pip3、python-pip...

 可能需要升级openssl,升级openssl可以参照这篇文章:http://www.manongjc.com/detail/14-hnvvaaujxafjzbv.html

 注意:升级python之后,使用pip指令可能报错:https协议不支持,解决如下:

安装docker及docker-compose

 docker安装:

   yum安装跟x86平台安装一样,步奏省略...

   博主的docker安装的是最新稳定版:19.03.5

  docker安装完成后,添加阿里云docker hub镜像 ,执行:

sudo vi /etc/docker/daemon.json

  将以下内容添加到daemon.json中:

    {
      "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
    }

  执行以下命令,若不报错则添加成功,并重启docker

systemctl start docker
systemctl daemon-reload
systemctl restart docker

  加入开机启动:

systemctl enable docker

 docker-compose安装:

安装:pip install docker-compose
版本查看:docker-compose version

安装go

  注意:需要先找到自己CPU架构对应的go版本

  go对应版本查看:https://studygolang.com/dl

  博主安装的版本:

# 下载go1.13.6.linux-arm64.tar.gz并将其解压到指定目录(此处为/usr/local)

wget https://studygolang.com/dl/golang/go1.13.6.linux-arm64.tar.gz
tar xzvf go1.13.6.linux-arm64.tar.gz -C /usr/local

#修改系统环境变量

vi /etc/profile

打开文件后在最后面添加:

# 使环境变量生效

source  /etc/profile

# 验证:go version

安装 protobuf

  protobuf安装

  博主安装的最新版本3.11.2

wget https://github.com/google/protobuf/releases/download/v3.11.2/protobuf-all-3.11.2.tar.gz

./autogen.sh

./configure

make

make check

make install

  安装protobuf-compiler

yum install protobuf-compiler

go get -u github.com/golang/protobuf/protoc-gen-go

#命令执行后会在$GOPATH/bin目录下发现这个工具

  

安装一些依赖库

 yum install libc6-dev libltdl3-dev python-setuptools

至此一切准备工作就绪,下面将进行与fabric相关的开发工作。

  安装Node.js

  Node.js为选装内容,为支持Node.js的 SDK做准备。

  1. yum install nodejs
  2. yum install npm

Fabric环境搭建

  源码下载

    新建源码工程目录,执行

      mkdir -p $GOPATH/src/github.com/hyperledger/
    进入hyperledger目录,通过git clone fabric源代码,下载速度较慢,根据网络情况该部分代码需要下载一个小时左右。

      cd $GOPATH/src/github.com/hyperledger/
      git clone https://github.com/hyperledger/fabric.git

      注意:完成之后需要切换tag:具体操作百度自行切换,博主选择的tag是   v0.4.13

    下载fabric 项目源码(fabric-samples)

      git clone https://github.com/hyperledger/fabric-samples.git

      注意:完成之后需要切换稳定版的分支:git checkout -b sample v1.4.0
    下载docker base image镜像源码

      git clone https://github.com/hyperledger/fabric-baseimage.git
    下载fabric ca源代码

      git clone https://github.com/hyperledger/fabric-ca.git

源码编译

由于fabric官方不支持ARM内核的二进制文件以及docker镜像(docker pull 镜像失败),因此需要我们自己编译,以下内容为二进制文件和镜像编译过程,其中涉及文件修改的部分,请对照git diff截图根据上下文查看具体位置,标准行号可能会有出入。

docker base image镜像编译

  1、cd fabric-baseimage
  2、修改Makeflie文件,在41行出增加一行:DOCKER_BASE_arm64=aarch64/ubuntu:xenial

  3、修改images/couchdb/Dockerfile.in文件,在112行处增加如下内容:

     && chmod +w bin/rebar \
     && mv bin/rebar bin/rebar-orig \
     && cd bin \
     && curl -fSL https://github.com/rebar/rebar/wiki/rebar --output rebar \
     && chmod +x rebar \
     && cd .. \

  4、修改scripts/common/setup.sh文件,在73行处做如下修改:

  注释掉:NODE_PKG=node-v$NODE_VER-linux-$ARCH.tar.gz

  添加:NODE_PKG=node-v$NODE_VER-linux-arm64.tar.gz

  5、执行 make 编译docker镜像,时间较长,大约6-8个小时,中间可能会因为网络原因中断,再次执行make即可。编译成功执行docker images 查看是否编译成功。

fabric源码编译

cd fabric

修改Makefile文件,在114行处做如下修改。

  1. #all: native docker checks
  2. all: native docker #checks

执行make,大约需要1-2个小时,编译成功执行docker images 查看是否编译成功。

二进制文件编译

  修改Makefile文件

  在100行最右添加:linux-arm64

  在350行后添加如下内容:

    release/linux-arm64: GOARCH=arm64
    release/linux-arm64: $(patsubst %,release/linux-arm64/bin/%, $(RELEASE_PKGS))

执行 make release

成功之后会在release/linux-arm64/bin目录下生成二进制文件,然后把这些二进制文件拷贝到gopath/bin目录下。

编译fabric-ca

  如果没有用到fabric-ca,当前步奏可以省略

  修改Makefile文件,在75行处做如下修改。

    all: rename docker unit-tests
    all: rename docker #unit-tests

执行make,编译成功后执行docker images 命令查看编译是否成功。

编译fabric-ca的二进制文件

  这一步,博主没有操作,因为没用到fabric-ca工具,省略

结果测试

  进入项目代码目录/fabric-samples/first-network,执行:

./byfn.sh up

  出现以下结果,证明安装成功。

  问题纪要:

    1、docker-compose not  find....

    解决:找到docker-compose文件所在路径,配置环境变量(临时/永久),博主配置的临时环境。

  

    2、./byfn.sh启动时,提示如下异常:

   解决:/release/linux-arm64/bin/目录下生成的所有二进制文件拷贝到fabric-samples/bin目录下

  重要采坑点:

  问题一:fabric目录下执行make指令,可能会抛出找不到某个指定的docker镜像异常

    解决:vi   Makefile

    在下图位置修改成跟docker镜像相同的TAG

  问题二:在fabric目录下执行二进制编译命令:make release时,会抛出如下异常

  解决办法如下:

基于arm v8搭建区块链环境的更多相关文章

  1. 基于 Jenkins 快速搭建持续集成环境--转

    源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...

  2. hyperledger explorer 结合 fabric1.4 搭建 区块链浏览器 踩坑记录

    博主通过这篇博客的步骤搭建区块链浏览器:https://blog.csdn.net/qq_32675427/article/details/99946945 进行到下面这一步时出现各种异常,浪费了博主 ...

  3. Python实现一条基于POS算法的区块链

    区块链中的共识算法 在比特币公链架构解析中,就曾提到过为了实现去中介化的设计,比特币设计了一套共识协议,并通过此协议来保证系统的稳定性和防攻击性. 并且我们知道,截止目前使用最广泛,也是最被大家接受的 ...

  4. 基于 Webpack 4 搭建 Vue 开发环境

    自从工作之后,就已经很久没有写过博客了.时间被分割得比较碎,积累了一段时间的学习成果,才写下了这篇博客. 之前有写过 Webpack4 的文章,但是都比较偏入门,唯一的一篇实战篇 -- 基于Webpa ...

  5. [转] 基于Gitlab CI搭建持续集成环境

    [From] https://blog.csdn.net/wGL3k77y9fR1k61T1aS/article/details/78798577 前言 本文是在12月12号迅雷@赵兵在前端早读课第三 ...

  6. 基于 Jenkins 快速搭建持续集成环境

      什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...

  7. python搭建区块链

    #!/usr/bin/env python # encoding: utf-8 ''' 我们要创建一个 Blockchain 类 ,他的构造函数创建了一个初始化的空列表(要存储我们的区块链),并且另一 ...

  8. 基于ARM的RealView MDK开发环境

    RealView MDK可以对各种嵌入式处理器的软件开发工具.这么高端,着实很吸引我,ADS12还不知道怎么搞,居然还有这么高端的,但是还是得了解一下唉.洗这个自动配 置启动代码,集成Flash烧写模 ...

  9. 基于jupyter lab搭建网页编程环境并添加自定义python kernel和matlab kernel以及plotly的使用

    内容转载自我的博客 目录 说明 1. 创建虚拟环境jupyter 2. 安装nodejs(用于jupyterlab安装扩展) 3. 安装pip包 4. 使用jupyterlab 5. 配置jupyte ...

随机推荐

  1. java_抽象类、接口、多态的使用

    抽象类 抽象类:包含抽象方法的类. 抽象方法 : 没有方法体的方法. 使用 abstract关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体. 格式为:修饰符 abstra ...

  2. C#LeetCode刷题-树状数组

    树状数组篇 # 题名 刷题 通过率 难度 218 天际线问题   32.7% 困难 307 区域和检索 - 数组可修改   42.3% 中等 315 计算右侧小于当前元素的个数   31.9% 困难 ...

  3. 简单认识Adam优化器

    转载地址 https://www.jianshu.com/p/aebcaf8af76e 基于随机梯度下降(SGD)的优化算法在科研和工程的很多领域里都是极其核心的.很多理论或工程问题都可以转化为对目标 ...

  4. axios 常用的几个方法

    Vue推荐使用axios 发送网络请求:最近重新开始做Vue项目,重新回归一下.从axios的几个方法开始吧. 1. 安装: 既然是Vue项目,我还是选择常用的npm的方式 $ npm install ...

  5. day1 计算机的组成

    1.计算机,是用于高速计算的电子机器,具有数值计算, 逻辑判断,储存记忆的功能. 2.计算机由硬件系统和软件系统组成构成. 3.计算机中所有的运行程序都是在内存中进行的,暂时存放在CPU中的运算数据 ...

  6. asp.net core 应用docke部署到centos7

    前言 前期准备 win10 (不要安装hyper-V) VMware-Workstation-Pro/15.0 Xshell6 (非必需) VS2019 以上环境请自行安装 都是默认安装没什么可说的 ...

  7. linux 安装sftp

    1.定义sftp的数据目录 mkdir -p /data/sftp 2.将目录归到root用户,否则无法chroot chown root. -R /data/sftp/或者chown root:ro ...

  8. 冒泡排序(Bubble Sorting)

    基本介绍 时间复杂度O(n^2) 冒泡排序(Bubble Sorting)的基本思想是:通过对待 排序序列从前向后(从下标较小的元素开始),依次比较 相邻元素的值,若发现逆序则交换,使值较大 的元素逐 ...

  9. 浅谈Docker(一)

    注:由于别人写的太好了就转来基础介绍! 转自:http://www.infoq.com/cn/articles/docker-core-technology-preview Docker是PaaS供应 ...

  10. 【转】python调用youtube-dl实现视频下载

    youtube-dl是一个命令行程序,用于从YouTube.com和更多网站下载视频.它需要Python解释器,版本2.6,2.7或3.2+,并且支持Unix,Windows或Mac OS X中运行. ...