Skip site navigation (1)Skip section navigation (2)
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 &lt;<a href=3D"mailto:m.e.sanlitur=
k@gmail.com">m.e.sanliturk@gmail.com</a>&gt; 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 &lt;<a href=3D"mailto:bakul@iitbombay.org" target=3D=
"_blank">bakul@iitbombay.org</a>&gt; 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 &lt;<a href=3D"mailto:aryeh.friedman@gmail.com" targ=
et=3D"_blank">aryeh.friedman@gmail.com</a>&gt; 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&#39;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">&quot;</div>Required Knowledge<br><br>If you thi=
nk you can skip this, it&#39;s probably just for you.<br><br>Writing an OS =
is not a beginner&#39;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">&quot;</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 &quot;crazy&quot; idea=
s , or please ask me &quot;Do you have more crazy ideas ?&quot; . <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 &quot;more crazy&quot; 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 &quot;Ve=
ry&quot; but ) &quot;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 &quot;panic&quot; 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 &quot;panic&quot; .</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 &quot;root&quot; 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>