On Nov 7, 2005, at 11:09 PM, Rob Landley wrote:
> On Monday 07 November 2005 23:13, Can Sar wrote:
>> I am trying to make a 1 thread version of UML that does not need to
>> be able to support user level programs.
Trust me, I wouldn't do this if it were not for a reason. I have no
intention of marketing this as a general purpose alternative to
Linux. It's to check Linux for errors.
>> So I don't care about systemcall interception or anything like that,
> *blink* *blink*
> Ok, you want user mode linux, but you don't want it to actually run
> processes, nor do want it to be able to intercept system calls.
> Um... What's left?
The ability to call the kernel implementation of some system calls
and then halt the kernel.
>> I just want a copy of
>> UML that gets a basic kernel environment running (where I could call
>> some kernel functions like sys_read or sys_open and then exit) that
>> never calls fork on the host.
> vfork, maybe?
> Have you tried just loading a module into the existing User Mode
>> Sorry if this all sounds a bit weird, it's for a research project and
>> we are trying to port UML to an environment that only supports single
>> threaded operation.
> Define "port". (Have you looked at mmu-less linux? Are you saying
> haven't got a timer interrupt and can't fake up some kind of green-
> approach like people managed to do under _DOS_?)
Well, we are trying to check Linux for security holes/bugs with a
system that does not support multithreaded programs. A former member
of our group hacked this up for UML in 2.4.19 so that it would never
use fork (it was doing it's own checkping and restore instead of
context switches). Unfortunately he also added a lot of features that
were necessary for other reasons so isolating the fork/threading code
is a nightmare. I am trying to re-implement this for 2.6.14 but it
seems UML has changed quite a bit since then.
My basic question is what the exact purpose of the 4 threads in skas
are. SIGIO and async ubd one are pretty obvious. The other two are a
bit ill-defined on the website:
"The UML kernel thread, which runs in the separate kernel address
space, executes kernel code, and does system call interception on UML
The UML userspace thread, which runs all UML process code and
switches between host address spaces on each UML context switch"
If the kernel forks a new kernel thread (e.g. kswapd), which has no
user space context associated with it, what host address space will
this show up in? Is the userspace proccess strictly for threads that
have a userspace context associated with them, or does it run every
thread that is not the original thread of execution that UML linux
was booted from.