- 次のコマンドを入力して、既存の _initrd_file_ のバックアップを作成します。
cd /boot
cp _initrd_file_ _initrd_file.bak
- 次のコマンドを入力して、イメージを解凍します。
zcat _initrd_file_.bak > _initrd_file_
- 次のコマンドを入力して、イメージのループバック装置をセットアップします。
losetup /dev/loop0 /path/to/your/_initrd_file_
- 次のコマンドを入力して、ファイル・システムに存在しているすべてのエラーを訂正します。
e2fsck -f /dev/loop0
- 次のコマンドを入力して、initrd ファイル・システムのサイズを決定します。
df /dev/loop0
/boot ディレクトリー (または initrd ファイルを格納する他の場所) に、
大きな initrd ファイル (たとえば、それぞれが 32 MB の大きさの複数のファイル) を保管する十分な容量があることを確認します。
/boot ディレクトリーに十分なスペースがない場合は、一時ディレクトリーで以下のステップを実行して、圧縮された
initrd ファイル (32 MB ではなく、数メガバイト) を /boot ディレクトリーにコピーし直します。
ファイル・システムが
32 MB 以上ないか、またはフリー・スペースが多くない場合は、次のコマンドを入力してそれを 32 MB まで増やす必要があります。
losetup -d /dev/loop0
dd if=/dev/zero of=_initrd_file_ seek=33554432 count=1bs=1
注: ファイルがすでに 32 MB 以上の場合は、このステップは不要なので実行しないでください。このステップを実行すると、初期 RAM ディスク・ファイル・システムが破壊されることがあります。
SUSE では、
さらに大きな初期 RAM ディスクを作成する必要があります (例えば、48 MB すなわち 48×1024×1024 の場合、seek=50331648)。initrd ファイルが十分に大きい場合は、
スキップして、ループバック装置をマウントします。
ステップ 9 を参照してください。
- 次のコマンドを入力して、イメージのループバック装置をセットアップします。
losetup /dev/loop0 /path/to/your/_initrd_file_
- 再度次のコマンドを入力して、クリーン・ファイル・システムがあることを確認します。
e2fsck -f /dev/loop0
ファイル・システムにまだエラーが残っている場合は、前の
DD ステップが正しく実行されず、initrd を壊しています。ここで、losetup
-d /dev/loop0 と入力してループバック装置を削除し、手順を最初から再始動する必要があります。
- 次のコマンドを入力して、ファイル・システムをサイズ変更します。
resize2fs /dev/loop0
注: サイズ変更を行うと、ファイル・システムが自動的に拡張して、使用可能なすべてのスペースを使用できるようになります。
- 次のコマンドを入力して、ループバック装置をマウントします。
mount /dev/loop0 /mnt/tmp
- これで、32 MB の initrd ファイル・システムを持つことができました。次のコマンドを入力して、さらにファイルを追加することができます。
cd /mnt/tmp
- 標準の mk_initrd または mkinitrd プロセスを使用して
(使用する配布により異なります)、ホスト・アダプター・ドライバーを initrd ファイルにまだ追加していない場合は、ホスト・アダプター・ドライバーのモジュール・ファイルを手動でコピーする必要があります。
また、SCSI コアおよび SCSI ディスク・ドライバーを手動で initrd ファイル・システムにコピーし、該当する
insmod コマンドを linuxrc スクリプトに追加する必要があります。
- SUSE では、etc/、proc/、および sysroot/ ディレクトリーを initrd ファイル・システムに作成する必要があります。
ホスト・アダプターのロードおよび /proc のマウント後、linuxrc スクリプトに echo コマンドを追加すると、
デバイス・ディスカバリーが自動的に実行されていなければ、/proc/scsi/scsi
を介して LUN を強制的に追加することができます。
- 次のコマンドを入力して、initrd ファイル・システムに SDD ディレクトリーを作成します。
mkdir -p opt/IBMsdd/bin
chmod -R 640 opt/IBMsdd/
- SDD については、次のファイルを initrd ファイル・システムにコピーする必要があります。
注: コピーを実行するときは、現在 /mnt/tmp ディレクトリーにいることを確認します。
| ファイル名 |
ターゲット位置 |
| /etc/vpath.conf |
etc/ |
| /etc/group |
etc/ |
| /etc/passwd |
etc/ |
| /etc/nsswitch.conf |
etc/ |
| /opt/IBMsdd/sdd-mod.o-CORRECT_VERSION |
lib/sdd-mod.o |
| /opt/IBMsdd/bin/* |
opt/IBMsdd/bin/ |
| /lib/libc.so.6 |
lib/ |
| /lib/ld-linux.so.2 |
lib/ |
| /lib/libacl.so.1 |
lib/ |
| /lib/libattr.so.1 |
lib/ |
| /lib/libdl.so.2 |
lib/ |
| /lib/libm.so.6 |
lib/ |
| /lib/libpthread.so.0 |
lib/ |
| /lib/libnss_files.so.2 |
lib/ |
| /lib/librt.so.1 |
lib/ |
| /bin/awk, chmod, chown, cp, date, grep, ls, mknod,
mount, ps, rm, sed, sh, tar, unmount |
bin/ |
/dev/sd[a-z], sd[a-z][a-z] たとえば、次のとおりです。 tar cps /dev/sd[a-z] /dev/sd[a-z][a-z]| tar xps
|
dev/ |
- Red Hat の場合は、以下の追加のファイルをファイル・システムにコピーする必要があります。
| ファイル名 |
ターゲット位置 |
| /lib/libproc.so.2.0.7 |
lib/ |
| /lib/libpcre.so.0 |
lib/ |
| /lib/libtermcap.so.2 |
lib/ |
| /bin/ash.static |
bin/ash |
- SUSE の場合は、以下の追加のファイルをファイル・システムにコピーする必要があります。
| ファイル名 |
ターゲット位置 |
| /lib/libreadline.so.4 |
lib/ |
| /lib/libhistory.so.4 |
lib/ |
| /lib/libncurses.so.5 |
lib/ |
| etc/nsswitch.conf 注: etc/nsswitch.conf ファイルのパスワードとグループ記入項目が、compat ではなく、files をポイントするように変更する必要があります。
|
N/A |
- initrd linuxrc スクリプトに対して次のような変更を行う必要があります。
- Red Hat の場合は、ファイルの末尾から次のブロックのコマンドを除去します。
echo Creating block devices
mkdevices /dev
echo Creating root device
mkroot dev /dev/root
echo 0x0100 > /proc/sys/kernel/real-root-dev
echo Mounting root filesystem
mount -o defaults -ro - -t ext2 /dev/root /sysroot
pivot_root /sysroot /sysroot/initrd
unmount /initrd/proc
nash シェルではなく、ash シェルを起動するように、linuxrc スクリプトの先頭行を変更します。
- /proc ファイル・システムがまだ明示的に linuxrc スクリプトにマウントされていない場合は、次の
mount コマンドを追加します。
mount -n -tproc /proc /proc
- SDD を構成するには、次のコマンドを linuxrc スクリプトの末尾に追加します。
insmod /lib/sdd-mod.o
/opt/IBMsdd/bin/cfgvpath
システムのルート・ファイル・システムをマウントして、構成情報をそれにコピーできるようにします。
たとえば、/dev/vpatha3 上に ext3 ルート・ファイル・システムがある場合は、/bin/mount -o rw -t
ext3 または /dev/vpatha3 /sysroot と入力し、あるいは /dev/vpatha3 上に
reiserfs ルート・ファイル・システムがある場合は、/bin/mount -o rw -t reiserfs
/dev/vpatha3 /sysroot と入力します。
動的に作成された装置特殊ファイルをシステムのルート・ファイル・システムにコピーするには、次のコマンドを入力します。
tar cps /dev/IBMsdd /dev/vpath* | (cd /sysroot && tar xps)
/bin/umount /sysroot
ルート・ファイル・システムをカーネルに定義する必要があります。
従来、この情報はストリングとしてブート・ローダーに渡され
(たとえば、
/dev/vpatha3)、装置のメジャー・ナンバーおよびマイナー・ナンバーの 16 進表記に変換されました。
メジャー・ナンバーとマイナー・ナンバーが 254,3 に等しい場合は、これらのナンバーは 16 進数の 0xFE03 で表されます。
linuxrc スクリプトは、次のコマンドで 16 進値を /proc に渡します。
echo 0xFE03 > /proc/sys/kernel/real-root-dev
/bin/umount /proc
- システム fstab を編集し、すべてのシステム・マウント・ポイントを
LABEL または /dev/sd マウント・ソースからそれぞれの対応
/dev/vpath に変更してください。マルチパス構成でのラベルによるブート操作の危険性については、ステップ
23 を参照してください。
- システムの fstab を initrd etc/ ディレクトリーにコピーします。
- イメージをアンマウントし、次のコマンドを入力してループバック・バインディングを除去します。
umount /mnt/tmp
losetup -d /dev/loop0
- 次のコマンドを入力して、イメージを圧縮します。
gzip -9 _initrd_file_
mv _initrd_file_.gz _initrd_file_
- ブート・パラメーター (たとえば、lilo.conf、grub.conf、または menu.lst) に、次のとおり付加します。
ramdisk_size=34000
より大きな initrd ファイル・システムを作成した場合は、そのサイズをカバーできるだけの大きさを持つ値にしてください。
- 完全性のために、
カーネルのルート・パラメーターのブート・ローダー付加を該当の vpath 装置に変更します。
たとえば、root=/dev/vpatha5。
ただし、対応する 16 進数のメジャー、マイナーを initrd linuxrc スクリプト内の /proc ファイル・システムに渡すことにより、この値は前のステップによって指定変更されます。
注: LABEL でブートすると、正しいラベルを使用しても、ファブリック内で最初に検出された装置が間違った装置であったり、vpath マルチパス装置ではなく、sd シングル・パス装置であったりするリスクがあります。
- サーバーをリブートします。
sd 装置ではなく、vpath 装置上のルート・ファイル・システムによりブートします。