I want to use UML because I'm building a little uclibc-based distro that has a problem when the system it's building on has a kernel older than the one it's building. I'm testing the build under knoppix (2.6.7 kernel) and building a C library against Maszur's 2.6.9 or 2.6.10 kernel headers, and as soon as I try to run any of the utilities linked against this under the old kernel, they segfault. Obvious solution: instead of doing a chroot for the second half of the build, fire up User Mode Linux built from the newer kernel. Unfortunately, it hasn't been that easy. Using the stock 2.6.9 and 2.6.10 kernels, I built a fairly stripped down version of UML (the config I just used for 2.6.10 is attached), and ran it against the root partition of my little "firmware linux" distro (uclibc based) like so: ./vmlinux rootfstype=hostfs rootflags=/home/knoppix/newbuild/build \ init=/bin/sh (A copy of that root partition is available on request; the bzipped tarball is about 12 megabytes. Or you could concievably build a "somewhat out of date but still shows the problem" version of it yourself from the stuff up on "http://www.landley.net/code/firmware". Yes this is a strange environment, it's a development system with gcc and binutils, but I replaced all the GNU utilities with busybox. Yes, I got it to work. Mostly. :) Under the UML built from stock 2.6.9 sources, after some tweaking I got it to sort of boot and give me a shell prompt about 1/3 of the time (the other 2/3 of the time it paniced during boot due to various race conditions, but trying it several times in a row usually got me to the shell prompt). I couldn't figure out any way to make it start with a readable hostfs by default, but "mount -o remount,rw / /" once it was up seemed to do the trick, and I can put that in an init script no problem. (And yes it worked: I could create files and have them show up in the host system.) But when trying to compile "hello world", gcc died saying it couldn't find ld. This exact filesystem worked fine chrooting into it on the host kernel, a knoppix system running 2.6.7. Gcc worked great, my whole distro can recompile itself under itself. (For the moment, I'm working around the problem that makes me want to use UML by using maszur's old 2.6.6 kernel headers to build uclibc against.) So I thought "ok, they'll fix it up in 2.6.10". My first attempt at building UML from that at work the build broke saying it had a duplicate symbol definition (even after make clean). Trying again with a clean tarball and not switching so much .config stuff off, I got a UML that worked enough to let me run it against a Red Hat Enterprise Server 2.1 partition I had lying around, which actually built a small software package successfully (if very, very slowly: a dual 3ghz pentium 4 compiling slower than my 700 mhz laptop). But it hung hard (and reproducibly, after a kill and a restart) when I tried to tab complete something in bash. Had to kill it from another window. Oh, and it always dumped a stack trace on bootup, right before it gave me a shell prompt. I don't know why. So now I'm trying it on my laptop. I compiled with the attached configuration (again, stock 2.6.10 source), ran it with a hostfs root partition pointing at my little uclibc system, and it panics on startup every time. So far, I've seen three different types of panics at different points in the boot process: mconsole (version 2) initialized on /home/knoppix/.uml/WGIHE3/mconsole audit: initializing netlink socket (disabled) audit(300.210:0): initialized Initializing Cryptographic API Kernel panic - not syncing: fix_range fixing wrong address space, current = 0xa0cb90a0 mconsole (version 2) initialized on /home/knoppix/.uml/0o1hM7/mconsole Kernel panic - not syncing: read of switch_pipe failed, errno = 9 And another one that's basically the second one with errno=0. What I haven't seen yet is the shell prompt. The host system (my laptop) has been steady as a rock for three months, it's not bad memory or anything. I'm guessing the 2.6.9 instabity might have been because I'm trying to use hostfs, but the panics I'm getting with 2.6.10 happen before it tries to mount the root partition. I'm probably doing something wrong, but I have no idea what. So my first question: Is there something other than the released kernel I should be trying? There used to be a seperate UML tree, but all I can find is 2.4, which doesn't interest me... Jeff's patch directory (which I found through his blog) is almost entirely x86-64 patches, and my laptop's x86. If I should be over on the -user list, I can do that, but I know exactly what I want to get this thing to do, and at this point expect to have to poke around in the code to get it to actually do it. I've read through tutorials on setting up virtual crossover cables and virtual hubs and it doesn't apply to me. I'm trying for a VERY simple setup: my UML doesn't need more networking than loopback, doesn't need swap, doesn't need module support... It doesn't need more than /dev/console attached to stdin and stdout, and enough of a root partition for me to compile stuff under it in a way that the syscalls made by a uclibc more recent than the kernel in the host system don't cause a problem. Rob