Hi Brian,

I think you may want to use wraplinux to (re)create your NBI file.

   http://kernel.org/pub/linux/boot/wraplinux/

mknbi has issues with newer versions of the linux kernel.

That being said, I wonder if the kernel you extracted from the original
NBI image is bootable.  Have you tried booting it?

There is documentation around on the format of an NBI image, and I
suspect that if you modify any segment, you would need to either edit
some other segment that contains offsets to things that have moved, or,
as you're doing, rebuilding the NBI with wraplinux.

Another thing you might try is using pxelinux.0 in your network booting
workflow to load your kernel and initial ram-based file system.

Those are a few suggestions to get you started, I'm sure others will
have some ideas.

Please let us know how things go, so we can all continue to learn from
your journey.

Thanks,

/ Marty /

Brian Feeny wrote on 10/10/10 8:25 PM:
> So here is some more information about what I am trying to do:
> 
> 1. disassemble an NBI image
> 2. modify it
> 3. re-assemble it
> 
> The image I am working on is this:
> 
> # disnbi myimage
> 
> Type: NBI
> Header location:      9220:0000
> Start address:                9280:0000
> Flags:
> Vendor data:          mknbi-linux-1.2-6
> Segment number 1
> Load address:         00092800
> Image length:         4608
> Memory length:                6144
> Position:             Absolute
> Vendor tag:           16
> 
> Segment number 2
> Load address:         00092400
> Image length:         512
> Memory length:                2048
> Position:             Absolute
> Vendor tag:           17
> 
> Segment number 3
> Load address:         00090000
> Image length:         512
> Memory length:                512
> Position:             Absolute
> Vendor tag:           18
> 
> Segment number 4
> Load address:         00090200
> Image length:         2560
> Memory length:                40448
> Position:             Absolute
> Vendor tag:           19
> 
> Segment number 5
> Load address:         00100000
> Image length:         993280
> Memory length:                15728640
> Position:             Absolute
> Vendor tag:           20
> 
> Segment number 6
> Load address:         001f3000
> Image length:         13746176
> Memory length:                67108864
> Position:             Absolute
> Vendor tag:           21
> Vendor data:          "Vendor data in hex:    00 00 00 00 
> 
> Segment number 7
> Load address:         02500000
> Image length:         0
> Memory length:                1204
> Position:             Absolute
> Vendor tag:           22
> 
> 
> It extracts into 6 segments that look like this:
> 
> # file *
> nbidir:   Netboot image, mode 2
> segment0: DOS executable (COM)
> segment1: ASCII text, with no line terminators
> segment2: Linux x86 kernel root=0x100-ro vga=normal
> segment3: DOS executable (COM)
> segment4: data
> segment5: gzip compressed data, was "loopback", from Unix, last modified: Sun 
> Oct 10 15:22:36 2010, max compression
> 
> 
> segment5 is the one I wanted to modify, its a compressed ext2 filesystem:
> 
> # mv segment5 segment5.gz
> # gunzip segment5.gz
> # file segment5
> segment5: Linux rev 1.0 ext2 filesystem data
> 
> I mount it and modify away (small changes)
> 
> # mount -t ext2 -o loop segment5 /tmp/mount
> 
> I make my changes and unmount.
> 
> I was not sure what all the different segments were.  I thought segment2 
> would be the kernel, but you can see it's too small:
> 
> # ls -al segment*
> 
> -rw-r--r-- 1 root root     4608 Oct 10 15:22 segment0
> -rw-r--r-- 1 root root      512 Oct 10 15:22 segment1
> -rw-r--r-- 1 root root      512 Oct 10 15:22 segment2
> -rw-r--r-- 1 root root     2560 Oct 10 15:22 segment3
> -rw-r--r-- 1 root root   993280 Oct 10 15:22 segment4
> -rw-r--r-- 1 root root 13746858 Oct 10 15:22 segment5
> -rw-r--r-- 1 root root        0 Oct 10 15:22 segment6
> 
> It looks like segment2 segment3 and segment4 maybe make up the kernel. Not 
> knowing what to do I combined them, and it then showed a bzip kernel type:
> 
> # cat segment2 segment3 segment4 > zImage
> # file zImage
> zImage: Linux x86 kernel root=0x801-ro vga=normal, bzImage, version 
> 2.4.20_mvl31-cpci735 (f...@and-s
> 
> I saw segment1 was the parameters:
> 
> # cat segment1
> rw root=/dev/ram0 rdbase=0x8000000 ip=off ramdisk_size=65536
> 
> Once again, I wasn't sure exactly if I was doing this correctly but I tried 
> to re-create the nbi image:
> 
> # mknbi-linux zImage --param="rw root=/dev/ram0 rdbase=0x8000000 ip=off 
> ramdisk_size=65536" --output=kernel  /tmp/segment5
> 
> This was not successful.  It produced a result of "kernel" but it was not a 
> proper image to be booted.  I am not building the NBI image file correctly 
> and need some guidance.  Can anyone direct me what I may be doing wrong?
> 
> I appreciate any help anyone can give me
> 
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> gPXE mailing list
> gPXE@etherboot.org
> http://etherboot.org/mailman/listinfo/gpxe

_______________________________________________
gPXE mailing list
gPXE@etherboot.org
http://etherboot.org/mailman/listinfo/gpxe

Reply via email to