Skip site navigation (1)Skip section navigation (2)
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 &lt;<a href=
=3D"mailto:bakul@iitbombay.org">bakul@iitbombay.org</a>&gt; 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 &lt;<a href=3D"mailto:aryeh.fri=
edman@gmail.com" target=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 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&#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 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">&quot;</div>Required Knowledge<br><br>If you =
think 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 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">&quot;</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 &quot;crazy&quot; id=
eas , or please ask me &quot;Do you have more crazy ideas ?&quot; . <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 &quot;more crazy&quot; 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 &quot;=
Very&quot; but ) &quot;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 &quot;panic&quot; 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 &quot;panic&quot; .</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 &quot;root&quot; 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>