What Happens When Booting Linux with Low Memory

Поділитися
Вставка
  • Опубліковано 27 жов 2024

КОМЕНТАРІ • 175

  • @taldmd
    @taldmd 6 місяців тому +491

    I used to host my router and homelab server on an OG Pentium machine with 32 MB running Debian (Potato, then Woody) until around 2004-2005. Worked like an absolute charm. 20 years later you need 64 MB just to boot the kernel.

    • @elendil354
      @elendil354 6 місяців тому +102

      Bloat.

    • @Tart0p0mme78
      @Tart0p0mme78 6 місяців тому +107

      Compile your own kernel then

    • @Diamonddrake
      @Diamonddrake 6 місяців тому +119

      You can still run Linux with less memory than this, but not with all the kernel modules enabled

    • @rian0xFFF
      @rian0xFFF 6 місяців тому +8

      security

    • @Mmouse_
      @Mmouse_ 6 місяців тому +61

      First hard drive I ever had was 20mb - I remember talking to a friend about if video would ever be available online, we both agreed the resources required would be stupid and that it would never happen and yet... Here we are.

  • @realityveil6151
    @realityveil6151 6 місяців тому +19

    0:45 you're misreading the output of free. the 'free' column is how much memory is entirely unused, does not have any role at all. This is the pool that new memory requests will be drawn from first.
    'Available' is the column that shows you how much more memory can be used by applications, even though it is technically in use now.
    How is this possible? Because the linux kernel will use portions of your ram to buffer and cache (hence why there's a buff/cache column) data that isn't it direct use by an application *right now*, but may still be useful in the future. However, if there is no free memory and more memory is required, these caches will be cleared and that memory will be used instead.
    So at the timestamp provided, the kernel has addressed 45.3 MB of ram. 22.7MB is in hard use by the system or it's applications. 2.7mb has no purpose. 120k is in use by the tmpfs filesystem. 20Mb is tied up in buffers and caches. 13.5 MBs are available for use should an application or the kernel request more memory.

  • @Problematist
    @Problematist 5 місяців тому +22

    I love the "Found nothing?!?!" message in the kernel

  • @MeriaDuck
    @MeriaDuck 6 місяців тому +119

    Feeling a bit old :-) Ran linux, compiled kernel and even ran X window with netscape in 4Mb of RAM and 4Mb or swap (1995). Later (2003) we had 'big machines' in a 19" rack with 256Mb of RAM, plenty for linux AND a few Java JVMs!

    • @shallex5744
      @shallex5744 6 місяців тому +17

      something i wonder is why even the most simple and trivial of processes on a system nowadays seem to use at least several mb of ram to run, when obviously that would have been too much for machines of 70s,. 80s, and some in the 90s, so surely processes back then must have used less ram than they do now, yet when i compile my own program that does nothing but sit an in infinite loop forever, it takes 1 mb of ram to sit there and do nothing. i just wonder what changed between then and now

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

      @@shallex5744 I imagine it's partly going from 32 bit to 64 bit doubled address and instruction lengths along with the libraries used to run everything getting bigger to account for all the different types of hardware they need to run on

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

      ​​@@shallex57441mb for a program sounds like a stack size allocated by modern OSes. It has to be a constant size. That makes me think that defaults simply increased since then

    • @sepgh2216
      @sepgh2216 6 місяців тому +22

      @@shallex5744 one of the changes is at least moving from 32bit machines to 64 ones I guess. I also assume kernels do more complicated things because in short everything is more complicated, from cpu architectures, to multi threaded and multi process environments, security, etc.

    • @FluffyFoxUwU
      @FluffyFoxUwU 6 місяців тому +2

      @@shallex5744 i think libc just different than old times and you could just write bare assembly which infinite loop on `_start` symbol and you could drop the libc
      but at the end yea i can see what you mean there basic infinite loop takes way more than infinite loop in the past

  • @GnomeEU
    @GnomeEU 6 місяців тому +181

    The source code looks so simple. In every startup you would have 70 abstractions and the strings would never be in the code itself but in some translation lookup table.

    • @KingJellyfishII
      @KingJellyfishII 6 місяців тому +55

      I'm always surprised at how seemingly simple yet complex the Linux kernel is. it seems like you can understand pieces without understanding the whole, which is something that can't be said of a lot of programs and probably something to strive for.

    • @gwentarinokripperinolkjdsf683
      @gwentarinokripperinolkjdsf683 6 місяців тому +10

      I find myself reading the linux kernel when i want to underatand how to do certain things. And then i also find myself reading some third party linux drivers and my god it's a night and day difference

    • @teldrah
      @teldrah 6 місяців тому +13

      ⁠Linus Torvalds still personally checks every merge request, and it shows. Say about the man what you want, but he has zero tolerance for bad code.

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

      @@teldrah I think a lot of things he is criticized for are actually positives and he is successful because of those "issues", not in spite of them. Particularly his "rudeness"

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

      @@gwentarinokripperinolkjdsf683 Eh, I wouldn't say so, he literally took a break at one point because he himself recognized this as an issue, because it was more than just being slightly "rude". You can be strict about kernel code quality without being a toxic asshole

  • @SyphistPrime
    @SyphistPrime 6 місяців тому +27

    Wow, that's cool. I also like how you showed the source code to give us an idea of what was happening. I'm not the best at reading code myself as I rarely develop things, but the quick explanation with the relevant code right there was super helpful for me.

  • @dev.rahulgurjar
    @dev.rahulgurjar 6 місяців тому +84

    Please, start a series on the OS basics.How it actually works, from scratch.

  • @justinbasinger7728
    @justinbasinger7728 6 місяців тому +18

    I appreciate the structure of your videos. All the information you need, in a terse straight forward package. Always well done and covering topics I wouldn't likely dig into myself otherwise. Thanks!

  • @eduardoroth8207
    @eduardoroth8207 6 місяців тому +32

    darn, i didn't about that sys request thing, quite awesome, it's like personally asking the kernel to do something from user space

    • @Epsicronics
      @Epsicronics 6 місяців тому +4

      I like the idea that sysrqs are just you telling the kernel "I messed up, help."

  • @dj.yacine
    @dj.yacine 6 місяців тому +15

    Always high quality content 👌

  • @Hexnano
    @Hexnano 6 місяців тому +5

    One of the few channels I turned notifications on, awesome Linux content!

  • @prochazkaml
    @prochazkaml 6 місяців тому +9

    You can get Linux 6.5.0 to run alongside a minimal distro built with buildroot on an ESP32-S3 microcontroller with 8 MB of PSRAM. IIRC, after logging in, it still had ~3.5 MB free. (And yes, the onboard Wi-Fi does work.)

  • @wrathofainz
    @wrathofainz 6 місяців тому +128

    "Kernel panic" is hilarious to me for some reason.
    Insert "panik!" Meme here

    • @定义
      @定义 6 місяців тому +5

      The kernel actually "panics", because it has hit something critical, just like us humans. When we did something critically wrong, we panic.

  • @BobSockTwo
    @BobSockTwo 6 місяців тому +51

    I honestly don't know why, but seeing you use windows to record this video feels like a betrayal XD

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

      Yes lol

    • @LostieTrekieTechie
      @LostieTrekieTechie 6 місяців тому +3

      I was wondering how they were making sure the key combo was not being intercepted by the host, were they running a different architecture? no it's windows

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

      @@LostieTrekieTechie handling of the SysRQ key is a parameter you can disable when compiling the kernel. It's enabled by default but labeled as "don't enable this unless you really know what this hack does"

    • @manhle1582
      @manhle1582 6 місяців тому +3

      Windows is fine, but I got triggered when I saw Edge 😅

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

    Thank you for explaining the acronyms for people that is not full into the subject is extreamly usefull ❤

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

    I've booted Linux in 16MB. I understand it can boot in as little as 2MB. Build your kernel without things you don't need. Usually this means disable loadable modules and only compile in drivers for hardware you actually have.

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

      I don't think 2 is ever possible for a modern kernel

  • @valentin-catalin1859
    @valentin-catalin1859 6 місяців тому +1

    Awesome channel, instant subscription. I have been binge-watching most of your Linux/bash/vim content. Hope this channel gets more subscribers so you can continue making videos.

  • @quintencabo
    @quintencabo 6 місяців тому +4

    How cool thanks for teaching about the sys request

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

    Neat! And the SysRq commands are _very_ useful when fooling around with custom kernel builds and you screw something up...

  • @DIYTechRepairs
    @DIYTechRepairs 6 місяців тому +5

    My first linux machine had 4mb ram so thats not small :D Not even 4mb is small
    But still i like your vids! Keep em comming.

  • @maximood-tired
    @maximood-tired 6 місяців тому

    I really like these short kernel videos. Maybe you could do more of this, explain little snippets of code of the kernel (not necessarily error handling)

  • @TheMohawkNinja
    @TheMohawkNinja 6 місяців тому +2

    2:22 Double exclamation mark, that's a new one for me. I had to look that one up to make sense of it since it seemed redundant.
    Basically converts an integer into a boolean by forcing it to be a 0 or 1. Certainly more elegant than a ternary.

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

      also known as a "double bang". but don't diss my ternarys!

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

    i remember trying out alpine once for a CTF game, and i was just amazed at how everything just worked with so little memory

  • @maciejk2
    @maciejk2 6 місяців тому +2

    very nice video!
    btw, its impressive how fast the vim is, how it allows for all of that stuff, so is there any easy tutorial how to setup it and learn? i never used it before, and i think that im missing something big. ive seen there are beautiful themes for it, but never got myself to really trying it out. would love to see instructions for windows or gnu/linux, even tho i currently only main windows :)

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

      Check out my "Vim Tips" playlist for tutorials and tips. you can easily get Vim on windows using "winget install vim"

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

      @@nirlichtman thank you :)

  • @Jp-ue8xz
    @Jp-ue8xz 6 місяців тому

    Damn oveer a decade on linux, but today I finally learned what the sysreq key is good for lmao, good stuff!

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

    We've built a router firmware using kernel 2.6 in a mips hardware, it had 16 megs of ram and 4 megs of SPI flash. the entire system had to be compressed into the flash, only the kernel took 2 megs of flash space, the rest was used for userland tools. Kernel would uncompress itself in memory, taking about 8mb, so we had only 8 megs available for the rest of the system. It was challenging squeeze everything in 2 megs lol.

  • @weedsoldier.
    @weedsoldier. 6 місяців тому +3

    I think it's pretty obvious what happenes, the computer just... forgets

  • @ronalerquinigoagurto555
    @ronalerquinigoagurto555 6 місяців тому +3

    More vids on exploring the kernel source

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

    This should be an exercise in OS courses in universities, nice way to show what happens on a deadlock.

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

    Didn't know you could trigger SysRq by just pressing the key not holding it. I've always just held Alt+SysRq and while doing that pressing a letter to send the command and it has worked every time.

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

    Very informative and i dont mean this as a slight, but i find it a bit funny how you're using windows and edge to explain linux

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

      That’s hilarious

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

    Love your content.

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

    The SysRq key on Linux is very similar to ‘System Call’ command from an anime called Sword Art Online. Pretty funny.

  • @ehtrude
    @ehtrude 6 місяців тому +3

    Great video, but I have to ask… you know so much about Linux, and you even use DWM, so why use windows as the base system? Is there something missing in Linux for you?

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

      He play roblox

    • @nirlichtman
      @nirlichtman  6 місяців тому +3

      I address this question on my welcome page, but mainly since I like both

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

      @@nirlichtman oh, sorry, didn’t see it. Hmm, okay. My experience with windows has always been very buggy and unstable, but I guess it’s not like that for everyone. I do still prefer my OS to be open-source, and Linux has worked quite well for me. Interesting to see other opinions.

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

      @ehtrude In my case at least, as much as I would like to daily drive Linux, my university pretty much runs on Windows and requires it for a lot of applications they use. Microsoft Office is a pretty big component too, so for the time being I need to stick with it (especially in grad school). Windows 11 isn’t awful, but I really do hate that it updates automatically without the user’s permission.

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

    i panicked for a second thinking the sysrequest key combination would reboot your host until realising it was windows...

  • @EdwardChan.999
    @EdwardChan.999 6 місяців тому

    I don't know why but this is very entertaining!

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

    Great video!

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

    The SysRq is only active if configured to be.

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

    Linux is never picky about the lowest of system resources, provided that you don’t use something for too much power of course. Like a desktop environment for example.

  • @Con-np9yx
    @Con-np9yx 6 місяців тому

    Would've loved to see you just completely remove the panic and then recompile Alpine.

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

    Crazy how there's CPUs now with enough cache to fit Linux inside

  • @neonblood4658
    @neonblood4658 2 місяці тому

    linux kernel code is honestly great for how massive the codebase is

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

    Fun fact: if you press Alt + Sysrq on Windows 10, 11 it opens Onedrive

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

    Judging from the stack trace, it ran out of memory unpacking the initrd. How about if you boot without one?

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

    😮 wow did not know about the sysrq key

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

    I love it. just love it. can't believe that key is for that. awesome 👍🏻 😎

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

    I am wondering what would happen if you have no swap or very little swap

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

    My first Windows 95 PC worked just fine on 8MB of RAM. Nowadays, a simple text editor would consume more RAM than that. I wonder how Windows 95 could work on such small RAM.

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

      I had Notepad++ eating about 4 gigabytes a few days ago, so that puts our changing hardware demands really into perspective. Though it depends on what you're editing. Right now it's cruising on 2.4MB, which actually would fit your 8MB of RAM :)

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

      @@Alice_Fumo A lot of the “problem” is programs started trading RAM for performance several decades ago because RAM capacity and speed were both improving much faster than general IOPS and speed were improving.
      I also doubt the stability of the 8MB Windows 95 machine. Per my recollection Windows 95 needed around 32MB to work well. It was much less picky about processor specs than memory. I had a 66MHz 486DX2 with 48MB of RAM that ran office stuff just fine. It hated doing much else though.

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

    Great info thanks!!

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

    Thank for making video where I cant actually remember stuff

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

    Cool trick.
    Which text editor do you use?

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

    Could a commodore 64 run alpine linux?

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

    Will not run below 8KB on real x86 hardware. (BIOS won't start). EDIT: This is normal behavior. Maybe some BIOSes will work fine.

  • @BarryKawooya-c3g
    @BarryKawooya-c3g 6 місяців тому +2

    My laptop keyboard doesn't have the sysrq

    • @nirlichtman
      @nirlichtman  6 місяців тому +2

      It should have, on some laptops you need to press Fn to activate the special keys (notice that SysRq and print screen are the same key so it may be that on your laptop it only says print screen)

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

      @@nirlichtmanFor some it can be even weirder, like it can be some weird combo like Fn+S is SysRq on one laptop. You should find out what it is on your model.

    • @BarryKawooya-c3g
      @BarryKawooya-c3g 6 місяців тому

      @@nirlichtman thanks

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

    The last time you were able to boot Windows with 64 MBs of memory was in the 90s 😂

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

    how do you grep from vim like that it doesnt work for me:(

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

      Check out my video about project search in Vim (on my playlist Vim tips), its simply adding a single line to the vimrc (no plugins required)

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

    the code looks really simple, I wonder if I can actually help develop linux

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

    Linux lite i don't know if more minimal system exist ?

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

      I think Alpine would still be lighter than Linux Lite since I see that Linux Lite is based on Debian/Ubuntu and Alpine is def more minimal than them

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

      @@nirlichtman how does it compare to damn small linux?

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

    Wow, that source code is really readable... I've gotta write some comments.

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

    3:12 these magic keys help a lot lol

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

    I’m still upset I couldn’t get Linux to boot on my 286 with 4mb ram

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

    As soon as I saw the cover of the video I thought:
    "here’s a video made by a noob to make views with simple stuff," and instead it’s much more than that.

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

    The linux logo already tell the fate for someone who fail to fix it lol

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

    Really cool.

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

    64MB seems surprisingly high to me

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

    Cool video :)

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

    you have 20M of buffer/cache space. you could easily trim this another 15M
    Disable your initrd, and init=/bin/bash.

  • @maximood-tired
    @maximood-tired 6 місяців тому

    very interesting!

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

    What's the System Request key?

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

      Watch the video and you'll know

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

    My dad loves to talk about running Slackware with less than 8mb back in the day... amazing now how 64 mb is the absulute minimum limit lol

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

    Perfect!

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

    Bro why do you use windows even after knowing so much about linux ?

    • @nirlichtman
      @nirlichtman  6 місяців тому +2

      I find it more comfortable as my main OS

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

      @@nirlichtman Fair enough, great content though. How can we learn more about indepth stuff like this ?

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

    that's so interesting!

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

    So neat

  • @akurasubject9617
    @akurasubject9617 Місяць тому

    DOS with only 64kb of ram: Amatures!

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

    alpine is linux without GNU

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

      Alpine is a tiny distro for containers / embedded.
      Lack of GNU is just an implementation detail.

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

    Bro it's literally glorified msdos. Why would it need decent amounts of ram?

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

      Because "glorified" is doing a lot of heavy lifting there.

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

      @@icantcomeupwithnames469 it’s all cli. This should be able to run on a ibm pc from like 1987 or something.

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

      @@PedroBastozz Simply having a CLI says nothing about what you're I'ing with.

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

      @@icantcomeupwithnames469 Having a cli is normal. You should definitely have a terminal app. Not having a GUI is just simply not an option. It wasn’t an option 20 years ago and it certainly isn’t today.

  • @dark-ghost4132
    @dark-ghost4132 6 місяців тому

    Nice ❤❤

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

    Double like!

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

    💖💖💖💖

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

    Debian runs literally on anything
    1GB ram naaa 512 GB ram debian no issues I can run .

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

    Cool

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

    cool beans

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

    Now let's see what happens if you boot Windows 10 with low memory... oh right, it's completely useless.

    • @nirlichtman
      @nirlichtman  6 місяців тому +2

      I actually just tried Windows XP and to my surprise it booted and was somewhat usable with 32MB, but 16MB already caused a BSOD on boot.

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

      @@nirlichtman Yeah, but I am talking about modern (still supported) Windows.

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

    Yeah well DOS can boot in less than 640k, so Microsoft still won

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

      Can't even compare DOS w/ Linux. DOS does 5% of a basic GNU/Linux kernel/userland environment, it does not even has it's own network stack.

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

      @@cassianomartin2699 Society has had a network stack for ages - it’s called the market
      Just get a floppy disk

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

      DOS doesn't work with present-day software and hardware. So no.

  • @rasputindasilva858
    @rasputindasilva858 6 місяців тому +2

    Linux sucks.

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

    Really cool 😮