[Momonga-devel.ja:00155] uml あれこれ


かずひこです。

最近、uml でいろいろいじっていますが、いくつか疑問がでてきました。

● xfs で initrd が作れない

まず
tar xzf /usr/lib/uml/modules.tar.gz -C /
として、xfs が /etc/fstab にある状態で mkinitrd しようとしました。

$ sudo mkinitrd -v test.img 2.4.18-102m-35um 
Using modules:  ./kernel/fs/xfs_support/xfs_support.o ./kernel/fs/xfs_dmapi/xfs_dmapi.o ./kernel/fs/xfs/xfs.o
Using loopback device /dev/loop0
/sbin/nash -> /tmp/initrd.l32560/bin/nash
/sbin/insmod.static -> /tmp/initrd.l32560/bin/insmod
`/lib/modules/2.4.18-102m-35um/./kernel/fs/xfs_support/xfs_support.o' -> `/tmp/initrd.l32560/lib/xfs_support.o'
`/lib/modules/2.4.18-102m-35um/./kernel/fs/xfs_dmapi/xfs_dmapi.o' -> `/tmp/initrd.l32560/lib/xfs_dmapi.o'
`/lib/modules/2.4.18-102m-35um/./kernel/fs/xfs/xfs.o' -> `/tmp/initrd.l32560/lib/xfs.o'
Loading module xfs_support
Loading module xfs_dmapi
Loading module xfs
tar: ./lib/xfs.o: Wrote only 3584 of 10240 bytes
tar: Skipping to next header
tar: Error exit delayed from previous errors

これが uml なカーネルでなければあっさりと作れるので、モジュールのサイズ
を調べてみました。

$ du -s /lib/modules/2.4.18-102m*/kernel/fs/xfs*/*o
19164   /lib/modules/2.4.18-102m-35um/kernel/fs/xfs/xfs.o
3728    /lib/modules/2.4.18-102m-35um/kernel/fs/xfs_dmapi/xfs_dmapi.o
1288    /lib/modules/2.4.18-102m-35um/kernel/fs/xfs_support/xfs_support.o
592     /lib/modules/2.4.18-102m/kernel/fs/xfs/xfs.o
52      /lib/modules/2.4.18-102m/kernel/fs/xfs_dmapi/xfs_dmapi.o
20      /lib/modules/2.4.18-102m/kernel/fs/xfs_support/xfs_support.o

このように、uml なカーネルだと、通常のカーネルに比べて異様に大きいくて
ramdisk に入りきらないのが問題だと思います。そこで、/sbin/mkinitrd の
  IMAGESIZE=8192
を
  IMAGESIZE=81920
としてみたら無事作れました。しかし、実際に起動しようとすると、

$ linux initrd=test.img ubd0=/tmp/xfs.fs
(snip)
RAMDISK: Compressed image found at block 0
Freeing initrd memory: 7082k freed
VFS: Mounted root (ext2 filesystem).
attempt to access beyond end of device
01:00: rw=0, want=65542, limit=8192

となって、やはりだめです。

しかしなぜ uml カーネルのモジュールはこんなに巨大なのでしょうか?

$ du -s /lib/modules/*
28976   /lib/modules/2.4.18-102m
107040  /lib/modules/2.4.18-102m-35um

● jfs で仮想ファイルシステムが作れない

$ dd if=/dev/zero of=/tmp/jfs.fs seek=6192 count=1 bs=1M
$ mkfs.jfs /tmp/jfs.fs
mkfs.jfs version 1.0.20, 21-Jun-2002
 is not a valid block device.

とあっさり断られます。

というわけで、現状では ext2 以外は難しそうです。

でも、ext2 ではとても安定して動いています。普段の環境は IPv4 で、uml の
中で IPv6 の環境を実験するとか、uml の中では GCC3 ブランチを試すとか、い
ろいろ使えそうです。
-- 
かずひこ@...
  ふぇみにん日記       http://www.fdiary.net/~kazuhiko/diary/
  GK Kyoto Inc.        http://www.gk-kyoto.com/
  Momonga Linux        http://www.momonga-linux.org/
  電子辞書オープンラボ http://openlab.jp/edict/
  電子書体オープンラボ http://openlab.jp/efont/