You may want to create and mount new UML filesystems, either because your root filesystem isn't large enough or because you want to use a filesystem other than ext2.
This was written on the occasion of reiserfs being included in the 2.4.1 kernel pool, and therefore the 2.4.1 UML, so the examples will talk about reiserfs. This information is generic, and the examples should be easy to translate to the filesystem of your choice.
dd is your friend. All you need to do is tell dd to create an empty file of the appropriate size. I usually make it sparse to save time and to avoid allocating disk space until it's actually used. For example, the following command will create a sparse 100 meg file full of zeroes.
host%
dd if=/dev/zero of=new_filesystem seek=100 count=1 bs=1M
Add an argument like the following to the UML command line:
ubd4=new_filesystem
making sure that you use an unassigned ubd device number.
Make sure that the filesystem is available, either by being built into the kernel, or available as a module, then boot up UML and log in. If the root filesystem doesn't have the filesystem utilities (mkfs, fsck, etc), then get them into UML by way of the net or hostfs.
Make the new filesystem on the device assigned to the new file:
host# mkreiserfs /dev/ubd/4
<----------- MKREISERFSv2 ----------->
ReiserFS version 3.6.25
Block size 4096 bytes
Block count 25856
Used blocks 8212
Journal - 8192 blocks (18-8209), journal header is in block 8210
Bitmaps: 17
Root block 8211
Hash function "r5"
ATTENTION: ALL DATA WILL BE LOST ON '/dev/ubd/4'! (y/n)y
journal size 8192 (from 18)
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..done.
Now, mount it:
UML#
mount /dev/ubd/4 /mnt
and you're in business.