DUE 初始化编译环境,编译 ONEI
资料来源:
https://opencomputeproject.github.io/onie/developers/building.html#preparing-a-new-build-machine
更新
导语Build Instructions — Open Network Install Environment documentation (opencomputeproject.github.io)
2021.11 版开始需要 debian 10 的编译环境DUE 推荐构建环境, 包装出用户友好的 docker 环境.构建编译环境
1 2 3 4 5 6 7 8 9 10 11 git clone https://github.com/CumulusNetworks/DUE.git # debian10 镜像 ./due --create --platform linux/amd64 --name onie-build-debian-10 --prompt ONIE-10 --tag onie --use-template onie --from debian:10 --description "ONIE Build Debian 10" # or ./due --create --platform linux/amd64 --name onie-build-debian-11 --prompt ONIE-11 --tag onie --use-template onie --from debian:11 --description "ONIE Build Debian 11"
会有下面的错误
1 2 3 #0 35.01 E: The repository 'http://deb.debian.org/debian stretch-backports Release' does not have a Release file.
错误在于添加了 stretch-backports
源
templates/onie/post-install-config.sh.template
132 行有判断 debian10 情况下清理添加的 stretch-backports
源 但 if [ -e /.dockerenv ]
似乎没有正确识别到这是在容器的环境.注释掉直接执行清理即可编译通过.之后再 ./due --run
启动并进入 docker
默认挂载 /home/user
; 当前用户名登录; 编译1 2 3 4 5 6 7 git clone https://github.com/opencomputeproject/onie.git cd onie/build-config # make make MACHINEROOT=../machine/<vendor> MACHINE=<vendor>_<model> all # For an Accton platform: make -j12 MACHINEROOT=../machine/accton MACHINE=accton_833435_b21 all
accton_833435_b21 为例子来修改
ONIE_ARCH ?= x86_64
LINUX_VERSION = 5.4
编译完成后镜像在 /build/image/
与 kernel 有关的
1 2 3 4 5 6 7 8 9 10 kernel kernel-build kernel-clean # 删除源码目录 kernel-config # 生成 .config(build-config 通用+平台的patch) 进入内核配置 kernel-download # http://mirror.opencompute.org 下重新下载内环源码 build/download/ kernel-download-clean # 删除下载源码压缩包 kernel-install # 解压内核压缩包 编译并安装 kernel-patch # 应用 patch kernel-source # 解压缩
编译完成后内核在 ./arch/x86_64/boot/bzImage