Greetings, As a Google Summer of Code student for the SYSLINUX project, I had the chance to learn many interesting things from hpa regarding the internals of SYSLINUX. So besides my main task of implementing ELF modules loading & linking, I decided to put down in the wiki all the information I found concerning SYSLINUX development. In this regard, I have created a special category on the wiki, http://syslinux.zytor.com/wiki/index.php/Category:SYSLINUX_Internals, and I started to write a couple of pages mainly about SYSLINUX memory management and boot process. I have also drawn a couple of diagrams to assist with the explanations. I encourage anyone to read/review those pages, signal any errors, and - why not - write new interesting stuff about SYSLINUX. This way more people will have an easier access to the underlyings of SYSLINUX and could become potential developers. Stefan Bucur PS: I also think it would be great if hpa could host a LXR database with relevant snapshots of the SYSLINUX source tree; it could be referenced by the wiki and make things easier to understand from an outsider point of view.
On Mon, Jul 21, 2008 at 12:30 AM, Stefan Bucur <stefanb at zytor.com> wrote:> Greetings, > > As a Google Summer of Code student for the SYSLINUX project, I had the > chance to learn many interesting things from hpa regarding the > internals of SYSLINUX. So besides my main task of implementing ELF > modules loading & linking, I decided to put down in the wiki all the > information I found concerning SYSLINUX development. >Ah, I also have a private git repository with the SVG sources of the diagrams (drawn with Inkscape). I could also host that repository publicly on the zytor git interface, if hpa is ok with that. Stefan Bucur
On Monday 21 July 2008, Stefan Bucur wrote:> Greetings, > > As a Google Summer of Code student for the SYSLINUX project, I had the > chance to learn many interesting things from hpa regarding the > internals of SYSLINUX. So besides my main task of implementing ELF > modules loading & linking, I decided to put down in the wiki all the > information I found concerning SYSLINUX development.Good work, especially the diagrams are nice. Marc -- Marc Haisenko Comdasys AG R?desheimer Str. 7 80686 M?nchen Germany Tel.: +49 (0)89 548 433 321
Stefan Bucur wrote:> [...] > I encourage anyone to read/review those pages, signal any errors, and > - why not - write new interesting stuff about SYSLINUX. This way more > people will have an easier access to the underlyings of SYSLINUX and > could become potential developers. >Hey Stefan, Really nice work. Just a note, it could be nice to use a different scale on your memory map. You currently use a linear scale which makes interesting parts (syslinux entry point / Boot sector / sector1) very small and hard to read. Could it be possible to use different sizes to insure a proper reading ? For example, in http://syslinux.zytor.com/wiki/index.php/Memory_Map_(Segment_0), it could be nice to give each element of that stack the same visual space. That way, everything is readable, and to know their "real" size would be reading the addresses on the left. Could be nice also to put the size of each element on the left side of the stack. Cheers, Erwan,
Op 21-07-2008 om 00:30 schreef Stefan Bucur: <snip/>> PS: I also think it would be great if hpa could host a LXR database > with relevant snapshots of the SYSLINUX source tree; it could be > referenced by the wiki and make things easier to understand from an > outsider point of view.There is allready http://lxr.linux.no/syslinux it is up and running :-) Cheers Geert Stappers
On Mon, Jul 21, 2008 at 2:49 AM, Erwan Velu <erwan at seanodes.com> wrote:> Stefan Bucur wrote: > [...] > For example, in > http://syslinux.zytor.com/wiki/index.php/Memory_Map_(Segment_0), it > could be nice to give each element of that stack the same visual space. > That way, everything is readable, and to know their "real" size would be > reading the addresses on the left. Could be nice also to put the size of > each element on the left side of the stack.Hello Erwan, Yes, I could do that, or I could simply expand the drawing to the right, and redraw the smaller portions to a bigger scale (like a "zoom"). This way both the linear scale (and the relative visual size of the memory sections) would be preserved on the left, and the detail information would also be available on the right. Do you think it is OK with this approach? Stefan
On Mon, Jul 21, 2008 at 3:40 AM, Geert Stappers <stappers at stappers.nl> wrote:> Op 21-07-2008 om 00:30 schreef Stefan Bucur: > [...] > > There is allready http://lxr.linux.no/syslinux > it is up and running :-) >Cool! Thanks for pointing me this ;) Stefan
Stefan Bucur wrote:> > Ah, I also have a private git repository with the SVG sources of the > diagrams (drawn with Inkscape). I could also host that repository > publicly on the zytor git interface, if hpa is ok with that. >Sounds like a good idea to me. As far as LXR is concerned... does anyone happen to know if there is a way to make LXR work with a git repository? -hpa
On Mon, Jul 21, 2008 at 3:58 PM, H. Peter Anvin <hpa at zytor.com> wrote:> Stefan Bucur wrote: >> >> Ah, I also have a private git repository with the SVG sources of the >> diagrams (drawn with Inkscape). I could also host that repository >> publicly on the zytor git interface, if hpa is ok with that. >> > > Sounds like a good idea to me. >Well, here it is: http://git.zytor.com/?p=users/stefanb/syslinux-doc.git;a=summary Stefan Bucur
On Mon, Jul 21, 2008 at 3:58 PM, H. Peter Anvin <hpa at zytor.com> wrote:> Stefan Bucur wrote: >> >> Ah, I also have a private git repository with the SVG sources of the >> diagrams (drawn with Inkscape). I could also host that repository >> publicly on the zytor git interface, if hpa is ok with that. >> > > Sounds like a good idea to me. >Well, here it is: http://git.zytor.com/?p=users/stefanb/syslinux-doc.git;a=summary Stefan Bucur
Hello, I have noticed that Stefan Bucur is currently developing a dynamic linker for Syslinux modules. This is exactly what I need in my project because sometimes I need to load modules at different locations. I am wondering how far is it currently from the practical usability? Stefan, when do you plan to release the first workable version? Best regards, Alex
On Mon, Jul 21, 2008 at 7:23 PM, Loginov Alexander <aloginov at asmpt.com> wrote:> > I am wondering how far is it currently from the practical usability? > Stefan, when do you plan to release the first workable version? >Hello, Alex! The dynamic linker core functionality is already done, however it was tested only in userspace, as a regular Linux executable, and not in SYSLINUX. In the next two or three weeks I expect to have a fully featured SYSLINUX COM32 module which would be able to dynamically load multiple ELF modules, and be ready for testing by the community. This is my job as a Google Summer of Code student, thus I need to have everything finished before the program deadline (which is August 18th). I will post any notable progresses on this list. I will also write module documentation on the wiki. For even more details, you can also subscribe by RSS to my git repository, here: http://git.zytor.com/?p=users/stefanb/syslinux-elf.git;a=summary hpa plans to take my work into the official repository for the SYSLINUX 4.0 release, which most probably is going to happen after the GSoC program finishes. He can give more details regarding how this is going to be done, but before SYSLINUX 4.0 release, you should be able to dynamically load ELF modules only if you first load the COM32 module I will soon write. Cheers, Stefan Bucur
Stefan Bucur wrote:> On Mon, Jul 21, 2008 at 2:49 AM, Erwan Velu <erwan at seanodes.com> wrote: > >> Stefan Bucur wrote: >> [...] >> For example, in >> http://syslinux.zytor.com/wiki/index.php/Memory_Map_(Segment_0), it >> could be nice to give each element of that stack the same visual space. >> That way, everything is readable, and to know their "real" size would be >> reading the addresses on the left. Could be nice also to put the size of >> each element on the left side of the stack. >> > > Hello Erwan, > > Yes, I could do that, or I could simply expand the drawing to the > right, and redraw the smaller portions to a bigger scale (like a > "zoom"). This way both the linear scale (and the relative visual size > of the memory sections) would be preserved on the left, and the detail > information would also be available on the right. Do you think it is > OK with this approach? >Sure, but it will give you more work to do :p Erwan
Hello Stefan, I would like to try your module. Can you please provide me some basic guidelines on how to use it (how to make and run it). Thanks. Best regards, Alex
On Mon, Aug 11, 2008 at 12:34 PM, Loginov Alexander <aloginov at asmpt.com> wrote:> Hello Stefan, > > I would like to try your module. Can you please provide me some basic > guidelines on how to use it (how to make and run it). > > Thanks. >Hi Alex, Thank you very much for your interest in my work here for SYSLINUX. I have now released a preview of the dynamic loading support of ELF modules. You can read here the whole announcement: http://syslinux.zytor.com/wiki/index.php/GSoC2008_Stefan_Announcements#11_August_2008_-_Preview_.22Release.22 Please feel free to ask me any questions or give any suggestions you may have. Cheers, Stefan Bucur
On Thu, Aug 14, 2008 at 2:20 PM, Loginov Alexander <aloginov at asmpt.com> wrote:> > So the algorithm is like the following: > > 1) Syslinux boots > 2) Your elflink module loads my ELF programs to the top of the available > physical memory > 3) The control is passed to the enry point of one of those ELF programs > 4) That program will initialize the environment erasing Syslinix and > elflink out of the memory > 5) After initializing that program will continue to do some processing > serving the embedded system > > Please let me if it is possible to achieve the above results with > Sislinux and your module. >Well, this looks like you want to use the module system as a boot loader. This is a nice use case :) It's like instead of loading and booting a kernel image, you load and boot an ELF module. In this case, if you are absolutely sure that no symbol is referenced from the root COM32 module (you can see that by issuing a 'readelf -s' command on your modules and inspecting the dynamic symbol table), and your module also gains control of the system (including interrupts - COM32 also registers an stub interrupt table that triggers the BIOS handlers), you can discard SYSLINUX code without problems. In other words, if your module is capable of implementing basic operating system work by itself, SYSLINUX is not required. Please let me know if there are any problems with that :) Cheers, Stefan Bucur