构建 linux-menuconfig 结果:“*** 更新配置时出错。”

Ora*_*Tux 5 compiling buildroot

我尝试使用 Docker 使用 Buildroot 构建 Linux 内核。我创建了一个简单的 Docker 镜像:

FROM debian:7
MAINTAINER OrangeTux


RUN apt-get update && \
    apt-get install -y \
    build-essential \
    bash \
    bc \
    binutils \
    build-essential \
    bzip2 \
    cpio \
    g++ \
    gcc \
    git \
    gzip \
    make \
    libncurses5-dev \
    patch \
    perl \
    python \
    rsync \
    sed \
    tar \
    unzip \
    wget

WORKDIR /root

RUN git clone git://git.buildroot.net/buildroot 

WORKDIR /root/buildroot

CMD ["/bin/bash"]
Run Code Online (Sandbox Code Playgroud)

我想保留dl/并且output/build/当容器停止时,所以我不必每次都下载和编译所有依赖项。我还想要我的主机上的构建产品。因此,我像这样启动容器:

$ docker run -ti -v $(pwd)/dl:/root/buildroot/dl -v \ $(pwd)/output/build:/root/buildroot/output/build -v \ $(pwd)/output/images:/root/buildroot/output/images orangetux/buildroot

我能够运行make menuconfig它为 Buildroot 构建配置。我对默认值做了一些修改。这是输出make savedefconfig

BR2_arm=y
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_DEFCONFIG="at91_dt"
Run Code Online (Sandbox Code Playgroud)

下一步是构建linux-menuconfig. 此操作失败,我不知道出了什么问题:

 $ make linux-menuconfig
/usr/bin/make -j1  HOSTCC="/usr/bin/gcc" HOSTCXX="/usr/bin/g++" silentoldconfig
make[1]: Entering directory `/root/buildroot'
BR2_DEFCONFIG='' KCONFIG_AUTOCONFIG=/root/buildroot/output/build/buildroot-config/auto.conf KCONFIG_AUTOHEADER=/root/buildroot/output/build/buildroot-config/autoconf.h KCONFIG_TRISTATE=/root/buildroot/output/build/buildroot-config/tristate.config BR2_CONFIG=/root/buildroot/.config BR2_EXTERNAL=support/dummy-external SKIP_LEGACY= /root/buildroot/output/build/buildroot-config/conf --silentoldconfig Config.in

*** Error during update of the configuration.

make[1]: *** [silentoldconfig] Error 1
make[1]: Leaving directory `/root/buildroot'
make: *** [/root/buildroot/output/build/buildroot-config/auto.conf] Error 2
Run Code Online (Sandbox Code Playgroud)

该文件/root/buildroot/output/build/buildroot-config/auto.conf不存在。

为什么文件不存在,我该如何构建linux-menuconfig

Ora*_*Tux 1

经过大量调试后,我发现在我的主机系统上安装文件夹会/root/buildroot/output/导致问题。拆掉这个安装座也是make linux-menuconfig可以的。

/root/buildroot/output/build进一步的调试表明,在容器中安装主机文件夹是问题所在。我不知道为什么。

  • 因为你挂载的文件夹不属于root。这样做:`WORKDIR /usr/src/debian-custom` `git clone git clone git://git.buildroot.net/buildroot` ` ln -s /usr/srx/linux /usr/src/debian- custom`,然后从 /usr/src/linux 运行 `make menuconfig`。请参阅[为 Debian 构建自定义内核](https://www.debian.org/releases/jessie/i386/ch08s06.html.en) (2认同)