編集:私はクリスチャンの回答をすべてを自動的に行うスクリプトに変えました: https://github.com/frans-fuerst/magic/ blob/master/Fedora-activate-can.sh
Linuxソースで利用可能であるが、Fedora 20では非アクティブ化されているいくつかのカーネルモジュールが必要です。それらを利用可能にするための最も簡単で最も前向きな方法は何でしょうか。 (つまり、net/CANがサポートされ、一部のcan_ *モジュールが生成されます)
私はすでにフォローしています this HowTo(そしてそこにはもっと多くの非常によく似たものがあります)が、「build a module only」セクションのみが機能しているようです無効にされていないモジュールの場合。その場合、モジュールのソースも失われます。
これが私が試したものです前述の HowTo に続いて:
最初にOut Of Tree Modulesセクションを追跡しようとしましたが、CANサポートのソースが欠けていても、kernel-devel
に同梱されているいまいましいソースツリーにはありません。だから私はsrc.rpmからモジュールを構築しようとします:
$ yumdownloader --source kernel
$ Sudo yum-builddep kernel-3.14.8-200.fc20.src.rpm
$ rpm -Uvh kernel-3.14.8-200.fc20.src.rpm
$ cd ~/rpmbuild/SPECS
$ rpmbuild -bp --target=$(uname -m) kernel.special
$ cd ~/rpmbuild/BUILD/<kerneldir>/<linuxdir>
$ <configure the kernel using menuconfig>
$ make prepare
次に、いくつかの警告をビルドして取得します。
$ make -C /lib/modules/`uname -r`/build M=`pwd`/net/can modules
make: Entering directory `<rpmbuild-BUILD-kernel-linux-dir>'
WARNING: Symbol version dump <rpmbuild-BUILD-kernel-linux-dir>/Module.symvers
is missing; modules will have no dependencies and modversions.
CC [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/bcm.o
CC [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/gw.o
CC [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/raw.o
CC [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/af_can.o
CC [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/proc.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-raw.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-bcm.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-gw.o
Building modules, stage 2.
MODPOST 4 modules
CC <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-bcm.mod.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-bcm.ko
CC <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-gw.mod.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-gw.ko
CC <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-raw.mod.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-raw.ko
CC <rpmbuild-BUILD-kernel-linux-dir>/net/can/can.mod.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can.ko
make: Leaving directory `<rpmbuild-BUILD-kernel-linux-dir>'
$ Sudo make -C /lib/modules/`uname -r`/build M=`pwd`/net/can modules_install
make: Entering directory `<rpmbuild-BUILD-kernel-linux-dir>'
INSTALL <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-bcm.ko
Can't read private key
INSTALL <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-gw.ko
Can't read private key
INSTALL <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-raw.ko
Can't read private key
INSTALL <rpmbuild-BUILD-kernel-linux-dir>/net/can/can.ko
Can't read private key
DEPMOD 3.14.8
make: Leaving directory `<rpmbuild-BUILD-kernel-linux-dir>'
make modules
を実行しただけでは最初の警告は表示されませんが、これには約1時間かかります。
ただし、インストール後、.ko
ファイルは間違ったディレクトリ(/usr/lib/modules/3.14.8
ではなく/usr/lib/modules/3.14.8-200.fc20.x86_64
)にあり、depmod -a
およびmodprobe can
の後に
modprobe: ERROR: could not insert 'can': Exec format error
何が悪いのですか?
おそらく完璧には程遠いですが、私はそれを手に入れたと思います。
実行してソースコードを準備する
rpmbuild -bp --target=$(uname -m) kernel.spec
たとえば、次のようにしてビルドディレクトリに移動します。
cd ~/rpmbuild/BUILD/kernel-3.14.fc20/linux-3.14.8-200.fc20.x86_64
Makefile
を編集し、EXTRAVERSION
を次のように設定します。
EXTRAVERSION = -200.fc20.x86_64
モジュールを有効にします。 configs
ディレクトリの下にある対応するファイルから始めることをお勧めします(私はkernel-3.14.8-x86_64.config
)。
モジュール用のカーネルを準備します。
make modules_prepare
モジュールをビルドします。
make M=drivers/net/can
利益!モジュールを挿入します。
insmod can-dev.ko
完全を期すために、Fedoraで無効にされたCANモジュール(またはその他のモジュール)を使用可能にするために必要な手順の完全なリストをここに示します(ソースを削除するため、kernel-devel-approachを使用するだけでは実行できません) )。
この手順は完全ではないかもしれませんが、私にとっては機能し、peak_usb
およびvcan
およびFedoraのベースCANモジュール。
私はこれを頻繁に行わなければならないので、改善はありがたく、光栄です。
カーネルを2回更新する必要がないように、今すぐ更新することをお勧めします
Sudo yum update
reboot
fedoraカーネルソースツリーの準備、取得、インストール
rpmdev-setuptree
yumdownloader --source kernel
Sudo yum-builddep kernel-3.14.8-200.fc20.src.rpm
rpm -Uvh kernel-3.14.8-200.fc20.src.rpm
cd ~/rpmbuild/SPECS
rpmbuild -bp --target=$(uname -m) kernel.spec
Makefile
を編集し、EXTRAVERSION
を次のように設定します。
cd ~/rpmbuild/BUILD/kernel-3.14.fc20/linux-3.14.8-200.fc20.x86_64
EXTRAVERSION = -200.fc20.x86_64
最初に基本構成をフェッチしてカーネルを構成します。
cp /boot/config-3.14.8-200.fc20.x86_64 .config
または
cp configs/kernel-3.14.8-x86_64.config .config
そして、必要なモジュールをアクティブにすることでそれを構成します。
make menuconfig
モジュールを構築する
make modules_prepare
make M=net/can modules
make M=drivers/net/can modules
インストールとロード
Sudo make M=net/can modules_install
Sudo make M=drivers/net/can modules_install
Sudo depmod -a
Sudo modprobe can