How Linux Kernel Prints Text on Screen

  Рет қаралды 52,188

Nir Lichtman

Nir Lichtman

28 күн бұрын

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.org/dev-tools/gdb...
- wiki.osdev.org/Text_UI

Пікірлер: 185
@nirlichtman
@nirlichtman 25 күн бұрын
- 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 24 күн бұрын
@@nirlichtman Pls Make Linux OS But With Debian-Based
@MrMassaraksh
@MrMassaraksh 19 күн бұрын
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 26 күн бұрын
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 24 күн бұрын
I have used GDB for about a year now every week and learned new commands
@thescroogemcduck
@thescroogemcduck 22 күн бұрын
This is more than an intro on how to use GDB lol, I thought I was decent with it but this is next level.
@Scoopta
@Scoopta 26 күн бұрын
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 26 күн бұрын
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 26 күн бұрын
@@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 25 күн бұрын
He's under three VMs
@LordDoucheBags
@LordDoucheBags 24 күн бұрын
@@marsovac wayland on newest nvidia drivers works well right now. Fedora btw
@MrEdrftgyuji
@MrEdrftgyuji 19 күн бұрын
A lot of corporate environments demand you use Edge.
@ericlindell3777
@ericlindell3777 26 күн бұрын
”we’re gonna have to dive in a little bit to the assembly”. What a madlad ❤
@namanchhabra4136
@namanchhabra4136 26 күн бұрын
I always wanted to know kernel that deep 🙂
@MrLarossi
@MrLarossi 24 күн бұрын
we all like it deeper
@maciej.opalinski
@maciej.opalinski 21 күн бұрын
no unnecessary talking, straight to the point, extremely well explained, this is why I pay for internet, thank you brother
@katiagalkina4607
@katiagalkina4607 26 күн бұрын
The rabbit hole is much deeper than I was thinking!
@ismbks
@ismbks 26 күн бұрын
this feels like i'm watching paid content for free
@gustawitresh
@gustawitresh 26 күн бұрын
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 26 күн бұрын
"it's more fun to read" omg
@szaszm_
@szaszm_ Күн бұрын
what's crazy about that? You pretty much have your preference if you ever worked with x86 assembly.
@OrangeDied
@OrangeDied 26 күн бұрын
kys_write?? how rude...
@nyvyme
@nyvyme 26 күн бұрын
oh
@nyvyme
@nyvyme 26 күн бұрын
oh "kms" exist
@jackkendall6420
@jackkendall6420 26 күн бұрын
You should write text to the screen NOW!
@adama7752
@adama7752 26 күн бұрын
I agree, the side effects of this function are wild.
@kipchickensout
@kipchickensout 26 күн бұрын
​@@jackkendall6420 xD
@lukelee2075
@lukelee2075 23 күн бұрын
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.
@GrittyMaholmes
@GrittyMaholmes 23 күн бұрын
I love the confidence in your voice , i wana be this confidence when coding .
@CornThatLefty
@CornThatLefty 26 күн бұрын
This series of videos is awesome. Just explains and explores a low-level topic quickly and without any fluff.
@CookieGod24
@CookieGod24 26 күн бұрын
I don’t know why but the way you say ‘config’ sounds satisfying
@nickdaria
@nickdaria 26 күн бұрын
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.
@timeimp
@timeimp 25 күн бұрын
This is like a whole subject at uni in less than 15 minutes. Subscribed!
@KovalenkoYT
@KovalenkoYT 24 күн бұрын
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!
@patrickprucha5522
@patrickprucha5522 26 күн бұрын
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
@JohnnySacc
@JohnnySacc 26 күн бұрын
That was awesome, I'd love a full series of this
@sanderbos4243
@sanderbos4243 25 күн бұрын
This is such a good reference video for anyone wanting to dive into the kernel
@orestissabethai830
@orestissabethai830 24 күн бұрын
We are going to need some more of that gdb magic you are doing. Nice video!
@stevep5759
@stevep5759 19 күн бұрын
Really fast paced and right to the point. New sub 🎉
@khazarhajiyev7710
@khazarhajiyev7710 26 күн бұрын
Have been looking for a channel like that for a long time, thank you!
@ciCCapROSTi
@ciCCapROSTi 9 күн бұрын
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.
@waldmensch2010
@waldmensch2010 26 күн бұрын
these videos are so cool and nerdy and the best of it you learn so much
@golarac6433
@golarac6433 25 күн бұрын
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 25 күн бұрын
That's a good point, added information about this in the pinned comment.
@Akronymus_
@Akronymus_ 25 күн бұрын
Finally found this vid. I clicked on a different one when seeing this in the periphery and was searching for it ever since.
@MyWatermelonz
@MyWatermelonz 26 күн бұрын
Dang breh aside from just screen printing, I learned some gdb and vim. Lots of good stuff.
@yonatanelizarov6747
@yonatanelizarov6747 26 күн бұрын
Thanks man, really useful. Keep up the great work!
@MadMathMike
@MadMathMike 26 күн бұрын
You're a freaking wizard, Nic. Great video! 👍😊
@notyourfox
@notyourfox 22 күн бұрын
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.
@whamer100
@whamer100 26 күн бұрын
wow i didnt expect displaying text to be so complicated, that's interesting
@AK-vx4dy
@AK-vx4dy 26 күн бұрын
Excellent job and crazy skills 🤯
@eitantal726
@eitantal726 26 күн бұрын
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 26 күн бұрын
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 26 күн бұрын
@@thebuggerdev So the is full process something like this? (let's say, XTerm) printf -> kernel -> parent process -> x11
@thebuggerdev
@thebuggerdev 26 күн бұрын
@@eitantal726 yes, in this example XTerm is a parent process
@thebuggerdev
@thebuggerdev 26 күн бұрын
@@eitantal726 and to be precise: communication of xterm with x11 is also done by kernel's functions
@Joker9586
@Joker9586 19 күн бұрын
Very interesting insight! Great content, thank you sir
@atharvakamble5785
@atharvakamble5785 14 күн бұрын
This video is insanely good, not many like these!
@kaankarakoc7680
@kaankarakoc7680 26 күн бұрын
thanks for another great video!
@callummacleod2177
@callummacleod2177 21 күн бұрын
Excellent information presentation 👌
@gustawitresh
@gustawitresh 26 күн бұрын
idk why, but this is fun to watch.
@pablote325
@pablote325 25 күн бұрын
this is an insanely good video.... thanks
@app3264
@app3264 25 күн бұрын
Love your videos!
@MO-fg2cm
@MO-fg2cm 26 күн бұрын
Damn the knowledge I got through this video is amazing
@ricozhuang7625
@ricozhuang7625 24 күн бұрын
That is deeper than I thought
@YRBYD
@YRBYD 26 күн бұрын
Great video!
@David-wh8zs
@David-wh8zs 26 күн бұрын
This is such a good video
@sezarstarscourge7368
@sezarstarscourge7368 24 күн бұрын
wonderful explaination ,
@iyar220
@iyar220 26 күн бұрын
Yayyy
@abdelrahmanyasser5720
@abdelrahmanyasser5720 25 күн бұрын
Great job, Thanks bro
@LeandroCoutinho
@LeandroCoutinho 26 күн бұрын
Amazing video! Linux kernel + gdb + qemu = ❤ I hope you manage to build more videos like this. =D Hardware and software interaction would be great. 😃
@dovonun
@dovonun 25 күн бұрын
You are an absolute legend 🤯
@muhammadmahad
@muhammadmahad 23 күн бұрын
Thanks for such an amazing video.
@muhammadmahad
@muhammadmahad 23 күн бұрын
Could you please share the tips to become good in low level things just like you?
@nirlichtman
@nirlichtman 22 күн бұрын
Yes, there are a bunch of tips on my welcome page, link in the channel description
@muhammadmahad
@muhammadmahad 22 күн бұрын
@@nirlichtman Thank you Nir :)
@user-dv9dl2cl1p
@user-dv9dl2cl1p 6 күн бұрын
learns a lot, thanks!
@Jonathan-ru9zl
@Jonathan-ru9zl 26 күн бұрын
You back!
@yahiaghadiry9885
@yahiaghadiry9885 26 күн бұрын
Amazing video But I have a question, all those boot logs before printing the H, how are those printed.
@jameskuo2822
@jameskuo2822 26 күн бұрын
printk(); in kernel space, in (very, very) shorts. I do believe they use different ways to printf() to implement printk().
@ecuasonic_7
@ecuasonic_7 6 күн бұрын
This is so cool, thank you
@MrMassaraksh
@MrMassaraksh 19 күн бұрын
Thank you! Good stuff
@GreeneThumbs
@GreeneThumbs 26 күн бұрын
This is fantastic
@soleroks
@soleroks 26 күн бұрын
Well done.
@theforeskinsnatcher373
@theforeskinsnatcher373 24 күн бұрын
some cool gdb tricks I didn't know. But I think I'll use the tui/disassembly view instead of jumping to addresses
@cyberbiosecurity
@cyberbiosecurity 18 күн бұрын
Awesome, thank you
@valerys.219
@valerys.219 25 күн бұрын
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.
@VaibhavSharma-zj4gk
@VaibhavSharma-zj4gk 26 күн бұрын
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 25 күн бұрын
Depends on which parts you were and weren't able to follow. Any GDB tutorial will be a good place to start
@nirlichtman
@nirlichtman 25 күн бұрын
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
@Swampdragon102
@Swampdragon102 25 күн бұрын
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 25 күн бұрын
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 25 күн бұрын
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.
@justinnamilee
@justinnamilee 26 күн бұрын
Oh damn, I'm coming in for another "Neat!"
@cosmiclattemusic
@cosmiclattemusic 24 күн бұрын
this is why I love KZbin
@jayhanjaelee
@jayhanjaelee 7 күн бұрын
It’s so interesting👍
@guilherme5094
@guilherme5094 26 күн бұрын
👍👍Thanks!
@leonardopohlmann2723
@leonardopohlmann2723 26 күн бұрын
Nice👌
@ghostsdefeated4078
@ghostsdefeated4078 23 күн бұрын
this channel is cracked
@conandoyle1859
@conandoyle1859 15 күн бұрын
great!
@skylarmorknerbrown
@skylarmorknerbrown 25 күн бұрын
This man is making some of the most informative and interesting Linux videos on all of youtube... using Windows 10
@la.zanmal.
@la.zanmal. 25 күн бұрын
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".
@eliphazbouye
@eliphazbouye 26 күн бұрын
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 26 күн бұрын
Thanks! Check out my welcome page for more information and recommended resources (link on my channel)
@eliphazbouye
@eliphazbouye 12 күн бұрын
@@nirlichtman Very awesome thank you 🙏
@NimaqAlizadeh
@NimaqAlizadeh 25 күн бұрын
Nice 🎉
@BudgiePanic
@BudgiePanic Күн бұрын
Very cool. How do you get so comfortable with CLI tools? It's like you don't even need a mouse.
@sierra991
@sierra991 2 күн бұрын
i feel like i am linus torvalds after watching this video
@user-sq9oj2zu2v
@user-sq9oj2zu2v 25 күн бұрын
Nice
@doug9000
@doug9000 25 күн бұрын
would be cool to show how graphical virtual terminals work in low level too.
@ElPikacupacabra
@ElPikacupacabra 25 күн бұрын
Why did it print 3 "H"? I tought it would continue with the other letters...
@nirlichtman
@nirlichtman 25 күн бұрын
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 25 күн бұрын
@@nirlichtman Ah, right. You did not update just the top byte.
@user-fd4cy8je7m
@user-fd4cy8je7m 25 күн бұрын
شكرا لك
@umikaliprivate
@umikaliprivate 12 күн бұрын
Could you make a video about how to make a simple wayland-based window manager?
@Nop_Nop_0x90
@Nop_Nop_0x90 21 күн бұрын
Can you start a series on deeo dive into Linux kernal ? (A real detailed one)
@nirlichtman
@nirlichtman 21 күн бұрын
More kernel videos are planned :)
@w3w3w3
@w3w3w3 24 күн бұрын
interesting
@its_code
@its_code 26 күн бұрын
❤❤❤😊
@chinchiang4345
@chinchiang4345 14 күн бұрын
AMZ!!! love it !!! THX U U is very handsome!!!! ❤❤❤❤❤❤❤❤❤❤
@MykolaTheVaultDweller
@MykolaTheVaultDweller 26 күн бұрын
based
@nathanielthomas4437
@nathanielthomas4437 15 күн бұрын
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()!
@matematikaadit
@matematikaadit 26 күн бұрын
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?
@chrisking1017
@chrisking1017 23 күн бұрын
How does this change in a terminal app in a desktop environment?
@phyzix_phyzix
@phyzix_phyzix 4 күн бұрын
How does echo init give the file as input to the cpio command?
@eitantal726
@eitantal726 26 күн бұрын
personally, I'm used to the convenience of a visual IDE and debugger
@thebuggerdev
@thebuggerdev 26 күн бұрын
JetBrains C Lion can connect to GDB (including qemu) and it works great, but unless using beta version it's not free. Do you know any free visual debuggers that works with remote GDB?
@eitantal726
@eitantal726 26 күн бұрын
@@thebuggerdev I use IAR when I debug, but I imagine VScode can interface with gdb
@thebuggerdev
@thebuggerdev 26 күн бұрын
@@eitantal726 I tested multiple VSCode plugins with no success
@TSW3585
@TSW3585 6 күн бұрын
Bro. Are you operative system developer ? how the hell can I learn that stuffs ?. This is a serius question. What books did you read about this ?
@mickolesmana5899
@mickolesmana5899 26 күн бұрын
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 25 күн бұрын
*WSL :)
@mickolesmana5899
@mickolesmana5899 25 күн бұрын
@@nirlichtman WSL? EVEN BETTER
@palapapa0201
@palapapa0201 22 күн бұрын
9:17 How did you do the "term" thing?
@nirlichtman
@nirlichtman 22 күн бұрын
When inside of a terminal in Vim you can use CTRL+W and then ":" to run commands, in this case I ran the ":term" command to open a new terminal. more information about these kinds of stuff in my playlist "Vim Tips"
@codewizard58
@codewizard58 14 күн бұрын
int(9, "hi there" )
@nathanmead140
@nathanmead140 Күн бұрын
@@codewizard58 forgot the ";"
@Trollox
@Trollox 26 күн бұрын
How do you split view with the browser so easily?
@nirlichtman
@nirlichtman 25 күн бұрын
I use LightWM, it's a tiling window manager for Windows I am working on (more info on the welcome link on my channel)
@clonkex
@clonkex 25 күн бұрын
Windows has some built in shortcuts if you don't want a custom window manager (win+left for instance) but it's not as good as what this guy has
@evildragon1774
@evildragon1774 26 күн бұрын
i'm not judging you but, why are you using windows when you're very interested in linux?
@nirlichtman
@nirlichtman 25 күн бұрын
I am also interested in Windows :)
@reddishradish7590
@reddishradish7590 13 күн бұрын
I'm fairly new to linux.. Can someone tell me what he did on 9:17, to split the screen??
@nirlichtman
@nirlichtman 13 күн бұрын
:term command on Vim, more info on my Vim tips playlist
@insert0name0here91
@insert0name0here91 19 күн бұрын
How did you get the linux terminal on powershell?
@nirlichtman
@nirlichtman 17 күн бұрын
using wsl command
@insert0name0here91
@insert0name0here91 17 күн бұрын
@@nirlichtman after I used that I ran "make defconfig" and it gives me the error "make: *** No rule to make target 'defconfig'. Stop"
@nirlichtman
@nirlichtman 16 күн бұрын
@@insert0name0here91 check out my video about making a simple distro (or the welcome link on my channel) for setup information
@insert0name0here91
@insert0name0here91 16 күн бұрын
@@nirlichtman ok
@binux5592
@binux5592 23 күн бұрын
Can yolu create 64 bit bootloader with c and asm
What Happens When Booting Linux with Low Memory
5:11
Nir Lichtman
Рет қаралды 62 М.
How A Steam Bug Deleted Someone’s Entire PC
11:49
Kevin Fang
Рет қаралды 945 М.
UNO!
00:18
БРУНО
Рет қаралды 1,8 МЛН
39kgのガリガリが踊る絵文字ダンス/39kg boney emoji dance#dance #ダンス #にんげんっていいな
00:16
💀Skeleton Ninja🥷【にんげんっていいなチャンネル】
Рет қаралды 8 МЛН
НЫСАНА КОНЦЕРТ 2024
2:26:34
Нысана театры
Рет қаралды 1,4 МЛН
MISS CIRCLE STUDENTS BULLY ME!
00:12
Andreas Eskander
Рет қаралды 20 МЛН
Andrew Kelley   Practical Data Oriented Design (DoD)
46:40
ChimiChanga
Рет қаралды 61 М.
Diving into Windows Keyboard Driver
10:29
Nir Lichtman
Рет қаралды 82 М.
C is The MOST Beautiful Language!
1:57
Emez Labs
Рет қаралды 4,7 М.
What is the Smallest Possible .EXE?
17:57
Inkbox
Рет қаралды 334 М.
Why Didn't He Get the Job? Let's Find Out! // Code Review
27:25
The Cherno
Рет қаралды 92 М.
How Hackers Bypass Kernel Anti Cheat
19:38
Ryscu
Рет қаралды 609 М.
Making Minimalist Web Server in C on Linux
10:23
Nir Lichtman
Рет қаралды 237 М.
Compilers, How They Work, And Writing Them From Scratch
23:53
Adam McDaniel
Рет қаралды 132 М.
This homelab setup is my favorite one yet.
21:30
Dreams of Autonomy
Рет қаралды 135 М.
iPhone 15 Pro в реальной жизни
24:07
HUDAKOV
Рет қаралды 484 М.
КРУТОЙ ТЕЛЕФОН
0:16
KINO KAIF
Рет қаралды 6 МЛН
İĞNE İLE TELEFON TEMİZLEMEK!🤯
0:17
Safak Novruz
Рет қаралды 1,9 МЛН