お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2018-05-26 22:35:50

Lickey
新しいメンバ
登録日: 2017-01-16

Ubuntu18.04LTSでのe1000eのコンパイル

以前にhttps://forums.ubuntulinux.jp/viewtopic.php?id=18998を投稿した者です。
今回はUbuntu18.04LTSにOSを変更したところ、またも有線のインターネットが認識しなくなりました。

上記のURLのようにもう一度e1000eドライバをmake installしようとしましたが、エラーを吐いてしまい、実行できませんでした。


【構成内容】
OS:ubuntu16.04LTS 64-bit(元々はWindows 10 Home 64bit)
メモリ:32GB DDR4 SDRAM(PC4-17000/8GBx4/デュアルチャネル)
CPU:インテル Core i7-6700K (クアッドコア/HT対応/定格4.00GHz/L3キャッシュ8MB)
グラフィック機能:NVIDIA GeForce GTX1080 8GB(ドライバをインストールしていないため、現在はオンボードの intel HD Graphics 530 (Skylake GT2))
LAN:ギガビットLANポートx1 (マザーボードオンボード)
外付けネットワーク機器:なし
IEEE1394:なし
マザーボード:インテル Z170 チップセット ATXマザーボード


【ターミナル画面】
>cd e1000e/src
>make install
cc1: error: code model kernel does not support PIC mode
/bin/sh: 1: [: -ge: unexpected operator
Makefile:199: *** *** Aborting the build. *** This driver is not supported on kernel versions older than 2.4.0. 中止


また、makeコマンドがもともとubuntuになかったため、直前に
>sudo apt install make
>sudo apt install build-essential
をしています。


エラー文を読んだ限りだと、e1000eが新しいカーネルに対応していないとのことですが、
パソコンの構成は以前のものと変更していないため、原因がわかりません。
また、直前のaptコマンドは、iphoneのインターネット共有でネットに繋げた状態で行なっています。

どうか、助言の程、よろしくお願いします。

オフライン

 

#2 2018-05-26 22:48:57

Lickey
新しいメンバ
登録日: 2017-01-16

Re: Ubuntu18.04LTSでのe1000eのコンパイル

>>エラー文を読んだ限りだと、e1000eが新しいカーネルに対応していないとのことですが、パソコンの構成は以前のものと変更していないため、原因がわかりません。

すみません、誤字してます。
2.4.0よりも古いカーネルに対応していない。
が正しいです。

オフライン

 

#3 2018-05-27 00:07:58

Lickey
新しいメンバ
登録日: 2017-01-16

Re: Ubuntu18.04LTSでのe1000eのコンパイル

この記事(http://osaka-zumai.hatenablog.jp/entry/2018/01/08/222940)によると、どうやらgccのバージョンの問題だということらしいです。
しかし、この記事にあるパッチの適用の仕方がわからなくて困っています。

オフライン

 

#4 2018-05-27 17:47:51

aaabbbcccdddeeefffggghhh
メンバ
登録日: 2008-02-25

Re: Ubuntu18.04LTSでのe1000eのコンパイル

Lickey による投稿:

しかし、この記事にあるパッチの適用の仕方がわからなくて困っています。

当ててみました。以下の手順になります。

wget https://sourceforge.net/projects/e1000/files/e1000e%20stable/3.4.1.1/e1000e-3.4.1.1.tar.gz
tar xavf e1000e-3.4.1.1.tar.gz
cd e1000e-3.4.1.1/src/
wget https://pastebin.com/raw/qNmKT23y
patch -p0 < qNmKT23y

パッチは当てられましたがコンパイルできるかどうかまでは確認していません。

オフライン

 

#5 2018-05-27 18:27:45

Lickey
新しいメンバ
登録日: 2017-01-16

Re: Ubuntu18.04LTSでのe1000eのコンパイル

>aaabbbcccdddeeefffggghhhさん

aaabbbcccdddeeefffggghhh による投稿:

Lickey による投稿:

しかし、この記事にあるパッチの適用の仕方がわからなくて困っています。

当ててみました。以下の手順になります。

wget https://sourceforge.net/projects/e1000/files/e1000e%20stable/3.4.1.1/e1000e-3.4.1.1.tar.gz
tar xavf e1000e-3.4.1.1.tar.gz
cd e1000e-3.4.1.1/src/
wget https://pastebin.com/raw/qNmKT23y
patch -p0 < qNmKT23y

パッチは当てられましたがコンパイルできるかどうかまでは確認していません。

返信ありがとうございます。
上記の方法でmakeしてみましたが、うまくいきませんでした。

Ubuntu18.04LTSを諦めることにしました。

オフライン

 

#6 2018-05-27 19:34:24

aaabbbcccdddeeefffggghhh
メンバ
登録日: 2008-02-25

Re: Ubuntu18.04LTSでのe1000eのコンパイル

確認しました。netdev.cのコンパイル時にエラーが出ていますね。

netdev.c:8344:2: error: implicit declaration of function ‘init_timer’; did you mean ‘init_timers’? [-Werror=implicit-function-declaration]
  init_timer(&adapter->watchdog_timer);

Linux 4.15 では init_timer という関数が使えなくなったそうなので、
Intelの対応待ちですね。

オフライン

 

#7 2018-05-29 12:02:11

Lickey
新しいメンバ
登録日: 2017-01-16

Re: Ubuntu18.04LTSでのe1000eのコンパイル

aaabbbcccdddeeefffggghhh による投稿:

確認しました。netdev.cのコンパイル時にエラーが出ていますね。

netdev.c:8344:2: error: implicit declaration of function ‘init_timer’; did you mean ‘init_timers’? [-Werror=implicit-function-declaration]
  init_timer(&adapter->watchdog_timer);

Linux 4.15 では init_timer という関数が使えなくなったそうなので、
Intelの対応待ちですね。

>aaabbbcccdddeeefffggghhhさん
わかりやすく教えていただき、ありがとうございました。

オフライン

 

#8 2018-05-30 18:15:47

aaabbbcccdddeeefffggghhh
メンバ
登録日: 2008-02-25

Re: Ubuntu18.04LTSでのe1000eのコンパイル

エラーが出ている部分を修正すると、一応makeは通るようになるようですね。

e1000e-3.4.1.1/src/netdev.c の8351行目から8357行目に、

    init_timer(&adapter->watchdog_timer);
    adapter->watchdog_timer.function = e1000_watchdog;
    adapter->watchdog_timer.data = (unsigned long)adapter;

    init_timer(&adapter->phy_info_timer);
    adapter->phy_info_timer.function = e1000_update_phy_info;
    adapter->phy_info_timer.data = (unsigned long)adapter;

という文があるのですが、これら6つの文を、

timer_setup(&adapter->watchdog_timer, (void *)e1000_watchdog, (unsigned long)adapter);
timer_setup(&adapter->phy_info_timer, (void *)e1000_update_phy_info, (unsigned long)adapter);

という2つの文に置き換えると、一応コンパイルできるようにはなります。
timer_setup()というのが、init_timer()の代わりに導入された新機能ですね。
ただ、makeが通るようにはなりますが、ちゃんと動くかどうかは分かりません。

オフライン

 

#9 2018-06-05 19:54:24

aaabbbcccdddeeefffggghhh
メンバ
登録日: 2008-02-25

Re: Ubuntu18.04LTSでのe1000eのコンパイル

e1000eのフォーラムにKernel 4.15用のパッチを投稿されている方がいますね。

#600 e1000e driver doesn't compile against Linux kernel 4.15
https://sourceforge.net/p/e1000/bugs/600/

このパッチを適用するとUbuntu 18.04でも正常にmake出来るようです。

【普通にmakeする場合】
wget https://sourceforge.net/projects/e1000/files/e1000e%20stable/3.4.1.1/e1000e-3.4.1.1.tar.gz
wget https://sourceforge.net/p/e1000/bugs/_discuss/thread/9048ab8e/ec8e/attachment/e1000e-3.4.0.2-timer-updates.patch
tar xavf e1000e-3.4.1.1.tar.gz
mv e1000e-3.4.1.1/ e1000e-3.4.0.2/
patch -p0 < e1000e-3.4.0.2-timer-updates.patch
mv e1000e-3.4.0.2/ e1000e-3.4.1.1/
cd e1000e-3.4.1.1/src/
make
sudo make install

【dkmsを使用する場合】
cd /usr/src/
sudo apt install dkms make gcc
sudo wget https://sourceforge.net/projects/e1000/files/e1000e%20stable/3.4.1.1/e1000e-3.4.1.1.tar.gz
sudo wget https://sourceforge.net/p/e1000/bugs/_discuss/thread/9048ab8e/ec8e/attachment/e1000e-3.4.0.2-timer-updates.patch
sudo tar xavf e1000e-3.4.1.1.tar.gz
sudo mv e1000e-3.4.1.1/ e1000e-3.4.0.2/
sudo patch -p0 < e1000e-3.4.0.2-timer-updates.patch
sudo mv e1000e-3.4.0.2/ e1000e-3.4.1.1/
cd e1000e-3.4.1.1/
echo 'PACKAGE_NAME="e1000e"'$'\n''PACKAGE_VERSION="3.4.1.1"'$'\n''BUILT_MODULE_LOCATION=src'$'\n''BUILT_MODULE_NAME[0]="e1000e"'$'\n''DEST_MODULE_LOCATION[0]="/kernel/drivers/net/e1000e/"'$'\n''AUTOINSTALL="yes"'$'\n''MAKE[0]="BUILD_KERNEL=${kernelver} make -C src CFLAGS_EXTRA=-DDISABLE_PM"'$'\n''CLEAN[0]="make -C src clean"'$'\n''REMAKE_INITRD=yes'$'\n' | sudo tee dkms.conf
sudo dkms -m e1000e -v 3.4.1.1 add
sudo dkms -m e1000e -v 3.4.1.1 build
sudo dkms -m e1000e -v 3.4.1.1 install

オフライン

 

Board footer

Powered by FluxBB