ほとんど常に、 buntu kernel PPA のカーネル、またはUbuntuカーネル構成を使用して自分でコンパイルしたカーネルを使用しています。
問題は、ストックカーネルを使用しているときはデフォルトで予測可能なネットワークインターフェース名(つまり「p4p1」)を使用するようですが、代替カーネルを使用するときはデフォルトで古い方法(つまり「eth0」)を使用するようです。
この質問にはあまり関係ありませんが、テストコンピューターでハードディスク障害が発生し、Ubuntu Server 14.04.2の新規インストールを行っています。
カーネル間の違いは何なのか判断できませんでした。カーネル構成パラメーターが疑われますが、どのパラメーターを特定できませんでした。
私の質問:予測可能なネットワークインターフェイス名をすべてのカーネルで一貫して機能させるにはどうすればよいですか?
追記:これをgrubに追加するために、予測可能なネットワークインターフェイス名を無効にする場所を見ました:
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"
だから、私は反対が役立つかもしれないと思った:
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=1"
しかし、違いはありませんでした。実際、設定に関係なく、非ストックカーネルにbiosdevnameを使用させることはできません。そして、/etc/udev/rules.d/70-persistent-net.rules
の設定に関係なく、ストックカーネルにnet.ifnames
ファイルを生成させることは決してできません(それは私が望むものではありませんが)。 net.ifnames=1
がある場合、少なくとも非ストックカーネルは不正な/etc/udev/rules.d/70-persistent-net.rules
ファイルを生成しません。
/var/log/udev
からの抜粋:
ストックカーネル:
KERNEL[9.216730] add /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1 (net)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1
IFINDEX=2
INTERFACE=p4p1
SEQNUM=1945
SUBSYSTEM=net
...
UDEV [9.241073] add /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1 (net)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1
ID_BUS=pci
ID_MODEL_FROM_DATABASE=P8P67 and other motherboards
ID_MODEL_ID=0x8168
ID_NET_NAME_MAC=enxf46d04652d8e
ID_NET_NAME_PATH=enp3s0
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
ID_PCI_CLASS_FROM_DATABASE=Network controller
ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
ID_VENDOR_ID=0x10ec
IFINDEX=2
INTERFACE=p4p1
Ubuntu PPAカーネル4.1RC5から:
KERNEL[10.772566] add /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/eth0 (net)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/eth0
IFINDEX=2
INTERFACE=eth0
SEQNUM=1962
SUBSYSTEM=net
...
UDEV [11.185866] add /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/eth0 (net)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/eth0
ID_BUS=pci
ID_MODEL_FROM_DATABASE=P8P67 and other motherboards
ID_MODEL_ID=0x8168
ID_NET_NAME_MAC=enxf46d04652d8e
ID_NET_NAME_PATH=enp3s0
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
ID_PCI_CLASS_FROM_DATABASE=Network controller
ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
ID_VENDOR_ID=0x10ec
IFINDEX=2
INTERFACE=eth0
SEQNUM=1962
SUBSYSTEM=net
USEC_INITIALIZED=3227
注:/etc/udev/rules.d/70-persistent-net.rules
ファイルの作成を許可し、適切なデバイス名に合わせて編集することにより、この問題を一時的に回避しました。最終的には、ファイルを削除したいと思います。
次の3つのことを区別する必要があります。
これらのソリューションのいずれかを使用することを選択しますが、同時に2または3を使用しません。 (実際、一方が優先され、他方がマスクされます)
現在の状況の良い紹介は buntu devメーリングリストに投稿 です
予測可能なインターフェース名はdevd v197が/lib/udev/rules.d/80-net-setup-link.rules
で生成されて以来のもの
systemdデフォルトでは、新しい予測可能なインターフェイス名を使用します。 ただし、Ubuntuではアップストリームsystemdを除き、net.ifnames=1
を使用してオプトインする必要があります
カーネルバージョンは関係ありません実行しています。ただし、次のようにgrub設定/etc/default/grub
を変更して、カーネルコマンドラインを使用して設定する必要があります。
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1"
そして走る
Sudo update-grub
14.04または14.10では、systemdを使用せずに、70-persitent-net.rulesを削除するだけで十分です(以下の注で説明します)。
biosdevnameは、systemdの予測可能なインターフェイス名と同様の問題を解決しようとするデルの試みです。 ubuntu serverのデフォルトです。パッケージbiosdevname
をインストールすることで入手できます
Sudo apt-get install biosdevname
Grub configでカーネルコマンドラインを使用して無効にできます。
GRUB_CMDLINE_LINUX_DEFAULT="biosdevname=0"
そして走る
Sudo update-grub
または単にパッケージをアンインストールします。
Sudo apt-get purge biosdevname
Sudo update-initramfs -u
これは、Ubuntu desktopのデフォルトです。 dev rule /lib/udev/rules.d/75-persistent-net-generator.rules
は、最初の起動時にインターフェイスのMACアドレスを使用してカスタムルール/etc/udev/rules.d/70-persistent-net.rules
を作成し、インターフェイスの永続的な名前を取得します。
すでにudevルールを使用している場合は、/etc/udev/rules.d/70-persistent-net.rules
を削除し、実行する必要がある各ブートで再生成されないようにする必要があります
Sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
その後、systemdを使用する場合、上記のように、予測可能なインターフェイス名をオプトインする必要があります。
Ubuntu Server 16.04LTSでは、私がしたことはすべて実行されました。
ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
次に、ファイルを作成します
Sudo vi /etc/systemd/network/10-internet.link
以下を追加します
[Match]
Path=pci-0000:(your device mac address)
[Link]
Name=eth0 (or whatever you want to name it)
:wq
はファイルを保存します
その後、再起動して/etc/network/interfaces
ファイルを調整します。再起動します
これが誰かを助けることを願って