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 >> [email protected] >> http://etherboot.org/mailman/listinfo/gpxe > _______________________________________________ gPXE mailing list [email protected] http://etherboot.org/mailman/listinfo/gpxe
