[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[plamo:16411] Plamo-3.0 on Software-RAID
-
From:Hiroshi Kasai
-
Date:Wed, 13 Nov 2002 18:12:54 +0900 (JST)
- Subject: [plamo:16411] Plamo-3.0 on Software-RAID
- From: Hiroshi Kasai <kasai@xxxxxxxxxxxxxxx>
- Date: Wed, 13 Nov 2002 18:12:52 +0900
笠井@実験室です。
「Plamo-3.0をRAID1をルート・パーティションとして、/dev/hda、/dev/hdbどちらからでも起動する環
境」
を構築してみました。
以下は、自分でやってみたときのメモ書きです。
かなり乱暴な書き方ですが、参考になるでしょうか?
1.作業ディレクトリを /isoimage とし、この下に Plamo-3.0 のインストールCDから isolinux 以下
だけをもらってくる。このディレクトリが新しいCDイメージの元となります。
2.initrd イメージを作業用に展開する
/isoimage/isolinux 以下にある initrd ファイルに対して、
losetup /dev/loop0 initrd
mount /dev/loop0 /mnt
mkdir /initrdroot
cd /mnt
cp -a . /initrdroot
losetup -d /dev/loop0
これで /initrdroot 以下に展開された。
3.initrd イメージに raidtools を加える
PLD Linux Distribution から
ftp://ftp.pld.org.pl/dists/1.0/PLD/i386/PLD/BOOT/raidtools-0.90.19990824-7.i386.rpm
を拾ってきて、initrd に展開する。
rpm -i --root=/initrdroot raidtools-0.90.19990824-7.i386.rpm
を実行することで展開される。
本当は自分で構築したかったんだが、uClibc 環境でのコンパイルがどうしてもうまくいかなくて……。
(raidtools は Slackware 8.1 の initrd にも含まれています。uClibc 環境なので、使えるんじゃな
いだろうか?)
4.kernelをRAIDを有効にして作り直して vmlinuz として /isoimage/isolinux 以下に置く。
この際、ついでに最新の 2.4.19 を使用。
/isoimage/isolinux/config を /usr/src/linux/.config として使い、RAID を有効にする。
modules は、/initrdroot/lib/modules 以下に置く。(古いモジュールは削除する)
5./initrdroot/sbin/probe を修正し、RAID パーティションを認識するようにする。
いちばん下に patch を書いておきますが、「動けばいいや!」っていういい加減なパッチです。
6.initrd.gz を作り、/isoimage/isolinux 以下に置く。
initrd.gz を作る手順はこんな感じ。(オリジナルよりかなり大きいですが、ブートできました)
dd if=/dev/zero of=initrd bs=8388608 count=1
losetup /dev/loop0 initrd
mke2fs /dev/loop0 -N 2048
mount /dev/loop0 /mnt
cd /initrdroot
cp -a * /mnt
umount /mnt
gzip initrd
7.ここは別マシンで作業。
既にインストールされたイメージをtar+gzipで固めて、ftp などで /isoimage 以下にコピーする。
これで RAID対応のリカバリーCDとして使えるわけです。
ブートローダは grub でなければなりません。
私はPlamo-3.0 のおすすめインストール(約1GB)を丸ごと固めてみました。(圧縮後は350MB)
RAIDの作成が多少面倒ですが、tar+gzipで固める前に以下の作業をしておくと楽です。
・/etc/raidtab を作っておき、
・/etc/fstab の / を /dev/md0 にマウントするようにし、
・/etc/grub.conf では root=/dev/md0 としておく。
・/boot/grub/menu.lst -> /etc/grub.conf のリンクを張っておく
ついでに /root あたりに、grub のインストールスクリプトを置いておく。
ファイル名は raid1.grub とでもしておく。(下記)
#!/bin/sh
/usr/sbin/grub --batch <<EOF
device (hd0) /dev/hda
root (hd0,0)
install /boot/grub/stage1 (hd0,0) /boot/grub/stage2 0x8000 (hd0,0)/boot/grub/menu.lst
install /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,0)/boot/grub/menu.lst
device (hd0) /dev/hdb
root (hd0,0)
install /boot/grub/stage1 (hd0,0) /boot/grub/stage2 0x8000 (hd0,0)/boot/grub/menu.lst
install /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,0)/boot/grub/menu.lst
quit
EOF
8.CD-Rに焼きます。
/ にて
/opt/schily/bin/mkisofs -R -v -J -o isoimage.iso -b isolinux/isolinux.bin -c
isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table isoimage
を実行し、できた isoimage.iso を焼けば良いわけです。
これで /dev/hda1 と /dev/hdb1 を RAID1 で /dev/md0 とした「限定された」環境にインストールする
準備ができます。
Plamo-3.0 インストールCDを作るには、パッケージ中の kernel を RAID 対応にしなければならないが、
やってみたらどうなるだろう?(一応、今のところ成功していません)
9.インストールする
CD-Rブートして、HDD のパーティションを切る
RAID1 の設定をしてマウントしておく。
/mnt を対象のルート・パーティションになるようにする。
mount /cdrom
cd /cdrom
tar pzxf image.tgz -C /mnt
これで元のイメージが展開されます。
pオプションは重要です。パーミッション情報を元通りにしてくれます。
10.grub をインストールする
/root 以下に置いた raid1.grub を実行する。
11.マウントをすべて解除して再起動
というわけで、Plamo-3.0 を RAID1 をルート・パーティションとして、
/dev/hda、/dev/hdb どちらからでも起動する環境ができあがりました。
今、手元で元気に動いてます。
以下、probe へのいいかげんなパッチ
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
--- probe 2001-06-03 04:50:47.000000000 +0900
+++ probe 2002-11-06 12:53:24.000000000 +0900
@@ -5,6 +5,11 @@
TMP=/var/log/setup/tmp
rm -f $TMP/SeTfdisk
+# list raid major=9 minor=0..15 by H.Kasai
+list_raid() {
+ echo "/dev/md$1 0 0 $2 83 Linux RAID (Dummy)"
+}
+
# listide major minor hd1 hd2 (2 base devs for major)
list_ide() {
if [ "$2" = "0" ]; then
@@ -56,15 +61,18 @@
fi
}
-if cat /proc/partitions | grep / 1> /dev/null 2> /dev/null ; then # new
- cat /proc/partitions | grep / | while read line ; do
+if cat /proc/partitions 1> /dev/null 2> /dev/null ; then # new
+ cat /proc/partitions | while read line ; do
SMASHED_LINE=$line
MAJOR=`echo $SMASHED_LINE | cut -f 1 -d ' '`
MINOR=`echo $SMASHED_LINE | cut -f 2 -d ' '`
+ MDBLOCKS=`echo $SMASHED_LINE | cut -f 3 -d ' '`
if [ "$MAJOR" = "3" ]; then
list_ide $MAJOR $MINOR hda hdb
elif [ "$MAJOR" = "8" ]; then
list_scsi $MINOR
+ elif [ "$MAJOR" = "9" ]; then
+ list_raid $MINOR $MDBLOCKS
elif [ "$MAJOR" = "22" ]; then
list_ide $MAJOR $MINOR hdc hdd
elif [ "$MAJOR" = "33" ]; then
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
===========================
笠井 宗
http://www.heart-pot.co.jp/
[検索ページ]
[メール一覧]
Plamo ML 公開システム