From: Jon R. <ra...@cs...> - 2007-08-29 05:44:44
|
I'm trying to use UML so that I can hack on linux a bit but am having trouble getting UML up and running. Initially I tried the kernel and fs listed on the UML.sf.net site which worked ok except it didn't want to load the hostfs module so I couldn't easily copy over any files on my host system. I'd like to be able to run my own compiled kernel + my own fs even if there are ways around using hostfs. So I created an fs and loaded it with the normal stuff, /lib/ld-linux.so, etc, /bin/sh, /bin/init, /bin/sulogin. Every time I ran UML it said Warning: unable to open an initial console. I looked at the console stuff on the sourceforge page but that didn't seem to have anything to do with /dev/console. I also noticed other pages saying you have to load devfs but there are no devfs options in 2.6( my linux source is 2.6.22.4 ). Didn't udev replace it? Anyway the basic run of my kernel is $ ./linux ubd0=../image Core dump limits : soft - 0 hard - NONE Checking that ptrace can change system call numbers...OK ...more init stuff... EXT3-fs: mounted filesystem with ordered data mode. VFS: Mounted root (ext3 filesystem) readonly. Warning: unable to open an initial console Try to run /sbin/init Trying to exec /sbin/init Succeeded in running /sbin/init. Jumping to 087fefbc Trying to exec /sbin/sulogin Trying to exec /sbin/sulogin ..repeat forever.. Those last couple of lines were added by me for debugging purposes. The "Trying to exec" message comes during the execve() call at some point. /sbin/init failed to exec too until I added the right libraries to /lib. I think I have all the right libraries for /sbin/sulogin in my image but it still won't exec. Any ideas? $ ldd mnt/sbin/sulogin linux-gate.so.1 => (0xffffe000) libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7ebe000) libc.so.6 => /lib/libc.so.6 (0xb7d96000) /lib/ld-linux.so.2 (0xb7ef6000) $ ls mnt/lib/libcrypt.so.1 mnt/lib/libc.so.6 mnt/lib/ld-linux.so.2 mnt/lib/ld-linux.so.2* mnt/lib/libc.so.6* mnt/lib/libcrypt.so.1* Sorry if my email is sort of all over the place. |
From: Jeff D. <jd...@ad...> - 2007-08-29 13:32:20
|
On Tue, Aug 28, 2007 at 11:44:41PM -0600, Jon Rafkind wrote: > Every time I ran UML it said > > Warning: unable to open an initial console. This shouldn't be fatal, but you should have a /dev/console. > I think I have all the right libraries for /sbin/sulogin in my image but > it still won't exec. Any ideas? > > $ ldd mnt/sbin/sulogin > linux-gate.so.1 => (0xffffe000) > libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7ebe000) > libc.so.6 => /lib/libc.so.6 (0xb7d96000) > /lib/ld-linux.so.2 (0xb7ef6000) > $ ls mnt/lib/libcrypt.so.1 mnt/lib/libc.so.6 mnt/lib/ld-linux.so.2 > mnt/lib/ld-linux.so.2* mnt/lib/libc.so.6* mnt/lib/libcrypt.so.1* What happens if you chroot to mnt and try to run sulogin? Jeff -- Work email - jdike at linux dot intel dot com |
From: Jon R. <ra...@cs...> - 2007-08-29 15:43:34
|
>> I think I have all the right libraries for /sbin/sulogin in my image but >> it still won't exec. Any ideas? >> >> $ ldd mnt/sbin/sulogin >> linux-gate.so.1 => (0xffffe000) >> libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7ebe000) >> libc.so.6 => /lib/libc.so.6 (0xb7d96000) >> /lib/ld-linux.so.2 (0xb7ef6000) >> $ ls mnt/lib/libcrypt.so.1 mnt/lib/libc.so.6 mnt/lib/ld-linux.so.2 >> mnt/lib/ld-linux.so.2* mnt/lib/libc.so.6* mnt/lib/libcrypt.so.1* >> > > What happens if you chroot to mnt and try to run sulogin? > I was able to run sulogin at first although it complained about the password files not being there. After adding /etc/passwd and /etc/shadow I could execute sulogin just fine. # /sbin/sulogin Give root password for maintenance (or type Control-D to continue): bash-3.1# But I still can't exec it under UML. |
From: Jeff D. <jd...@ad...> - 2007-08-29 17:10:35
|
On Wed, Aug 29, 2007 at 09:43:27AM -0600, Jon Rafkind wrote: > > What happens if you chroot to mnt and try to run sulogin? > > > I was able to run sulogin at first although it complained about the > password files not being there. After adding /etc/passwd and /etc/shadow > I could execute sulogin just fine. > # /sbin/sulogin > Give root password for maintenance > (or type Control-D to continue): > bash-3.1# > > But I still can't exec it under UML. It's a 32-bit binary on a 32-bit host, or 64-on-64? Jeff -- Work email - jdike at linux dot intel dot com |
From: Jon R. <ra...@cs...> - 2007-08-29 17:13:30
|
Jeff Dike wrote: > On Wed, Aug 29, 2007 at 09:43:27AM -0600, Jon Rafkind wrote: > >>> What happens if you chroot to mnt and try to run sulogin? >>> >>> >> I was able to run sulogin at first although it complained about the >> password files not being there. After adding /etc/passwd and /etc/shadow >> I could execute sulogin just fine. >> # /sbin/sulogin >> Give root password for maintenance >> (or type Control-D to continue): >> bash-3.1# >> >> But I still can't exec it under UML. >> > > It's a 32-bit binary on a 32-bit host, or 64-on-64? > Hm, thats interesting too. My host is 64-bit which is what I copied all the files from for the UML fs. I must be compiling linux as 64-bit, though, and /sbin/init as well as /bin/sh can exec ok. |
From: Jon R. <ra...@cs...> - 2007-08-29 19:02:59
|
>>> >>> >> It's a 32-bit binary on a 32-bit host, or 64-on-64? >> >> > Hm, thats interesting too. My host is 64-bit which is what I copied all > the files from for the UML fs. I must be compiling linux as 64-bit, > though, and /sbin/init as well as /bin/sh can exec ok. > Sorry, its 32-32. My other machine is 64-bit. |
From: Jon R. <ra...@cs...> - 2007-08-29 17:10:33
|
Jon Rafkind wrote: >>> I think I have all the right libraries for /sbin/sulogin in my image but >>> it still won't exec. Any ideas? >>> >>> $ ldd mnt/sbin/sulogin >>> linux-gate.so.1 => (0xffffe000) >>> libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7ebe000) >>> libc.so.6 => /lib/libc.so.6 (0xb7d96000) >>> /lib/ld-linux.so.2 (0xb7ef6000) >>> $ ls mnt/lib/libcrypt.so.1 mnt/lib/libc.so.6 mnt/lib/ld-linux.so.2 >>> mnt/lib/ld-linux.so.2* mnt/lib/libc.so.6* mnt/lib/libcrypt.so.1* >>> >>> >> What happens if you chroot to mnt and try to run sulogin? >> >> > I was able to run sulogin at first although it complained about the > password files not being there. After adding /etc/passwd and /etc/shadow > I could execute sulogin just fine. > # /sbin/sulogin > Give root password for maintenance > (or type Control-D to continue): > bash-3.1# > > But I still can't exec it under UML. > After more debugging it appears that sulogin can be exec'd but there are other things wrong that prevent it from opening up, I was assuming this was not having /dev/console so sulogin gives up and then /sbin/init just tries to keep running /sbin/sulogin forever. /sbin/init will prompt the user if /etc/inittab does not have a field with 'initdefault' so after commenting out that field and running UML I could see /sbin/init just hang, most likely waiting for input. So, how can I get /dev/console? |
From: Jeff D. <jd...@ad...> - 2007-08-29 19:16:13
|
On Wed, Aug 29, 2007 at 11:10:28AM -0600, Jon Rafkind wrote: > After more debugging it appears that sulogin can be exec'd but there are > other things wrong that prevent it from opening up, strace will tell you if you haven't already tried that. > I was assuming this > was not having /dev/console so sulogin gives up and then /sbin/init just > tries to keep running /sbin/sulogin forever. /sbin/init will prompt the > user if /etc/inittab does not have a field with 'initdefault' so after > commenting out that field and running UML I could see /sbin/init just > hang, most likely waiting for input. > > So, how can I get /dev/console? There was no /dev/console in your chroot, so presumably that wasn't the problem. In any case, you use mknod, and look at the host to get the device type and major and minor numbers. Jeff -- Work email - jdike at linux dot intel dot com |
From: Jan W. <jan...@gm...> - 2007-08-30 08:57:02
|
Hi Jeff, Jon Rafkind wrote: > I'd like to be able to run my own compiled kernel + my own fs even if > there are ways around using hostfs. So I created an fs and loaded it > with the normal stuff, /lib/ld-linux.so, etc, /bin/sh, /bin/init, > /bin/sulogin. Every time I ran UML it said > > Warning: unable to open an initial console. I had similar problems when I tried to run my own UML guest kernel and root filesystem. In my case the problem was that I misconfigured the UML guest kernel and disabled support for xterm console. My gentoo was never able to spawn the agettys. Enabling xterm console support solved the problem for me. Also disabling all but one virtual console in inittab is a great idea. Once I had set up the sshd, I disabled all consoles and now, I log in via ssh only. > I looked at the console stuff on the sourceforge page but that didn't > seem to have anything to do with /dev/console. I also noticed other > pages saying you have to load devfs but there are no devfs options in > 2.6( my linux source is 2.6.22.4 ). Didn't udev replace it? The initial console is needed before udev is started, because the init process is started with standard output and error connected with it. Later on, after checking and mounting the root fs, udev creates device nodes in a ramdisk mounted on /dev. I think your problem is not the missing console device node but a missing feature of your uml guest kernel or permission problem to open the specified console on your host system. Maybe have a look into the chapter on console support in the linux kernel documentation in uml/UserModeLinux-HOWTO.txt. PS: For testing purposes, I ran /bin/bash instead of /bin/init. But of course, you need some libraries for that too. I would expect sulogin to start a shell anyway. You may get around some other issues like access to /etc/passwd. Hope that is of help Jan -- Jan Wolff - ja...@wo... |