kernel.config最適化


kernel.config最適化
  • 一、概説
  • 二、明確な具体的なCONFIG作用
  • 三、総括
  • 一、概説
    組み込み開発ではlinux kernelの使用は避けられないが,kernelがサポートする駆動は非常に膨大であり,不要な駆動を削除することも必要である.では、そんなに多くの構成が、どのような役割を果たしていますか?どれを削除すればいいですか?次に、対応する構成をすばやく理解する機能について説明します.
    二、具体的なCONFIG作用を明確にする
    USBモジュールの場合kernelコンパイル時に使用する.configの部分は以下の通りです.
    #
    # USB Network Adapters
    #
    # CONFIG_USB_CATC is not set
    # CONFIG_USB_KAWETH is not set
    # CONFIG_USB_PEGASUS is not set
    # CONFIG_USB_RTL8150 is not set
    # CONFIG_USB_RTL8152 is not set
    CONFIG_USB_USBNET=y
    # CONFIG_USB_NET_AX8817X is not set
    # CONFIG_USB_NET_AX88179_178A is not set
    CONFIG_USB_NET_CDCETHER=y
    # CONFIG_USB_NET_CDC_EEM is not set
    # CONFIG_USB_NET_CDC_NCM is not set
    # CONFIG_USB_NET_CDC_MBIM is not set
    # CONFIG_USB_NET_DM9601 is not set
    # CONFIG_USB_NET_SMSC75XX is not set
    # CONFIG_USB_NET_SMSC95XX is not set
    # CONFIG_USB_NET_GL620A is not set
    # CONFIG_USB_NET_NET1080 is not set
    # CONFIG_USB_NET_PLUSB is not set
    

    多くのドライバが使用できないのは明らかですが、具体的なCONFIGの役割を特定するには、kernelルートディレクトリで実行します(CONFIG_USB_CATCを例にとります)
    linux-3.10$ grep -nr "USB_CATC" --include=Kconfig
    drivers/net/usb/Kconfig:10:config USB_CATC
    

    注意:検索時に前のCONFIGを削除、検索結果はconfig USB_CATC形式です.多く検索される場合があるので、このルールが必要です.Kconfigの内容を表示します.一部の内容は以下の通りです.
    #
    # USB Network devices configuration
    #
    comment "Networking support is needed for USB Network Adapter support"
            depends on USB && !NET
    
    menu "USB Network Adapters"
            depends on USB && NET
    
    config USB_CATC
            tristate "USB CATC NetMate-based Ethernet device support"
            select CRC32
            ---help---
              Say Y if you want to use one of the following 10Mbps USB Ethernet
              device based on the EL1210A chip. Supported devices are:
              Belkin F5U011
              Belkin F5U111
              CATC NetMate
              CATC NetMate II
              smartBridges smartNIC
    
              This driver makes the adapter appear as a normal Ethernet interface,
              typically on eth0, if it is the only ethernet device, or perhaps on
              eth1, if you have a PCI or ISA ethernet card installed.
    
              To compile this driver as a module, choose M here: the
              module will be called catc.
    

    ここを見るともうよくわかるでしょう.このセクションでは、駆動の役割だけでなく、駆動の依存性についても説明する.
    三、まとめ
    一般的にkernel構成を変更し、make menuconfigを使用しますが、このコマンドを使用するにはコンパイル環境を設定する必要があります.自分で作ったコンパイル環境は自分で決めて、振り回しても構わない.会社のサーバーを使ってコンパイルするとき、kernelのバージョンによって必要な環境が異なり、環境を構成するには申請が必要で、プロセスがかなり面倒である.
    実際、kernelコンパイルで最もよく使われるのは.configファイルで、make menuconfig修正も.configファイルです..configファイルが存在しない場合、デフォルトのプロファイルが.configにコピーされます.そのため、デフォルトのプロファイルを修正し、.configファイルを削除し、kernelを常にコンパイルし、修正を有効にすることができます.デフォルトのプロファイルを変更したくない場合は、上記の方法で.configファイルを変更してもいいです.