Marty,

Thanks for your response.

This current image I am working with does in fact boot, its a working system.  
It boots, uncompresses the root to ram, loads linux, etc.

I have taken it and extracted the segments and modified the root partition.  I 
just want to put it back together.  I will look into wraplinux. 

for some reason my segment0 is 4096 yet the segment0 of the original image was 
4608 (512 difference).  I wish I knew what was done different to make theirs 
bigger I am trying to make it exact so as to not have changed anything but my 
intentional changes on the root filesystem.

Brian

On Oct 10, 2010, at 11:28 PM, Marty Connor wrote:

> 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