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

Reply via email to