Home > Linux
Linux Archive
固定IPアドレスなのにDHCPでIPアドレスを取得してしまう
- 2008-07-16 (Wed)
- Linux
またFedora 9のメモ。
Fedora 9をインストールしたPCをいじっていたら変な状況に出くわした。
固定IPアドレスの設定をしているのに、再起動した際最初にDHCPでIPアドレスを取得してしまう。
結論から言うとFedora 9ではネットワーク管理は今までのnetworkではなく、
NetworkManagerという機能で行っているせいのようだった。
NetworkManagerのifcfg-eth?の記述は少しnetworkとは異なるようで、
項目をはしょりすぎるとうまくいかない模様。
とりあえずsetupコマンドでethの設定をすれば、
NetworkManagerに必要な項目は全部ifcfg-eth?に書いてくれるぽい。
適当にいじった感じではTYPE=Ethernetの記述が抜けてるだけでもダメだった。
解決方法としてはnetworkみたいにifcfg-eth?をガリガリいじる方法ではなく、
setupコマンドを利用して設定するか、
NetworkManagerではなくnetworkを利用して今まで通りに利用するかというものがあるみたい。
後者は
このコマンドの後再起動でOK。
Fedora 9をインストールしたPCをいじっていたら変な状況に出くわした。
固定IPアドレスの設定をしているのに、再起動した際最初にDHCPでIPアドレスを取得してしまう。
結論から言うとFedora 9ではネットワーク管理は今までのnetworkではなく、
NetworkManagerという機能で行っているせいのようだった。
NetworkManagerのifcfg-eth?の記述は少しnetworkとは異なるようで、
項目をはしょりすぎるとうまくいかない模様。
とりあえずsetupコマンドでethの設定をすれば、
NetworkManagerに必要な項目は全部ifcfg-eth?に書いてくれるぽい。
適当にいじった感じではTYPE=Ethernetの記述が抜けてるだけでもダメだった。
解決方法としてはnetworkみたいにifcfg-eth?をガリガリいじる方法ではなく、
setupコマンドを利用して設定するか、
NetworkManagerではなくnetworkを利用して今まで通りに利用するかというものがあるみたい。
後者は
chkconfig NetworkManager off
chkconfig network on
このコマンドの後再起動でOK。
eth0とeth1の入れ替え方
- 2008-07-16 (Wed)
- Linux
NICを複数挿したPCにLinuxをインストールした場合、
どのNICがどのeth?として認識されるかは、ドライバの組み込み順で決まる模様。
で、自分がeth0として認識させたかったNICがeth1として認識された際、
eth0とeth1の対応NICを入れ替える方法。
ネットで検索するといくつか方法がでてきて、
ifcfg-eth?に対応させたいNICのMACアドレスを記述するとか、
/etc/modules.conf(*1)あたりにaliasを記述するといったものが出てくる。
しかし上記方法を試してもうまくいかなかったため、試行錯誤していたのだが、解決したのでメモ。
今回のOSはFedora 9。他のディストリビューションではまた違うこともあると思われる。
Fedora 9では、ifcfg-eth?に対応させたいNICのMACアドレスを記述した後、
/etc/udev/rules/70-persistent-net.rulesのファイルを削除して再起動。
このファイルにもMACアドレスとeth?の関連付け?が記述されているようで、
そのせいでifcfg-eth?にMACアドレスを書くだけじゃ入れ替えがうまくいかなかった模様。
/etc/udev/rules/70-persistent-net.rulesは消して再起動すればまたファイルが生成されます。
ただ基本ですがいじる前にバックアップをとることは忘れずに。
また、複数NICを挿している際にifcfg-eth?にMACアドレスを記述しておくことで、
再起動などをした際に勝手にeth0とeth1が入れ替わったりすることが防げるみたい。
*1 kernel 2.6からは/etc/modules.d/以下のファイルに書くように変わった模様
どのNICがどのeth?として認識されるかは、ドライバの組み込み順で決まる模様。
で、自分がeth0として認識させたかったNICがeth1として認識された際、
eth0とeth1の対応NICを入れ替える方法。
ネットで検索するといくつか方法がでてきて、
ifcfg-eth?に対応させたいNICのMACアドレスを記述するとか、
/etc/modules.conf(*1)あたりにaliasを記述するといったものが出てくる。
しかし上記方法を試してもうまくいかなかったため、試行錯誤していたのだが、解決したのでメモ。
今回のOSはFedora 9。他のディストリビューションではまた違うこともあると思われる。
Fedora 9では、ifcfg-eth?に対応させたいNICのMACアドレスを記述した後、
/etc/udev/rules/70-persistent-net.rulesのファイルを削除して再起動。
このファイルにもMACアドレスとeth?の関連付け?が記述されているようで、
そのせいでifcfg-eth?にMACアドレスを書くだけじゃ入れ替えがうまくいかなかった模様。
/etc/udev/rules/70-persistent-net.rulesは消して再起動すればまたファイルが生成されます。
ただ基本ですがいじる前にバックアップをとることは忘れずに。
また、複数NICを挿している際にifcfg-eth?にMACアドレスを記述しておくことで、
再起動などをした際に勝手にeth0とeth1が入れ替わったりすることが防げるみたい。
*1 kernel 2.6からは/etc/modules.d/以下のファイルに書くように変わった模様
OCFS2+NBDなクラスタ構築
- 2008-06-12 (Thu)
- Linux
OCFS2+NBDなクラスタ環境を作ったので構築ログ。
VMware Serverの仮想マシンを使用して4台構築。
クラスタノード*3、NBD Server用のサーバ*1。
OSは、クラスタノードは他の実験のためちょっと古めのCentOS4.6、
NBD Server用のサーバはCentOS5.1。
NBD
*2.6以上のnbd.hが見つからないと言われる
これが今回最も詰まったポイント。
NBDのバージョン2.7.8を利用すれば問題なくインストールまでいけたのですが、
2.7.8だとNBD Serverで公開したブロックデバイスにアクセスしようとすると
うまくブロックデバイスにアクセスできずI/O Errorを出されました。
エラーを探って延々とググった後、
NBDインストール手順の紹介で次の手順を踏んでいるサイトを一つ発見。
*カーネルからnbd.hを拾ってくる
上記のようにやればnbd.hに関するconfigureエラーはクリアできました。
あとになって気づいたのですが、2.8.8のREADMEを見るとちゃんと書いてありますね。
nbd.hにenum関係のあるコードの記述がない場合は新しいカーネルから拾って置き換えろって。
上の例では/usr/local/include/にnbd.hを置いてますが、
デフォルトでは/usr/include/linux/以下にある(CentOS4.6の場合)ので、
そちらと交換で大丈夫だと思います。というかそちらの方がたぶん美しい。
configureの際に先に/usr/local/include/を参照する?から、
/usr/local/include/以下においても大丈夫ってことなのかな?
*再度configure→install
本当は当初NBDは最新版の2.9.11を使用しようとしていたのですが、
2.9.11だとこのconfigureの際にglibのバージョンチェック?で弾かれました。
これはNBDのバージョンを下げて2.8.8にすれば通りました。
glib更新でもいけると思いますが、今回はこちらで。
*nbd-server側で実行
クラスタノードにブロックデバイスを公開するサーバで行う。
アクセスに使用するTCPポートは任意だが、今回は2000を使用。
*nbd-client側で実行
全てのクラスタノードで実行する。
以下はNBD ServerのIPアドレスが192.168.1.2、アクセスに使用するTCPポートが2000の場合。
OCFS2 全てのクラスタノードで実行する。
*フォーマット
これは一つのクラスタノードだけでやれば良い
*マウント
とまあ大体こんな感じで、あたふたしながらマウントまでできました。
今回は構築まで。あとは適当に触ってみます。
本当はOCFS2もインストールの際に
古いライブラリが他のプログラムに激しく依存していて、
更新した結果wgetとかyumとかの基本コマンドなどが消去されたりしました。
これは単純にOCFS2のダウンロードの際に、
間違ってRHEL5用のRPMパッケージを落としていたせいだったのですが。
他にも/etc/init.d/o2cb configureの際に以下のようなエラーももらってたり。
これも単純にOCFS2のダウンロードの際に
間違ったカーネル用のRPMパッケージ(ELではなくELsmp)を落としていただけでした。
まあこちらはNBDに比べて引っかかる人が少ないと思うので、最後にオマケ程度で。
いやはや、眠い頭で作業をするとくだらない間違いをして仕方がない。
VMware Serverの仮想マシンを使用して4台構築。
クラスタノード*3、NBD Server用のサーバ*1。
OSは、クラスタノードは他の実験のためちょっと古めのCentOS4.6、
NBD Server用のサーバはCentOS5.1。
cd /usr/local/src
wget http://nchc.dl.sourceforge.net/sourceforge/nbd/nbd-2.8.8.tar.gz
chown -R root: /usr/local/src/nbd-2.8.8
cd /usr/local/src/nbd-2.8.8
./configure
*2.6以上のnbd.hが見つからないと言われる
checking where to find a working nbd.h... configure: error: Could not find an nbd.h from 2.6 or above.
これが今回最も詰まったポイント。
NBDのバージョン2.7.8を利用すれば問題なくインストールまでいけたのですが、
2.7.8だとNBD Serverで公開したブロックデバイスにアクセスしようとすると
うまくブロックデバイスにアクセスできずI/O Errorを出されました。
エラーを探って延々とググった後、
NBDインストール手順の紹介で次の手順を踏んでいるサイトを一つ発見。
*カーネルからnbd.hを拾ってくる
cp /usr/src/kernels/2.6.9-67.EL-smp-i686/include/linux/nbd.h /usr/local/include/nbd.h
上記のようにやればnbd.hに関するconfigureエラーはクリアできました。
あとになって気づいたのですが、2.8.8のREADMEを見るとちゃんと書いてありますね。
nbd.hにenum関係のあるコードの記述がない場合は新しいカーネルから拾って置き換えろって。
上の例では/usr/local/include/にnbd.hを置いてますが、
デフォルトでは/usr/include/linux/以下にある(CentOS4.6の場合)ので、
そちらと交換で大丈夫だと思います。というかそちらの方がたぶん美しい。
configureの際に先に/usr/local/include/を参照する?から、
/usr/local/include/以下においても大丈夫ってことなのかな?
*再度configure→install
./configure
make
make install
本当は当初NBDは最新版の2.9.11を使用しようとしていたのですが、
2.9.11だとこのconfigureの際にglibのバージョンチェック?で弾かれました。
checking for GLIB - version >= 2.6.0... no
*** Could not run GLIB test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means GLIB is incorrectly installed.
configure: error: Missing glib
これはNBDのバージョンを下げて2.8.8にすれば通りました。
glib更新でもいけると思いますが、今回はこちらで。
*nbd-server側で実行
クラスタノードにブロックデバイスを公開するサーバで行う。
アクセスに使用するTCPポートは任意だが、今回は2000を使用。
mkdir /export/nbd
dd if=/dev/zero of=/export/nbd/nb0 bs=1M count=1024
nbd-server 2000 /export/nbd/nb0
*nbd-client側で実行
全てのクラスタノードで実行する。
以下はNBD ServerのIPアドレスが192.168.1.2、アクセスに使用するTCPポートが2000の場合。
modprobe nbd
nbd-client 192.168.1.2 2000 /dev/ndb0
cd /usr/local/src
wget http://oss.oracle.com/projects/ocfs2/dist/files/RedHat/RHEL4/i386/1.2.9-1/2.6.9-67.EL/ocfs2-2.6.9-67.ELsmp-1.2.9-1.el4.i686.rpm
wget http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL4/i386/1.2.7-1/ocfs2-tools-1.2.7-1.el4.i386.rpm
rpm -ivh ocfs2-tools-1.2.7-1.el4.i386.rpm
rpm -ivh ocfs2-2.6.9-67.ELsmp-1.2.9-1.el4.i686.rpm
vi /etc/ocfs2/cluster.conf
--------------------------------------------------------------------------
cluster:
name = ocfs2
node_count = 3
node:
name = spinner
cluster = ocfs2
number = 0
ip_port = 7777
ip_address = 192.168.1.9
node:
name = elevator
cluster = ocfs2
number = 1
ip_port = 7777
ip_address = 192.168.1.7
node:
name = rudder
cluster = ocfs2
number = 2
ip_port = 7777
ip_address = 192.168.1.10
--------------------------------------------------------------------------
/etc/init.d/o2cb configure
--------------------------------------------------------------------------
Configuring the O2CB driver.
This will configure the on-boot properties of the O2CB driver.
The following questions will determine whether the driver is loaded on
boot. The current values will be shown in brackets ('[]'). Hittingwithout typing an answer will keep that current value. Ctrl-C
will abort.
Load O2CB driver on boot (y/n) [n]: y
Cluster to start on boot (Enter "none" to clear) [ocfs2]:
Specify heartbeat dead threshold (>=7) [31]:
Specify network idle timeout in ms (>=5000) [30000]:
Specify network keepalive delay in ms (>=1000) [2000]:
Specify network reconnect delay in ms (>=2000) [2000]:
Writing O2CB configuration: OK
Loading module "configfs": OK
Creating directory '/config': OK
Mounting configfs filesystem at /config: OK
Loading module "ocfs2_nodemanager": OK
Loading module "ocfs2_dlm": OK
Loading module "ocfs2_dlmfs": OK
Creating directory '/dlm': OK
Mounting ocfs2_dlmfs filesystem at /dlm: OK
Starting O2CB cluster ocfs2: OK
----------------------------------------------------------------------------
*フォーマット
これは一つのクラスタノードだけでやれば良い
mkfs.ocfs2 -b 4096 -C 128k -L DBF1 -N 3 /dev/nbd0
*マウント
mount -t ocfs2 /dev/nbd0 /mnt/ocfs
とまあ大体こんな感じで、あたふたしながらマウントまでできました。
今回は構築まで。あとは適当に触ってみます。
本当はOCFS2もインストールの際に
エラー: Failed dependencies:のエラーから始まり、ライブラリを更新しようとするも、
libreadline.so.5 is needed by ocfs2-tools-1.2.6-1.el5.i386
rtld(GNU_HASH) is needed by ocfs2-tools-1.2.6-1.el5.i386
古いライブラリが他のプログラムに激しく依存していて、
更新した結果wgetとかyumとかの基本コマンドなどが消去されたりしました。
これは単純にOCFS2のダウンロードの際に、
間違ってRHEL5用のRPMパッケージを落としていたせいだったのですが。
他にも/etc/init.d/o2cb configureの際に以下のようなエラーももらってたり。
Loading module "configfs": Unable to load module "configfs"
Failed
これも単純にOCFS2のダウンロードの際に
間違ったカーネル用のRPMパッケージ(ELではなくELsmp)を落としていただけでした。
まあこちらはNBDに比べて引っかかる人が少ないと思うので、最後にオマケ程度で。
いやはや、眠い頭で作業をするとくだらない間違いをして仕方がない。
Emacs再び
- 2008-06-06 (Fri)
- Linux
EmacsWikiを参考に何度も挫折しているEmacsにもう一度トライ。
わざわざEmacs自体にチュートリアルが用意されているのね。便利。
チュートリアルはEmacs起動して"C-h t"。
これを通せば基本的な操作は一通り身につくハズ。
しかしチュートリアルを半分ほど終えたとこでもはや指がしんどい。
また今度。
わざわざEmacs自体にチュートリアルが用意されているのね。便利。
チュートリアルはEmacs起動して"C-h t"。
これを通せば基本的な操作は一通り身につくハズ。
しかしチュートリアルを半分ほど終えたとこでもはや指がしんどい。
また今度。
Fedora更新
- 2008-05-18 (Sun)
- Linux
自宅のLinuxマシンのFedoraを7から8にアップデートしました。
すでに9も出ているけど、あまり評判がよくないので8で。
別に更新しなくても良いかなとも思っていたのだけれど、
よく考えるとOSはクリーンインストールばかりで
yumからバージョンアップしたことがないなと。
ということでものは試し。
といっても、大して手間はかからなかった。
適当な場所から以下の二つのパッケージを入手。
これだけ。
依存関係があってアップデートできないこともよくある模様。
今回はBeryl関係のものが引っかかったのでyum removeで削除した。
今回のアップデートを行ってBerylがCompizと統合されていたことを知った。
なのでアップデート後に独学Linuxさんを参考にCompiz Fusionを導入。
8にしたらロケールを日本語にするか促されたのでとりあえずしてみた。
が、キモすぎるので戻そうと思う。
どうも2バイトディレクトリ名はキモい。
Linuxだと違和感がすごすぎる。
他に目のついたところでWindows用のHDDがオートマウントされてた。
便利だけどツリー上どこにマウントされてるのかよくわからん。
あとで探そっと。
すでに9も出ているけど、あまり評判がよくないので8で。
別に更新しなくても良いかなとも思っていたのだけれど、
よく考えるとOSはクリーンインストールばかりで
yumからバージョンアップしたことがないなと。
ということでものは試し。
といっても、大して手間はかからなかった。
適当な場所から以下の二つのパッケージを入手。
- fedora-release-8-3.noarch.rpm
- fedora-release-notes-8.0.0-3.noarch.rpm
rpm -Fvh fedora-release-8-3.noarch.rpm fedora-release-notes-8.0.0-3.noarch.rpm
yum clean all
yum -y update
これだけ。
依存関係があってアップデートできないこともよくある模様。
今回はBeryl関係のものが引っかかったのでyum removeで削除した。
今回のアップデートを行ってBerylがCompizと統合されていたことを知った。
なのでアップデート後に独学Linuxさんを参考にCompiz Fusionを導入。
8にしたらロケールを日本語にするか促されたのでとりあえずしてみた。
が、キモすぎるので戻そうと思う。
どうも2バイトディレクトリ名はキモい。
Linuxだと違和感がすごすぎる。
他に目のついたところでWindows用のHDDがオートマウントされてた。
便利だけどツリー上どこにマウントされてるのかよくわからん。
あとで探そっと。
Home > Linux

