web-dev-qa-db-ja.com

linux-menuconfigをビルドすると、「***構成の更新中にエラーが発生しました。」

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"]
_

コンテナが停止したときに_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

Buildrootの構成をビルドする_make menuconfig_を実行できます。デフォルトにいくつか変更を加えました。 _make savedefconfig_の出力は次のとおりです。

_BR2_arm=y
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_DEFCONFIG="at91_dt"
_

次のステップは、_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
_

ファイル_/root/buildroot/output/build/buildroot-config/auto.conf_は存在しません。

ファイルが存在しないのはなぜですか?_linux-menuconfig_をビルドするにはどうすればよいですか?

5
OrangeTux

徹底的なデバッグの結果、ホストシステムの/root/buildroot/output/にフォルダをマウントすると問題が発生することがわかりました。このマウントを取り外すと、make linux-menuconfigが可能になります。

さらにデバッグすると、コンテナの/root/buildroot/output/buildにホストフォルダをマウントすることが問題であることが明らかになりました。理由はわかりません。

1
OrangeTux

これは権限の問題のように聞こえます。ユーザー権限(chmodまたはacl)、MAC(強制アクセス制御、多くの場合selinuxなど)またはファイルシステムの書き込み権限のいずれか。コンテナがデバイスに書き込めないという点で、おそらく3番目だと思います。

0
hildred

私はそれを次のように解決しました:

1-lxcを停止します。

lxc stop <container-name>

2-特権のセキュリティをtrueに調整します。

 lxc config set <container-name> security.privileged true

3-コンテナを再起動します。

lxc start 
0
M Y