No video

How Linux Kernel Prints Text on Screen

  Рет қаралды 66,387

Nir Lichtman

Nir Lichtman

Күн бұрын

In this video we will dive into a simple call to the printf function and see what happens in the kernel and how it gets eventually printed on screen.
For more information about setting up an environment for kernel dev, checkout the welcome link on my channel.
Docs used in video:
- docs.kernel.or...
- wiki.osdev.org...

Пікірлер: 220
@nirlichtman
@nirlichtman Ай бұрын
- The display mechanism the kernel chooses depends on the setup, this is what it chose in the case of standard QEMU config & x86_64, but on other machines it may use something else for example a framebuffer. VGA mode 3 is a common x86/x64 choice, especially for older machines, but modern ones may not support it at all. - The reason it printed 3 "H" letters and not "Hel" is that I recycled the same command that I used to modify the first letter to red, and only changed the color so it brought over the same first letter each time.
@user-il3uq6cx4e
@user-il3uq6cx4e Ай бұрын
@@nirlichtman Pls Make Linux OS But With Debian-Based
@MrMassaraksh
@MrMassaraksh Ай бұрын
Thank you for explaining why H is printed 3 times, because it can be understood as you run over the same char, but in reality you just moved further in “array of letters”.
@FernandoMumbach
@FernandoMumbach Ай бұрын
This video is a tutorial on: - How printf works in the kernel - How to the debug the kernel with GDB - An intro into how to to use GDB - A guide on how to look up kernel documentation And several things more. Condensed in 12 minutes. This is perfect!! I've never seen a video as good as this one explaining anything!
@Henrix1998
@Henrix1998 Ай бұрын
I have used GDB for about a year now every week and learned new commands
@thescroogemcduck
@thescroogemcduck Ай бұрын
This is more than an intro on how to use GDB lol, I thought I was decent with it but this is next level.
@ericlindell3777
@ericlindell3777 Ай бұрын
”we’re gonna have to dive in a little bit to the assembly”. What a madlad ❤
@Scoopta
@Scoopta Ай бұрын
You're making one of the nerdiest linux videos I've seen on windows using MS edge...saying I'm confused is an understatement
@marsovac
@marsovac Ай бұрын
What you use doesn't matter. It is how well you use it... On Windows at least he doesn't have to deal with Wayland issues :D What I was wondering the most is why didn't he turn off the search box in the taskbar :P
@Scoopta
@Scoopta Ай бұрын
@@marsovac ...as someone who runs wayland without Xwayland or X11 compatibility at all...and as a developer of reasonably widely used wayland software...I take issue to that remark lol =D...that aside the search box is terrible.
@ddthegr8
@ddthegr8 Ай бұрын
He's under three VMs
@LordDoucheBags
@LordDoucheBags Ай бұрын
@@marsovac wayland on newest nvidia drivers works well right now. Fedora btw
@MrEdrftgyuji
@MrEdrftgyuji Ай бұрын
A lot of corporate environments demand you use Edge.
@namanchhabra4136
@namanchhabra4136 Ай бұрын
I always wanted to know kernel that deep 🙂
@MrLarossi
@MrLarossi Ай бұрын
we all like it deeper
@katiagalkina4607
@katiagalkina4607 Ай бұрын
The rabbit hole is much deeper than I was thinking!
@matthias7534
@matthias7534 Ай бұрын
no unnecessary talking, straight to the point, extremely well explained, this is why I pay for internet, thank you brother
@krnick0000
@krnick0000 Ай бұрын
The magic behind a standard library function-and the POSIX system calls-is what every CS student would have wondered about for once. Thank you for making this video. It brought back memories of being curious about how a computer works.
@nickdaria
@nickdaria Ай бұрын
Excellent video as always. Love seeing well-made low level computing content that does deep dives into while keeping it just dense enough to watch in your free time. I feel like many videos on this topic are always either way too short/simplified or way too long and drawn out. You always hit it on the head.
@CornThatLefty
@CornThatLefty Ай бұрын
This series of videos is awesome. Just explains and explores a low-level topic quickly and without any fluff.
@CookieGod24
@CookieGod24 Ай бұрын
I don’t know why but the way you say ‘config’ sounds satisfying
@timeimp
@timeimp Ай бұрын
This is like a whole subject at uni in less than 15 minutes. Subscribed!
@ismbks
@ismbks Ай бұрын
this feels like i'm watching paid content for free
@KovalenkoYT
@KovalenkoYT Ай бұрын
I just discovered this channel today, and with two videos that I have seen I feel that in half an hour I have learned more than what I learned in many classes at the university. Subscribed!
@shahriarmorabi8945
@shahriarmorabi8945 16 күн бұрын
i have longed for this exact video for years. Thank you.
@GrittyMaholmes
@GrittyMaholmes Ай бұрын
I love the confidence in your voice , i wana be this confidence when coding .
@autistadolinux5336
@autistadolinux5336 5 күн бұрын
clicked for the kernel, stayed for the gdb tutorial
@patrickprucha5522
@patrickprucha5522 Ай бұрын
I like the way you explain things. I also noticed that you are very good and very at ease with programming languages. I will look into more of your videos / media when i jump into c programming. thanks again
@someone5781
@someone5781 7 күн бұрын
This was super dope! Loved this technical deep dive! I learned a ton!
@piano_arts_2007
@piano_arts_2007 7 күн бұрын
I didn't know untill now that there's a lot of stuff under the hood just to print something on the screen but with all of this it really makes sense on why is this. Really cool video btw.
@OrangeDied
@OrangeDied Ай бұрын
kys_write?? how rude...
@nyvyme
@nyvyme Ай бұрын
oh
@nyvyme
@nyvyme Ай бұрын
oh "kms" exist
@jackkendall6420
@jackkendall6420 Ай бұрын
You should write text to the screen NOW!
@adama7752
@adama7752 Ай бұрын
I agree, the side effects of this function are wild.
@kipchickensout
@kipchickensout Ай бұрын
​@@jackkendall6420 xD
@vojtech_richter
@vojtech_richter 3 күн бұрын
This is so cool. Thank you very much Nir for these linux deepdives!
@r4co351
@r4co351 4 күн бұрын
Just found out about your channel and I'm already hooked with it! שמח לראות שאתה מישראל 😊. Keep up the great work!
@nirlichtman
@nirlichtman 3 күн бұрын
תודה! :)
@BorderKeeper
@BorderKeeper 21 күн бұрын
Programmer of 10 years here. This is straight up black magic.
@sanderbos4243
@sanderbos4243 Ай бұрын
This is such a good reference video for anyone wanting to dive into the kernel
@stevep5759
@stevep5759 Ай бұрын
Really fast paced and right to the point. New sub 🎉
@yonatanelizarov6747
@yonatanelizarov6747 Ай бұрын
Thanks man, really useful. Keep up the great work!
@eitantal726
@eitantal726 Ай бұрын
What happens when you have a console window, rather than raw VGA as your tty? How does it "know" that stdout is mapped to VGA in this case? is it done during process creation?
@thebuggerdev
@thebuggerdev Ай бұрын
When a process writes to stdout (file descriptor = 1) typically it is managed by a parent process. Parent process can catch this data (like for example console window process) or pass through to it's parent. Init is a special process, that starts all other proceses, so it's stdout is rendered by a kernel (also it can pass through data from a process, that is it's child)
@eitantal726
@eitantal726 Ай бұрын
@@thebuggerdev So the is full process something like this? (let's say, XTerm) printf -> kernel -> parent process -> x11
@thebuggerdev
@thebuggerdev Ай бұрын
@@eitantal726 yes, in this example XTerm is a parent process
@thebuggerdev
@thebuggerdev Ай бұрын
@@eitantal726 and to be precise: communication of xterm with x11 is also done by kernel's functions
@khazarhajiyev7710
@khazarhajiyev7710 Ай бұрын
Have been looking for a channel like that for a long time, thank you!
@waldmensch2010
@waldmensch2010 Ай бұрын
these videos are so cool and nerdy and the best of it you learn so much
@golarac6433
@golarac6433 Ай бұрын
I use gdb a lot but somehow didn't know about the 'advance' command, I would put a breakpoint when I wanted to advance forward (that I had to delete or disable later). So that's nice, thanks :) It might be worth adding that the vga text mode is a very legacy functionality. Qemu still supports it since its very easy to use from software but I'm not even sure if modern gpus support that. I think all modern gpus support only a normal linear pixel frame buffer where you'd have to blit your font characters manually.
@nirlichtman
@nirlichtman Ай бұрын
That's a good point, added information about this in the pinned comment.
@cocogus
@cocogus 4 күн бұрын
Short and descriptive. Great video.
@MyWatermelonz
@MyWatermelonz Ай бұрын
Dang breh aside from just screen printing, I learned some gdb and vim. Lots of good stuff.
@notyourfox
@notyourfox Ай бұрын
Thanks a lot! I'm trying to grasp system calls and standard library for my own OS. I am always shocked by the complexity of the code in Linux kernel and the amount of knowledge and talent it required to write.
@Akronymus_
@Akronymus_ Ай бұрын
Finally found this vid. I clicked on a different one when seeing this in the periphery and was searching for it ever since.
@ciCCapROSTi
@ciCCapROSTi Ай бұрын
Came here to learn about the kernel, but instead got an intermediate GDB tutorial. I'm thankful, I'm a lot more interested in GDB than the Linux kernel, actually. As for the video mode, yeah, I remember programming assembly as a child, I know how that mode works. I produced several full screen vomits of blinking colors.
@Samstercraft77
@Samstercraft77 19 күн бұрын
Now THIS is top quality content
@orestissabethai830
@orestissabethai830 Ай бұрын
We are going to need some more of that gdb magic you are doing. Nice video!
@JohnnySacc
@JohnnySacc Ай бұрын
That was awesome, I'd love a full series of this
@saurabhrajguru1636
@saurabhrajguru1636 5 күн бұрын
beautifully broken down. thanks!
@whamer100
@whamer100 Ай бұрын
wow i didnt expect displaying text to be so complicated, that's interesting
@iyar220
@iyar220 Ай бұрын
Yayyy
@yahiaghadiry9885
@yahiaghadiry9885 Ай бұрын
Amazing video But I have a question, all those boot logs before printing the H, how are those printed.
@jameskuo2822
@jameskuo2822 Ай бұрын
printk(); in kernel space, in (very, very) shorts. I do believe they use different ways to printf() to implement printk().
@cosmiclattemusic
@cosmiclattemusic Ай бұрын
this is why I love KZfaq
@Jonathan-ru9zl
@Jonathan-ru9zl Ай бұрын
You back!
@valerys.219
@valerys.219 Ай бұрын
essential things, nicely done. But IMHO you missed one point, how vga works (logical level), ie what the kernel write to the vga memory in order to see an 'H' on the screen. Anyway thanks for sharing.
@skylarmorknerbrown
@skylarmorknerbrown Ай бұрын
This man is making some of the most informative and interesting Linux videos on all of youtube... using Windows 10
@ghostsdefeated4078
@ghostsdefeated4078 Ай бұрын
this channel is cracked
@atharvakamble5785
@atharvakamble5785 Ай бұрын
This video is insanely good, not many like these!
@ricozhuang7625
@ricozhuang7625 Ай бұрын
That is deeper than I thought
@LeandroCoutinho
@LeandroCoutinho Ай бұрын
Amazing video! Linux kernel + gdb + qemu = ❤ I hope you manage to build more videos like this. =D Hardware and software interaction would be great. 😃
@pal-v3d
@pal-v3d 11 күн бұрын
Hoping more videos like this. ❤
@iflux8821
@iflux8821 12 күн бұрын
This is great! Thank you very much!
@Samstercraft77
@Samstercraft77 19 күн бұрын
THE HELLO WORLD TYPING SPEED IS CRAZY
@MadMathMike
@MadMathMike Ай бұрын
You're a freaking wizard, Nic. Great video! 👍😊
@AK-vx4dy
@AK-vx4dy Ай бұрын
Excellent job and crazy skills 🤯
@pablote325
@pablote325 Ай бұрын
this is an insanely good video.... thanks
@theforeskinsnatcher373
@theforeskinsnatcher373 Ай бұрын
some cool gdb tricks I didn't know. But I think I'll use the tui/disassembly view instead of jumping to addresses
@Swampdragon102
@Swampdragon102 Ай бұрын
I still don't know why the random modified memory appears on the terminal, but I've learned the basics of GDB, so that's something
@nirlichtman
@nirlichtman Ай бұрын
On VGA text mode 3 (the display mode the kernel decided to use in this case), the text on screen is manipulated through memory, so when writing to a specific memory address we can change the contents on the screen. (more info on the OSDev wiki article link in description)
@clonkex
@clonkex Ай бұрын
That memory was about to be printed anyway. It was H to start with because that was the beginning of Hello World. He just found where it was about to happen and changed the memory just before it did. Then because he kept using the same second byte and only changing the colour byte, it printed more H characters instead of the e and l it would have otherwise printed.
@ElPikacupacabra
@ElPikacupacabra Ай бұрын
Why did it print 3 "H"? I tought it would continue with the other letters...
@nirlichtman
@nirlichtman Ай бұрын
Reason it printed 3 "H"s is that when I changed to the other colors, I reused the command in which I modified the "H" to red, and only changed the color, so it kept the same character as before.
@ElPikacupacabra
@ElPikacupacabra Ай бұрын
@@nirlichtman Ah, right. You did not update just the top byte.
@Joker9586
@Joker9586 Ай бұрын
Very interesting insight! Great content, thank you sir
@gustawitresh
@gustawitresh Ай бұрын
idk why, but this is fun to watch.
@MO-fg2cm
@MO-fg2cm Ай бұрын
Damn the knowledge I got through this video is amazing
@callummacleod2177
@callummacleod2177 Ай бұрын
Excellent information presentation 👌
@ecuas_7
@ecuas_7 28 күн бұрын
This is so cool, thank you
@YRBYD
@YRBYD Ай бұрын
Great video!
@user-dv9dl2cl1p
@user-dv9dl2cl1p 29 күн бұрын
learns a lot, thanks!
@eliphazbouye
@eliphazbouye Ай бұрын
Nir please I want to know what you way to learn efficiently ? can you give me our method ? some tips ? . Great video thanks
@nirlichtman
@nirlichtman Ай бұрын
Thanks! Check out my welcome page for more information and recommended resources (link on my channel)
@eliphazbouye
@eliphazbouye Ай бұрын
@@nirlichtman Very awesome thank you 🙏
@coshvjicujmlqef6047
@coshvjicujmlqef6047 10 күн бұрын
how does kernel printk work? i do not want to use format string but just write
@MrMassaraksh
@MrMassaraksh Ай бұрын
Thank you! Good stuff
@VaibhavSharma-zj4gk
@VaibhavSharma-zj4gk Ай бұрын
Thats a knowledge packed video. I understood it in parts. Is there any past video i need to see to better inderstand this one?
@sanderbos4243
@sanderbos4243 Ай бұрын
Depends on which parts you were and weren't able to follow. Any GDB tutorial will be a good place to start
@nirlichtman
@nirlichtman Ай бұрын
I would recommend checking out my videos about making a simple distro, Linux system calls explained, and generally my Linux playlists. Also, welcome to check out my welcome page for recommended resources, link on my channel
@doug9000
@doug9000 Ай бұрын
would be cool to show how graphical virtual terminals work in low level too.
@la.zanmal.
@la.zanmal. Ай бұрын
0:56 For the record: the `-j` flag stands for "jobs", and tells `make` how many actions it may run in parallel. It can generally make a complex build faster, up to the limit of the number of CPU cores you have. At least for me, the numeric argument isn't necessary and by just passing `-j`, "make will not limit the number of jobs that can run simultaneously".
@dovonun
@dovonun Ай бұрын
You are an absolute legend 🤯
@cyberbiosecurity
@cyberbiosecurity Ай бұрын
Awesome, thank you
@mickolesmana5899
@mickolesmana5899 Ай бұрын
Noob arch user : nooo you can't just run both windows and linux Chad Kernel dev : anyway I just opened Qemu on Linux from ssh windows
@nirlichtman
@nirlichtman Ай бұрын
*WSL :)
@mickolesmana5899
@mickolesmana5899 Ай бұрын
@@nirlichtman WSL? EVEN BETTER
@sierra991
@sierra991 25 күн бұрын
i feel like i am linus torvalds after watching this video
@app3264
@app3264 Ай бұрын
Love your videos!
@nathanielthomas4437
@nathanielthomas4437 Ай бұрын
Driver devs can get a lot of hate sometimes, but if it weren't for them, we wouldn't get to see the hard work of printf()!
@gustawitresh
@gustawitresh Ай бұрын
WTF, bro just said. "I don't really like AT&T *assembly* syntax, so I'm going to intel *syntax*" This man is crazy
@gustawitresh
@gustawitresh Ай бұрын
"it's more fun to read" omg
@szaszm_
@szaszm_ 24 күн бұрын
what's crazy about that? You pretty much have your preference if you ever worked with x86 assembly.
@kaankarakoc7680
@kaankarakoc7680 Ай бұрын
thanks for another great video!
@umikaliprivate
@umikaliprivate Ай бұрын
Could you make a video about how to make a simple wayland-based window manager?
@muhammadmahad
@muhammadmahad Ай бұрын
Thanks for such an amazing video.
@muhammadmahad
@muhammadmahad Ай бұрын
Could you please share the tips to become good in low level things just like you?
@nirlichtman
@nirlichtman Ай бұрын
Yes, there are a bunch of tips on my welcome page, link in the channel description
@muhammadmahad
@muhammadmahad Ай бұрын
@@nirlichtman Thank you Nir :)
@sezarstarscourge7368
@sezarstarscourge7368 Ай бұрын
wonderful explaination ,
@David-wh8zs
@David-wh8zs Ай бұрын
This is such a good video
@justinnamilee
@justinnamilee Ай бұрын
Oh damn, I'm coming in for another "Neat!"
@abdelrahmanyasser5720
@abdelrahmanyasser5720 Ай бұрын
Great job, Thanks bro
@jayhanjaelee
@jayhanjaelee Ай бұрын
It’s so interesting👍
@GreeneThumbs
@GreeneThumbs Ай бұрын
This is fantastic
@chrisking1017
@chrisking1017 Ай бұрын
How does this change in a terminal app in a desktop environment?
@MykolaTheVaultDweller
@MykolaTheVaultDweller Ай бұрын
based
@BudgiePanic
@BudgiePanic 23 күн бұрын
Very cool. How do you get so comfortable with CLI tools? It's like you don't even need a mouse.
@nirlichtman
@nirlichtman 22 күн бұрын
Check the welcome link on my channel for recommended learning resources and additional information, I indeed prefer using the keyboard over mouse control in a lot of cases, but I wouldn't say a mouse is completely unneeded, for example for graphical stuff it is very useful.
@Nop_Nop_0x90
@Nop_Nop_0x90 Ай бұрын
Can you start a series on deeo dive into Linux kernal ? (A real detailed one)
@nirlichtman
@nirlichtman Ай бұрын
More kernel videos are planned :)
@soleroks
@soleroks Ай бұрын
Well done.
@conandoyle1859
@conandoyle1859 Ай бұрын
great!
@matematikaadit
@matematikaadit Ай бұрын
I guess if you wanna keep the character value but only change the color, you do bitwise AND to the value, for example $r10w=$r10w & 0x2FF (for green color) right? Did GDB support this expression?
@binux5592
@binux5592 Ай бұрын
Can yolu create 64 bit bootloader with c and asm
@joshjackson3471
@joshjackson3471 20 күн бұрын
Amazingly informative video, I was always interested in the deeper workings of printing text but I don't have the Linux knowledge yet to pursue it myselfSomething I noticed while watching, I think the reason why you couldn't modify the tc value in gdb was because it's a string or struct pointer; that's usually where I see the lvalue error in my own programming at least. Could probably dereference it and then set the value
@leonardopohlmann2723
@leonardopohlmann2723 Ай бұрын
Nice👌
@evildragon1774
@evildragon1774 Ай бұрын
i'm not judging you but, why are you using windows when you're very interested in linux?
@nirlichtman
@nirlichtman Ай бұрын
I am also interested in Windows :)
Bash vs ZSH vs Fish: What's the Difference?
13:32
Eric Murphy
Рет қаралды 175 М.
Docker Tutorial for Beginners
50:38
mCoding
Рет қаралды 25 М.
艾莎撒娇得到王子的原谅#艾莎
00:24
在逃的公主
Рет қаралды 53 МЛН
Can This Bubble Save My Life? 😱
00:55
Topper Guild
Рет қаралды 83 МЛН
Kids' Guide to Fire Safety: Essential Lessons #shorts
00:34
Fabiosa Animated
Рет қаралды 16 МЛН
ISSEI & yellow girl 💛
00:33
ISSEI / いっせい
Рет қаралды 24 МЛН
100+ Linux Things you Need to Know
12:23
Fireship
Рет қаралды 1 МЛН
How A Steam Bug Deleted Someone’s Entire PC
11:49
Kevin Fang
Рет қаралды 970 М.
It's time for change, it's time for Linux.
10:53
DankPods
Рет қаралды 207 М.
How Do Linux Kernel Drivers Work? - Learning Resource
17:02
LiveOverflow
Рет қаралды 546 М.
eBPF in 120 seconds
2:00
Shawn Pitts
Рет қаралды 20 М.
Diving into Windows Keyboard Driver
10:29
Nir Lichtman
Рет қаралды 84 М.
What Happens When Booting Linux with Low Memory
5:11
Nir Lichtman
Рет қаралды 63 М.
Compilers, How They Work, And Writing Them From Scratch
23:53
Adam McDaniel
Рет қаралды 158 М.
Java Is Better Than Rust
42:14
ThePrimeTime
Рет қаралды 246 М.
Tmux has forever changed the way I write code.
13:30
Dreams of Code
Рет қаралды 969 М.
艾莎撒娇得到王子的原谅#艾莎
00:24
在逃的公主
Рет қаралды 53 МЛН