Date: Sun, 16 Jan 2022 19:13:06 +0300 From: Mehmet Erol Sanliturk <m.e.sanliturk@gmail.com> To: Bakul Shah <bakul@iitbombay.org> Cc: Aryeh Friedman <aryeh.friedman@gmail.com>, virtualization@freebsd.org Subject: Re: Using bhyve to develop and OS -- tips on how? Message-ID: <CAOgwaMvYfpshBtu0JcBS07T4q4Wr5m%2BwzjE3N3GBVSqZ0LmjXg@mail.gmail.com> In-Reply-To: <6B196318-29A4-479B-BC12-99EBBB69397E@iitbombay.org> References: <CAGBxaXmJYkiAP99RvjMkyOUqz9=BzNOTjTiQgf7EppRw2KfmHQ@mail.gmail.com> <6B196318-29A4-479B-BC12-99EBBB69397E@iitbombay.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--000000000000e6b9b605d5b551a8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 check > 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 about > 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 the 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 its 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 state = . 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 crashing 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 internal 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 producing 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 producing 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 file 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 --000000000000e6b9b605d5b551a8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:tahoma,sans-serif;font-size:large"><br></div><div class=3D"gmail_d= efault" style=3D"font-family:tahoma,sans-serif;font-size:large"><br></div><= div class=3D"gmail_default" style=3D"font-family:tahoma,sans-serif;font-siz= e:large"><br></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" cl= ass=3D"gmail_attr">On Sat, Jan 15, 2022 at 1:54 PM Bakul Shah <<a href= =3D"mailto:bakul@iitbombay.org">bakul@iitbombay.org</a>> wrote:<br></div= ><blockquote class=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"auto"><div d= ir=3D"ltr"></div><div dir=3D"ltr">You may be better off using qemu, at leas= t initially as =E2=80=9Clegacy=E2=80=9D booting requires jumping through a = few more hoops. Another suggestion is to check out <a href=3D"http://wiki.o= sdev.org" target=3D"_blank">wiki.osdev.org</a>. There are a lot of useful r= esources 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.fri= edman@gmail.com" target=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 everythin= g above it (mostly for fun).</div><div><br></div><div>I want to use bhyve t= o do this any tips on how to get started (I have found a few tutorials on h= ow 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 Developer, <a href=3D"http://www.PetiteCloud.org" target=3D= "_blank">http://www.PetiteCloud.org</a></div></div></div></div></div></div>= </blockquote></div></blockquote><div><br></div><div><br></div><div><div sty= le=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmail_default= ">Dear Aryeh ,</div><br></div><div><br></div><div><a href=3D"https://wiki.o= sdev.org/Required_Knowledge">https://wiki.osdev.org/Required_Knowledge</a><= /div><div><br></div><div><div style=3D"font-family:tahoma,sans-serif;font-s= ize:large" class=3D"gmail_default">From the beginning of above page :</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">"</div>Required Knowledge<br><br>If you = think 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 cons= idered the most difficult programming task. <br>You will need above-average= programming skills before even considering <br>a project like this. <span = class=3D"gmail_default" style=3D"font-family:tahoma,sans-serif;font-size:la= rge"> .....</span><br><div style=3D"font-family:tahoma,sans-serif;font-size= :large" class=3D"gmail_default">"</div><div style=3D"font-family:tahom= a,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">= If you want to take such a difficult road to pursue , you may do the follow= ing :</div><div style=3D"font-family:tahoma,sans-serif;font-size:large" cla= ss=3D"gmail_default"><br></div><div style=3D"font-family:tahoma,sans-serif;= font-size:large" class=3D"gmail_default">Study the bug reports , or GSOC pr= ojects , or projects to be handled by the</div><div style=3D"font-family:ta= homa,sans-serif;font-size:large" class=3D"gmail_default">FreeBSD Foundation= <br></div><div style=3D"font-family:tahoma,sans-serif;font-size:large" cla= ss=3D"gmail_default">( or if you want more difficult problems , please sear= ch my mailing list messages <br></div><div style=3D"font-family:tahoma,sans= -serif;font-size:large" class=3D"gmail_default">to see "crazy" id= eas , or please ask me "Do you have more crazy ideas ?" . <br></d= iv><div style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gm= ail_default">You may be sure that I can find much "more crazy" id= eas for you based on my goal to write</div><div style=3D"font-family:tahoma= ,sans-serif;font-size:large" class=3D"gmail_default">a NEW operating system= mainly based on FreeBSD , but from SCRATCH for</div><div style=3D"font-fam= ily:tahoma,sans-serif;font-size:large" class=3D"gmail_default">( not "= Very" but ) "Large scale software stacks (=C2=A0 distributed , ex= pert system based</div><div style=3D"font-family:tahoma,sans-serif;font-siz= e:large" class=3D"gmail_default">meaning learning=C2=A0 , etc ... . ) )</di= v><div style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gma= il_default"><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">If you confine your wor= ks 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= "gmail_default">this will mean that you are knowing how to write an OS beca= use you are knowing</div><div style=3D"font-family:tahoma,sans-serif;font-s= ize:large" class=3D"gmail_default">the FreeBSD very well and are able to mo= dify it toward a more mature state .<br></div><div style=3D"font-family:tah= oma,sans-serif;font-size:large" class=3D"gmail_default">At the end you will= gain and FreeBSD will gain .<br></div><div style=3D"font-family:tahoma,san= s-serif;font-size:large" class=3D"gmail_default"><br></div><div style=3D"fo= nt-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"g= mail_default">A few suggestions :</div><div style=3D"font-family:tahoma,san= s-serif;font-size:large" class=3D"gmail_default"><br></div><div style=3D"fo= nt-family:tahoma,sans-serif;font-size:large" class=3D"gmail_default">(1) Ma= ke a list of "panic" points .</div><div style=3D"font-family:taho= ma,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 crashin= g by determining</div><div style=3D"font-family:tahoma,sans-serif;font-size= :large" class=3D"gmail_default">=C2=A0=C2=A0=C2=A0=C2=A0 whether the next a= pplication step will cause a panic or not ( check panic conditions</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 before entering the next step ) and do not = enter into it but return safely back by taking</div><div style=3D"font-fami= ly: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 sty= le=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" cl= ass=3D"gmail_default">(2) At present many device behaviors are encoded into= kernel related routines <br></div><div style=3D"font-family:tahoma,sans-se= rif;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:= tahoma,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= internal definitions <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 into the= se files with file names generated from device characteristics .</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 For the detected existing devices and newly a= ttached devices , generate the file <br></div><div style=3D"font-family:tah= oma,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 sui= table error message .</div><div style=3D"font-family:tahoma,sans-serif;font= -size:large" class=3D"gmail_default">=C2=A0=C2=A0=C2=A0=C2=A0 This allows t= o add new devices by the users by using device producing company <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 supplied=C2=A0=C2=A0=C2=A0 device defini= tions=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><d= iv style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmail_d= efault">=C2=A0=C2=A0=C2=A0=C2=A0 One more step would be to allow user suppl= ied ( not "root" supplied ) device definitions</div><div style=3D= "font-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 userlan= d .</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">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Such = a system 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"g= mail_default">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 because already they have devi= ce driver software , it is very easy to generate a</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 device definition . The users will be able to use the= se devices easily by only</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 att= aching the device , storing its device driver and definition file into her = / his space .</div><div style=3D"font-family:tahoma,sans-serif;font-size:la= rge" class=3D"gmail_default"><br></div><div style=3D"font-family:tahoma,san= s-serif;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 pr= oduce more</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 drivers , def= initions .</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 This will increase= number of possible FreeBSD users now repelled back due to difficulty of</d= iv><div style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gm= ail_default">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 use of the devices or complete = lack of their associated software parts , by solving</div><div style=3D"fon= t-family: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-famil= y: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_def= ault"><br></div><div style=3D"font-family:tahoma,sans-serif;font-size:large= " class=3D"gmail_default">It is possible to define many more improvement po= ints .</div><div style=3D"font-family:tahoma,sans-serif;font-size:large" cl= ass=3D"gmail_default"><br></div><div style=3D"font-family:tahoma,sans-serif= ;font-size:large" class=3D"gmail_default">If present problems are handled ,= they will inspire many new improvement points <br></div><div style=3D"font= -family:tahoma,sans-serif;font-size:large" class=3D"gmail_default">which me= ans you may continue to contribute to FreeBSD as much as possible .</div><d= iv style=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmail_d= efault"><br></div><div style=3D"font-family:tahoma,sans-serif;font-size:lar= ge" class=3D"gmail_default">This will supply what you want to do and its ve= ry pleasing happiness ( with respect to my</div><div style=3D"font-family:t= ahoma,sans-serif;font-size:large" class=3D"gmail_default">understanding of = your intentions ) .<br></div><div style=3D"font-family:tahoma,sans-serif;fo= nt-size:large" class=3D"gmail_default"><br></div><div style=3D"font-family:= tahoma,sans-serif;font-size:large" class=3D"gmail_default"><br></div><div s= tyle=3D"font-family:tahoma,sans-serif;font-size:large" class=3D"gmail_defau= lt"><br></div><div style=3D"font-family:tahoma,sans-serif;font-size:large" = class=3D"gmail_default">With my best wishes for all ,</div><div style=3D"fo= nt-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"g= mail_default">Mehmet Erol Sanliturk<br></div><div style=3D"font-family:taho= ma,sans-serif;font-size:large" class=3D"gmail_default"></div><br><br></div>= <div><br></div><div><br></div><div>=C2=A0</div></div></div> --000000000000e6b9b605d5b551a8--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOgwaMvYfpshBtu0JcBS07T4q4Wr5m%2BwzjE3N3GBVSqZ0LmjXg>