Date: Sun, 16 Jan 2022 12:59:00 -0500 From: Aryeh Friedman <aryeh.friedman@gmail.com> To: Mehmet Erol Sanliturk <m.e.sanliturk@gmail.com> Cc: Bakul Shah <bakul@iitbombay.org>, "freebsd-virtualization@freebsd.org" <virtualization@freebsd.org> Subject: Re: Using bhyve to develop and OS -- tips on how? Message-ID: <CAGBxaXmYnTr2THmOXkNGpLS_EFcPjyLST81PHWk8Oy1vgOVkTg@mail.gmail.com> In-Reply-To: <CAOgwaMvYfpshBtu0JcBS07T4q4Wr5m%2BwzjE3N3GBVSqZ0LmjXg@mail.gmail.com> References: <CAGBxaXmJYkiAP99RvjMkyOUqz9=BzNOTjTiQgf7EppRw2KfmHQ@mail.gmail.com> <6B196318-29A4-479B-BC12-99EBBB69397E@iitbombay.org> <CAOgwaMvYfpshBtu0JcBS07T4q4Wr5m%2BwzjE3N3GBVSqZ0LmjXg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--00000000000019f91505d5b6cbe6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable It was/is off topic to discuss the motivations on the design I have in mind but after thinking for it over 10 years (and using FreeBSD to build a IaaS around bhyve) I have come to the conclusion that *NO* existing OS can meet the design requirements I have in mind. On Sun, Jan 16, 2022 at 11:13 AM Mehmet Erol Sanliturk < m.e.sanliturk@gmail.com> wrote: > > > > > On Sat, Jan 15, 2022 at 1:54 PM Bakul Shah <bakul@iitbombay.org> wrote: > >> You may be better off using qemu, at least initially as =E2=80=9Clegacy= =E2=80=9D booting >> requires jumping through a few more hoops. Another suggestion is to chec= k >> out wiki.osdev.org. There are a lot of useful resources on this site. >> >> On Jan 15, 2022, at 1:29 AM, Aryeh Friedman <aryeh.friedman@gmail.com> >> wrote: >> >> =EF=BB=BF >> I want to develop a OS completely from scratch, i.e. starting with the >> first instruction encountered after POST and everything above it (mostly >> for fun). >> >> I want to use bhyve to do this any tips on how to get started (I have >> found a few tutorials on how to do the asm part of a MBR but that's abou= t >> as far as I have gotten). >> >> -- >> Aryeh M. Friedman, Lead Developer, http://www.PetiteCloud.org >> >> > > Dear Aryeh , > > > https://wiki.osdev.org/Required_Knowledge > > From the beginning of above page : > > " > Required Knowledge > > If you think you can skip this, it's probably just for you. > > Writing an OS is not a beginner's task. > In fact, writing an OS is usually considered the most difficult > programming task. > You will need above-average programming skills before even considering > a project like this. ..... > " > > If you want to take such a difficult road to pursue , you may do the > following : > > Study the bug reports , or GSOC projects , or projects to be handled by t= he > FreeBSD Foundation > ( or if you want more difficult problems , please search my mailing list > messages > to see "crazy" ideas , or please ask me "Do you have more crazy ideas ?" = . > You may be sure that I can find much "more crazy" ideas for you based on > my goal to write > a NEW operating system mainly based on FreeBSD , but from SCRATCH for > ( not "Very" but ) "Large scale software stacks ( distributed , expert > system based > meaning learning , etc ... . ) ) > > > If you confine your works on FreeBSD , if you want to be able to solve it= s > current problems , > this will mean that you are knowing how to write an OS because you are > knowing > the FreeBSD very well and are able to modify it toward a more mature stat= e > . > At the end you will gain and FreeBSD will gain . > > > A few suggestions : > > (1) Make a list of "panic" points . > Eliminate as many of them as possible to protect the OS from crashin= g > by determining > whether the next application step will cause a panic or not ( check > panic conditions > before entering the next step ) and do not enter into it but return > safely back by taking > necessary actions other than "panic" . > > (2) At present many device behaviors are encoded into kernel related > routines > such as internal tables , constants , etc. . > Design a device definition *.XML file format and move these interna= l > definitions > into these files with file names generated from device > characteristics . > For the detected existing devices and newly attached devices , > generate the file > name and search that file . If it exists , load it , else give a > suitable error message . > This allows to add new devices by the users by using device producin= g > company > supplied device definitions , or device definitions without > requirement of > modifications of kernel related sources . > One more step would be to allow user supplied ( not "root" supplied = ) > device definitions > and its associated device drivers loaded from userland . > > Such a system will be a very easy structure for the device producin= g > companies > because already they have device driver software , it is very easy > to generate a > device definition . The users will be able to use these devices > easily by only > attaching the device , storing its device driver and definition fil= e > into her / his space . > > This will attract the companies to be interested in FreeBSD , and > produce more > such drivers , definitions . > This will increase number of possible FreeBSD users now repelled > back due to difficulty of > use of the devices or complete lack of their associated software > parts , by solving > their problems . > > > It is possible to define many more improvement points . > > If present problems are handled , they will inspire many new improvement > points > which means you may continue to contribute to FreeBSD as much as possible= . > > This will supply what you want to do and its very pleasing happiness ( > with respect to my > understanding of your intentions ) . > > > > With my best wishes for all , > > Mehmet Erol Sanliturk > > > > > > --=20 Aryeh M. Friedman, Lead Developer, http://www.PetiteCloud.org --00000000000019f91505d5b6cbe6 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">It was/is off topic to discuss the motivations on the desi= gn I have in mind but after thinking for it over 10 years (and using FreeBS= D to build a IaaS around bhyve) I have come to the conclusion that *NO* exi= sting OS can meet the design requirements I have in mind.<br></div><br><div= class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Sun, Jan 16= , 2022 at 11:13 AM Mehmet Erol Sanliturk <<a href=3D"mailto:m.e.sanlitur= k@gmail.com">m.e.sanliturk@gmail.com</a>> wrote:<br></div><blockquote cl= ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid= rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div = class=3D"gmail_default" style=3D"font-family:tahoma,sans-serif;font-size:la= rge"><br></div><div class=3D"gmail_default" style=3D"font-family:tahoma,san= s-serif;font-size:large"><br></div><div class=3D"gmail_default" style=3D"fo= nt-family:tahoma,sans-serif;font-size:large"><br></div></div><br><div class= =3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, Jan 15, 2022= at 1:54 PM Bakul Shah <<a href=3D"mailto:bakul@iitbombay.org" target=3D= "_blank">bakul@iitbombay.org</a>> wrote:<br></div><blockquote class=3D"g= mail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204= ,204,204);padding-left:1ex"><div dir=3D"auto"><div dir=3D"ltr"></div><div d= ir=3D"ltr">You may be better off using qemu, at least initially as =E2=80= =9Clegacy=E2=80=9D booting requires jumping through a few more hoops. Anoth= er suggestion is to check out <a href=3D"http://wiki.osdev.org" target=3D"_= blank">wiki.osdev.org</a>. There are a lot of useful resources on this site= .</div><div dir=3D"ltr"><br><blockquote type=3D"cite">On Jan 15, 2022, at 1= :29 AM, Aryeh Friedman <<a href=3D"mailto:aryeh.friedman@gmail.com" targ= et=3D"_blank">aryeh.friedman@gmail.com</a>> wrote:<br><br></blockquote><= /div><blockquote type=3D"cite"><div dir=3D"ltr">=EF=BB=BF<div dir=3D"ltr"><= div>I want to develop a OS completely from scratch, i.e. starting with the = first instruction encountered after POST and everything above it (mostly fo= r fun).</div><div><br></div><div>I want to use bhyve to do this any tips on= how to get started (I have found a few tutorials on how to do the asm part= of a MBR but that's about as far as I have gotten).<br></div><div><div= ><br>-- <br><div dir=3D"ltr"><div dir=3D"ltr">Aryeh M. Friedman, Lead Devel= oper, <a href=3D"http://www.PetiteCloud.org" target=3D"_blank">http://www.P= etiteCloud.org</a></div></div></div></div></div></div></blockquote></div></= blockquote><div><br></div><div><br></div><div><div style=3D"font-family:tah= oma,sans-serif;font-size:large" class=3D"gmail_default">Dear Aryeh ,</div><= br></div><div><br></div><div><a href=3D"https://wiki.osdev.org/Required_Kno= wledge" target=3D"_blank">https://wiki.osdev.org/Required_Knowledge</a></di= v><div><br></div><div><div style=3D"font-family:tahoma,sans-serif;font-size= :large" class=3D"gmail_default">From the beginning of above page :</div><di= v style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmail_de= fault"><br></div><div style=3D"font-family:tahoma,sans-serif;font-size:larg= e" class=3D"gmail_default">"</div>Required Knowledge<br><br>If you thi= nk you can skip this, it's probably just for you.<br><br>Writing an OS = is not a beginner's task. <br>In fact, writing an OS is usually conside= red the most difficult programming task. <br>You will need above-average pr= ogramming skills before even considering <br>a project like this. <span cla= ss=3D"gmail_default" style=3D"font-family:tahoma,sans-serif;font-size:large= "> .....</span><br><div style=3D"font-family:tahoma,sans-serif;font-size:la= rge" class=3D"gmail_default">"</div><div style=3D"font-family:tahoma,s= ans-serif;font-size:large" class=3D"gmail_default"><br></div><div style=3D"= font-family:tahoma,sans-serif;font-size:large" class=3D"gmail_default">If y= ou want to take such a difficult road to pursue , you may do the following = :</div><div style=3D"font-family:tahoma,sans-serif;font-size:large" class= =3D"gmail_default"><br></div><div style=3D"font-family:tahoma,sans-serif;fo= nt-size:large" class=3D"gmail_default">Study the bug reports , or GSOC proj= ects , or projects to be handled by the</div><div style=3D"font-family:taho= ma,sans-serif;font-size:large" class=3D"gmail_default">FreeBSD Foundation <= br></div><div style=3D"font-family:tahoma,sans-serif;font-size:large" class= =3D"gmail_default">( or if you want more difficult problems , please search= my mailing list messages <br></div><div style=3D"font-family:tahoma,sans-s= erif;font-size:large" class=3D"gmail_default">to see "crazy" idea= s , or please ask me "Do you have more crazy ideas ?" . <br></div= ><div style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmai= l_default">You may be sure that I can find much "more crazy" idea= s for you based on my goal to write</div><div style=3D"font-family:tahoma,s= ans-serif;font-size:large" class=3D"gmail_default">a NEW operating system m= ainly based on FreeBSD , but from SCRATCH for</div><div style=3D"font-famil= y:tahoma,sans-serif;font-size:large" class=3D"gmail_default">( not "Ve= ry" but ) "Large scale software stacks (=C2=A0 distributed , expe= rt system based</div><div style=3D"font-family:tahoma,sans-serif;font-size:= large" class=3D"gmail_default">meaning learning=C2=A0 , etc ... . ) )</div>= <div style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmail= _default"><br></div><div style=3D"font-family:tahoma,sans-serif;font-size:l= arge" class=3D"gmail_default"><br></div><div style=3D"font-family:tahoma,sa= ns-serif;font-size:large" class=3D"gmail_default">If you confine your works= on FreeBSD , if you want to be able to solve its current problems , <br></= div><div style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"g= mail_default">this will mean that you are knowing how to write an OS becaus= e you are knowing</div><div style=3D"font-family:tahoma,sans-serif;font-siz= e:large" class=3D"gmail_default">the FreeBSD very well and are able to modi= fy it toward a more mature state .<br></div><div style=3D"font-family:tahom= a,sans-serif;font-size:large" class=3D"gmail_default">At the end you will g= ain and FreeBSD will gain .<br></div><div style=3D"font-family:tahoma,sans-= serif;font-size:large" class=3D"gmail_default"><br></div><div style=3D"font= -family:tahoma,sans-serif;font-size:large" class=3D"gmail_default"><br></di= v><div style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gma= il_default">A few suggestions :</div><div style=3D"font-family:tahoma,sans-= serif;font-size:large" class=3D"gmail_default"><br></div><div style=3D"font= -family:tahoma,sans-serif;font-size:large" class=3D"gmail_default">(1) Make= a list of "panic" points .</div><div style=3D"font-family:tahoma= ,sans-serif;font-size:large" class=3D"gmail_default">=C2=A0=C2=A0=C2=A0=C2= =A0 Eliminate as many of them as possible to protect the OS from crashing b= y determining</div><div style=3D"font-family:tahoma,sans-serif;font-size:la= rge" class=3D"gmail_default">=C2=A0=C2=A0=C2=A0=C2=A0 whether the next appl= ication step will cause a panic or not ( check panic conditions</div><div s= tyle=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmail_defau= lt">=C2=A0=C2=A0=C2=A0=C2=A0 before entering the next step ) and do not ent= er into it but return safely back by taking</div><div style=3D"font-family:= tahoma,sans-serif;font-size:large" class=3D"gmail_default">=C2=A0=C2=A0=C2= =A0=C2=A0 necessary actions other than "panic" .</div><div style= =3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmail_default">= <br></div><div style=3D"font-family:tahoma,sans-serif;font-size:large" clas= s=3D"gmail_default">(2) At present many device behaviors are encoded into k= ernel related routines <br></div><div style=3D"font-family:tahoma,sans-seri= f;font-size:large" class=3D"gmail_default">=C2=A0=C2=A0=C2=A0=C2=A0 such as= internal tables , constants , etc. .<br></div><div style=3D"font-family:ta= homa,sans-serif;font-size:large" class=3D"gmail_default">=C2=A0=C2=A0=C2=A0= =C2=A0 Design a device definition=C2=A0 *.XML file format and move these in= ternal definitions <br></div><div style=3D"font-family:tahoma,sans-serif;fo= nt-size:large" class=3D"gmail_default">=C2=A0=C2=A0=C2=A0=C2=A0 into these = files with file names generated from device characteristics .</div><div sty= le=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmail_default= ">=C2=A0=C2=A0=C2=A0=C2=A0 For the detected existing devices and newly atta= ched devices , generate the file <br></div><div style=3D"font-family:tahoma= ,sans-serif;font-size:large" class=3D"gmail_default">=C2=A0=C2=A0=C2=A0=C2= =A0 name and search that file . If it exists , load it , else give a suitab= le error message .</div><div style=3D"font-family:tahoma,sans-serif;font-si= ze:large" class=3D"gmail_default">=C2=A0=C2=A0=C2=A0=C2=A0 This allows to a= dd new devices by the users by using device producing company <br></div><di= v style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmail_de= fault">=C2=A0=C2=A0=C2=A0=C2=A0 supplied=C2=A0=C2=A0=C2=A0 device definitio= ns=C2=A0 , or device definitions without requirement of</div><div style=3D"= font-family:tahoma,sans-serif;font-size:large" class=3D"gmail_default">=C2= =A0 =C2=A0=C2=A0 modifications of kernel related sources=C2=A0 .</div><div = style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmail_defa= ult">=C2=A0=C2=A0=C2=A0=C2=A0 One more step would be to allow user supplied= ( not "root" supplied ) device definitions</div><div style=3D"fo= nt-family:tahoma,sans-serif;font-size:large" class=3D"gmail_default">=C2=A0= =C2=A0=C2=A0=C2=A0 and its associated device drivers loaded from userland .= </div><div style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D= "gmail_default"><br></div><div style=3D"font-family:tahoma,sans-serif;font-= size:large" class=3D"gmail_default">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Such a s= ystem will be a very easy structure for the device producing companies</div= ><div style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmai= l_default">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 because already they have device = driver software , it is very easy to generate a</div><div style=3D"font-fam= ily:tahoma,sans-serif;font-size:large" class=3D"gmail_default">=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 device definition . The users will be able to use these = devices easily by only</div><div style=3D"font-family:tahoma,sans-serif;fon= t-size:large" class=3D"gmail_default">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 attach= ing the device , storing its device driver and definition file into her / h= is space .</div><div style=3D"font-family:tahoma,sans-serif;font-size:large= " class=3D"gmail_default"><br></div><div style=3D"font-family:tahoma,sans-s= erif;font-size:large" class=3D"gmail_default">=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 This will attract the companies to be interested in FreeBSD , and produ= ce more</div><div style=3D"font-family:tahoma,sans-serif;font-size:large" c= lass=3D"gmail_default">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 such drivers , defini= tions .</div><div style=3D"font-family:tahoma,sans-serif;font-size:large" c= lass=3D"gmail_default">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 This will increase nu= mber of possible FreeBSD users now repelled back due to difficulty of</div>= <div style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmail= _default">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 use of the devices or complete lac= k of their associated software parts , by solving</div><div style=3D"font-f= amily:tahoma,sans-serif;font-size:large" class=3D"gmail_default">=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 their problems .<br></div><div style=3D"font-family:t= ahoma,sans-serif;font-size:large" class=3D"gmail_default"><br></div><div st= yle=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmail_defaul= t"><br></div><div style=3D"font-family:tahoma,sans-serif;font-size:large" c= lass=3D"gmail_default">It is possible to define many more improvement point= s .</div><div style=3D"font-family:tahoma,sans-serif;font-size:large" class= =3D"gmail_default"><br></div><div style=3D"font-family:tahoma,sans-serif;fo= nt-size:large" class=3D"gmail_default">If present problems are handled , th= ey will inspire many new improvement points <br></div><div style=3D"font-fa= mily:tahoma,sans-serif;font-size:large" class=3D"gmail_default">which means= you may continue to contribute to FreeBSD as much as possible .</div><div = style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmail_defa= ult"><br></div><div style=3D"font-family:tahoma,sans-serif;font-size:large"= class=3D"gmail_default">This will supply what you want to do and its very = pleasing happiness ( with respect to my</div><div style=3D"font-family:taho= ma,sans-serif;font-size:large" class=3D"gmail_default">understanding of you= r intentions ) .<br></div><div style=3D"font-family:tahoma,sans-serif;font-= size:large" class=3D"gmail_default"><br></div><div style=3D"font-family:tah= oma,sans-serif;font-size:large" class=3D"gmail_default"><br></div><div styl= e=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmail_default"= ><br></div><div style=3D"font-family:tahoma,sans-serif;font-size:large" cla= ss=3D"gmail_default">With my best wishes for all ,</div><div style=3D"font-= family:tahoma,sans-serif;font-size:large" class=3D"gmail_default"><br></div= ><div style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmai= l_default">Mehmet Erol Sanliturk<br></div><div style=3D"font-family:tahoma,= sans-serif;font-size:large" class=3D"gmail_default"></div><br><br></div><di= v><br></div><div><br></div><div>=C2=A0</div></div></div> </blockquote></div><br clear=3D"all"><br>-- <br><div dir=3D"ltr" class=3D"g= mail_signature"><div dir=3D"ltr">Aryeh M. Friedman, Lead Developer, <a href= =3D"http://www.PetiteCloud.org" target=3D"_blank">http://www.PetiteCloud.or= g</a><br></div></div> --00000000000019f91505d5b6cbe6--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGBxaXmYnTr2THmOXkNGpLS_EFcPjyLST81PHWk8Oy1vgOVkTg>