From: Roger B. <ro...@ro...> - 2002-09-23 04:52:36
|
> Since a large part (for me) of using UML is so they don't need root > access, I decided I needed another way (I didn't want to have to > mount them myself, and a "user" in fstab entry seemed unclean. You might also want to check out what I did in UML Builder. It actually automatically updates your modules if you installed a different (presumably newer) version of UML. The way it does this is by including a miniroot filesystem. You can find this as /usr/lib/uml/umlbuilder/profiles/miniroot (it is ext2). init in that filesystem is a shell script that then obeys the command line given. The usage message is given below. It accesses the modules.tar file via hostfs, and can play with the necessary filesystems via direct mounts. It also does neat things like resizing and even changing the types of filesystems (basically mount the files as ubd0 and ubd1, mkfs -t newtype ubd1, cpio files over). There is a wrapper script (written in Python) that invokes the miniroot correctly (it does things like ensure that all filenames are absolute). $ umlbuilder_miniroot usage: miniroot [--modules modules.tar] [--scratch scratchdir] [--binary linux] [--profiledir dir] [--root fs] command parameters Options: --modules m Points to a different file to get modules from --scratch d Points to a directory that is used for temp working files --binary l Points to the binary used to get UML --profiledir d Points to the directory containing miniroot filesystem and some helper programs --root f Points to the root file (mandatory for some commands) Commands: mkinitrd filename [mods...] Creates an initial ramdisk named 'filename'. You can cause additional modules to be included by listing them after filename. You must use the --root option. rescue [params] Gets you an interactive prompt. You should add params of ubd[0-6] pointing at any files you intend to work on. installmods Installs modules into a root filesystem. You must use the --root option. resize file newsize [type] Resizes a filesystem. newsize is the new size in megabytes. You can also change the type by specifying it. Note that this command works by creating the new file, copying the contents of the old one into it, and then replacing the original with the new one assuming all went well. The new file is created alongside the old one so you must have space for both while things are working. The new file is created as a sparse file, so only the space you use will be physically consumed. For the developers amongst you, you can see the CVS of the driver script http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/umlbuilder/umlbuilder/miniroot/driver.sh Roger |