私はCentOS 6を仮想環境で使っています。 CentOSの仮想バージョンを複製するとき、古いethアダプタは「削除」され、新しいものとネットMACアドレスに置き換えられます。ただし、ifcfg-ethnファイルはまだ存在しています。インストール時と同じように、CentOSでネットワークアダプタ/ ethファイルを自動的に再スキャンして再作成する方法を見つけようとしています。
さもなければ私はここに記述されているように退屈なプロセスを残します: http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-s390info-addnetdevice.html
GUIでこれを実行する簡単な方法があることを私は知っています、しかし私達はサーバーを使用しているのでGUIはこの場合適用されません。助けて?
編集:@ OldWolfはKudzuを提案しました、しかしKudzuはCentos 5の時点で削除されましたので私はむしろそれを避けたいと思います。 Linuxが初期インストール時に実行される手順があります - それが何であるか私が手動でそれを引き起こすことができるように誰かが私が理解するのを助けることができますか?
CentOS 6では、everthingは現在udevによって処理されます。 /etc/udev/rules.d
に入り、70-persistent-net.rules
ファイルを削除して再起動します。手で開くと、元のNICのMACがeth0
として、新しいものがeth1
としてリストされているのが最もよくわかるでしょう。
/etc/sysconfig/network-scripts/ifcfg-eth0
を編集して新しいNICカードのMACに手動で更新する必要があります。
ファイルを削除すると、クローン作成プロセスから手荷物が残されずに検出プロセスが起動時に再度実行されます。つまり、古いNICのMACアドレスです。
私はいつもVMware ESXi 4.1上の私のCentOS 6クローンでそれをしなければならない。それは、以前のバージョンでは過去にそれを扱っていただけの痛みです。
このツールも使用できます(これはGUIツール、そのTUIツール、テキストベースのユーザーインターフェースではありません)。
[root @ localhost〜]#system-config-network-tui
上記のコマンドを入力してEnterを押す
その後、この画面が表示されます
「装置構成」を選択してEnterを押す
その後、この画面が表示されます
ここでeth0は/etc/sysconfig/network-scripts/ifcfg-eth0
を表します
eth0
の編集内容がifcfg-eth0
ファイルに影響を与えるものは何でも
永続ルールファイルを削除します。
rm /etc/udev/rules.d/70-persistent-net.rules
Ifcfg-eth0を編集します。
nano /etc/sysconfig/network-scripts/ifcfg-eth0
HWADDR
行を完全に削除します(または新しいNICのMACアドレスと一致するように変更します)。
システムを再起動します。
reboot
NICをもう一度変更した場合は、手順1と3を繰り返してください。
クローン作成後にファイルを変更しても私のユースケースではうまくいかないので、次のようにして問題を解決しました。
2つのファイルを編集して、それぞれのMacアドレスへの参照を削除する必要があります。
/etc/sysconfig/network-scripts/ifcfg-eth0
- HWADDR =行を削除します。
/etc/udev/rules.d/70-persistent-net.rules
- ATTR {address} ==から次のカンマまでを削除します。
これで、VMのクローンを作成してMACアドレスを変更しても、Macアドレスがどちらのファイルにも書き込まれることはないので、ネットワークは機能します。
私はVirtualBoxでクローンを作成する際にeth0を修正するために私がいくつかのBashfuを書いたとても多くのCentOS 6仮想マシンを作成し、削除します。
[root@jp-xm-base ~]# cat fixeth0.sh
if grep -q eth1 /etc/udev/rules.d/70-persistent-net.rules; then
sed -i '/eth0/d' /etc/udev/rules.d/70-persistent-net.rules;
sed -i 's/eth1/eth0/g' /etc/udev/rules.d/70-persistent-net.rules;
ETHERNET=`grep eth0 /etc/udev/rules.d/70-persistent-net.rules | awk -F"," '{print $4}' | awk -F"\"" '{print $2}'`;
echo Ethernet Addr: $ETHERNET;
sed -i 's/HWADDR=".*"/HWADDR="'$ETHERNET'"/' /etc/sysconfig/network-scripts/ifcfg-eth0;
/sbin/start_udev
/sbin/service network restart;
fi
あなたの唯一の問題がMACアドレスであるなら、あなたは以下のような何かを実行することができます。
TEST=`ifconfig | grep eth | awk '{ print $5}'`; sed "s/HWADDR.*/HWADDR\=$TEST/g" ifcfg-eth0 > TMP; mv TMP ifcfg-eth0
HWADDR項目を更新します。
編集:問題は仮想ハードウェアの実際の変更であるように思われるので、次のことを試すことができます。 (未テストで、 から参照されている )
/ etc/sysconfig/hwconfを編集して、以前のNICへの参照をすべて削除し、kudzuを再実行して新しいハードウェアを検出するかどうかを確認します。再起動する必要があるかもしれません。
私はVmwareを使っていませんが、virshと一緒にKVMを使っています - これが私がしたことです。
CentOS 6.4で 'ベース'イメージを作成しました。これは私のすべてのクローンのソースです。最初の起動後、私はこのようなスクリプトを作成しました
cat /etc/init.d/manglemac
#!/bin/bash
#
# manglemac This starts and stops mangle-mac
#
# chkconfig: 2345 11 88
# description: This obtains tha mac of eth0 and writes into ifcfg
mac=$(grep -H . /sys/class/net/*/address | grep eth0 | cut -d ':' -f2-10)
match_mac=$(grep $mac /etc/sysconfig/network-scripts/ifcfg-eth0)
if [ -z "$match_mac" ];
then
echo HWADDR=$mac >> /etc/sysconfig/network-scripts/ifcfg-eth0
fi
でinitに追加しました
chkconfig --add manglemac
HWADDRまたはUUIDの/ etc/sysconfig/network-scripts/ifcfg-eth0へのすべての参照を削除し、さらに/etc/udev/rules.d/70-persistent-net.rulesからudevルールを削除しました。
この時点で私はマシンをシャットダウンしてクローンを作り始めました。すべてうまくいきます。私が作成したスクリプトは非常に単純ですがうまく機能しますが、ネットワークの設定に関していくつかの前提条件があります(eth0のみ)。
助けになれば幸いです。
私は複数のNICを扱っていて、上では何もできなかったので(VMware Fusion 7/VMware 6以下)、スクリプトを書きました。 tarballはここ です 。
これが付属しているREADME
name__です。
あなたが一度にクローンを作成するマシンでやらなければいけないことは、次のとおりです。
lshw
name__をインストール/etc/sysconfig/network-scripts/ifcfg-eth?
のMACアドレスをMACDADDYに置き換えますnum どこで num ネットワークインタフェースの番号です。ファイルの命名パターンに従う必要があります。実行します。
chckconfig change_mac_address on
これはファイルで指定された適切な実行レベルでsymリンクを追加するはずです
ifcfg-eth?
ファイルのMACアドレスを変更するはずです。問題点
理由は定かではありませんが、すべてのNICを認識させるためにもう一度ネットワークを再起動する必要がある場合があります。
/etc/init.d/network restart
sleep 20
の始めに/etc/init.d/network
を置くことによってこれを修正しました
ifcfg-eth?
と同じ順序でNICを返すlshw
name__に依存しています。ifcfg-eth?
ファイルの番号付けを変更して、lshw
name__がうまくいかないということや、たくさんのNICを搭載したマシンをたくさん作っているということで一致するようにするとよいでしょう。/usr/bin/change_mac_address.pl
は/usr/bin/change_mac_address.pl.old
に移動します。ifcfg-eth?
にまた実行することができます
chkconfig change_mac_address off