Precise Puppy 5.7.1 JPでEXT4がマウント不可

5.X系のバグ、トラブル・質問

モデレータ: 暇人, YoN, nyu

返信する
ssnys
記事: 130
登録日時: 14/02/19(水) 17:50

Precise Puppy 5.7.1 JPでEXT4がマウント不可

投稿記事 by ssnys »

Precise Puppy 5.7.1 JPでは一部のEXT4についてマウント不可が前々から確認されていました。この度S15Pup32のアップデートにあたり、Precise Puppy 5.7.1 JPからEXT4のマウントが必要になり調べながら、解決してみました。S15Pup32がインストールされている媒体はHDD(/dev/sda2)のEXT4です。EXT4のフォーマットはS15Pup32で行ったものです。

コード: 全て選択

# mount -t ext4 /dev/sda2 /mnt/sda2
単純に以上のようなコマンドを実行しても、「wrong fs type, 〜」のようなエラーメッセージが表示されてしまい、マウントできません。Precise Puppy 5.7.1はEXT4に対応しているのですが、最新のEXT4には対応していないためエラーが生じるようです。

コード: 全て選択

# demsg | tail
で「EXT4-fs (sda2): couldn't mount RDWR because of unsupported optional features (400)」と表示されており、次のコマンドで

コード: 全て選択

# dumpe2fs /dev/sda2 | grep -i 'Filesystem features'
この実行結果にmetadata_csumが含まれている場合、まずこのオプションを無効化する必要があります。無効化にはtune2fs(e2fsprogs)を使用するのですが、Precise Puppy 5.7.1 JPではプレインストールされているこのツールが古いので新しい新しいものをビルドしてインストールする必要があります。

まずe2fsprogsをダウンロードします。記事執筆時点での最新版は1.47.1です。Linuxカーネルに関するヘッダーのsfsを読み込んだ上で、まずダウンロードしたe2fsprogsのmisc/Makefile.inの429行目を次のように修正します。

コード: 全て選択

--- a/misc/Makefile.in
+++ b/misc/Makefile.in
@@ -426,7 +426,7 @@
 	$(E) "	LD $@"
 	$(Q) $(CC) $(ALL_LDFLAGS) -o fuse2fs $(FUSE2FS_OBJS) $(LIBS) \
 		$(LIBFUSE) $(LIBBLKID) $(LIBUUID) $(LIBEXT2FS) $(LIBINTL) \
-		$(CLOCK_GETTIME_LIB) $(SYSLIBS)
+		-lrt $(SYSLIBS)
 
 journal.o: $(srcdir)/../debugfs/journal.c
 	$(E) "	CC $<"
準備が整ったらビルドしていきます。

コード: 全て選択

# ./configure
# make
# make install
metadata_csumを無効化します。

コード: 全て選択

# tune2fs -O ^metadata_csum /dev/sda2
# fsck.ext4 -f /dev/sda2
これでマウント出来るかと思いきや、今度はまたmountコマンド実行時に同じエラーメッセージが表示されてマウントできません。再びdemsg | tailで確認すると、

コード: 全て選択

[ 9265.281937] JBD2: Unrecognised features on journal
[ 9265.281957] EXT4-fs (sda2): error loading journal
今度はジャーナルを作り直す必要があるようです。

コード: 全て選択

# tune2fs -O ^has_journal /dev/sda2
# fsck.ext4 -f -C0 /dev/sda2
# tune2fs -j /dev/sda2
これでようやくマウント出来るようになります。

コード: 全て選択

# mount -t ext4 /dev/sda2 /mnt/sda2
時の流れではありますが、相変わらずPrecise Puppy 5.7.1では何をやるのも一苦労です。マウントするだけでかなり時間を使ってしまい、アップデートどころではなくなってしまいました。

ちなみに読み込みのみのマウントならば、次のコマンドで何も差し支えありません。

コード: 全て選択

# mount -o ro,noload -t ext4 /dev/sda2 /mnt/sda2
💻 Lenovo G550(CPU: Intel Celeron 900 @ 2.20GHz, RAM: 971MB, HDD: 149.05GiB) + Precise-571JP
🖥 HITACHI FLORA 310 DL7(CPU: Intel Pentium III 700 MHz, RAM:512MB, HDD: 34.64GiB) + Precise-571JP / S15Pup32
Puppy Linux関連ファイル - トピック
返信する