EOS节点搭建(Windows)

作者: 程序员大叔日记 | 来源:发表于2018-01-28 10:02 被阅读6315次

    本文由币乎(bihu.com)内容支持计划奖励

    1、目的

    在Windows环境下搭建EOS节点,本文使用Window7环境。

    2、方法

    通过在Windows安装docker,可以快速搭建EOS。

    3、Windows安装docker的基本要求

    (1)64为操作系统,win7或者更高
    (2)支持“ Hardware Virtualization Technology”,并且,“virtualization ”可用

    4、安装Docker步骤

    安装Docker Tooklbox,同时还附加安装:
    (1)Oracle VM VirtualBox >>> 虚拟机
    (2)Kitematic (Alpha) >>> 图形化管理工具
    (3)Docker Quickstart Terminal >>> 终端管理
    不用担心,下载的Docker Toolbox已经完全包含了这几个软件,直接安装就可以了,

    4.1、下载Docker Toolbox

    进行下载网页https://get.daocloud.io/toolbox,注意需要下载17.05版本或更高版本。

    4.2、安装Docker Toolbox

    下载完成之后双击安装文件,一路Next,接受所有默认安装即可,最后Finish即可。
    安装完成出现如下三个软件:


    image.png

    注意:在安装过程中,会出现几个其他的安装过程,如Oracle Corporation等系列软件,全部选择安装即可。

    4.3、启动Docker

    预告: 前方会有两个大“坑”,请大家注意!!!
    坑1:直接点击运行桌面的“Docker Quickstart Terminal”快捷方式启动Docker,不过在启动过程中我发现程序会去目录“C:\Users\k.docker\machine\cache”下寻找boot2docker.iso镜像文件,如果不存在会自动去github上下载,这样下载的速度相当的慢。

    解决办法:其实在我们的Docker的安装根目录下已经有一个 boot2docker.iso 镜像,只是不知道为什么启动程序不去这里找。 废话不多说,我们就自己手动将这个ISO文件复制到上面的目录“C:\Users\k.docker\machine\cache”下(注:以你安装过程中的实际目录位置为准。),然后关闭当前的启动界面,再次启动“Docker”。

    坑2:当坑1解决完之后,再次运行桌面的“Docker Quickstart Terminal”快捷方式启动Docker,此时遇到另一个问题(如果你未遇到请略过此步):

    error in driver during machine creation:This computer doesn’t have VT-X/AMD-v enabled .Enabling it in the BIOS is mandatory
    
    image.png

    意思就是说你的虚拟机没有打开,这时手动打开虚拟机会发现下面问题:


    image.png

    解决方法:这时当使用VirtualBox启动虚拟机时提醒“虚拟电脑控制台 - 错误”,说明你电脑虚拟化技术处于被禁用状态。
    这时就要启动BIOS的虚拟化设置 | 开启CPU虚拟化支持。
    重启电脑后按F2或F10进入BIOS界面(不同主板型号进入BIOS所需按键不同)。
    进入BIOS界面:Configuratio > Intel Virtualization Technology > Enabled。
    注:主板不一样其BISO中显示关键词也不一样的,主要是找到Virtual或Virtualization将其设置为Enabled。

    解决坑2问题之后,再次直接点击运行桌面的“Docker Quickstart Terminal”快捷方式启动Docker,终于出现期待已久的大鲸鱼了:


    image.png

    5、搭建EOS节点

    预告:前方坑太多!!!

    5.1、从GIT下载&编译

    git clone https://github.com/EOSIO/eos.git --recursive
    cd eos/Docker
    docker build . -t eosio/eos
    

    注意:当执行 docker build . -t eosio/eos时,可能会出现以下错误:

    bzip2: Data integrity error when decompressing.
            Input file = (stdin), output file = (stdout)
    It is possible that the compressed file(s) have become corrupted.
    You can use the -tvv option to test integrity of such files.
    You can use the `bzip2recover' program to attempt to recover data from undamaged sections of corrupted files.
    

    解决方法:重新执行docker build . -t eosio/eos,就好了(猜测下载文件不完成)。

    接下来就是需要漫长的等待,晚上电脑一直开着,早上起来一看,又出现一个错误:

    Step 20/27 : COPY --from=builder /opt/eos/bin /opt/eos/bin COPY failed: stat /var/lib/docker/overlay2/d66370d8a0140a0596ce407855eb13790db1a051570b4771bad485381c8853be/merged/opt/eos/bin: no such file or directory
    

    解决方法:
    找到本地目录文件“C:\Users\k\eos\Docker\Dockerfile”
    打开文件Dockerfile,找到
    && cmake --build /tmp/build --target install
    修改为
    && cmake --build /tmp/build --target install \
    && cd /tmp/build && cmake -DCMAKE_INSTALL_PREFIX=/opt/eos -P cmake_install.cmake

    重新执行docker build . -t eosio/eos,终于编译成功:


    image.png

    5.2、启动

    接下来就是启动啦,执行以下命令:

    docker run --name eosd -p 8888:8888 -p 9876:9876 -t eosio/eos start_eosd.sh arg1 arg2
    

    非常不幸,没能成功,提示错误:

    standard_init_linux.go:195: exec user process caused "no such file or directory"
    

    原因:Windows环境下,因为结束换行符是 \r\n ,导致Docker镜像中的Linux Shell脚本文件无法执行。Linux/Mac的结束符是\n,所以Shell解释器会将脚本文件中的\r作为命令行的一部分来执行。这就是出现 “no such file or directory” 的原因。

    解决方法:定位问题之后,修正也很简单。我的做法是利用 dos2unix.exe start_eosd.sh和dos2unix.exe eosd.sh命令将其转换成为unix格式文件,同时必须重新使用docker build . -t eosio/eos命令进行编译,编译完成之后,再次执行docker run --name eosd -p 8888:8888 -p 9876:9876 -t eosio/eos start_eosd.sh arg1 arg2,这样问题就解决了。

    5.3、获取区块链信息

    新打开GIT终端窗口,执行以下命令,可以获取到区块链信息:

    $ curl http://192.168.99.100:8888/v1/chain/get_info
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100   364  100   364    0     0    364      0  0:00:01 --:--:--  0:00:01  355k{"server_version":"d666bfaa","head_block_num":2757,"last_irreversible_block_num":2741,"head_block_id":"00000ac55bd9729a1a119977badc7980f84c00557402d33d8437bf037d13e183","head_block_time":"2018-01-24T04:06:53","head_block_producer":"initu","recent_slots":"1111111111111111111111111111111111111111111111111111111111111111","participation_rate":"1.00000000000000000"}
    

    遇到太多坑,最后终于搭建好了,至此整个windows 7 环境下的EOS节点搭建就OK了。

    相关文章

      网友评论

        本文标题:EOS节点搭建(Windows)

        本文链接:https://www.haomeiwen.com/subject/ucpeaxtx.html