Setting Up CTYunOS Kernel Build Environment with Docker

Setting Up CTYunOS Kernel Build Environment with Docker

ctyunos

ctyunos2-docker-22.06.02.x86_64

基于ctyunos2-docker-22.06.02.x86_64编译openeuler-4-19内核源码。

1
2
wget http://121.237.176.8:50001/ctyun/yum_list.tar.gz
tar -zxvf yum_list.tar.gz
1
2
3
4
5
6
grep ctyunos2-docker yum_list.txt | grep -i 22.06 | grep -i x86
http://121.237.176.8:50001/ctyun/ctyunos/ctyunos-2/22.06/docker_img/x86_64/ctyunos2-docker-22.06.02.x86_64.tar.xz
http://121.237.176.8:50001/ctyun/ctyunos/ctyunos-2/22.06/docker_img/x86_64/ctyunos2-docker-22.06.02.x86_64.tar.xz.md5sum
http://121.237.176.8:50001/ctyun/ctyunos/ctyunos-2/22.06/docker_img/x86_64/ctyunos2-docker-22.06.03.x86_64.tar.xz
http://121.237.176.8:50001/ctyun/ctyunos/ctyunos-2/22.06/docker_img/x86_64/ctyunos2-docker.x86_64.tar.xz
http://121.237.176.8:50001/ctyun/ctyunos/ctyunos-2/22.06/docker_img/x86_64/ctyunos2-docker.x86_64.tar.xz.md5sum

也可在https://ctyunos.ctyun.cn/#/urllist中查找docker镜像。

将 ctyunos2-docker-22.06.02.x86_64.tar.xz 加载到 Docker 中,需先解压缩文件,然后使用 docker load 命令加载解压后的文件:

1
2
3
4
wget https://repo.ctyun.cn/hostos/ctyunos-22.06/docker_img/x86_64/ctyunos2-docker-22.06.x86_64.tar.xz

xz -d ctyunos2-docker-22.06.02.x86_64.tar.xz
docker load < ctyunos2-docker-22.06.02.x86_64.tar
1
2
docker images | grep 22.06
ctyunos2 22.06.1 a5c88430be77 2 years ago 530MB
1
docker tag a5c88430be77 ctyunos:22.06
1
2
3
docker images | grep 22.06
ctyunos2 22.06.1 a5c88430be77 2 years ago 530MB
ctyunos 22.06 a5c88430be77 2 years ago 530MB
1
2
docker rmi ctyunos2:22.06.1
Untagged: ctyunos2:22.06.1
1
2
docker images | grep 22.06
ctyunos 22.06 a5c88430be77 2 years ago 530MB

启动容器ctyunos-22.06:

1
2
3
4
5
6
docker run -it \
--name ctyunos-22.06 \
-v /root/code/:/root/code \
-v /root/code/rpmbuild:/root/rpmbuild \
-v /root/Downloads:/root/Downloads \
ctyunos:22.06 /bin/bash

容器ctyunos-22.06会默认进入bash,下方操作在容器ctyunos-22.06所在终端中执行。

ctyunos2-docker-22.06.02.x86_64中的yum源有问题,需进行替换:

1
2
cd /etc/yum.repos.d
mv ctyunos.repo ctyunos.repo.bak

vim ctyunos.repo 并下方yum源写入:

1
2
3
4
5
6
7
8
9
10
11
[everything]
name=ctyunos-22.06-everything
baseurl=https://repo.ctyun.cn/hostos/ctyunos-22.06/everything/$basearch/
enabled=1
gpgcheck=0

[update]
name=ctyunos-22.06-update
baseurl=https://repo.ctyun.cn/hostos/ctyunos-22.06/update/$basearch/
enabled=1
gpgcheck=0

基于openeuler-4-19源码编译内核:

1
2
3
4
5
6
yum makecache
yum install dnf-plugins-core git bash-completion -y
cd /root/code/linux
git checkout openeuler-4-19/release-0068.y
yum-builddep build/spec/kernel.spec -y
./build/build.sh

bash 补全:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 检查 ~/.bashrc 是否存在,如果不存在则创建
if [ ! -f ~/.bashrc ]; then
touch ~/.bashrc
fi

# 追加内容到 ~/.bashrc(如果内容不存在)
if ! grep -q "enable bash completion" ~/.bashrc; then
cat << 'EOF' >> ~/.bashrc
# enable bash completion
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
fi
EOF
fi

删除/root/code/rpmbuild所有子目录内容:

1
2
3
4
5
for dir in BUILD BUILDROOT RPMS SOURCES SPECS SRPMS; do
rm -rf /root/rpmbuild/"$dir"/*
done

mkdir -p /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

交叉编译

gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf

https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/arm-linux-gnueabihf/

gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz

下载gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz到目录/root/Downloads/cross_compile并解压:

1
2
3
4
5
tar -xJf gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz
export CROSS_COMPILE=/root/Downloads/cross_compile/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
export ARCH=arm64
make openeuler_defconfig
make binrpm-pkg -j32

ctyunos3-docker-230117-x86_64.tar.xz

1
2
wget https://repo.ctyun.cn/hostos/ctyunos-23.01/docker_img/x86_64/ctyunos3-docker-230117-x86_64.tar.xz
xz -d ctyunos3-docker-230117-x86_64.tar.xz
1
2
3
4
5
6
docker run -it \
--name ctyunos-23.01 \
-v /root/code/:/root/code \
-v /root/code/rpmbuild:/root/rpmbuild \
-v /root/Downloads:/root/Downloads \
ctyunos:23.01 /bin/bash

基于CTKernel-LTS-5.10源码编译内核:

1
2
3
4
5
yum makecache
yum install dnf-plugins-core git bash-completion -y
cd /root/code/linux
git checkout ctkernel-lts-5.10/develop-0088
yum-builddep build/kernel.spec -y

bash 补全:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 检查 ~/.bashrc 是否存在,如果不存在则创建
if [ ! -f ~/.bashrc ]; then
touch ~/.bashrc
fi

# 追加内容到 ~/.bashrc(如果内容不存在)
if ! grep -q "enable bash completion" ~/.bashrc; then
cat << 'EOF' >> ~/.bashrc
# enable bash completion
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
fi
EOF
fi

删除/root/code/rpmbuild所有子目录内容:

1
2
3
4
5
for dir in BUILD BUILDROOT RPMS SOURCES SPECS SRPMS; do
rm -rf /root/rpmbuild/"$dir"/*
done

mkdir -p /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

编译内核rpm包:

1
2
3
4
rm -rf /root/rpmbuild/SOURCES/kernel.tar.gz
tar --xform="s/^./kernel/" --exclude=".git" -chzf /root/rpmbuild/SOURCES/kernel.tar.gz .
cp build/* /root/rpmbuild/SOURCES
time rpmbuild -ba build/kernel.spec

交叉编译

gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu

https://blog.csdn.net/qq_37200742/article/details/128331909

https://www.cnblogs.com/solo666/p/16405064.html

https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads

https://developer.arm.com/downloads/-/gnu-a#panel4a

gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz

在浏览器中下载上述gcc-arm-10.3交叉编译工具链到目录/root/Downloads/cross_compile/后进行如下操作:

1
2
3
4
5
tar -xJf gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz
export CROSS_COMPILE=/root/Downloads/cross_compile/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-
export ARCH=arm64
make openeuler_defconfig
make binrpm-pkg -j32

使用rpmbuild编译内核,参见脚本:linux/shell/rpmbuild_kernel_arm.sh。

ctyunos2-docker-2-24.07.x86_64

基于ctyunos2-docker-2-24.07.x86_64编译CTKernel内核源码。

1
2
https://repo.ctyun.cn/hostos/ctyunos-2-24.07/docker_img/x86_64/ctyunos2-docker-2-24.07.x86_64.tar.xz
https://repo.ctyun.cn/hostos/ctyunos-2-24.07/docker_img/aarch64/ctyunos2-docker-2-24.07.aarch64.tar.xz

将 ctyunos2-docker-2-24.07.x86_64.tar.xz 加载到 Docker 中,需先解压缩文件,然后使用 docker load 命令加载解压后的文件:

1
2
3
wget https://repo.ctyun.cn/hostos/ctyunos-2-24.07/docker_img/x86_64/ctyunos2-docker-2-24.07.x86_64.tar.xz
docker load < ctyunos2-docker-2-24.07.x86_64.tar
xz -d ctyunos2-docker-2-24.07.x86_64.tar.xz

启动容器ctyunos2-24.07-20240716205118:

1
2
3
4
5
6
docker run -it \
--name ctyunos2-24.07-20240716205118 \
-v /root/code/:/root/code \
-v /root/code/rpmbuild:/root/rpmbuild \
-v /root/Downloads:/root/Downloads \
ctyunos2:24.07-20240716205118 /bin/bash

容器ctyunos2-24.07-20240716205118会默认进入bash,下方操作在容器ctyunos2-24.07-20240716205118所在终端中执行。

基于CTKernel源码编译内核:

1
2
yum makecache
yum install dnf-plugins-core git -y
1
2
3
cd /root/CTKernel
yum-builddep build/spec/kernel.spec -y
./build/build.sh

当前编译的是分支publish-ALL,也可用git切换到任意分支编译:

1
git config --global --add safe.directory /root/CTKernel
1
2
3
4
5
6
7
8
9
10
11
bash-5.1# git branch
ctbbm-dew
ctkernel-lts/develop
feature-ctbbm
feature-ctbbm-tmp
feature-ctbbm-yql
publish
* publish-ALL
publish-ALL-yql
publish-ALL-yql-comment
publish-ALL-yql-tmp
1
bash-5.1# git checkout ctkernel-lts/develop
1
2
3
cd /root/CTKernel
yum-builddep build/spec/kernel.spec -y
./build/build.sh

Setting Up CTYunOS Kernel Build Environment with Docker
https://realwujing.github.io/linux/kernel/task/container/docker/ctyunos/Setting Up CTYunOS Kernel Build Environment with Docker/
作者
Wu Jing
发布于
2025年4月3日
许可协议