Jump to content











Photo
- - - - -

Syslinux / winPE : CPIO magic error


  • Please log in to reply
7 replies to this topic

#1 yrousseau

yrousseau
  • Members
  • 3 posts
  •  
    France

Posted 05 November 2013 - 05:09 PM

Hi all,

 

My objective is to boot winPE (boot.wim) through PXE on a bunch of server.

Our current PXE architecture is based on pxelinux (syslinux 5.1)

 

What I did until now :

 - Install syslinux + tftp on my PXE server

 - Copy all needed files to tftpboot (winboot, bootmgr.exe, BCD, boot.sdi, boot.wim, linux.c32,...)

 

My pxe menu is set to :

default windows
LABEL windows
com32 linux.c32
append wimboot initrd=bootmgr.exe,winboot/BCD,winboot/boot.sdi,winboot/boot.wim

 

 

I think I misunderstood something from the different given here, because I got a :

Bad CPIO magic

FATAL: could not exttract initrd files

 

I couldn't manage to go any further, so anyone has an idea of what I did wrong ?

 

Best regards

Yannig



#2 Tripredacus

Tripredacus

    Frequent Member

  • Expert
  • 234 posts
  • Interests:K-Mart-ian Legend
  •  
    United States

Posted 06 November 2013 - 03:50 PM

You don't seem to have any menu labels? See here for other examples:

http://reboot.pro/to...x-default-menu/

 

Also what is the OS on your server?



#3 yrousseau

yrousseau
  • Members
  • 3 posts
  •  
    France

Posted 06 November 2013 - 04:21 PM

Hi Tripredacus and thanks for your interest..

The PXE server run on a a RHEL6 server.

 

I use a system (foreman) which create the pxelinux menu dynamically, so I only have one entry at a time. I never tried with menu label. Do you really think it could have an impact ?



#4 Tripredacus

Tripredacus

    Frequent Member

  • Expert
  • 234 posts
  • Interests:K-Mart-ian Legend
  •  
    United States

Posted 06 November 2013 - 05:27 PM

I'm not sure. I use PXELinux on Server 2008 R2... I had used a template to make the menu and never encountered an error executing anything from it. Of course, in my case the menu just fires WDS if that option is selected, as it is also installed on the same box.

 

I just noticed a difference between your code and the ones from that link and what I have.



#5 Wonko the Sane

Wonko the Sane

    The Finder

  • Advanced user
  • 16066 posts
  • Location:The Outside of the Asylum (gate is closed)
  •  
    Italy

Posted 06 November 2013 - 06:23 PM

The thread mentioned by Tripredacus is also useful to "draw a line" separating different Pxelinux versions.
 
The posts by sebus in the mentioned thread indirectly state that the Syslinux 5.01 uses "initrdfile" instead of "initrd", the "keyword/command" is "append wimboot initrdfile=" instead of the known "append initrd=". :dubbio:
 
See this:
http://www.syslinux....ber/018708.html
the patch was originated by our good friend Sha0 Miller :worship: but thanks to the nonsensical way the Syslinux documentation (or the lack of it) is managed (or mismanaged) through the "mailing list" it is not very easy to find. 
 
 

In brief:

The "initrd+=" option allows you to append initramfs-style blobs (files
which can be produced with 'cpio -o -H newc') to whatever "initrd" was
specified via the "initrd=" option (or was specified indirectly via the
INITRD directive).

This means you can have some custom initramfs that contains some stuff you
might like to layer on top of whatever initramfs your Linux distribution
gives you; useful for changing startup scripts or adding drivers/features or
changing behaviour.

This option can be specified more than once, and can take a comma-separated
list of files.

Please note: This option uses the plus-sign symbol, so _please_ bring
forward any conflicts with existing processing of the kernel command-line or
of Syslinux config-files which may result.

The "initrdfile=" option allows you to load a file and encapsulate it as
though you had used 'cpio -o -H newc', and pass the resulting blob alongside
the other items that might have been specified with "initrd=" or "initrd+=".

This is useful for taking a raw file from the Syslinux booted-from
filesystem and sending it through to Linux' rootfs via the initramfs scheme.

This option can be specified more than once, and can take a comma-separated
list of files.

Besides use for Linux, this implementation also allows Syslinux users to
boot Michael Brown's 'wimboot' kernel and be able to pass it the raw files
it needs in order to boot a Microsoft Windows PE .WIM.

 
:cheers:
Wonko



#6 Sha0

Sha0

    WinVBlock Dev

  • Developer
  • 1682 posts
  • Location:reboot.pro Forums
  • Interests:Booting
  •  
    Canada

Posted 10 November 2013 - 10:20 PM

Yes, that error message is from wimboot.  wimboot is a Linux x86 kernel format binary.  For that reason, it works with an "initramfs" archive.  And for that reason, you must pack your special Windows files into such an archive, using linux.c32 and the correct parameters.


  • Tripredacus likes this

#7 yrousseau

yrousseau
  • Members
  • 3 posts
  •  
    France

Posted 12 November 2013 - 10:15 AM

OK, I missed something here...

Just the modification signaled by wonko was enough to boot properly

default windows
LABEL windows
com32 linux.c32
append wimboot initrdfile=bootmgr.exe,winboot/BCD,winboot/boot.sdi,winboot/boot.wim

 

 

Now, If I want to download files through http rather than tftp (to go faster) how should I define the URL ?

 

Regards



#8 Tripredacus

Tripredacus

    Frequent Member

  • Expert
  • 234 posts
  • Interests:K-Mart-ian Legend
  •  
    United States

Posted 12 November 2013 - 03:44 PM

Did you see this?

http://reboot.pro/to...winpe-via-http/






0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users