私は 組み込みLinuxボックスのカーネルのソース (具体的にはQNAP NAS)を持っています。これは、カーネル構成ファイルとともに64ビットv3.12.6Linuxカーネルを実行しています。
私がやろうとしているのは、 insmod を使用してシステムに追加できるカーネルモジュールを追加することにより、そのカーネルにDVBサポートを追加することです。ただし、このバージョンを使用すると、組み込みでのみ使用可能な dvb-core.ko をコンパイルできません(つまり、 CONFIG_DVB_CORE = y CONFIG_DVB_CORE = m の代わりに。
ボックスモデルに関連する構成ファイルを確認しましたが、DVB構成スイッチが設定されていません。
# cat ../../kernel_cfg/TS-X53/linux-3.12.6-x86_64-hal.cfg | grep DVB
# CONFIG_DVB_DUMMY_FE is not set
そのため、そのファイルをカーネルソースディレクトリに。configとしてコピーし、 make menuconfig を実行しました。オプションをチェックしました:
Device Drivers -> Multimedia Support -> Digital TV Support
その行で [〜#〜] m [〜#〜] を押すことはできないので、 [〜#〜] y [〜#〜]を押します。 ;有効にした後、DVB_COREを検索すると( /キーを使用)、次のようになります。
---------------------------- Search Results -----------------------------
| Symbol: DVB_CORE [=y] |
| Type : tristate |
| Defined at drivers/media/Kconfig:117 |
| Depends on: MEDIA_SUPPORT [=y] && MEDIA_DIGITAL_TV_SUPPORT [=y] |
| Selects: CRC32 [=y] |
-------------------------------------------------------------------------
したがって、さまざまなチューナードライバーをモジュールとして有効にした場合(dvb-usb-dib0700.koなど)、保存して終了し、 makeモジュールを実行します。 、すべてのチューナー。koファイルを取得しますが、システムに必要な dvb-core.ko は取得しません。他の依存.koファイルをロードします。終了後の設定スイッチは次のとおりです。
# cat .config | grep DVB
CONFIG_DVB_CORE=y
CONFIG_DVB_NET=y
CONFIG_DVB_MAX_ADAPTERS=8
# CONFIG_DVB_DYNAMIC_MINORS is not set
CONFIG_DVB_USB=m
# CONFIG_DVB_USB_DEBUG is not set
# CONFIG_DVB_USB_A800 is not set
# CONFIG_DVB_USB_DIBUSB_MB is not set
# CONFIG_DVB_USB_DIBUSB_MC is not set
CONFIG_DVB_USB_DIB0700=m
# CONFIG_DVB_USB_UMT_010 is not set
# CONFIG_DVB_USB_CXUSB is not set
# CONFIG_DVB_USB_M920X is not set
# CONFIG_DVB_USB_DIGITV is not set
# CONFIG_DVB_USB_VP7045 is not set
# CONFIG_DVB_USB_VP702X is not set
# CONFIG_DVB_USB_GP8PSK is not set
# CONFIG_DVB_USB_NOVA_T_USB2 is not set
# CONFIG_DVB_USB_TTUSB2 is not set
# CONFIG_DVB_USB_DTT200U is not set
# CONFIG_DVB_USB_OPERA1 is not set
# CONFIG_DVB_USB_AF9005 is not set
# CONFIG_DVB_USB_PCTV452E is not set
# CONFIG_DVB_USB_DW2102 is not set
# CONFIG_DVB_USB_CINERGY_T2 is not set
# CONFIG_DVB_USB_DTV5100 is not set
# CONFIG_DVB_USB_FRIIO is not set
# CONFIG_DVB_USB_AZ6027 is not set
# CONFIG_DVB_USB_TECHNISAT_USB2 is not set
# CONFIG_DVB_USB_V2 is not set
# CONFIG_DVB_TTUSB_BUDGET is not set
# CONFIG_DVB_TTUSB_DEC is not set
# CONFIG_DVB_B2C2_FLEXCOP_USB is not set
# DVB-S (satellite) frontends
# DVB-T (terrestrial) frontends
CONFIG_DVB_DIB3000MC=m
CONFIG_DVB_DIB7000M=m
CONFIG_DVB_DIB7000P=m
# DVB-C (cable) frontends
CONFIG_DVB_LGDT3305=m
CONFIG_DVB_S5H1411=m
CONFIG_DVB_DIB8000=m
CONFIG_DVB_TUNER_DIB0070=m
CONFIG_DVB_TUNER_DIB0090=m
# SEC control devices for DVB-S
# CONFIG_DVB_DUMMY_FE is not set
。configファイルを手動で編集し、 CONFIG_DVB_CORE = m 保存してから、モジュールを作成何も変わりません:
# make modules
scripts/kconfig/conf --silentoldconfig Kconfig
#
# configuration written to .config
#
make[1]: Nothing to be done for `relocs'.
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
CALL scripts/checksyscalls.sh
Building modules, stage 2.
MODPOST 195 modules
dvb-core.ko はまだコンパイルされておらず、設定も元に戻されます。
# cat .config | grep DVB_CORE
CONFIG_DVB_CORE=y
だから私の質問は:どうすれば dvb-core.ko をカーネルモジュールとしてコンパイルできますか?
カーネル3.4.6を使用していた 以前のカーネルソース を使用すると、 make menuconfig を使用して、これを簡単に実行できることに注意してください。 DVB設定で [〜#〜] m [〜#〜] を設定します。しかし、DVBがここにあったので、メニューは異なっていました:
Device Drivers -> Multimedia Support -> DVB for Linux
そしてこれはDVB_COREの検索結果でした:
---------------------------- Search Results -----------------------------
| Symbol: DVB_CORE [=m] |
| Type : tristate |
| Prompt: DVB for Linux |
| Defined at drivers/media/Kconfig:69 |
| Depends on: MEDIA_SUPPORT [=y] |
| Location: |
| -> Device Drivers |
| -> Multimedia support (MEDIA_SUPPORT [=y]) |
| Selects: CRC32 [=y] |
-------------------------------------------------------------------------
そして(古い)設定スイッチ:
# cat .config | grep DVB
CONFIG_DVB_CORE=m
CONFIG_DVB_NET=y
CONFIG_VIDEO_BT848_DVB=y
CONFIG_DVB_MAX_ADAPTERS=8
# CONFIG_DVB_DYNAMIC_MINORS is not set
CONFIG_DVB_CAPTURE_DRIVERS=y
CONFIG_DVB_AV7110=m
# CONFIG_DVB_AV7110_OSD is not set
CONFIG_DVB_BUDGET_CORE=m
CONFIG_DVB_BUDGET=m
CONFIG_DVB_BUDGET_CI=m
CONFIG_DVB_BUDGET_AV=m
CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_USB=m
# CONFIG_DVB_USB_DEBUG is not set
CONFIG_DVB_USB_A800=m
CONFIG_DVB_USB_DIBUSB_MB=m
CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
CONFIG_DVB_USB_DIBUSB_MC=m
CONFIG_DVB_USB_DIB0700=m
... cut ...
どうやらソリューションは簡単に適用できましたが、推測するのはそれほど簡単ではありませんでした。 dvb-core.koをモジュールとしてビルドするには、メニューに戻る必要がありました。
Device Drivers -> Multimedia support
そこで、マルチメディアサポートはカーネル構成ファイルによって[〜#〜] y [〜#〜]としてすでにマークされています。
<*> Multimedia Support --->
解決策は、マルチメディアサポートを選択し、[〜#〜] m [〜#〜]を押してモジュールとしてマークすることです。
<M> Multimedia Support --->
したがって、基本的にモジュールの選択を行う必要があります親メニュー、最初はデジタルTVサポートにあると思っていました。次に、 DVB_CORE を検索すると、次のように正しく表示されます。
---------------------------- Search Results -----------------------------
| Symbol: DVB_CORE [=m] |
| Type : tristate |
| Defined at drivers/media/Kconfig:117 |
| Depends on: MEDIA_SUPPORT [=m] && MEDIA_DIGITAL_TV_SUPPORT [=y] |
| Selects: CRC32 [=y] |
-------------------------------------------------------------------------