ext2からext3への変換方法


☆ 日付 2001.09.05

☆ 必要なもの
ftp://ftp.linux.org.uk/pub/linux/sct/fs/jfs/
ext3-0.0.7a.tar.gz
ftp://ftp.jaist.ac.jp/pub/os/linux/Vine/VineSeed/SRPMS/
e2fsprogs-1.23-0vl1.src.rpm
kernel-2.2.19.tar.gz
pcmcia-cs-3.1.28.tar.gz
userlink-0.99c.tar.gz

☆ インストール
% rpm --rebuild e2fsprogs-1.23-0vl1.src.rpm
% rpm -Uvh e2fsprogs-devel-1.23-0vl1
% rpm -Uvh e2fsprogs-1.23-0vl1
(fsck等をext3対応にしておくため)
# cd /usr/src/
# tar -xzvf kernel-source-2.2.19.tar.gz
# tar -xzvf ext3-0.0.7a.tar.gz
# mv linux linux-2.2.19
# ln -s linux-2.2.19 linux
# cd linux
# cat ../ext3-0.0.7a/linux-2.2.19.ext3.diff | patch -p1
# cat ../ext3-0.0.7a/linux-2.2.19.kdb.diff | patch -p1
(途中パッチ宛に失敗するものもあるがそれはSkip)
# make menuconfig
Filesystems -> Second extended fs development code [yes]
# make clean dep bzImage modules modules_install
# /sbin/installkernel 2.2.19 arch/i386/boot/bzImage System.map
# modprobe loop
# mkinitrd /boot/initrd-2.2.19.img 2.2.19ext3
# vi /etc/lilo
image=/boot/vmlinuz-2.2.19
label=new
read-only
root=/dev/hda6
initrd=/boot/initrd-2.2.19ext3.img
append="ide2=0x180,0x386 apm=power-off"
を追加
# /sbin/lilo
# reboot

これでカーネル再構築成功。
再起動後に/proc/filesystemsの中に
ext3があれば認識もおっけー。
後はPCMCIA, PPXPを再度コンパイルし直す必要あり。

# cd ../
# pwd
/usr/src
# tar -xzvf pcmcia-cs-3.1.28.tar.gz
# cd pcmcia-cs-3.1.28
# make config
(全部デフォルトつまり、Enterだけでよい)
# make all
# make install
# pwd
/usr/src
# tar -xzvf userlink-0.99c.tar.gz
# cd userlink-0.99c
# ./configure
# make clean
# make
# make install
# reboot

LILO起動時に、
LILO: new 1
(シングルユーザモードで起動)
ここからがやっとext3に変換する手段。

Single User Mode
# mount

..../home
..../

と二つしか作ってないので、とりあえずこの二つで試してみる。
# umount /home
まずは/homeのマウントをはずす
# tune2fs -J size=8 /dev/hda3
(/dev/hda3 = /home)
まずはext3対応にファイルシステムをコンバート。
Jオプションでjournalファイルのサイズを指定。
単位はMB
# mount /home
# dd if=/dev/zero of=/home/journal.dat bs=8k count=1000
(8MBのjounalファイルをext3に変換したいパーティションの
ルート部分に置く。今回は8MB程度にした。
# ls -i /home/journal.dat
282 ...... journal.dat
(journal.datのinode番号を調べる。私は282だった)
# chaddr +i /home/journal.dat
(システムファイルロックの属性を加える。つまり消すことができない
ファイルにしておく)
# umount /home
# mount -t ext3 /dev/hda3 /home -o journal=282
(最初のマウント時だけjournalオプションをつけておく)
# mount
/dev/hda3 on /home type ext3 (rw,journal=232)
と出ていたらOK
# vi /etc/fstab
hda3のファイルシステムをext2からext3に変換しておく

次にルートシステムもext3にする。
ルートシステムはマウントをはずせないためにliloにオプションを
渡すことになる。
# tune2fs -J size=8 /dev/hda6
(/dev/hda6 = /)
# dd if=/dev/zero op=/journal.dat bs=8k count=1000
# ls -i /journal.dat
88 ...... journal.dat
# chaddr +i journal.dat
# /sbin/lilo -R new rw rootflags=journal=88
(newはliloのラベルであるため、私はnewにしているがたいていは
linuxではなかろうか、、、。/etc/lilo.confのlabel項目を確認すべし)
# reboot
問題なく動作したら
# vi /etc/fstab
hda6のファイルシステムをext2からext3に変換しておく

ここで注意)最後のreboot前に/etc/fstabを書き換えてしまった場合には
起動時にマウントエラーがでる。その場合にはCtrl-Dでリブートすること
でちゃんと認識される。