/etc/sysconfig/network-scripts/ifcfg-xxx

2008/12/20PC::Linux/BSD

Red Hat系のディストリビューションでのネットワークデバイスの設定ファイルの書式メモ。

設定項目

  1. DEVICE
  2. BOOTPROTO
  3. ONBOOT
  4. HWADDR
  5. IPADDR
  6. NETWORK
  7. NETMASK
  8. BROADCAST
  9. GATEWAY
  10. USERCTL
  11. TYPE

各設定項目の説明と、取るべき値

1. DEVICE

ネットワークデバイス名。デバイス名は/etc/modprobe.confにて設定されているエイリアスでかつ、ifcfg-eth0ファイルであれば"eth0"を指定する必要がある。

2. BOOTPROTO

IPアドレスを外部から取得する場合のプロトコル。

none, static
インターフェイス起動時にプロトコルを指定しない。もしくはこのデバイスは静的にIPアドレスを設定する場合。
dhcp
DHCPサーバからIPアドレスを取得する
bootp
BOOTP(BOOTstrap Protocol)を使用する場合

3. ONBOOT

OS起動時にこのインターフェイスを有効にするかの指定

yes
有効
no
無効

4. HWADDR

デバイス名と関連付けるMACアドレスを指定。HWADDRを指定することで、例えばifcfg-eth0にて関連付けられているNICのPCIスロットを変更した場合に、eth0がeth1になることはなく、常にeth0として認識される。

記述例

HWADDR=XX:XX:XX:XX:XX:XX

5. IPADDR

静的IPアドレスを指定する場合のIPアドレスを指定

6. NETWORK

静的IPアドレスを指定する場合のネットワークアドレスを指定

7. NETMASK

静的IPアドレスを指定する場合のネットマスクを指定

8. BROADCAST

静的IPアドレスを指定する場合のブロードキャストアドレスを指定

9. GATEWAY

静的IPアドレスを指定する場合のゲートウェイアドレスを指定

10. USERCTL

インターフェイスの有効/無効化の制御をユーザ権限で実行可能にするかの指定

yes
ユーザ権限で切替可能
no
ユーザ権限で切替不可

11. TYPE

インターフェイスの種類を指定。イーサネットなら値は"Ethernet"

MIKO GNYO/Linux 3.6 on USBメモリ

2008/12/06PC::Linux/BSD

MIKO GNYO/Linux 3.6をUSBメモリ上にインストールしたときのメモ。MIKO GNYO/LinuxのオフィシャルでUSBメモリにインストールする方法が公開されていますが、いくつかわかりづらい点があったので記事化。

用意するもの

  • MIKO GNYO/Linux 3.6 *1
  • 1GB以上のUSBメモリ*2
  • Linux or Windows端末
  • syslinux

*1 : isoファイルのままでも構いませんが、中のファイルを取り出せる必要があります

*2 : MIKO GNYO/Linux 3.6にて提供されている仮想マシンイメージをインストールする場合は8GBクラスのUSBメモリが必要です

用意したもの

手順

仮想マシン機能を利用しない場合の手順。

  1. USBメモリをFAT/FAT32でフォーマットする*3
  2. USBメモリの空き容量を1GB以上確保する
  3. MIKO GNYO/Linux 3.6のDVDメディア上のファイルのうち、vmフォルダ内のファイル*4以外の全てをUSBメモリに転送する
  4. 以下のファイルをリネームする
    • isolinuxフォルダをsyslinuxに
    • isolinuxフォルダ内のisolinux.cfg、isolinux.txtをsyslinux.cfg、syslinux.txtに
  5. ダウンロードしてきたsyslinuxを展開するとwin32フォルダの中にsyslinux.exeがあるので、コマンドプロンプトから「syslinux -ma X:*5」を実行しブートローダをインストールする。

*3 : 既にフォーマットされている場合は必要ありません

*4 : 仮想マシンイメージです

*5 : XはUSBメモリのドライブレター

動作確認

USBメモリからのブートをサポートする適当なマシンで起動させてMIKO GNYO/Linuxが起動すれば成功です。私はThinkPad X41でテストしました。

所感

  • MIKO GNYO/Linux自体はUbuntuのLive CDをベースとしているようで自分が欲しい環境がない。
  • CD/DVDブートイメージをそのままUSBメモリブートイメージとしているので、それまでの変更はシャットダウンしてしまうと消去されてしまいます*6
  • USBメモリのパーティションを切るとかの操作はしていないので、MIKO GNYO/Linuxのイメージと通常のUSBメモリの共存は可能。

自分の環境が保持できない以上*7持ち運びしやすいLive CDと変わりません。バリバリにカスタマイズしたLinux環境が欲しいのであれば8GBクラスのUSBメモリのパーティションを切ってLinux環境をインストールした方が幸せになれそうです。

と、いうわけで次回予告。「USBメモリにLinux環境をネイティブインストールする」

*6 : つまりLive CDで動作させているのと変わらない

*7 : 方法はあるのでしょうけど面倒くさそう

[CentOS] ボンディングを構成する

2008/12/01PC::Linux/BSD

09/04/16 大幅に修正

複数のネットワークインターフェイスを束ねて冗長性や負荷分散を行う技術を、Linuxではボンディングと呼ばれるドライバにより実現しています。CentOSでボンディングを構成したときのメモ。
CentOS 5.2にてテストしましたがRed Hat系のディストリビューションであれば適用できるかと思われます。

環境

  • CentOS 5.2 on VMware Server 1.0.6
  • 仮想NIC × 2
  • ホストマシン搭載物理NIC数: 3

構成してみる

ここで、eth0, eth1のようにネットワークデバイスがすでに利用できる状況になっていることが前提となります。

eth0とeth1をボンディングし、ネットワークデバイスbond0を、eth2とeth3をボンディングしネットワークデバイスbond1を生成する場合の手順は以下の通り。

1. /etc/modprobe.d/bonding を作成

以下の要領でボンディングインターフェイスの数だけ定義する。

alias bond0 bonding
alias bond1 bonding

ボンディングインターフェイスが1つ、もしくは複数のボンディングインターフェイスにて同一の設定を行う場合は次のようになる。

alias bond0 bonding
alias bond1 bonding
    options bonding mode=[N] miimon=100
# この場合、bond0, bond1にて設定されるmode, miimonの値は同一となる
# 設定パラメータについては後述

2. /etc/sysconfig/network-scripts/ifcfg-eth[0-3] を編集

マスターデバイスの指定とスレーブデバイスであることを設定する。HWADDRの値はMACアドレスとモジュールのエイリアスを固定する為にも必ず設定することを推奨

DEVICE=eth[0-3]
HWADDR=xx:xx:xx:xx:xx:xx
BOOTPROTO=none
USERCTL=no
ONBOOT=no
MASTER=bond[0|1]
SLAVE=yes

3. /etc/sysconfig/network-scripts/ifcfg-bond[0|1] を編集

通常eth0などに記載する内容をここに記載する。

DEVICE=bond[0|1]
IPADDR=xxx.xxx.xxx.xxx
NETMASK=xxx.xxx.xxx.xxx
NETWORK=xxx.xxx.xxx.xxx
BROADCAST=xxx.xxx.xxx.xxx
GATEWAY=xxx.xxx.xxx.xxx
ONBOOT=yes
USERCTL=no
# /etc/modprobe.d/bondingでoptionsを設定指定しない場合、
# 以下にボンディングポリシーを記載する
BONDING_OPTS="mode=[N] primary=ethX miimon=100 updelay=500"
# 設定パラメータについては後述

4. ネットワークの再起動

# service network restart

bondingモジュール設定パラメータ

mode: ボンディングポリシー

modeに設定可能な値と機能・制約について述べる

0: balance-rr

障害耐性とロードバランシングに対するラウンドロビンポリシー

制約
Ether ChannelなどのTrunkingをサポートするネットワークスイッチと接続する必要がある

-送信時: 1パケットごとにスレーブされたインターフェイスが順に使用される。

  • 受信時: ネットワークスイッチ側の判断で使用されるスレーブインターフェイスが決定する
1: active-backup

障害耐性に対するアクティブ バックアップ ポリシー
ネットワークの障害耐性を最大限に高めたい場合に適用

制約
ネットワークスイッチに特別な機能は必要ない

-1つのアクティブインターフェイスのみ使用し、アクティブインターフェイスの障害時にはスレーブされた他のインターフェイスに切り替わる

2: balance-xor

障害耐性とロードバランシングに対するXORポリシー

制約
Ether ChannelなどのTruningをサポートするネットワークスイッチと接続する必要がある

-送信アダプター: 送信先のMACアドレスをキーとするハッシュで選択される

  • 受信アダプター: ネットワークスイッチ側の判断で選択される
3: broadcast

障害耐性用のブロードキャストポリシー

  • 全てのアダプターからパケットを送出する。
  • 特殊なネットワーク構成において使用するもので通常の環境では使用できない。
4: 802.3ad

IEEE 802.3ad ダイナミック リンクアグリゲーションポリシー

制約
IEEE 802.3adに対応したネットワークスイッチが必要

-IEEE 802.3ad Link Aggrigationの規格による接続(同じスピードとデュプレックス設定を共有するアグリゲーションを作成し、アクティブなアグリゲーション内全てのスレーブインターフェイス上で送受信を行う)

5: balance-tlb

障害耐性とロードバランシング用の送信ロードバランシング(TLB)ポリシー

制約
ネットワークスイッチに特別な機能は必要ない

-送信: アダプターの速度、負荷に応じて選択される

  • 受信: 1つのアクティブアダプターのみを選択し、障害時には他のアダプターに切り替えられる
6: balance-alb

障害耐性とロードバランシング用のアクティブロードバランシング(ALB)ポリシー

制約
ネットワークスイッチに特別な機能は必要ない

-送信: アダプターの速度、負荷に応じて選択される

  • 受信: アダプターの速度、負荷に応じて選択される。ただし、通信相手のIPアドレスに応じて固定したアダプターを使用する(通信相手のARPテーブルに登録されるMACアドレスを変更することで受信アダプターを選択する(ARPネゴシエーション)ため、ルータ越しの通信の場合、常に同じアダプターが使用される)
スイッチの冗長構成を取る場合

active-backupポリシーが最適かと思われるが、balance-tlb, balance-albでもいけそう(未検証)。

primary: プライマリアダプター

mode=1 (Active-Backup)モードにて、起動時に優先的にアクティブアダプターとして使用するアダプタのエイリアス(eth0など)を指定。

miimon: MII(Media Independent Interface)リンク監視

MII規格のリンク情報を利用する。つまり、MIIのリンクダウンイベントのみを見ているので物理アダプタのドライバモジュールが検知できない障害(ネットワークスイッチより先の接続障害)は検知できない。デフォルトは100(ms)。

updelay: MII管理リンクアップ遅延時間

MIIリンク監視によるリンクアップを検知後、対象のアダプタをアクティブにするまでの遅延時間を指定する。miimonの整数倍の値にする必要がある

参考

ファイル名をShift-JISからUTF-8へ変換するシェルスクリプト

2008/09/28PC::Linux/BSD

概要

ファイル名のエンコードの変換はconvmvで出来るのだが、必要になるのがShift-JISからUTF-8だけなので毎回入力するのはめんどい*1。と、いうことでカレントディレクトリの配下にある全てのファイルのエンコードをShift-JISからUTF-8へ変換するシェルスクリプトを作ってみた。

*1 : だいたい日本語を含む圧縮ファイルで問題となっている

使い方

ファイル名をShift-JISからUTF-8へ変換したいファイルのあるディレクトリに移動し、sjis2utf8.shを実行するだけです。

オプション

-v, --view
変換を行わずに、変換前後の結果を表示する(convmvで引数なしの場合と同じ)
-V, --version
sjis2utf8.shのバージョン
-h, --help
スクリプトの簡単なマニュアル

インストール

前提として、convmvが適当な方法でインストールされている必要があります*2

  1. sjis2utf8.shをダウンロードし、適当な場所に置く*3
  2. sjis2utf8.shに実行権限を付加する

*2 : Ubuntu 8.04ならapt-get convmv

*3 : /usr/local/binあたりを推奨

ライセンス

GNU GPL v2

更新履歴

Ver1.0 2008/09/28
First Release
Ver1.1 2008/10/05
case-esacで書き直し&ヘルプ部を関数化

ダウンロード

ver1.0
ver1.1

拡張子がアップロードする都合上txtとなっているので、適当な拡張子に変換して下さい。