VKernel progress update - 11 Jan 2007
YONETANI Tomokazu
qhwt+dfly at les.ath.cx
Fri Jan 12 09:10:37 PST 2007
On Thu, Jan 11, 2007 at 10:08:56PM -0800, Matthew Dillon wrote:
> The virtual kernel is a lot more stable now. My vkernel paniced
> once while I was doing an installworld... it ran out of room in
> its kernel_map. I haven't tracked down the reason for that.
Hi, I played with vkernel for a while today, and here are what I noticed:
- vkernel occasionally fails to find the root fs, and in particular,
if I start it with MALLOC_OPTIONS=AJ and it always panics right after
printing the copyright messages:
panic: pmap_zero_page: CMAP3 busy
Trace beginning at frame 0xbfbff850
Fatal trap 12: page fault while in kernel mode
fault virtual address = 0x0
fault code = supervisor read, page not present
instruction pointer = 0x1f:0x81e75c1
stack pointer = 0x10:0xbfbff4f8
frame pointer = 0x10:0xbfbff7b0
processor eflags = interrupt enabled, resume, IOPL = 0
current process = 0 ()
current thread = pri 76 (CRIT)
kernel: type 12 trap, code=4
Stopped at 0x81e75c1: cmpb %al,0(%edx)
using MALLOC_OPTIONS=Z always let me go to single user mode, or
just before "login:" prompt.
- if I type ctrl+T (SIGINFO) and vkernel immediately terminates, and
I need to run fsck in the next boot. Is this intended?
- the vkernel environment won't make it into "login:" prompt (that was
when I pressed ctrl+T :), and when I dropped into DDB in vkernel,
I couldn't find getty running. I don't usually login on the console
to this machine, is it related? this is what I got in single user mode
in vkernel:
# tty
/dev/console
# tty < /dev/ttyv0
cannot open /dev/ttyv0: Device not configured
# tty < /dev/ttyp0
(I pressed ctrl+C here)
^Ccannot open /dev/ttyp0: Interrupted system call
- how can I boot vkernel in single user mode? I added the following change
locally because I couldn't find it elsewhere. maybe useful for
maintenance or debugging purpose.
Cheers.
Index: platform/init.c
===================================================================
RCS file: /home/source/dragonfly/cvs/src/sys/machine/vkernel/platform/init.c,v
retrieving revision 1.21
diff -u -r1.21 init.c
--- platform/init.c 11 Jan 2007 10:08:25 -0000 1.21
+++ platform/init.c 12 Jan 2007 16:43:21 -0000
@@ -41,6 +41,7 @@
#include <sys/mman.h>
#include <sys/cons.h>
#include <sys/random.h>
+#include <sys/reboot.h>
#include <sys/vkernel.h>
#include <sys/tls.h>
#include <sys/proc.h>
@@ -114,7 +115,7 @@
/*
* Process options
*/
- while ((c = getopt(ac, av, "vm:r:e:I:")) != -1) {
+ while ((c = getopt(ac, av, "svm:r:e:I:")) != -1) {
switch(c) {
case 'e':
/*
@@ -131,6 +132,9 @@
kern_envp[i++] = 0;
kern_envp[i++] = 0;
break;
+ case 's':
+ boothowto |= RB_SINGLE;
+ break;
case 'v':
bootverbose = 1;
break;
More information about the Kernel
mailing list