在Ubuntu 22.04上构建旧Linux内核错误fixdep:/lib/x86_64-linux-gnu/libc.so.6:未找到版本“GLIBC_2.33”

pzfprimi  于 2023-08-03  发布在  Linux
关注(0)|答案(1)|浏览(464)

我想在我的Ubuntu 22.04笔记本电脑上运行一个研究项目。该项目需要为访客QEMU VM构建和运行5.2.21 Linux内核。我在Ubuntu 22.04笔记本电脑上构建Linux 5.2.21时遇到以下错误:

error: ‘-mindirect-branch’ and ‘-fcf-protection’ are not compatible

字符串
我意识到它需要一个旧版本的GCC。所以我尝试使用gcc-8 docker容器编译内核。

~/linux-src:
▶ docker run --rm --user $(id -u):$(id -g) -v $(pwd):/code gcc-8 make -C /code


显示错误:

HOSTCC   /code/tools/objtool/fixdep.o
/code/tools/objtool//fixdep: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /code/tools/objtool//fixdep)
/code/tools/objtool//fixdep: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /code/tools/objtool//fixdep)
/code/tools/build/Makefile.build:96: recipe for target '/code/tools/objtool/fixdep.o' failed


这是我的Dockerfile

FROM gcc:8
#FROM ubuntu:18.04
#FROM gcc:8.5.0-buster
#FROM ubuntu:20.04
#ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update -y && apt-get install -y --no-install-recommends \
    build-essential libssl-dev libncursesw5-dev git curl bc \
    flex bison libelf-dev make cmake


如何修复此version GLIBC_2.33'未找到'错误?
在Ubuntu 22.04上构建一个旧的Linux内核有什么解决方案吗?

更新

我可以通过将主机目录Map到docker来构建内核,但我需要克隆Linux内核并在docker容器中构建Linux内核。

▶ docker run --rm -it --user $(id -u):$(id -g) -v $(pwd):/code gcc-8.5 bash
I have no name!@15e678776a72:/$ cd /code/test; git clone ... linux-x86
I have no name!@15e678776a72:/code/test/linux-x86$ time make -j20
... ...
Kernel: arch/x86/boot/bzImage is ready  (#1)


在这种情况下,看起来docker容器中的libcMap错误。

tvz2xvvm

tvz2xvvm1#

以下是我的解决方案,使用Docker容器最新的Ubuntu 22.04上构建旧的Linux内核
Dockerfile(gcc-8.5,具有所有必要的内核构建依赖项):

FROM gcc:8.5.0-buster

RUN apt-get update -y && apt-get install -y --no-install-recommends \
    build-essential libssl-dev libncursesw5-dev git curl bc \
    flex bison libelf-dev make cmake

字符串
构建docker镜像:

▶ docker build -t gcc-8.5 -f Dockerfile .


使用gcc-8.5从docker容器编译旧的Linux内核:

▶ ls     
linux-5.2.21
▶ docker run --rm -it --user $(id -u):$(id -g) -v $(pwd):/code gcc-8.5 bash
I have no name!@48e2e4f878eb:/$ cd /code/
I have no name!@48e2e4f878eb:/code$ ls
linux-5.2.21
I have no name!@48e2e4f878eb:/code$ cd linux-5.2.21/
I have no name!@48e2e4f878eb:/code/linux-5.2.21$ make defconfig; make kvm_guest.config
I have no name!@48e2e4f878eb:/code/linux-5.2.21$ time make -j20
... ...
  BUILD   arch/x86/boot/bzImage
Setup is 16060 bytes (padded to 16384 bytes).
System is 3269 kB
CRC 63e1012e
Kernel: arch/x86/boot/bzImage is ready  (#1)

I have no name!@48e2e4f878eb:/code/linux-5.2.21$ exit

▶ ls linux-x86/arch/x86/boot/bzImage 
linux-x86/arch/x86/boot/bzImage

相关问题