Table of Contents
Week 10 [ Mon 26 Jul 2010 - Sun 1 Aug 2010 ]
Day 1 [ Mon 26 Jul 2010 ]
Git commit: 93c8394c0661f480146509f8d5c19b8a8a4289d4
I spent most of my time today thinking of the design of a decoder “class” that would decompress a compressed image and leave an uncompressed one unchanged.
The first problem is whether or not the image is compressed. Stefan told me that he does not think any other image format besides multiboot is usually compressed, so a natural thing to do would be to tie the decompression code to multiboot.c. However, we can have a more generic approach using the decoder class. If this is done right, everything could be compressed, including .gpxe scripts. I know they are small as it is but nevertheless it's a fun idea :) To determine if an image is compressed the first thing one has to look for is the file extension. Secondly, most containers have a magic number in the beginning of their headers that uniquely identifies them.
The second issue is the compression method. I would like the implementation not to be tied to a specific format, even though gzip's deflate appears to be the de facto standard.
I've yet to create a proper implementation for all of this.
The code in the above commit is mostly me scribbling while thinking.
Day 2 [ Tue 27 Jul 2010 ]
me.away()
Day 3 [ Wed 28 Jul 2010 ]
me.away()
Day 4 [ Thu 29 Jul 2010 ]
Git commit: 283d62bf6ea77d304c20512c121bb516788a1761
Back to work and it was a good day.
I implemented a new “imgdecode” command by looking at how other commands are implemented. What this does, is iterate through all available decoders (currently there is only one: gzip/DEFLATE) and probe the image with each one to see what format it has. If the image is compressed in some format, the corresponding decoder will decompress it. It is still in a draft state, so it will probably be modified in the next couple of days after I get some feedback.
I also sent a new version of the forcedeth patch that gives proper credit to the Linux driver. I will also send a patch for the pcnet32 driver that does the same.
Day 5 [ Fri 30 Jul 2010 ]
me.away()
Day 6 [ Sat 31 Jul 2010 ]
me.away()
Day 5 [ Sun 1 Aug 2010 ]
me.away()