CentOS 6 で Vagrant の Box とか AWS の AMI とか VirtualBox の ovf/ova とかのイメージを作るときに /etc/udev/rules.d/70-persistent-net.rules
をそのまま残しておくと、イメージから起動したときに NIC のデバイス名が変わってしまい、IP アドレスが割り当てられないなどの問題が発生したりするの、あるあるだと思います。
このファイルを削除しておけば大丈夫ですが、
rm -f /etc/udev/rules.d/70-persistent-net.rules
起動するたびに復元されてしまうので、イメージを作成する都度、手作業で削除する必要があり、めんどくさいし忘れてしまうこともあります。
ので、最初に ISO から構築した後に1回だけ作業するだけにしたいのですが、下記のような幾つかの方法があるようです。
毎回削除する
起動時に rc.local
で自動的に削除します。実はやったことないのでこれで大丈夫かどうかわかりません。
echo "rm -f /etc/udev/rules.d/70-persistent-net.rules" >> /etc/rc.d/rc.local
ディレクトリを作る
同名のディレクトリを作っておくことでファイルの作成を失敗させます。
rm -f /etc/udev/rules.d/70-persistent-net.rules
mkdir /etc/udev/rules.d/70-persistent-net.rules
/dev/null にリンクする
/dev/null
にリンクしておくことで書き込みを無視します。
rm -f /etc/udev/rules.d/70-persistent-net.rules
ln -sf /dev/null /etc/udev/rules.d/70-persistent-net.rules
/lib/udev/rules.d/75-net-description.rules を空にする
70-persistent-net.rules
を作るための設定ファイルがあるのでそれを空にします。
> /lib/udev/rules.d/75-net-description.rules
どの方法もちょっと微妙です。特に最後の方法は yum update
で戻ってしまいそうです。
AWS の CentOS 6 の AMI を見たところ、次のような空ファイルが作成されていました。
> /etc/udev/rules.d/75-persistent-net-generator.rules
多分この方法が一番いいと思います。
man udev
曰く(Rules files のちょっと下あたり)
Rule files are required to have a unique name, duplicate file names are ignored.
Files in /etc/udev/rules.d/ have precedence over files with the same name in /lib/udev/rules.d/. This can be used to ignore a default rules file if needed.
ルールファイルは一意の名前を持っている必要があり、重複したファイル名は無視されます。
/etc/udev/rules.d/ にあるファイルは /lib/udev/rules.d/ で同じ名前のファイルより優先されます。
これは、必要に応じて、デフォルトのルールファイルを無視するために使用することができます。
(Powered by Google 翻訳)