xxxxx@hotmail.com wrote:
Well i know that it’s huge work. But what i need to focus on is windows
NBD client. There are NBD client work in user mode, and i can use them as
reference. What i think is i can have NBD server on linux and it will
expose some disk which will hold some image. Now on client, boot loader
will be fetched from server and it will be executed. This boot loader will
take basic ntldr from server which will get OS image. This image holds
network and miniport driver which will take over the control.
What do you mean by “boot loader”? If you’re talking about using
something like PXE, then this is feasible as a software-only project. If
you’re talking about booting purely using NBD, then you’re going to have
to implement an NBD client and enough of the TCP/IP stack to support it
in a NIC BIOS extension or some such (though it may be possible to do it
with EFI-time code on EFI-based systems).
This is good assignment for learning.
Please share your thoughts over this learning assignment.
I think the idea that this is a good learning assignment for someone
with your current apparent knowledge and experience is incorrect. If
you’re talking about a pure NBD boot, just the BIOS extension is a huge
task. For a learning exercise you’d be far better off tackling something
simpler, such as a kernel driver to access NBD volumes as normal disks
without supporting booting from them. Many people would consider this to
be far too big and complex a project for a beginner to take on as a
learning exercise, but it’s a lot less than what you’re proposing. It
would be one small step along the way to your proposal though, so you
could carry on from there once you get that far.
J. J. Farrell wrote:
xxxxx@hotmail.com wrote:
>
> Well i know that it’s huge work. But what i need to focus on is windows
> NBD client. There are NBD client work in user mode, and i can use
> them as
> reference. What i think is i can have NBD server on linux and it will
> expose some disk which will hold some image. Now on client, boot loader
> will be fetched from server and it will be executed. This boot loader
> will
> take basic ntldr from server which will get OS image. This image holds
> network and miniport driver which will take over the control.
What do you mean by “boot loader”? If you’re talking about using
something like PXE, then this is feasible as a software-only project.
If you’re talking about booting purely using NBD, then you’re going to
have to implement an NBD client and enough of the TCP/IP stack to
support it in a NIC BIOS extension or some such (though it may be
possible to do it with EFI-time code on EFI-based systems).
The Linux NBD “diskless” computers work by using a floppy or USB thumb
drive to boot up enough of an environment to mount the NBD disk and
continue the boot from that. No special BIOS interaction is assumed.
Such an approach could also work for Windows, but it would still be an
enormous job.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
Don,
On can make a network block device such that a Linux server loads a Windows client image
and acts as its disk.
However, it has nothing to do with Windows - as far as Windows client is concerned, it just does disk IO, and it has no idea that this disk is emulated. Therefore, as I said already, the client machine is just going to have a remote Linux session, that, apart from other things that it can do may ,indeed, load Windows image and act as its hypervisor…
Anton Bassov
> you have to hook the BIOS for a number of functions,
… and by doing so, you already qualify for being an OS that host another OS (i.e. Windows) …
And in the OS you need a mini-port driver that looks like SCSI but talks out the network.
Not necessarily - the client OS (i.e… Windows) may be made completely ignorant of the whole thing. As long as the target CPU supports VT extensions, this can be made at very little performance penalty…
Anton Bassov
Comments inline:
wrote in message news:xxxxx@ntdev…
>> you have to hook the BIOS for a number of functions,
>
> … and by doing so, you already qualify for being an OS that host another
> OS (i.e. Windows) …
>
Sorry, but I would not call BIOS an OS.
>> And in the OS you need a mini-port driver that looks like SCSI but talks
>> out the network.
>
> Not necessarily - the client OS (i.e… Windows) may be made completely
> ignorant of the whole thing. As long as the target CPU supports VT
> extensions, this can be made at very little performance penalty…
>
Yes but then you:
a. Have to make a version for each of the VT models
b. Restrict yourself to cpu’s with VT
c. Not allow the client to use virtualization
The firms I know who have done things like this hook the BIOS. Yes the VT
will work with the limitations.
–
Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
Website: http://www.windrvr.com
Blog: http://msmvps.com/blogs/WinDrvr
Remove StopSpam to reply
Tim Roberts wrote:
J. J. Farrell wrote:
> xxxxx@hotmail.com wrote:
>>
>> Well i know that it’s huge work. But what i need to focus on is windows
>> NBD client. There are NBD client work in user mode, and i can use
>> them as
>> reference. What i think is i can have NBD server on linux and it will
>> expose some disk which will hold some image. Now on client, boot loader
>> will be fetched from server and it will be executed. This boot loader
>> will
>> take basic ntldr from server which will get OS image. This image holds
>> network and miniport driver which will take over the control.
>
> What do you mean by “boot loader”? If you’re talking about using
> something like PXE, then this is feasible as a software-only project.
> If you’re talking about booting purely using NBD, then you’re going to
> have to implement an NBD client and enough of the TCP/IP stack to
> support it in a NIC BIOS extension or some such (though it may be
> possible to do it with EFI-time code on EFI-based systems).
The Linux NBD “diskless” computers work by using a floppy or USB thumb
drive to boot up enough of an environment to mount the NBD disk and
continue the boot from that. No special BIOS interaction is assumed.
Ah; so in the NBD world “diskless” means “with a small disk or imitation
disk” rather than “diskless” as it means in all other contexts …
Such an approach could also work for Windows, but it would still be an
enormous job.
Yes, that simplifies it to about the same level as using a PXE server to
get started - makes the job feasible for someone who isn’t in a position
to add a huge chunk of BIOS somewhere.