Creating filesystems

Site Home Page The UML Wiki UML Community Site The UML roadmap What it's good for Case Studies Kernel Capabilities Downloading it Running it Compiling Installation Skas Mode Incremental Patches Test Suite Host memory use Building filesystems Troubles User Contributions Related Links The ToDo list Projects Diary Thanks Contacts
Tutorials The HOWTO (html) The HOWTO (text) Host file access Device inputs Sharing filesystems Creating filesystems Resizing filesystems Virtual Networking Management Console Kernel Debugging UML Honeypots gprof and gcov Running X Diagnosing problems Configuration Installing Slackware Porting UML IO memory emulation UML on 2G/2G hosts Adding a UML system call Running nested UMLs
How you can help Overview Documentation Utilities Kernel bugs Kernel projects
Screenshots A virtual network An X session
Transcripts A login session A debugging session Slackware installation
Reference Kernel switches Slackware README
Papers ALS 2000 paper (html) ALS 2000 paper (TeX) ALS 2000 slides LCA 2001 slides OLS 2001 paper (html) OLS 2001 paper (TeX) ALS 2001 paper (html) ALS 2001 paper (TeX) UML security (html) LCA 2002 (html) WVU 2002 (html) Security Roundtable (html) OLS 2002 slides LWE 2005 slides
Fun and Games Kernel Hangman Disaster of the Month
| ### Creating filesystems 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.
Create the filesystem file
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`
Assign the file to a UML device
Add an argument like the following to the UML command line: `ubd4=new_filesystem` making sure that you use an unassigned ubd device number.
Creating and mounting the filesystem
> 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.

Hosted at