From: Matt Z. <md...@de...> - 2002-03-16 03:07:29
Attachments:
rootstrap.conf
|
I recently uploaded rootstrap to Debian unstable. I wanted a tool to quickly and easily create Debian root filesystems for UML, and ended up polishing it a little and releasing it. It uses UML and a tiny cramfs filesystem to bootstrap itself, so the entire process can be done without root privileges (thanks to Jeff, who I believe gave me that idea originally). It reads a configuration file like the one attached, and executes a sequence of modules (currently shell scripts) to build the system. It mounts large portions of the host filesystem via hostfs, so tools from the host system are made available during the build process. Currently, it only builds Debian filesystems, but that part of the process is just one module, and modules for other systems could be created easily by someone with knowledge of their workings. I would very much welcome such contributions. The entire process is reduced to a single command line, which is typically just "rootstrap <output file>". It takes about 3 minutes to build a woody filesystem here (where I have all the necessary packages in a squid cache). It naturally takes longer if it has to download all 25MB worth of packages. I have found it to be pretty valuable for building up-to-date images for testing package builds and such, and would appreciate feedback from anyone else who might find it useful. Version 0.2.1 is available from http://http.us.debian.org/debian/pool/main/r/rootstrap/ or through the usual APT channels. -- - mdz |
From: Jeff D. <jd...@ka...> - 2002-03-16 05:28:07
|
md...@de... said: > I recently uploaded rootstrap to Debian unstable. I wanted a tool to > quickly and easily create Debian root filesystems for UML, and ended > up polishing it a little and releasing it. It uses UML and a tiny > cramfs filesystem to bootstrap itself, so the entire process can be > done without root privileges (thanks to Jeff, who I believe gave me > that idea originally). Nice. Can you send me a set of values to stick in the table at the top of http://user-mode-linux.sf.net/fs_making.html (assuming you want an entry there :-) ? The rule for 'does your tool support Blah' is whether, when installing it and just running it, do you have the option of having the resulting filesystem do Blah? Also a little blurb that I can use further down the page would be good. Otherwise, I'll just cons one up from this announcement. Jeff |
From: Matt Z. <md...@de...> - 2002-03-16 16:06:24
|
On Sat, Mar 16, 2002 at 12:30:18AM -0500, Jeff Dike wrote: > md...@de... said: > > I recently uploaded rootstrap to Debian unstable. I wanted a tool to > > quickly and easily create Debian root filesystems for UML, and ended > > up polishing it a little and releasing it. It uses UML and a tiny > > cramfs filesystem to bootstrap itself, so the entire process can be > > done without root privileges (thanks to Jeff, who I believe gave me > > that idea originally). > > Nice. > > Can you send me a set of values to stick in the table at the top of > http://user-mode-linux.sf.net/fs_making.html (assuming you want an entry > there :-) ? I guess it would go something like this: Most suitable for Debian users Needs root/sudo No Command line Yes Graphical No Sets up networking No Sets up X No > The rule for 'does your tool support Blah' is whether, when installing it > and just running it, do you have the option of having the resulting > filesystem do Blah? I haven't put much effort into trying to make the resulting system do all sorts of neat things, but just getting a filesystem built as quickly and easily as possible. I just now added an option to the debian module to have it install additional packages after everything is set up, and that will essentially provide X. Network setup could presumably be done based on the configuration supplied for installation, but I haven't bothered with it. > Also a little blurb that I can use further down the page would be good. > Otherwise, I'll just cons one up from this announcement. Looking at the things that are there, I guess the only thing interesting about rootstrap at this point is that it can build Debian systems. I guess a blurb about it being new and under development would be appropriate. All of these kinds of tools would benefit from a generalized virtual networking facility, like the one that we discussed a while back. I really haven't had the time to sit down and write it, but it would make it possible to build a filesystem for UML with no configuration at all. This is currently possible with rootstrap, but only if you have a local copy of all of the necessary packages. Downloading them from a network is probably much more common, but requires that network configuration data be specified. I'm thinking about limiting the scope of the hypothetical tool so that I can actually get it done in a free hour. It really only needs to read a config file with a list of users and IP addresses in order to be useful; the rest of the functionality (generalizing the host side into a library) can wait. -- - mdz |
From: Matt Z. <md...@de...> - 2002-03-17 01:03:47
|
On Sat, Mar 16, 2002 at 11:04:49AM -0500, Matt Zimmerman wrote: > On Sat, Mar 16, 2002 at 12:30:18AM -0500, Jeff Dike wrote: > > > md...@de... said: > > > I recently uploaded rootstrap to Debian unstable. I wanted a tool to > > > quickly and easily create Debian root filesystems for UML, and ended > > > up polishing it a little and releasing it. It uses UML and a tiny > > > cramfs filesystem to bootstrap itself, so the entire process can be > > > done without root privileges (thanks to Jeff, who I believe gave me > > > that idea originally). > > > > Nice. > > > > Can you send me a set of values to stick in the table at the top of > > http://user-mode-linux.sf.net/fs_making.html (assuming you want an entry > > there :-) ? I have placed UML-ready images for Debian 2.2r5 (potato) and a current snapshot of woody at: http://people.debian.org/~mdz/uml/ If you would like to link there from someplace as well. I can update the woody image from time to time if there is interest. -- - mdz |
From: Matt Z. <md...@de...> - 2002-03-16 17:28:39
|
And no sooner do I announce this than it breaks...debootstrap 0.1.17 just hit the archive, and rootstrap no longer works (though it does with 0.1.16.4). It looks like yet another race that only occurs under UML (debootstrap 0.1.17 works fine outside of UML) A very similar problem has always occurred when I tried to build potato systems with rootstrap, but I ignored it because I don't build potato images very often, and it's possible to work around the problem. This new incarnation, though, is very painful to work around. The old symptom (debootstrap 0.1.16.4 and potato installation) was that the installation would hang during the postinst of perl-5.005-base. A copy of that script is attached. If I strace the hung process inside UML (a shell), I get: write(1, "\n", 1) = -1 EPIPE (Broken pipe) --- SIGPIPE (Broken pipe) --- At which point strace exits, but the process does not. I can repeat this as many times as I like with the same result. If I send a SIGHUP to the process, everything continues on, and installation is successful. So I never bothered tracking it down. The new problem (debootstrap 0.1.17 and woody) manifests itself as a similar hang during configuration of base-files, which is the second package configured. strace inside UML produces suspiciously similar results: write(1, "\n", 1) = -1 EPIPE (Broken pipe) --- SIGPIPE (Broken pipe) --- The key seems to be that in 0.1.16.4, debootstrap runs "smallyes ''", where smallyes is a shell function: smallyes() { YES="${1-y}" while true ; do echo "$YES" ; done } and pipes the output into for dpkg --configure perl-5.005-base. debootstrap 0.1.17 does the equivalent for all packages. It appears to be this echo which I am seeing in strace above. I would think that after receiving SIGPIPE, the while loop would be broken, but it doesn't seem to happen that way, and the process goes on forever. Indeed, if I replace 'echo' (shell builtin) with /bin/echo, I get: /bin/echo: write error: Broken pipe after each package configuration, and installation continues, though much more slowly. This problem goes away if I replace my shell (ash) with bash, so I suspect this is an ash bug. I can't seem to reproduce it outside of UML, though. Any ideas? -- - mdz |
From: Jeff D. <jd...@ka...> - 2002-03-16 19:18:16
|
md...@de... said: > This problem goes away if I replace my shell (ash) with bash, so I > suspect this is an ash bug. I can't seem to reproduce it outside of > UML, though. That would be attractive :-) umlbuilder has the same problem, BTW. It 'yes | mkfs ...', and the yes keeps running after the mkfs has exited. I haven't had a chance to look at it yet. Jeff |
From: Matt Z. <md...@de...> - 2002-03-16 21:09:57
|
On Sat, Mar 16, 2002 at 02:21:08PM -0500, Jeff Dike wrote: > md...@de... said: > > This problem goes away if I replace my shell (ash) with bash, so I > > suspect this is an ash bug. I can't seem to reproduce it outside of > > UML, though. > > That would be attractive :-) > > umlbuilder has the same problem, BTW. It 'yes | mkfs ...', and the yes keeps > running after the mkfs has exited. > > I haven't had a chance to look at it yet. I wonder why it always happens with ash, and never with bash, on my system. bash is considerably heavier, I guess, so its scheduling characteristics could be different. I assume you're using bash with umlbuilder? -- - mdz |