Building an OS - 1 - Hello world

Поділитися
Вставка
  • Опубліковано 6 лип 2024
  • First part in a multipart series about building operating systems. In this episode, we start by writing a 'hello world' program in assembly, and then booting it from a floppy drive.
    Links:
    - Source code: github.com/nanobyte-dev/nanob...
    - Patreon: / nanobyte
    - Discord: Discord: / discord
    - Transcript: nanobyte.dev/transcripts/buil...
    Documentation:
    - Enabling Windows Subsystem for Linux: docs.microsoft.com/en-us/wind...
    - Installing Ubuntu in Windows Subsystem for Linux: tutorials.ubuntu.com/tutorial...
    "Table of x86 Registers svg" by Immae is licensed under Creative Commons Attribution-Share Alike 3.0 Unported (commons.wikimedia.org/wiki/Fi...)
  • Наука та технологія

КОМЕНТАРІ • 456

  • @edy1219
    @edy1219 11 місяців тому +1549

    "so far our operating system does nothing and does it perfectly" top tier programming here

    • @dklima
      @dklima 10 місяців тому +14

      I loved it

    • @HaganeNoGijutsushi
      @HaganeNoGijutsushi 10 місяців тому +61

      The only time when an OS will be 100% bug and vulnerability free.

    • @edy1219
      @edy1219 10 місяців тому +7

      @@HaganeNoGijutsushi yeah

    • @supa3ek
      @supa3ek 10 місяців тому +8

      That would actually be a relief for it to do exactly what you expect 😀
      99% of the time this doesn't happen

    • @hackdesigner
      @hackdesigner 10 місяців тому +1

      Yep sounds legit. About half of the demos I'm being shown.

  • @Fernando-du5uj
    @Fernando-du5uj 2 роки тому +443

    This is the most complete video I've ever seen on building an OS. Thank you, sir! Don't stop, please

  • @stupossibleify
    @stupossibleify 3 роки тому +60

    What a fantastic series of videos, they really tickle my tech curiousity. Everything I've been puzzled by is explained so well. Thank you for making these

  • @kamikaze_kev
    @kamikaze_kev Рік тому +148

    loved this! back in 1985 i built an 8-bit z80 computer on breadboard (with a 1k static-ram chip) and had to program the RAM chip using 8 dip-switches (no assember) just in pure binary! it took hours to write code similar to this. after writing the binary code to RAM, i would then send a signal to the RES pin on the CPU to begin the instruction pointer (IP) at zero and begin execution of the code. all i had was an array of 8 led's as my output display. the code I wrote made the led's flash from left to right and vice versa, amazing days! this brings it all back! 😊 ps. i had to clock the z80 cpu at only 1 instruction per second (1hz) to be able to see the led lights move and the z80 assembly for that code was something like: l0: ld b,7 ld a,128 l1: out 0,a rra djnz l1 ld b,7 l2: rla out 0,a djnz l2 jp l0 (program size was just 21 bytes lol!)

    • @satyamraj2779
      @satyamraj2779 11 місяців тому +12

      Wow... that's quite fascinating.

    • @adversemiller
      @adversemiller 10 місяців тому +8

      That's incredible, love it

    • @tharindudhanushka2201
      @tharindudhanushka2201 10 місяців тому +3

      wow

    • @techtime3125
      @techtime3125 10 місяців тому +4

      real programmer

    • @homeopathicfossil-fuels4789
      @homeopathicfossil-fuels4789 10 місяців тому +6

      You did programming as von Neumann and the lord above us intended it, binary input, binary output, nothing else but switches and lights.
      A truly enlightening experience for anyone seeking the raw essence of what programming is. Its flicking switches to convince lights to blink in the right pattern.

  • @abdulelahaljeffery6234
    @abdulelahaljeffery6234 10 місяців тому +26

    it's really rare to find quality videos in this topic.
    Thank you sir for this excellent demo 🙏

  • @Unfaced85
    @Unfaced85 9 місяців тому +3

    just discovered this series , need to binge watch that now. This is so cool

  • @davidmarshal6729
    @davidmarshal6729 10 місяців тому +3

    i can say nothing more about this video other the "its perfect", the best OSDev tutorial i've seen yet. AMAZING

  • @NebulaDev
    @NebulaDev 2 роки тому +19

    This is brilliant. All the other tutorials are messy file trees, horrible code, and hard to follow. This is perfect, easy to do, and the teacher is great. Keep going dude!

  • @brickch4pel
    @brickch4pel 11 місяців тому +63

    Absolutely adding this to the study list. I feel like this would probably be a great reference for delving further into CompSci

    • @yaroslavpanych2067
      @yaroslavpanych2067 10 місяців тому

      Do not waste your time on this crap

    • @sastashroud7646
      @sastashroud7646 9 місяців тому +2

      This is real computer science not website Makin

  • @redaloui
    @redaloui 10 місяців тому +32

    If anything UA-cam does good from time to time, is that he suggested this to me. I highly valuate this type of content, and as a developer and a lover of coding I have a big respect to this type of talented people, its way out of my league to do such things, even that like 25 years ago when started coding using basic 1, I had such ideas 😅, now you know the life took me, and have to pay the bills so I am a web dev, thankfully I am still in the coding family.
    Big love and respect bro ❤

  • @nebuladevelopments
    @nebuladevelopments 2 роки тому +26

    Excellent Tutorial. I love how you explain everything you are doing, this is a much better tutorial then any of the others I have seen!

  • @AboMazen404
    @AboMazen404 2 роки тому +8

    This is gold , Thank you for the efforts

  • @LegoPossessed
    @LegoPossessed 4 місяці тому

    I can already see that this is going to be easy with this tutorial! PLEASE DON'T STOP, KEEP UP THE GOOD WORK!

  • @PrzestronnyMistrz-ly8rp
    @PrzestronnyMistrz-ly8rp Рік тому +1

    this video would have saved me days of research if i knew it before i got into operating systems. Very consise and coherent, 10/10

  • @crogersdev
    @crogersdev 10 місяців тому

    This is a wonderful video, friend! Thank you for doing these videos, I'm loving them!

  • @michaelhawthorne8696
    @michaelhawthorne8696 10 місяців тому +1

    Nice video...
    Looking forward to see how this progresses...
    Made 4 yrs ago, I'll check your channel for other updates...
    Thanks for the start. 👌

  • @m4rt_
    @m4rt_ Рік тому +4

    Amazing video, I managed to follow along, and I even learned some more asm.
    I have always been kind annoyed with there being very few resources online for learning asm, so I barely know any, so nice to finally find a good resource.

  • @puceno
    @puceno Рік тому +1

    the title is literally the content of the the video, you are amazing :) , dont stop never

  • @Viral757_
    @Viral757_ 5 місяців тому

    You explained the most complicated subject like it's a piece of cake. Hats off to you man !!
    This video deserves millions of likes ☘☘

  • @gearboxworks
    @gearboxworks 9 місяців тому +1

    That is one of the best tutorials of a complex subject I have ever watched. Kudos! 👏

  • @bolow
    @bolow 10 місяців тому +1

    I love this, please keep doing this kind of tutorial

  • @blauesaxolotl
    @blauesaxolotl 9 місяців тому

    That is the most complex "Hello, World" tutorial I've ever seen. Thank you for that

  • @null12346
    @null12346 Рік тому +2

    Thank you for making this tutorial. Now I learned a lot of things that will be useful for me

  • @10bokaj
    @10bokaj Рік тому +2

    This is the perfect level of explanation for me, thanks!

  • @schvarts1177
    @schvarts1177 6 місяців тому +1

    this video is really good i never seen a complete video like this

  • @flopin9528
    @flopin9528 10 місяців тому

    Randomly youtube recommended me this video. I wont try to build an OS but I always wondered how it works, thank you

  • @samarthtandale9121
    @samarthtandale9121 Рік тому +15

    I'm literally into tears 😭 ... Overwhelmed by grateful emotions ☺️😌 ... Can't believe you put it for free on UA-cam! Thank You man, I can't thank you enough... !❣️🙏🏾🙏🏾

  • @thewaterwave222
    @thewaterwave222 Рік тому +1

    YOU ARE A LEGEND ONLY THIS ONE WORKED PERFECTLY!!!!! THANK YOU!!!!

  • @masterymaster5436
    @masterymaster5436 Рік тому

    This is truly fascinating tutorial, congratulation

  • @nuutti2957
    @nuutti2957 10 місяців тому

    Absolutely amazing video! Thank you loads!

  • @pythonwithpandy9200
    @pythonwithpandy9200 2 роки тому +1

    Cool Thank you so much you are the best person who has explained assembly:)

  • @vynxie
    @vynxie 9 місяців тому +5

    It's really good to see people having fun with Assembly like this. I know we live in the age of languages like Python and Assembly can be a frustrating, painfully slow, counterintuitive language at times that tests your patience and confidence when things don't work, but I think everyone who enjoys programming should learn to work with at least one instruction set and experiment with it like this. Just mess around, play with it. At the end of the day we're just kids playing with really complicated toys and making them do tricks when we program anyway.

  • @Gamercat01
    @Gamercat01 4 роки тому +22

    Hi! I thought this was great! I hope you'll make more some day. All the best from a fellow programmer(mostly c# :))!

  • @skychip7784
    @skychip7784 5 місяців тому

    this probably needed so much work thanks for the effort!

  • @mehrdad-mixtape7970
    @mehrdad-mixtape7970 10 місяців тому

    That was amazing man!

  • @Superwastaken1
    @Superwastaken1 Рік тому

    This made me actually understand kind of how an is works and I already have an idea of how a kernel works too

  • @victorsalvans7418
    @victorsalvans7418 10 місяців тому

    The best video for begginers about this topic!! Excellent!

  • @Learnerofthings
    @Learnerofthings Рік тому +11

    Thank you VERY much for this series. I have mentioned wanting to get into OS design many times on other programming groups and been laughed at and mocked because why am I not in the kitchen making dinner lol. I've been writing in C and recently learning assembly, so now I will go back to them with an OS (after a few more years of this).

    • @spytonic4171
      @spytonic4171 Рік тому +2

      have you completed your os?

    • @Learnerofthings
      @Learnerofthings Рік тому +3

      @@spytonic4171 Not even close. Life got in the way, but I am picking it back up now.

  • @DevNugget
    @DevNugget 2 роки тому +1

    Thank you so much for these videos!!

  • @thatoneguy3_
    @thatoneguy3_ 8 місяців тому

    Best for creating os. Please do more videos!

  • @justman7656
    @justman7656 10 місяців тому

    Greatest stuff that i seen ever, man, continue plea

  • @ARandomOSDever
    @ARandomOSDever 2 роки тому +13

    Hey Nanobyte, you are one of the best and most underrated OSDev channels on UA-cam!
    You even inspired me to create a OSDev channel. Just need to find a easy to use video editor and it's done!
    BTW I am a Legacy BIOS Windows 10 user (and I will change to Linux in 2025)

    • @astric32dll
      @astric32dll Рік тому

      Why 2025?

    • @antonGanG
      @antonGanG Рік тому

      @@astric32dll thats the end of support for windows 10

    • @ferdinandw.8952
      @ferdinandw.8952 Рік тому

      @@antonGanG not anymore now it is end of 2023

    • @HustlerEli
      @HustlerEli 10 місяців тому

      Dual boot to get more familiar with Linux

  • @pythondoesstuff5722
    @pythondoesstuff5722 2 роки тому +2

    Thanks a lot sir, amazing explaination

  • @tonkotsu_noodles
    @tonkotsu_noodles 3 роки тому +3

    waiting for the next video !!!!

  • @exploitingcodes756
    @exploitingcodes756 Рік тому +1

    This channel is amazing. Keep the great work, mate!

  • @danielmosner5802
    @danielmosner5802 Рік тому +3

    This is awesome. I watch it, and get like 50% of it. Then I search for while and I understand it more. But it was till I start building my own floppy disk OS bootloader to understand it on 100% Thank you very much for this. It made me eager to learn more!

  • @botobeni
    @botobeni 10 місяців тому

    I've been searching for ages to find something like this

  • @allanmingau
    @allanmingau 2 роки тому +2

    just amazing

  • @cheeze7910
    @cheeze7910 11 місяців тому

    Thanks so much for these videos!

  • @laybackluke
    @laybackluke 10 місяців тому +2

    I really enjoy technical low-level programming projects that present the necessary theory and definitions. I hope to see you building a compiler for a toy language from scratch one day. Or a webbrowser :)

  • @NahidHasan-dz7kt
    @NahidHasan-dz7kt Рік тому

    truly brilliant !

  • @f23anone82
    @f23anone82 10 місяців тому

    Great video, thank you. Subscribed!

  • @nightwintertooth9502
    @nightwintertooth9502 10 місяців тому +3

    Terry Davis would be proud. Now everyone can homebrew their own temple OS.

  • @WistrelChianti
    @WistrelChianti 2 роки тому +1

    Thanks! That made good sense.

  • @billy.n2813
    @billy.n2813 12 днів тому

    Thank you for this!

  • @KaosPCtech
    @KaosPCtech Рік тому

    This is great, thanks for teaching us. I thought it would have been funny if you used nano to build your os

  • @JtagSheep
    @JtagSheep Рік тому

    Wow amazing tutorials, I have previously written assembly bootloaders and a basic operating system more like a shell tbh and no one really explained about the syntax of certain assembly things like $ and $$, I knew I could jump to $ for a hlt but never what the $ - $$ did in the times loop and now I do!

    • @maxmuster7003
      @maxmuster7003 Рік тому

      FLIP db "blub blub"
      fliplen = (FLIP - $)
      $ is the current location in memory.

  • @Humble_Electronic_Musician
    @Humble_Electronic_Musician Рік тому

    This is so cool!

  • @a.andrade345
    @a.andrade345 10 місяців тому

    Thats's fck'n awesome, i'm writting a compiler and the video is sooooo usefull

  • @cedric6941
    @cedric6941 27 днів тому +1

    6:50 fire voice crack 🔥🔥

  • @whydoesthisevenexist
    @whydoesthisevenexist 2 роки тому +3

    Very underrated

  • @programmieren_lernen
    @programmieren_lernen 6 місяців тому

    The best Tutorial guy!

  • @danym-98
    @danym-98 9 місяців тому

    Well structure. Thank you very much

  • @alicewyan
    @alicewyan 10 місяців тому +62

    A stack is LIFO (last-in-first-out), not FIFO. The FIFO equivalent is called a queue.

    • @x_flies
      @x_flies 10 місяців тому

      Lov u

    • @theocrandall
      @theocrandall 10 місяців тому +3

      Yes I came down here to make this exact comment.

    • @michaelt126
      @michaelt126 9 місяців тому +1

      at least the animations were right

    • @Kolundi
      @Kolundi 9 місяців тому

      thank you, I was thinking the same thing !

  • @rigbyb
    @rigbyb 8 місяців тому

    Great video, thank you very much :)

  • @momosaleh2400
    @momosaleh2400 10 місяців тому

    Great Video

  • @themodesttraveler745
    @themodesttraveler745 2 роки тому +1

    wow i just found this its awesome .

  • @neroleso
    @neroleso 2 роки тому

    brooooo really thanksssss keep going

  • @CunningBard
    @CunningBard Рік тому +1

    I like this guy, he hesitates and still gets it wrong (13:29), but all in all good tutorial

    • @nanobyte-dev
      @nanobyte-dev  Рік тому +1

      Recording videos was really stressful, especially when I started making videos. Today, I have a better workflow which helps a bit, but mistakes still happen.

  • @TheRealYiDa
    @TheRealYiDa Рік тому

    cool videos thank you for the information

  • @mhamdmarch8709
    @mhamdmarch8709 Рік тому

    The best youtube channel ❤❤

  • @trebabcock
    @trebabcock Рік тому +1

    Finally, someone who appreciates micro. I absolutely love it.

    • @nanobyte-dev
      @nanobyte-dev  Рік тому +1

      It's a nice editor, but I don't use it as much nowadays, VSCode is just better. When I need a simple editor on linux, I always fallback to vim because it's always there preinstalled, and I've learned a few basic commands.

    • @trebabcock
      @trebabcock Рік тому

      @@nanobyte-dev Totally understandable. I never did get productive with vim, unfortunately. But with micro, I was actually able to learn a lot of shortcuts, so I'm pretty productive. I go back and forth between that and VS Code because it genuinely is amazing.

    • @OriGDash
      @OriGDash Рік тому

      @@trebabcock I Agree, My Chromebook Sucks At Running VS code, And Micro Is Much Better, Yes, Understandable.

  • @twobob
    @twobob 10 місяців тому

    Quality overview

  • @Aemyl_
    @Aemyl_ 10 місяців тому

    very informative

  • @nvn1413
    @nvn1413 10 місяців тому

    This is GOLD

  • @ivankramarenko
    @ivankramarenko 10 місяців тому

    its pure information, tnx u

  • @gamedevunity3dliviopanizzi170
    @gamedevunity3dliviopanizzi170 3 місяці тому

    great job bellissimo molto interessante

  • @anthonymaxsalien
    @anthonymaxsalien Рік тому +1

    Badass dude really badass, this is Bill Gates level of making an OS. I will be looking forward to this. I am an Windows and Linux user so i play around with virtual machines so this should come out simple for me. Can't wait to make my own OS

  • @SFoX-On-Air
    @SFoX-On-Air 10 місяців тому

    Rollercoaster Tycoon 2 was written entirely in Assembler. I cant even imagine how much work the guy put in this to make it happen.

  • @RaceCar2352
    @RaceCar2352 Рік тому

    Thank You very much

  • @nikolaradovanovic4883
    @nikolaradovanovic4883 10 місяців тому

    I love you man! Greetings from Serbia.

  • @rahulr9301
    @rahulr9301 3 роки тому +19

    just amazing!!!! in 17:11 u mentioned stack as fifo but it should be like LIFO right?

  • @Mauro.F
    @Mauro.F Рік тому

    Awesome

  • @authorotar
    @authorotar 10 місяців тому

    Very easy to follow instructions and explanations. One factual error: a stack is a LIFO not a FIFO.

  • @alejandrocaviellesmartin1328
    @alejandrocaviellesmartin1328 3 місяці тому

    Very good videos dude, congrats! The stack is LIFO Last In First Out not FIFO 😂

  • @2EZShadow
    @2EZShadow 8 місяців тому

    I actually followed this tutorial on android😂
    Excellent tutorial 👍❤

    • @CEJOPawHAR
      @CEJOPawHAR 8 місяців тому

      There is probably absolutely no way you are making an OS on Android unless probably if you got an extremely high-end Phone.

    • @2EZShadow
      @2EZShadow 8 місяців тому

      @@CEJOPawHAR Samsung Galaxy A42 5G

  • @rikkasatrio2285
    @rikkasatrio2285 3 роки тому +1

    Cool

  • @TheSecretDev
    @TheSecretDev 2 роки тому +1

    im your 700th sub!!

  • @_._orange_._
    @_._orange_._ 6 місяців тому

    godsend

  • @danym-98
    @danym-98 9 місяців тому

    Thanks!

    • @stx_1
      @stx_1 6 місяців тому

      🤑🤑

    • @nanobyte-dev
      @nanobyte-dev  4 місяці тому

      Wow, thank you very much, you are very kind.

  • @RegisMichelLeclerc
    @RegisMichelLeclerc 10 місяців тому

    When using VMware, it's actually faster to use PXE than going all the way to using floppy images, you just make an empty VM with a network card and you setup your Ubuntu as a BootP server + NFS server (in the old Sun style). From there, just reboot the VM, everything else is automatic, you can jump to 64-bit mode much earlier, even before you display anything.
    By the way, ISO images are also easy to generate and somewhat more "portable" than floppy images.

  • @ferdinandw.8952
    @ferdinandw.8952 Рік тому +1

    i couldnt get qemu installed on kali purple so i used Virtualbox else everything was GREAT!

  • @andreycwb
    @andreycwb 10 місяців тому

    Wow, everything in 23 minutes, it took me several days, weeks, to find info and figure out how to create a bootloader exactly like this 17 years ago in the 2000s internet

  • @Ghent2007
    @Ghent2007 10 місяців тому

    WOW!

  • @dr.deathvolt655
    @dr.deathvolt655 2 роки тому +5

    This tutorials are really awesome ! i just wanted to ask, is knowledge of Data structures and Algorithms are necessary for building an OS

    • @nanobyte-dev
      @nanobyte-dev  2 роки тому +5

      There are some areas where they are useful, like memory management, or process scheduling. Also keep in mind that when you are building an OS you don't have the standard libraries, and you may need to implement some of these yourself. The good part is that there are a lot of resources available online, so you can learn them as you go.

    • @dr.deathvolt655
      @dr.deathvolt655 2 роки тому +1

      @@nanobyte-dev thank you for your reply, you are doing great job for the community thank you so much!!

  • @qadirhussain7679
    @qadirhussain7679 6 місяців тому

    This video is gold for people who want to learn something new everyday, but unfortunately we live in a world where a tiktoker easily gets millions of followers but a youtuber hardly gets any recognition.

  • @team_gaming2.0
    @team_gaming2.0 6 місяців тому

    "so far our operating system does nothing and does it perfectly" wow incredible

  • @endermannull4420
    @endermannull4420 Рік тому

    I was sent here by a link in a comment written by someone named Tomi Ivaswort. I have no idea who you are, but I just want to say, thanks for that link.

  • @HediDev
    @HediDev 2 роки тому +2

    Good video Sir ! Btw do you recommend any books about things I should learn to better understand your tutorials ?

    • @nanobyte-dev
      @nanobyte-dev  2 роки тому +7

      You can start with reading from the OSDev wiki, or following some text tutorials which will help you get started. The brokenthorn tutorial was my favorite. If you want to go into more depth and more theory, there are 2 great books that always get recommended, Modern Operating Systems by Andrew Tannenbaum and Operating System Concepts by Silberschatz. These are really good for theory, but maybe a bit difficult in practice. I know there is a good one about Minix, but haven't read it. I haven't really read any book related to operating systems (just partially read Tanenbaum's), but I would like to do that because I'm sure there are many things I could learn. I'm hoping to come back to this question in the future and come up with a better answer.

    • @HediDev
      @HediDev 2 роки тому +1

      @@nanobyte-dev thanks ! I will take a look at these .

  • @AwesomeAggron1000
    @AwesomeAggron1000 Рік тому +2

    Do you know how you could load this onto a usb and have it working on bare metal? I tried on linux using dd command, it does find boot sector but no string prints