0

投稿日

NanoPi R5Sのカーネルの調整

NanoPiのカーネルコンパイル自体は簡単に扱えるクロスコンパイル環境があるので非常にスムーズです。パラメータ自体も arch/arm64/configs/nanopi5_linux_defconfig に記載されているのでそこに追記すれば良いでしょう。
WireGuardを使いたい場合には

CONFIG_WIREGUARD=m

を追加すれば使えるようになります。

WRITEABLE clk DebugFS SUPPORT HAS BEEN ENABLED IN THIS KERNEL

NanoPi R5Sでdmesgを見ていると少し気になるメッセージがあります。

 ********************************************************************
 **     NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE           **
 **                                                                **
 **  WRITEABLE clk DebugFS SUPPORT HAS BEEN ENABLED IN THIS KERNEL **
 **                                                                **
 ** This means that this kernel is built to expose clk operations  **
 ** such as parent or rate setting, enabling, disabling, etc.      **
 ** to userspace, which may compromise security on your system.    **
 **                                                                **
 ** If you see this message and you are not debugging the          **
 ** kernel, report this immediately to your vendor!                **
 **                                                                **
 **     NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE           **
 ********************************************************************

カーネルデバッグするとき以外はこんなオプションを有効にするんじゃないと強くおっしゃられています。SBC自体は開発ボードという位置づけなので色々いじれるようにしているんでしょうね。ただ、金属筐体に収まった機材をサーバ用途に使う場合には不要でしょうから停止しておきます。
clk, debugfs などのキーワードからあたりを付けたのですがどうも適切なオプションが見当たりません。

そこでこのメッセージ自体を探すとCLOCK_ALLOW_WRITE_DEBUGFSというdefineが定義されている場合にメッセージが表示されるようです。
そして、このdefineはソースの中で定義されていました。

drivers/clk/clk.c
#define CLOCK_ALLOW_WRITE_DEBUGFS

ひとまずundefしてしまいました。

cma: cma_alloc: linux,cma: alloc failed

次に

cma: cma_alloc: linux,cma: alloc failed, req-size: 256 pages, ret: -12

CMAが溢れているようです。ただ、何に使っているのかよくわかりませんし特に実害が出ている感じもしません。ビデオドライバか何かでしょうか?

単純に気持ち悪いというだけですが、解消してみます。

カーネルメッセージの先頭付近に以下のメッセージがあります。

 Reserved memory: created CMA memory pool at 0x0000000010000000, size 8 MiB

CMAは8MB割り当てられているようです。
これを増やしてみます。CONFIG_CMA_SIZE_MBYTESがあったので増やしてみましたが増えません。ではどこで定義されているかというと、、、

arch/arm64/boot/dts/rockchip/rk3568-nanopi5-common.dtsi
        linux,cma {
                compatible = "shared-dma-pool";
                inactive;
                reusable;
                reg = <0x0 0x10000000 0x0 0x00800000>;
                linux,cma-default;
        };

ここのようです。0x00800000が8MBなので32MBに増やしましたが同様にエラーがでます。一体どのくらいいるんだろう?と思いつつ周辺のdtsiを覗いてみると128MB以上にしなさいというメッセージがいくつか見つかります。同じかどうかわかりませんが0x008000000x10000000に変更してみるとエラーが出なくなりました。
/proc/meminfoを確認すると100MB程度消費しているようです。8MBでは全然足りなかったようですが特に問題は無い感じなんでしょうか?

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
ログインすると使える機能について

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
新規登録
すでにアカウントを持っている方はログイン
0