Re: [Etherboot-developers] [COMMIT] 5.1.2+ boot from disk.
Brought to you by:
marty_connor,
stefanhajnoczi
|
From: Michael B. <mb...@fe...> - 2002-08-30 11:54:58
|
On 30 Aug 2002, Eric W. Biederman wrote: > > OK, it works. I can now boot a full Linux kernel from EB 5.1.x, using the > > same image as for EB 5.0.x. Have checked in two changes to osloader.c, > > both of which I'm not 100% sure about: > I have just put in some updated fixes, that solve the problems more > cleanly (assuming they work.) Sorry - it broke. I now get "segment [00000054, 92800054) overlaps etherboot [00020000, 0002FA30)" Found the problem - sh was being initialised to the start of the NBI header rather than the start of the segment table. Fixed, checked in, now works. > > 2. When load_block() is called with eof=1, os_download() gets called > > twice: once with the normal data block and once more as > > os_download(NULL,0,eof). This is how tagged_download() expects to be > > used. > > Q: Will this break the other *_download() routines? > It won't break them because they honor the eof flag, and so the > code will never be called. So mostly the second call is bloat. > I have instead changed the while loop in tagged download: > data += i; > - } while (len > 0) > + } while ((len > 0) || eof); > return 0; OK - I can see only one potential problem with that: if an image is corrupted by being incomplete (missing bytes from the end) then Etherboot will (I think) lock up in an endless loop with len=0, eof=1 and tctx.seglen != 0. Michael Brown http://www.fensystems.co.uk |