pi用のカスタムカーネルをコンパイルすることに興味があります。私はからソース持ってgithubのアーカイブ、デフォルトの設定のためのmakeターゲットを含み、:
make ARCH=arm bcmrpi_defconfig
しかし、(通常のLinuxディストリビューションカーネルと同様に)これには、私が決して必要としないものがたくさんあり、変更したいものもいくつかあります。
さまざまな一般的なパイ中心のものを機能させるために実際に必要なオプションは何ですか?
pi用のカスタムカーネルをコンパイルすることに興味があります。私はからソース持ってgithubのアーカイブ、デフォルトの設定のためのmakeターゲットを含み、:
make ARCH=arm bcmrpi_defconfig
しかし、(通常のLinuxディストリビューションカーネルと同様に)これには、私が決して必要としないものがたくさんあり、変更したいものもいくつかあります。
さまざまな一般的なパイ中心のものを機能させるために実際に必要なオプションは何ですか?
回答:
デフォルト設定から始めるか、すでに動作していることがわかっている設定から始めることをお勧めします。Pi 2には、以下を使用する必要があることに注意してください。
make bcm2709_defconfig
の代わりにbcmrpi_defconfig
。
同じバージョンの既存のカーネルインストールを上書きしないようにする場合は、[一般設定]-> [ローカルバージョン-カーネルリリース文字列に追加]を一意の値に設定してください。
.config
ここから実際のラベルsans CONFIG_を使用しました。たとえば、を使用make menuconfig
している場合は、検索で関連するオプションを見つけることができます(スラッシュ/)。これらのラベルは、各オプションの「ヘルプ」ページの上部でも使用されます。enable(d)という用語は、ビルドするオプションを実際に選択することとは異なり、オプションを表示させるものを指すことに注意してください。
A / B / B + / A +ボードとPi 2に違いがある場合、これが示されます。一部の場所ではこれがBroadcom 2708と2709ファミリの違いですが、他の場所では、Pi 2は他のボードと同じ2708(または2835)オプションを使用します。
A / A + / B / B +の場合:
Pi 2の場合:
カーネルメモリ分割:
レガシーソフトウェアのいくつかの部分に問題があるため、デフォルトの構成ではここで3G / 1Gを使用することがあり、Pi 2のRAMの25%がユーザー空間で使用できなくなります。これについて懸念がある場合は、[カーネル機能]-> [メモリ分割]を確認してください。
これらはアクセスするために必要なので、明らかにモジュールにすることはできません/lib/modules
。組み込みである必要があります。それらはmenuconfigの「デバイスドライバー」セクションにあります。
通常、ルートパーティションはext形式であるため、組み込みも必要です。
ブートパーティションはvfatなので、次のようになります。
これらは、(ほぼ確実に)必要なさまざまなものなので、最初にリストしました。
キーボードとマウスの場合:
ハードドライブの場合:
Androidデバイスのテザリングについては、こちらの回答をご覧ください。
最初にUSBを有効にする必要があります。
NET(ネットワークサポート)、トップレベルのオプション。その中には:
「デバイスドライバー」のNETDEVICES(ネットワークデバイスサポート)、次に:
オンボードサウンドを有効にするには:
Xサーバーのサポートにこれ以上必要なものはありません。piのSoC用のDRIドライバーオプションはありません。
あなたはなどのアプリケーションは、このようなことができますフレームバッファを、使用したい場合fbi
やomxplayer
外Xのグラフィックスを表示するには:
あなたがこれを行うと、ブートコンソール上のペンギン(というか、ラズベリーを)したい場合は、覚えているロゴ・グラフィックスのサポートの下で(起動時のロゴを)。
また、[システムタイプ]-> [Broadcom2708(または9)実装]の下のオプションを確認することもできます。
/sys/class/gpio
。ここで選択できます。両方を選択しようとすると、最初のものがキャンセルされます(ただし、一方をモジュールとしてビルドし、構成を変更し、もう一方をビルドし、本当に必要な場合は両方を使用できます)。
/sys/devices/platform/bcm2835_hwmon
- temp1_input
そしてtemp1_max
。前者は同じ/sys/devices/virtual/thermal/thermal_zone0/temp
です。後者は常に85000(つまり85°C)です。/sys/class/devices/virtual/thermal/thermal_zone0
含まれているtemp
とtrip_point_0_temp
(同じtemp1_max
上記を、)。さまざまなユーザー空間モニターはおそらくこれを好み、それなしでは動作しないかもしれません。goldilockの素晴らしい投稿へのコメント:
ただ、私はRPI-4.1.yブランチで観察する一つのこと(05376fce25aaab4f47182a5af04928bfa06f30d6)を追加したい:ワーキングUSBを(これはUSB接続のイーサネットを含んで)持っているために、1にも有効にしていBCM2708_MBOX(デバイスDrivers->メールボックスのハードウェアをサポート- > Broadcom BCM2708メールボックス(vcio))。
このオプションがないと、USBは初期化を開始しますが、次のような恐ろしいメッセージを大量に生成します。
[ 1.193854] WARN::dwc_otg_core_reset:5109: dwc_otg_core_reset() HANG! Soft Reset GRSTCTL=80000001
[ 1.441137] WARN::dwc_otg_hcd_init:1047: FIQ DMA bounce buffers: virt = 0x9fc0c000 dma = 0x5d5e4000 len=9024
ところで BCM2708_MBOXはまたのための前提条件であるTHERMAL_BCM2835とのためSND_BCM2835。
ビデオのサポートに加えて、以下を有効にする必要があるようです。
Device Drivers ->
DMA Engine support ->
BCM2835 DMA engine support (CONFIG_DMA_BCM2835)
フレームバッファドライバを正しくロードするため。DMAを有効にしなくても有効にできますが、ロードに失敗します。
統合ワイヤレス(RPi 3およびPi Zero W)を使用するには、以下を選択する必要があります。
Networking support ->
Wireless ->
cfg80211 - wireless configuration API (CONFIG_CFG80211)
Device Drivers ->
Network device support ->
Wireless LAN ->
Broadcom IEEE802.11n embedded FullMAC WLAN driver (CONFIG_BRCMFMAC)
古いかもしれませんが、検索を使用してここに来ました。SDHCカードの場合は、さらに必要です
Device Drivers ->
-> MMC block device driver )CONFIG_MMC_BLOCK)
そうしないと、カーネルはSDHCカードを検出しますが、パーティションは検出しません。