Find the answer to your Linux question:
Results 1 to 8 of 8
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1

    XP PXE install with Linux

    I've been trying to install XP using PXE for the last few days without much luck. I have the i386 folder on a Linux server, I've been using this guide but havent been able to make much sense of it in places PXE Network - Linux Based - Boot winpe from the net. Does anyone know of a clearer guide or could anyone walk me through the process? I already have PXE set up for several Fedora distros so the PXE side of things is working fine. Any help would be GREATLY appreciated! What I have done so far from scratch is:

    1. Created a samba share on the server called REMINST
    2. Created a folder within the share called winxp and copied the i386 folder to it
    3. Extracted the PXE loader to the /tftpboot folder using cabextract <Source dir>/i386/STARTROM.N1_
    4. Modified the name of the loader from NTLDR to XPLDR using sed -i -e 's/NTLDR/XPLDR/gi' startrom.n12
    5. Extracted the setuploader to /tftpboot using cabextract <Source dir>/i386/SETUPLDR.EX_
    6. Modified the name of the response file from winnt.sif to winxp.sif using sed -i -e 's/winnt\.sif/winxp\.sif/gi' setupldr.exe
    7. Modified the name of ntdetect from to ntdetect.wxp using sed -i -e 's/ntdetect\.com/ntdetect\.wxp/gi' setupldr.exe
    8. Renamed setupldr.exe to XPLDR
    9. Copied <Source dir>/i386/NTDETECT.COM to tftpd root and called it ntdetect.wxp
    10. I then created the following winxp.sif file:

    floppyless = "1"
    msdosinitiated = "1"
    ; Needed for second stage
    OriSrc = "\\public\REMINST\winxp\i386"
    OriTyp = "4"
    LocalSourceOnCD = 1
    DisableAdminAccountOnDomainJoin = 1
    OsLoadOptions = "/fastdetect"
    ; Needed for first stage
    SetupSourceDevice = "\Device\LanmanRedirector\public\REMINST\winxp"
    ComputerName = *
    ; if needed
    I also added the following to the pxelinux.cfg/default file

     label winxp
            kernel winxp.0
    With this much done I get to the 'Setup is inspecting your computers hardware configuration' screen and then get the following error: 'INF file txtsetup.sif is corrupt or missing, status 21. Press any key to exit.'

    There is a section at the end of the mentioned guide that I dont fully understand which says:

    'You can create a directory to store inf files for network drivers, then use to create the driver cache file, then start
    Each .sys file of network drivers should be placed in the respective i386 installation directory, also note some nic drivers for xp also work on w2k.'

    I have ran the command with the location of the inf folder (in the i386 folder) and it tells me:

    Compiled 956 drivers
    generated devlist.cach
    generated nics.txt

    I then run sudo ./ and it comes back with:

    Succesfully loaded 956 devices
    Binlserver started... pid 25468

    The PXE boot doesnt get any further after doing this though. Can anyone shed some light on this? Thanks!

  2. #2
    Linux Engineer Freston's Avatar
    Join Date
    Mar 2007
    The Netherlands
    Are you trying to install XP fresh, or is it an image you are putting on the remote machine?
    Can't tell an OS by it's GUI

  3. #3
    Fresh install

  4. $spacer_open
  5. #4
    I am working from the same document and have the same problem, did you have any luck with this?


  6. #5
    Not yet unfortunately Havent had much time to work on it, if I get any further ill post it up

  7. #6
    Linux Engineer Freston's Avatar
    Join Date
    Mar 2007
    The Netherlands
    Maybe I don't fully understand the situation, but I can't help wondering...

    If it's just one machine that needs installing XP to, why bother with PXE and just install through the usual means? And if it's multiple machines that need XP, why not work with an image?

    The reason I ask is, installing over PXE wouldn't be my first choice when it comes to fresh installs. If you on the other hand want to push an image it is. And if that is the case, then it can be much simpler than the above. You don't need much to push an image, and believe me or not but building the 'example machine' is the most difficult part of it. If you did that right, then setting up the server is easy.

    Ah, well, I may not understand the question correctly. But if it's an image you want to push, I might be able to help.
    Can't tell an OS by it's GUI

  8. #7
    Hi Freston,

    Id like to have this function available in my PXE boot menu, I do also want to push out some images though. How can I go about doing this? I created a post previously about trying to do it automatically using g4l but didnt get any replies. Thanks for your help

  9. #8
    Linux Engineer Freston's Avatar
    Join Date
    Mar 2007
    The Netherlands
    Well, for starters, we need to discuss the server side of things so we use the same tools.

    There's trouble ahead, because the tools I'm most familiar with don't have mkntfs on board. I looked into this, and it seems doable to install this... theoretically speaking though. I spend quite some time building a system that can clone Linux boxen. It's already battle proven, so to speak. And it works very well

    Two things give cause for concern though. First, I know a little about how forgiving (or unforgiving) Linux is in terms of variations in hardware for the target clients. But I don't know how XP copes with variations in target systems.
    Second, crucial to the operation is the ability of building NTFS with sfdisk and mkntfs. Theoretically this is doable to add this to the initrd. But this has to be proven in the real world.

    Ok, the server side. Any old box can be a server as long as it can be a dedicated machine. I used a 1.6Ghz machine that was unemployed at the moment. I also have found the initrd from Slackware's install CD/DVD to be very versatile, complete and customizable. I highly recommend this as the tool to use. And while we're at it, Slackware's kernel is good enough. There's many more kernels that are also good enough, but life is all about decisions and I decided to keep the house by the shed; the two go well together.

    I understand you use Fedora? Well, that doesn't matter one bit. They wont byte

    I dunno, are you still with me after that lame joke? This is the easy part so far.
    You can get the Slackware initrd here: Index of /pub/linux/slackware/slackware-12.1/isolinux
    And the kernel lives here: Index of /pub/linux/slackware/slackware-12.1/kernels/hugesmp.s

    There's some magic necessary to open up the initrd, using cpio and such. I can look it up if you want, I have some working aliasses on my server somewhere but that one is not on my network. I'd have to hook it up and do some stuff with it first before I can access it. But as you already have a PXE environment, I take it you are no stranger to modifying initrds?

    If you've opened the initrd up, you will want to modify /etc/rc.d/rc.S, that's where we'll do all the work
    You will want to delete the last 30 or so lines, as they are not doing things that we want done. It's just BASH, so unless you have trouble with it I'll leave that to your own design. Just put an exit in there somewhere and see if you can boot it over PXE and reach a prompt.

    Meanwhile I'll have a look at this mkntfs thingy. It may take a day or two because I have to do it in between events. When NTFS is solved, all our Linux server side worries are over. Only XP can cause trouble now. We're nearly done at this point.

    In any case, the procedure that lies ahead will look like this:
    Server configuration:
    dnsmasq to host 1) DHCP, 2) PXE environment, 3) push the kernel, 4) push initrd

    initrd configuration (first run):
    1) sfdisk client, 2) mkntfs client, 3) exit, done, power down

    Client configuration:
    Make a perfect XP machine the Redmond way, but using the partitioning of sfdisk && mkntfs (important!)

    initrd configuration (second run):
    1) boot to prompt, 2) mount NFS share on server
    Manually pull the image and put it on the server using nothing but dd and a little patience, because it goes to fast to walk away and do something else, but it takes too long to sit and watch the screen. If you smoke it's the perfect excuse for a cigarette break. If you don't smoke, get coffee instead

    initrd configuration (hands free installation on clients)
    1) sfdisk client, 2) mkntfs client, mount NFS share from server, 4) pull and write image of first 446 bits of the MBR, 5) pull and write image of first partition (drive C), 6) if necessary repeat for additional partitions, 7) any other stuff you want happening, 8 power down. Done.

    -- I already have all this scripted in a way that needs only minor adjustments, including a server side progress monitor. I also solved some problems, and there are some, that come up when you do it like this.
    As you see, none of the steps are actually difficult. There are some problems that come up, but they are easily solved. And once you're done you have a machine that can clone entire workstations in under ten minutes, rather that taking hours when doing a fresh install.


    In case you are wondering what my stake in this is, I face the matter of having to build a couple of XP machines by hand and I'm not looking forward to it. I rather spend a couple of hours working on a box that does this for me. I estimate the turnover point (is that how you call it??) is three or four machines. Doing the above will safe time when you have to install three or more machines. But we have a lot of customization on the boxes after the installation. It's tedious, boring and time consuming to work with fresh installs in those quantities.

    Sorry about the long post :-S
    edit: feel free to ask if I went to fast on details or such. I dunno, it took me some time to figure these things out, I don't expect others to intuitively understand my rambling about it...
    Can't tell an OS by it's GUI

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts