カーネル.configに必要なオプション


16

pi用のカスタムカーネルをコンパイルすることに興味があります。私はからソース持ってgithubのアーカイブ、デフォルトの設定のためのmakeターゲットを含み、:

make ARCH=arm bcmrpi_defconfig

しかし、(通常のLinuxディストリビューションカーネルと同様に)これには、私が決して必要としないものがたくさんあり、変更したいものもいくつかあります。

さまざまな一般的なパイ中心のものを機能させるために実際に必要なオプションは何ですか?

回答:


25

デフォルト設定から始めるか、すでに動作していることがわかっている設定から始めることをお勧めします。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 +の場合:

  • ARCH_BCM2708(システムタイプ->アームシステムタイプ-> Broadcom BCM2708ファミリー)

Pi 2の場合:

  • ARCH_BCM2709(システムタイプ->アームシステムタイプ-> Broadcom BCM2709ファミリー)...これはリストの一番下にあり、アルファベット順ではありません。
  • SMP(カーネル機能->対称型マルチプロセッシング)
  • NEON(浮動小数点エミュレーション-> Advanced SIMD(Neon)Extensionのサポート)および「カーネルモードでのNEONのサポート」。

カーネルメモリ分割:

レガシーソフトウェアのいくつかの部分問題があるため、デフォルトの構成ではここで3G / 1Gを使用することがあり、Pi 2のRAMの25%がユーザー空間で使用できなくなります。これについて懸念がある場合は、[カーネル機能]-> [メモリ分割]を確認してください。


SDカード

これらはアクセスするために必要なので、明らかにモジュールにすることはできません/lib/modules。組み込みである必要があります。それらはmenuconfigの「デバイスドライバー」セクションにあります。

  • MMC(MMC / SD / SDIOカードのサポート):mmcドライバーのオプションを取得する必要がありますが、十分ではありません。それらのオプション内:
    • MMC_BCM2835BCM2835での MMCサポート)。
    • MMC_BCM2835_DMA(BCM2835 ArasanコントローラーでのDMAサポート):有効になっていますが、MMC_BCM2835によって選択されていません。
    • MMC_SDHCI(セキュアデジタルホストコントローラーインターフェイスのサポート)

通常、ルートパーティションはext形式であるため、組み込みも必要です。

  • 「ファイルシステム」の下のEXT4_FS(拡張4(ext4)ファイルシステム)。おそらくext2とext3も良いアイデアです。

ブートパーティションはvfatなので、次のようになります。

  • VFAT_FS(VFAT(Windows-95)fsサポート)は、「ファイルシステム-> DOS / FAT / NTファイルシステム」の下にあります。

その他

これらは、(ほぼ確実に)必要なさまざまなものなので、最初にリストしました。

  • 「浮動小数点エミュレーション」の下のVFP(VFP形式の浮動小数点演算)。
  • 「ネットワークサポート」の下のUNIX(Unixドメインソケット)。基本的なシステムソフトウェアでは、実際のネットワークを使用していない場合でもこれが必要になります。
  • 「ユーザー空間バイナリ形式」の下のBINFMT_ELF(ELFバイナリのカーネルサポート)。
  • 「デバイスドライバー->キャラクターデバイス」の下のTTYTTYを有効にする); これにより、選択するVT(仮想端末)およびUNIX98_PTYS(Unix98 PTYサポート)が有効になります。次にVTは、VT_CONSOLE(仮想端末でのコンソールのサポート)およびCONSOLE_TRANSLATIONS(コンソールでの文字変換の有効化)を有効にします。これらも選択する必要があります。
  • 「ファイルシステム->擬似ファイルシステム」の下のPROC_FSSYSFS、およびTMPFS
  • SERIAL_AMBA_PL011(ARM AMBA PL011シリアルポートサポート)「デバイスドライバー->キャラクターデバイス->シリアルドライバー」およびSERIAL_AMBA_PL011_CONSOLE(AMBAシリアルポートでのコンソールのサポート)。Raspbianシステムは、これがないと「/ dev / ttyAMA0:そのようなファイルやディレクトリはありません」と文句を言います。
  • MAILBOXおよびBCM2708_MBOX(4.xカーネル上)。これは、デバイスドライバー->メールボックスハードウェアサポートおよびサブメニューのBCM 2708オプションです。zubの回答をご覧ください。

USB

  • USB(ホスト側USBのサポート)、「デバイスドライバー-> USBサポート」で、ページの下のUSB_DWCOTG(Synopsis DWCホストサポート)を有効にします。これも選択する必要があります。
  • USB_ANNOUNCE_NEW_DEVICES(デバイスドライバー-> USBサポート-> USB新しいデバイスのアナウンス)。
  • USB_DEFAULT_PERSIST(デバイスドライバー-> USBサポート->デフォルトでUSB持続を有効にする)。

キーボードとマウスの場合:

  • 「デバイスドライバー-> HIDサポート」のHID_GENERIC(汎用HIDドライバー)
  • 次に、「USB HIDサポート」で:USB_HID(USB HIDトランスポート層)
  • 「デバイスドライバー->入力デバイスサポート」のINPUT_MOUSEDEV(マウスインターフェイス)。

ハードドライブの場合:

  • 「デバイスドライバ-> SCSIサポート」でSCSI(SCSIデバイスのサポート)、次にBLK_DEV_SD(SCSIディスクのサポート)。
  • 「デバイスドライバー-> USBサポート」のUSB_STORAGE(USB大容量記憶装置サポート)。

Androidデバイスのテザリングについては、こちらの回答をご覧ください


イーサネット

最初にUSBを有効にする必要があります。

  • NET(ネットワークサポート)、トップレベルのオプション。その中には:

    • PACKET(パケットソケット)。
    • INET(TCP / IPネットワーク)。これにより、さまざまなIP関連のデフォルトを有効にして、そのままにしておくことができます。
    • NETFILTER(ネットワークパケットフィルタリングフレームワーク)。カーネルの「IPテーブル」パケットフィルターファイアウォールに必要です。
  • 「デバイスドライバー」のNETDEVICES(ネットワークデバイスサポート)、次に:

    • NET_CORE(ネットワークコアドライバーのサポート)。
    • USB_NET_DRIVERS(USBネットワークアダプター)->
      • USB_USBNET(多目的USBネットワークフレームワーク)。
      • USB_NET_SMSC95XX(SMSC LAN95XXベースのUSB 2.0 10/100イーサネットデバイス)

オンボードサウンドを有効にするには:

  • SOUND(デバイスドライバー内)、次に:
    • SND(Advanced Linux Sound Architecture)およびその中:
    • SND_ARM(ARMサウンドデバイス)そして最後にそのSND_BCM2835(BCM2835 ALSAドライバー)

ビデオ

  • CONFIG_BCM2708_VCHIQ(デバイスドライバー->その他のデバイス-> Videocore VCHIQ)。

Xサーバーのサポートにこれ以上必要なものはありません。piのSoC用のDRIドライバーオプションはありません。

あなたはなどのアプリケーションは、このようなことができますフレームバッファを、使用したい場合fbiomxplayer外Xのグラフィックスを表示するには:

  • FB(デバイスドライバー->グラフィックサポート->フレームバッファーデバイス->フレームバッファーデバイスのサポート)、同じメニューのFB_BCM2708(BCM2708フレームバッファーサポート)。

あなたがこれを行うと、ブートコンソール上のペンギン(というか、ラズベリーを)したい場合は、覚えているロゴ・グラフィックスのサポートの下で(起動時のロゴを)。

また、[システムタイプ]-> [Broadcom2708(または9)実装]の下のオプションを確認することもできます。


GPIO / I 2 C

  • BCM2708_GPIO(システムタイプ-> Broadcom BCM2708実装)またはPi 2の場合、対応するBCM2709オプション。
  • インターフェイスのGPIO_SYSFS(デバイスドライバー-> GPIOサポート)/sys/class/gpio
  • I2C(デバイスドライバー-> I2Cサポート)、I2C_CHARDEV(I2Cデバイスインターフェイス)を有効にします。次に、「I2C Hardware Bus support」の下で:
    • I2C_BCM2708(BCM2708 BSC)。

ラスピカム

  • MEDIA_CAMERA_SUPPORT(デバイスドライバー->マルチメディアサポート->カメラ/ビデオグラバーサポート)。
  • V4L_PLATFORM_DRIVERS(デバイスドライバー->マルチメディアサポート-> V4Lプラットフォームデバイス ")。これにより、選択するサブメニューが有効になります。
    • CONFIG_SOC_CAMERA(SoCカメラのサポート)。
    • CONFIG_VIDEO_BCM2835(Broadcom BCM2835カメラインターフェイスドライバー)。これにより、「Broadcom BM2835 MMALカメラインターフェイスドライバー(CONFIG_VIDEO_BCM2835_MMAL)が有効になります。これも選択する必要があります。

熱センサー

ここで選択できます。両方を選択しようとすると、最初のものがキャンセルされます(ただし、一方をモジュールとしてビルドし、構成を変更し、もう一方をビルドし、本当に必要な場合は両方を使用できます)。

  • SENSORS_BCM2835(デバイスドライバー->ハードウェア監視サポート-> Broadcom BCM2835 HWMONドライバー)。以下の「BCM2835 Thermal Driver」を選択しない場合、これはリストの一番下にあります。それはあなたに熱的なものへのアクセスを与えます/sys/devices/platform/bcm2835_hwmon- temp1_inputそしてtemp1_max。前者は同じ/sys/devices/virtual/thermal/thermal_zone0/tempです。後者は常に85000(つまり85°C)です。
  • THERMAL_BCM2835(デバイスドライバー->汎用熱sysfsドライバー-> BCM2835サーマルドライバー)。また、[デバイスドライバー]-> [ハードウェア監視サポート](ただし、このメニューの個々のドライバーではありません)を選択して、[熱センサーをhwmonデバイスとして公開]を選択します(4.0.yにはないようです)。これを選択すると、上記のSENSORS_BCM2835が選択解除されます。それはあなたの覚えていると見つけることが容易にアクセスすることができます/sys/class/devices/virtual/thermal/thermal_zone0含まれているtemptrip_point_0_temp(同じtemp1_max上記を、)。さまざまなユーザー空間モニターはおそらくこれを好み、それなしでは動作しないかもしれません。

5

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


2

ビデオ(フレームバッファー)

ビデオのサポートに加えて、以下を有効にする必要があるようです。

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)

0

古いかもしれませんが、検索を使用してここに来ました。SDHCカードの場合は、さらに必要です

Device Drivers -> -> MMC block device driver )CONFIG_MMC_BLOCK)

そうしないと、カーネルはSDHCカードを検出しますが、パーティションは検出しません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.