ほぼ常に、UbuntuカーネルPPAのカーネル、またはUbuntuカーネル構成を使用して自分でコンパイルしたカーネルを使用しています。
問題は、ストックカーネルを使用している場合、デフォルトで予測可能なネットワークインターフェイス名(つまり「p4p1」)を使用しているように見えますが、代替カーネルを使用している場合は、デフォルトで古い方法(つまり、「eth0」)を使用しているようです。
この質問にはあまり関係ありませんが、テストコンピューターでハードディスク障害が発生し、Ubuntu Server14.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つを同時に使用することはありません。(実際には可能ですが、一方が優先され、もう一方がマスクされます)
現在の状況の良い紹介は、ubuntudevメーリングリストへの投稿です。
で生成されたv197以降、予測可能なインターフェイス名はudevdのものです。/lib/udev/rules.d/80-net-setup-link.rules
systemdは、デフォルトで新しい予測可能なインターフェース名を使用します。ただし、アップストリームsystemdを除き、Ubuntuでは、を使用してオプトインする必要がありますnet.ifnames=1
これは、カーネルのバージョンは関係ありません、あなたが実行されていることを。ただし、カーネルコマンドラインを使用して/etc/default/grub
、次のようにgrub構成を変更して構成する必要があります。
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1"
実行します
sudo update-grub
14.04または14.10では、systemdを使用しない場合、以下の注で説明するように、70-persitent-net.rulesを削除するだけで十分です。
biosdevnameは、systemdの予測可能なインターフェイス名と同様の問題を解決するためのデルの試みです。これはubuntuサーバーのデフォルトです。パッケージをインストールすることで入手できますbiosdevname
sudo apt-get install biosdevname
grubconfigのカーネルコマンドラインを使用して無効にできます。
GRUB_CMDLINE_LINUX_DEFAULT="biosdevname=0"
実行します
sudo update-grub
または、単にパッケージをアンインストールします。
sudo apt-get purge biosdevname
sudo update-initramfs -u
これはUbuntuデスクトップのデフォルトです。udevのルールは、/lib/udev/rules.d/75-persistent-net-generator.rules
最初のブートカスタムルールの間に作成されます/etc/udev/rules.d/70-persistent-net.rules
あなたのインターフェイスのための永続的な名前を得るためにあなたのインターフェイスのMACアドレスを持ちます。
すでにudevルールを使用し/etc/udev/rules.d/70-persistent-net.rules
ている場合は、実行する必要があるブートごとにルールを削除して再生成されないようにする必要があります
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
その後、systemdを使用する場合は、上記のように、予測可能なインターフェース名をオプトインする必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加