当前位置: 首页 > 工具软件 > OPNFV > 使用案例 >

Fuel编译(opnfv c版本编译)A

南宫海超
2023-12-01

宿主机器:ubuntu 14.04 desktop x64

编译只支持14.04, 只支持64位

1 空间要求 ubuntu 最少40G硬盘(/目录)原因:opnfv在/tmp/fuel-main下安装,空间巨大

2 替换镜像位置 将/etc/apt/sources.list中的cn.ubuntu.com替换为mirrors.aliyun.com

                             更新apt, apt-get update

3 更新kernel到3.19  vivid对应15.04的kernel

             apt-get install linux-generic-lts-vivid

                               安装后 reboot

                               验证uname -r

                               3.19是docker所需要的版本,在fuel-main中会检查是否kernel到这个版本,不到就会要求停止编译。

                               低于3.19的docker有bug


4 更新docker     参考参考2


$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
$ sudo apt-key adv \
               --keyserver hkp://ha.pool.sks-keyservers.net:80 \
               --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update
apt-cache policy docker-engine
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
sudo apt-get install docker-engine
sudo service docker start
sudo docker run hello-world


5 设置docker

sudo usermod -a -G docker root

vi /etc/default/docker

DOCKER_OPTS=" --dns=8.8.8.8 --dns=8.8.8.4"

sudo service docker restart


6 取代码

编译前记得apt-get install make git curl

注册一个linux的帐号

从opnfv.org gerrit上取代码

git clone ssh://<Linux foundation user>@gerrit.opnfv.org:29418/fuel

$ cd fuel
$ git checkout colorado.3.0


7 编译 采用make debug方式编译,方便debug

之前有过编译则在fuel/build目录下

make clean 或者

make deepclean

然后 make debug

make debug的主要工作是下载opnfv ubuntu-builder docker镜像,并进入镜像后的bash

除外,还执行fuel9编译所要求的准备环境的工作,即prepare_env.sh的工作

8 编译 此时是在步骤7完成后,在docker bash里的工作

make iso


部分编译出现的问题不在这里讨论,已经分篇讨论了。


opnfv fuel.git修改的代码列表参考附件


fuel-main编译时出现的GPG error参考

http://blog.csdn.net/anzhuangguai/article/details/53745464


参考

1 总体安装指导 http://artifacts.opnfv.org/fuel/colorado/3.0/docs/buildprocedure/index.html

2 docker上安装ubuntu https://docs.docker.com/engine/installation/linux/ubuntulinux/


附件

root@fz:/mnt/sdb/fuel/build/docker# git diff ../Makefile Dockerfile Makefile runcontext ../fuel_build_loop
diff --git a/build/Makefile b/build/Makefile
index b760568..3ad39ff 100644
--- a/build/Makefile
+++ b/build/Makefile
@@ -60,7 +60,7 @@ export LATEST_MIRROR_ID_URL := http://$(shell ./select_closest_fuel_mirror.p
 export MIRROR_MOS_UBUNTU ?= $(shell echo "$(LATEST_MIRROR_ID_URL)" | cut -d'/' -f3)
 #export LATEST_TARGET_UBUNTU := $(shell curl -sSf "$(MIRROR_MOS_UBUNTU)/mos-repos/ubuntu/$(MO
 # Fuel 9.0
-export LATEST_TARGET_UBUNTU := snapshots/9.0-2016-06-23-164100-copy
+export LATEST_TARGET_UBUNTU := snapshots/9.0-2016-06-23-164100
 export MIRROR_MOS_UBUNTU_ROOT := /mos-repos/ubuntu/$(LATEST_TARGET_UBUNTU)
 
 export LATEST_TARGET_CENTOS := $(shell curl -sSf "$(LATEST_MIRROR_ID_URL)/mos-repos/centos/mo
@@ -97,8 +97,8 @@ all:
        @KERNEL_VER=$$(uname -r); \
        KERNEL_ARRAY=($${KERNEL_VER//./ }); \
        if [ $${KERNEL_ARRAY[0]} -lt 3  ] || [[ $${KERNEL_ARRAY[0]} -eq 3 && $${KERNEL_ARRAY[1
-       @docker/runcontext $(DOCKERIMG) wget -q www.google.com -O /dev/null || (echo 'No docke
-       @docker/runcontext $(DOCKERIMG) $(MAKE) $(MAKEFLAGS) iso
+       @docker/runcontext $(DOCKERIMG) wget -q www.baidu.com -O /dev/null || (echo 'No docker
+       @docker/runcontext $(DOCKERIMG) $(MAKE) $(MAKEFLAGS) iso 
 
 
 ############################################################################
diff --git a/build/docker/Dockerfile b/build/docker/Dockerfile
index b38ea4c..7d85654 100644
--- a/build/docker/Dockerfile
+++ b/build/docker/Dockerfile
@@ -15,6 +15,11 @@ ENV https_proxy INSERT_HTTPS_PROXY
 ENV no_proxy INSERT_NO_PROXY
 ENV DEBIAN_FRONTEND noninteractive
 
+RUN apt-get clean
+RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
+RUN apt-get update --fix-missing
+RUN rm -fR /var/lib/apt/lists/*  
+RUN mkdir /var/lib/apt/lists/partial
 RUN apt-get update
 RUN apt-get install -y software-properties-common python-software-properties \
     make python-setuptools python-all dpkg-dev debhelper ruby-json \
diff --git a/build/docker/Makefile b/build/docker/Makefile
index 783881e..6cd5be2 100644
--- a/build/docker/Makefile
+++ b/build/docker/Makefile
@@ -46,7 +46,7 @@ all:  .docker
 
 .docker: .dockercfg
        @if test -f .cacheid -o "$(shell ${DOCKER_EXPIRED})" -eq "0"; then \
-               /usr/bin/docker build --rm=true --no-cache=true \
+               /usr/bin/docker build --rm --no-cache=true \
                        -t ${DOCKER_TAG} ubuntu-builder && \
                /usr/bin/docker tag ${tag_flags} ${DOCKER_TAG} ${DOCKER_IMG}; \
        else \
diff --git a/build/docker/runcontext b/build/docker/runcontext
index 2d13562..9116629 100755
--- a/build/docker/runcontext
+++ b/build/docker/runcontext
@@ -111,7 +111,7 @@ if [ -n "$CACHEBASE" ]; then
     fi
 fi
 
-RUN_CONTEXT_OPT="--cidfile $CID_FILE --privileged=true --rm \
+RUN_CONTEXT_OPT="--cidfile $CID_FILE --privileged=true --rm=false \
     -e HOME=$HOME -e CACHEDEBUG -e CACHETRANSPORT -e CACHEMAXAGE -e CACHEBASE \
     -e BUILD_FUEL_PLUGINS -e MIRROR_UBUNTU -e MIRROR_UBUNTU_ROOT \
     -e MIRROR_MOS_UBUNTU -e MIRROR_MOS_UBUNTU_ROOT -e MIRROR_FUEL \
diff --git a/build/fuel_build_loop b/build/fuel_build_loop
index 324f28c..aa24e7b 100755
--- a/build/fuel_build_loop
+++ b/build/fuel_build_loop
@@ -12,7 +12,7 @@
 echo "MIRROR_MOS_UBUNTU_ROOT=${MIRROR_MOS_UBUNTU_ROOT}"
 echo "MIRROR_FUEL=${MIRROR_FUEL}"
 
-maxcount=3
+maxcount=1
 cnt=0
 rc=1
 while [ $cnt -lt $maxcount ] && [ $rc -ne 0 ]
root@fz:/mnt/sdb/fuel/build/docker# 


 类似资料: