[gPXE] I need a little ram disk after gPXE boot and before AoEsanboot
Shao Miller
Shao.Miller at yrdsb.edu.on.ca
Fri Jan 22 22:38:32 EST 2010
I wrote:
> The Mad One wrote:
>>
>> Well, i hope this was clear enough & wasn't out of topic.
>>
>
> The network-booting aspects are on-topic. NTFS DOS drivers creep a
> little off-topic, in my humble opinion, though I understand the
> utility. Perhaps you might be interested in looking at boot.kernel.org.
Just to clarify: I am in no way an authority for what's on-topic or
off-topic. That decision only rests with gPXE's Project Leader, Marty
Connor. So to you and any other readers, feel free to ask away and
contribute your subject matter. :) I'm absolutely sure that Marty would
let anyone know if they were off-topic. I don't think I recall even
seeing that happen. :)
Hopefully my opinion hasn't scared you or anyone else away... It is
clear that you are looking for a means to utilize gPXE as part of some
goal. For me, I'd be happy to provide you with some possibilities, if
you'd kindly provide some more detail. This request is simply part of
the feedback loop. Request -> Possible Resource -> Query Missing Detail
-> Further Detail -> Possibilities.
NTFSPRO is a DOS read/write utility for NTFS filesystem access. It
could be on a DOS floppy disk image, which you could use as a RAM disk
with MEMDISK or GRUB4DOS. It costs money, if it's still available from
its vendor, who I believe is part of Microsoft now.
The normal SAN-boot process for gPXE attempts to boot the MBR of a SAN
immediately after attaching. If that MBR returns to gPXE in its MBR
boot code or because it's not a valid bootable MBR, then SAN connection
can be maintained by using the 'keep-san' option, as documented on the
Etherboot (& gPXE) projects(') wiki.
If you have one of the Syslinux suite or GRUB4DOS installed on the SAN
itself, then you could boot the SAN and then boot your RAM disk, which
would still have access to the SAN. Do you have the ability to put one
of these boot-loaders on the SAN?
You could boot a RAM disk, then that RAM disk could load gPXE, then that
gPXE could attach (and boot) a SAN, but I'll bet that would defeat the
purpose of your RAM disk, since execution would land with the SAN
instead of with your utilities on the RAM disk for working with the
SAN. I could be wrong, but you might need custom hacks to gPXE in order
to attach a SAN and then boot a RAM disk while maintaining the SAN
connection.
When a SAN is attached to a system, gPXE is in the background, providing
the disk I/O with its networking support. If you then try to use UNDI
or even an actual specific DOS driver for your NIC, you take the chance
of interfering with this networking (obviously) which is critical for
the SAN's availability. And so my experiments for such have failed.
If you are after some sort of client-specific, dynamically generated
file(s) for putting on the SAN with your read/write NTFS support, you
might have good luck by dynamically generating your RAM disk image on
the server so that it already contains your client-specific file(s).
That's if you have found a way to boot that RAM disk with your SAN attached.
Note that if you boot a RAM disk, which then boots gPXE, which then
boots a SAN, which then boots something like DOS, that final, booted DOS
should have access to the original RAM disk and the files therein. So
in a round-about fashion, you could transfer control back to your RAM
disk after the SAN is attached. If you have your client-specific
file(s) and your NTFSPRO available, that seems to satisfy your goal.
For example, suppose your RAM disk image is a 1.44 MB floppy disk image
with a FAT12 filesystem and SYSLINUX installed. Your SYSLINUX.CFG file
could look like this:
DEFAULT get_san
LABEL get_san
KERNEL gpxe.lkrn
and you could have some other DOS tools on there, too, such as NTFSPRO.
You'd need to have gpxe.lkrn on there, perhaps with an embedded script
to boot your SAN. The script might go:
#!gpxe
ifopen net0
sanboot aoe:e1.1
and you could compile your gpxe.lkrn like this:
cd gpxe/src/
make EMBEDDED_IMAGE=~/my_script.gpxe bin/gpxe.lkrn
where my_script.gpxe is in your home directory and has the contents
already mentioned a little bit above.
On your SAN, you might have a single NTFS partition. If it were Windows
XP, that'd mean you have NTLDR and a BOOT.INI file. Your BOOT.INI file
might look like this:
[Boot Loader]
Timeout=5
Default=C:\GRLDR
[Operating Systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP
Professional"
/noexecute=optin /fastdetect /sos
C:\GRLDR="GRUB4DOS"
where we see that GRUB4DOS will automatically be booted after your
embedded script in your gpxe.lkrn does its SAN-boot.
Then GRUB4DOS will look for a MENU.LST file, perhaps something akin to
the following:
# Grub4DOS menu created for me by me on some date
color light-gray/black white/black
timeout 0
title DOS RAM disk
map --mem /dos.vfd (fd0)
map (fd0) (fd1)
map --hook
root (fd0)
chainloader /io.sys
title Reboot the Workstation
reboot
title Power Off the Workstation
halt
In the above, we see that your NTFS partition would have a DOS.VFD
floppy disk image file. In the MENU.LST, we load this file as the first
floppy disk drive, and map the old RAM disk established originally, way
back, as the second floppy disk drive.
When you boot your DOS.VFD floppy disk's IO.SYS (which is DOS), you
might enjoy using an AUTOEXEC.BAT file which redirects the startup
process to some batch file on your B: drive, which, if you recall, is
the original RAM disk with gpxe.lkrn on it, along with some other files,
possibly. Voila!
But wait! How do you boot that original RAM disk in the first place?
Well, if you are going to generate that image file dynamically, you
might be booting it over the network, which implies gPXE or your native
PXE stack -> PXELINUX -> MEMDISK. That's not too hard, though!
Something else you might be interested in is the fact that WinVBlock is
a driver which will allow your Windows XP/2003 (or possibly others, but
untested) to access your gPXE-booted AoE SAN _as_well_as_ any previously
loaded RAM disks loaded by either MEMDISK or by GRUB4DOS, during the
same booted session. Thus you could load client-specific data as a RAM
disk and tell your Windows to use it, since it will find that RAM disk
as a disk drive.
Additionally, if you are familiar with Windows PE environments, such as
Windows PE CDs/DVDs, you might be interested to know that MEMDISK and
GRUB4DOS are capable of booting such an .ISO image file, and WinVBlock
will once again provide access to that RAM disc so that the PE can truly
boot. Using this strategy, your SAN need not be booted itself (files in
use by the installed OS) and yet you can manipulate its contents.
Multiple RAM disks are allowed.
I certainly hope this helps.
Disclaimer: All claims and opinions are solely those of myself and do
not and should not be perceived as representing the Etherboot nor the
gPXE projects in any way. Thank you for your understanding.
- Shao Miller
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://etherboot.org/pipermail/gpxe/attachments/20100122/460bf4cb/attachment-0001.html
More information about the gPXE
mailing list