This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Daniel Verkamp: COMBOOT Support ====== ===== Journal ===== ==== Week 0 ==== ---- === 19 May 2008 === Journal created. === 21 May 2008 === * Image type detection by filename: check image->uri? * arch/i386/README.i386: use libpm for COM32 transitions, librm for 16-bit COMBOOT * hook_bios_interrupt -> hook the COMBOOT API ints (for 16-bit) with stubs that call back into gPXE? * REAL_CODE, PHYS_CODE in inline asm * memcpy_user, real_to_user * i386_all_regs, regs_t (ordered like PUSHA) types * _virt_to_phys to switch from etherboot-style virtual address space to flat physical addresses (COM32) * basemem_packet (BASEMEM_PACKET_LEN = 1514) * arch/i386/include/virtaddr.h: VIRTUAL/PHYSICAL/REAL_CS/DS * install_rm_callback_interface * Split COMBOOT and C32 or use the same image type for both? == TODO == * Check current PXE API support * Find out how to add config option for image type === 23 May 2008 === * Had meeting with mdc and mcb30; discussed basic architecture for COMBOOT support * Discovered how near RET from 16-bit COMBOOT works - INT 20h at byte 0 of segment (documented as part of PSP in COMBOOT spec) * Sample hook_bios_interrupt/call_prot code from mcb30; see [[soc/2008/dverkamp/notes/hook_bios_interrupt]] * Finished basic 16-bit COMBOOT loading and INT 20h and INT 21h AH=02h hooks {{:soc:2008:dverkamp:journal:dverkamp-may-23-2008.png|}} === 24 May 2008 === * Figured out and fixed why RET wasn't working - top of stack wasn't being cleared * Cleaned up and committed beginnings of COMBOOT API ==== Week 1 ==== ---- === 25-26 May 2008 === * Allow COMBOOT images to return via INT 20h - save the (far) return address during exec, then save the old stack address in the PSP, so in INT 20h handler, just change back to old stack and do RETF * Handle other termination API functions (INT 21h, AH=00h and AH=4Ch) - call INT 20h handler * Handle INT 21h, AH=09h (Write DOS String to Console) and AH=30h (Check DOS Version) === 29 May 2008 === * Add beginning of SYSLINUX AX=0001h (get version) and AX=0003h (run command) * Run command function was looping on itself (comboot executable ran again when "boot" executed?), so did similar "unregister image while running" like image/script.c === 30 May 2008 === * Meeting with mdc ==== Week 2 ==== ---- === 02 June 2008 === * Message to soc-mentors discussing implementation details; learned how to get available memory, test if key is hit, call protected-mode code with flat-memory setup, etc. * Finish COMBOOT API "Get Version" - return address of version and copyright strings [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=4f02100d29583bd9586e4a832eb910f9192d304b | 4f02100d29583bd9586e4a832eb910f9192d304b ]] * Fill in correct value for available memory field in PSP header [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commit;h=c07e41f20e6ef9b89e290733d5c06a8fcadfb0e1 | c07e41f20e6ef9b89e290733d5c06a8fcadfb0e1 ]] === 03 June 2008 === * Initial try at COM32 support; helper functions are not implemented yet, so nothing really works [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=6d18cc20c85e7a1a195705d1da6bd67c0917138f | 6d18cc20c85e7a1a195705d1da6bd67c0917138f ]] * Wrappers for COM32 helper functions to switch between flat mapping used by COM32 and the virtual address space used by gPXE (COM32 still mainly untested) [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=d5e92f83c8fba51e0a2c803b9204bae7d86c9cd8 | d5e92f83c8fba51e0a2c803b9204bae7d86c9cd8 ]] * Some small fixes to COMBOOT (always load the image in the same place, and use that fact to locate the PSP even if the image changes segment registers) [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=245547103ed490bfc380d94ea7f7634a6e46f11a | 245547103ed490bfc380d94ea7f7634a6e46f11a ]] TODO: * Find correct end of available memory value for ESP before executing COM32 images * Finish helper functions (copy between registers and com32sys_t structs) === 04 June 2008 === * Find end of memory value from walking memmap and pass it to COM32 programs [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=164672592936bb3026b4ada3113b3e66f0e6f51c | 164672592936bb3026b4ada3113b3e66f0e6f51c ]] === 05 June 2008 === * Fix a lot of small things related to COM32; now ''hello.c32'' and ''hello2.c32'' run correctly! [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=3876fad11e9f4ba3d8319eaadffce7c30aaaeaa6 | 3876fad11e9f4ba3d8319eaadffce7c30aaaeaa6 ]], [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=bcb1ffca2899973f73381d36cdae88e7c13c0881 | bcb1ffca2899973f73381d36cdae88e7c13c0881 ]], [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=32030bd5f16208b01441eed8ef0d101362770ef0 | 32030bd5f16208b01441eed8ef0d101362770ef0 ]], [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=8f4adae9cb357b8f88beea16439fa2afdcc127d3 | 8f4adae9cb357b8f88beea16439fa2afdcc127d3 ]], [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=f7a3b956e3eaa5689da98721d1bbb55910b5d6c1 | f7a3b956e3eaa5689da98721d1bbb55910b5d6c1 ]] {{:soc:2008:dverkamp:journal:jun-05-2008.png|}} * Only the intcall helper is implemented; the farcall and cfarcall helper functions are still unimplemented, but should be relatively easy now that intcall is working ==== Week 3 ==== ---- === 10 June 2008 === * Implement file I/O functions (open, read, close) based on gPXE's posix_io support [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=dcf8448c1e922892ee8dc4cf7a238eaebca1a5df | dcf8448c1e922892ee8dc4cf7a238eaebca1a5df ]] === 11 June 2008 === * Finally debugged why my VGA test case (a 256-byte demo, [[ http://pouet.net/prod.php?which=3397 | tube by 3SC ]]) wasn't working - it was assuming that registers were 0, and I hadn't been clearing them; after taking care of that, it works fine in bochs, qemu, and real hardware: [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=169e9975ba0aea887bf5515f9bbe32466bf3b5e0 | 169e9975ba0aea887bf5515f9bbe32466bf3b5e0 ]] {{:soc:2008:dverkamp:journal:jun-11-2008.png|}} * Fixed a bunch of small things in com32_call.c, after which basic file I/O (filetest.c32) works [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=d645d491cf48d7ef48566057b9b8ad6c5418b5d9 | d645d491cf48d7ef48566057b9b8ad6c5418b5d9 ]] {{:soc:2008:dverkamp:journal:jun-11-2008.fileio.png| filetest.c32 reading a file over HTTP with a relative filename}} * Implement more INT 22h functions (AX = 0005h, AX = 0007h, AX = 0013h, AX = 0015h) [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=068eb73795d962cc70336a8159e6e91ecbd5cb68 | 068eb73795d962cc70336a8159e6e91ecbd5cb68 ]] * Implement "Resolve hostname" function; resolv.c32 now works [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=01fa277122c8ee33e26a35b7ef890e57b8b485e3 | 01fa277122c8ee33e26a35b7ef890e57b8b485e3 ]] === 12 June 2008 === * Map Enter key to 0x0D instead of 0x0A; now fancyhello.c32 works [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=d5f9318b8570cf3c489e4d3f8dfe1955cb837024 | d5f9318b8570cf3c489e4d3f8dfe1955cb837024 ]] * Rebased comboot work on top of current upstream gPXE tree and pushed to [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=shortlog;h=comboot-merge | comboot-merge branch ]]


Navigation

* [[:start|Home]] * [[:about|About our Project]] * [[:download|Download]] * [[:screenshots|Screenshots]] * Documentation * [[:howtos|HowTo Guides]] * [[:appnotes|Application Notes]] * [[:faq:|FAQs]] * [[:doc|General Doc]] * [[:talks|Videos, Talks, and Papers]] * [[:hardwareissues|Hardware Issues]] * [[:mailinglists|Mailing lists]] * [[http://support.etherboot.org/|Bugtracker]] * [[:contributing|Contributing]] * [[:editing_permission|Wiki Edit Permission]] * [[:wiki:syntax|Wiki Syntax]] * [[:contact|Contact]] * [[:relatedlinks|Related Links]] * [[:commerciallinks|Commercial Links]] * [[:acknowledgements|Acknowledgements]] * [[:logos|Logo Art]]

QR Code
QR Code soc:2008:dverkamp:journal:start (generated for current page)