[HN Gopher] Linux Kernel Explorer
___________________________________________________________________
Linux Kernel Explorer
Author : tanelpoder
Score : 508 points
Date : 2025-11-27 06:17 UTC (16 hours ago)
(HTM) web link (reverser.dev)
(TXT) w3m dump (reverser.dev)
| stacktrace wrote:
| > API rate limit exceeded for 106.51.68.199. (But here's the good
| news: Authenticated requests get a higher rate limit. Check out
| the documentation for more details.)
|
| The GitHub APIs that you are using to list files are getting
| rate-limited in my case. If somebody else is also facing this
| issue, just use a VPN or something like Cloudflare Wrap to change
| your ip - this should fix the issue.
|
| P.S If you are the main dev, giving an option to the visitor to
| sign in using Github or use a caching layer will be really
| helpful to make this accessible for the new user.
| reverserdev wrote:
| Hey! Thank you for catching this issue and reminding me of the
| super naive implementation I went with. I will improve this! :)
| rbanffy wrote:
| It's often better to overlay caching and other tricks on top
| of naive implementations than making the implementation more
| complicated.
| foota wrote:
| * until you get caching layers more complicated than the
| more complicated implementations :) Imo strong
| implementations can be much simpler and more predictable
| than caching.
| jtwaleson wrote:
| This is super cool. Love the little icons in the left and would
| be nice if they were clickable.
| qweqwe14 wrote:
| How is this different from https://elixir.bootlin.com/linux
| reverserdev wrote:
| The Elixir cross referencer does not have any special features
| to help you learn
| oskarkk wrote:
| Look at the content in the right sidebar, this is like an
| interactive guide to the kernel.
| stacktrace wrote:
| Elixir is a great tool for exploring and cross-referencing the
| Linux codebase but for a new person, Linux can come across as
| very intimidating and complicated. The above explorer makes it
| very interesting to explore the codebase. This is kind of like
| an interactive book on Linux internals, with every topic being
| referenced through code.
| proc0 wrote:
| I don't see all those versions, and for some reasons my fans
| turned on with the elixir link lol
| w4yai wrote:
| Even if it was the same, how problematic would it be ?
| udev4096 wrote:
| It's a better navigation and overall quicker way to read code
| loeg wrote:
| Well, they're completely different, but other than that they
| have similar looking names. I think elixir is more useful for
| the ways I interact with the Linux kernel. This is attempting
| to be more of a teaching book. The links to function
| definitions is what makes elixir useful, and this doesn't have
| those.
| reverserdev wrote:
| Thanks for sharing OP! It seems quite some people liked it, so
| I'll be listening to feedback and see what to do next. :)
| fscaramuzza wrote:
| Am I the only one that can't access the website due to
| certificate problems with the .dev?
| reverserdev wrote:
| I cannot reproduce. Would you mind sharing a bit more? The
| certificate is handled by Cloudflare Pages.
| fscaramuzza wrote:
| My bad, the network I was connected to didn't like the
| certificate for some reason. Cool project!
| nolist_policy wrote:
| Also: https://elixir.bootlin.com/linux/v6.17.9/source
|
| Elixir works better on mobile despite being around for years.
| reverserdev wrote:
| Thanks for the observation about mobile responsiveness, I will
| improve it!
| formerly_proven wrote:
| Elixir also has working tags instead of just looking at a file
| at a time, so it is much better at the actual exploring part.
| __bjoernd wrote:
| I appreciate the learning guidance.
| reimuwu wrote:
| when I try to open arch/x86/kernel/entry_64.S. it just says:
| Failed to load file Failed to fetch file: File:
| arch/x86/kernel/entry_64.S
|
| maybe its a bug?
| rumdz wrote:
| The path should be arch/x86/entry/entry_64.S
| knuckleheads wrote:
| Very neat. It reminds me a bit of how pages in the Talmud are
| laid out. From a gentile perspective, it was very interesting to
| me to see how hundreds (thousands?) of years of commentary are
| contained within the same page.
|
| https://www.reddit.com/r/interestingasfuck/comments/1acgks3/...
|
| https://triberuth.wordpress.com/2016/09/23/my-talmud-layout-...
|
| Code isn't linear the same way, and pages don't make as much
| sense, but that idea of layers of commentary rings out in this
| Linux Kernel Explorer as well. I very much like the notes on the
| side!
| guy4261 wrote:
| Talmud - the original hypertext (tm)
|
| (*maybe, not 100% sure)
| ofrzeta wrote:
| see also Pi, the movie, although it's more about numbers and
| the Kabbalah :) https://en.wikipedia.org/wiki/Pi_(film)
| ezrabrand wrote:
| Long-time HN lurker here! Was excited to see this
| discussion around my major interests of Talmud, Kabbalah,
| and tech.
|
| There are a lot of misconceptions and mystique surrounding
| the Talmud. I'd like to take the opportunity to clarify
| some fundamental aspects, as relates to the discussion
| here:
|
| The famous "Talmud page" (discussed in the links in the
| parent comment) was set by a Christian printer in the 16th
| century.
|
| It emulated a common layout in medieval Christian
| manuscripts for Christian primary texts and commentaries
| [0].
|
| The analogy of the Talmud to a hypertext isn't especially
| apt, IMO. The Talmud indeed extensively cites Bible and
| Mishnah, and uses lots of technical terms. In this regard,
| a better analogy is to legal literature (which is what the
| Talmud in fact is). While being couched as a (fictional)
| "conversation"/dialogue between rabbis who lived over the
| course of ~400 years (100 CE to 500 CE).
|
| In fact, Kabbalah (as another commenter mentioned) is a
| better example of a "hypertext," since it's full of
| recurring symbols that point to different Sefirot and other
| core concepts.
|
| (By way of credentials: I hold an MA in academic Talmud and
| Kabbalah, write on these subjects in several venues, and
| have presented at academic workshops. Over the past two
| years, I've also been developing digital-humanities
| projects related to this work.)
|
| References:
|
| [0] https://seforimblog.com/2023/06/from-print-to-pixel-
| digital-...
|
| [1] https://www.ezrabrand.com/p/beyond-the-mystique-
| correcting-c...
| knuckleheads wrote:
| That's awesome!! Thank you very much! I would have next
| asked you, what do you think of those apps for studying
| the Talmud, https://www.sefaria.org/app et al, but in
| those links you already mention it. Looking forward to
| reading these, thanks!
| ezrabrand wrote:
| Definitely!
|
| Sefaria is incredible, it's revolutionized access to
| classical texts. And their API gives full and complete
| access. My vibe-coded Talmud reader website fetches
| Talmud, Bible, and translations from Sefaria, you might
| be interested in checking it out :)
|
| https://chavrutAI.com/
|
| Source code here:
|
| https://github.com/EzraBrand/replit-chavrutai-2
|
| I've been vibe-coding it over the last few months using
| Replit, it's been a really cool experience
| kosolam wrote:
| Oh wow, that's quite cool. Thanks.
| knuckleheads wrote:
| piling on to also say, very neat!!
| bradrn wrote:
| > The analogy of the Talmud to a hypertext isn't
| especially apt, IMO.
|
| Isn't it? Every page of the Talmud includes marginal
| notes (Masoret HaShas, Ein Mishpat, Torah Or) giving
| cross-references to relevant parts of the Torah, Talmud
| and other legal codes. In a web-based version I think it
| would be natural to represent those with hypertext.
| ezrabrand wrote:
| >"Isn't it? Every page of the Talmud includes marginal
| notes (Masoret HaShas, Ein Mishpat, Torah Or) giving
| cross-references to relevant parts of the Torah, Talmud
| and other legal codes. In a web-based version I think it
| would be natural to represent those with hypertext."
|
| True, and the website "Al Hatorah" indeed does that, for
| the marginal notes that you list. See, for example:
| https://shas.alhatorah.org/Gemara/Berakhot/2a
|
| But my point is that those marginal notes are an artifact
| of the 16th century print edition. It's not anything
| inherent in the Talmud text.
|
| The famous 16th-century Mikraot Gedolot edition of the
| Bible also features extensive marginal notes (the
| Mesorah) which function much like a dense network of
| cross-references.
|
| In fact, the Mesorah is a medieval work (drawing on
| ancient sources) and is arguably was one of the most
| elaborate systems of cross-referencing found anywhere, at
| the time it was promulgated.
|
| This differs from the Talmud's cross-referencing, which
| doesn't predate the printed edition (as I note in the
| Seforim Blog article; the page citations are reliant on
| the universal page numbers that started from the first
| print edition).
| bradrn wrote:
| > But my point is that those marginal notes are an
| artifact of the 16th century print edition. It's not
| anything inherent in the Talmud text.
|
| OK, fair enough, if 'the Talmud text' is taken to be only
| the Mishna and the Gemara. (Though when I think of the
| Talmud it's the printed edition that comes to mind, with
| all its accompanying commentary.)
|
| EDIT: I had a look at your blog and saw you actually
| addressed this exact point already:
| https://www.ezrabrand.com/i/162112983/myth-the-talmud-is-
| div...
| elygre wrote:
| My message here is off-topic, probably a rule violation,
| but...
|
| I love this. I love how the users of Hacker News provide
| deep, real insights on pretty much any topic. Thank you!
| oskarkk wrote:
| I love this idea. I like exploring code of interesting projects
| even if I don't intend to ever work on them, but in complex
| software I don't know much about it's hard to even find where are
| the most important basic parts. This allows me to easily find and
| see how some things in the kernel look like.
|
| Found a bug: in the Chapter 2, when I click on "open" next to
| "mm/" or other dirs, I get an error: " Failed to load file -
| Invalid file response from GitHub API - File: mm/". I guess it's
| cause it tries to open the dir as a file, instead of something
| like pointing at the dir in the dir tree?
| xxdd2ea wrote:
| Yes it's good idea and nicely executed.
|
| For the same reason I created a couple of projects with the
| same goal of lowering the barrier to entry to the linux kernel:
|
| - an app to follow the UDP packet flow in the linux kernel
| source code: https://dmkskd.github.io/linux-kernel-network-
| stack-visualiz...
|
| - a (hopefully) simple way to play with the linux kernel source
| code on a mac: https://github.com/dmkskd/linux-kernel-
| debugging-on-mac
|
| Kudos to https://github.com/FlorentRevest for all his work in
| the space
| glenneroo wrote:
| I love your UDP packet flow tool, kudos for making that! I've
| always wondered how packets move through an OS. Also
| interesting how many gotos I see all over the place, even
| though everyone says "goto is the devil". Then again maybe
| this code was written long before that "proverb" came into
| existence.
| Fnoord wrote:
| Since you mentioned you love that, I will mention this
| netfilter packet flowchart by Jan Engelhardt [1]
|
| [1] https://en.wikipedia.org/wiki/File%3ANetfilter-packet-
| flow.s...
| xxdd2ea wrote:
| Thanks! I suggest to have a look at a 'live' debugger
| session video here: https://github.com/dmkskd/linux-kernel-
| debugging-on-mac?tab=... given your interest
|
| if you have an ARM64 mac (sorry for only supporting this OS
| at the moment) it should be easy to set this up on your end
| joshlk wrote:
| Asking a silly question... what piece of kernel code do you find
| the most awe-inspiring or impressive?
| throwaway29303 wrote:
| Maybe _fs /select.c_ or the polling machinery.
| suprjami wrote:
| Agree. The VFS is a delight to read. It's a good intro to the
| kernel pattern of using function pointers to provide a
| generic API which other functionality can plug into, simply
| by implementing the appropriate functions. In this case
| you'll see all the filesystem drivers implement the VFS
| operations.
| bobowzki wrote:
| This is very nice. It would be interesting to see the same for
| other code bases like emacs and vim.
| udev4096 wrote:
| I don't know why you're getting downvoted. It would be
| wonderful if there was same site for all the big open source
| projects
| mickael-kerjean wrote:
| emacs is quite approachable because of its self documenting
| nature. In practice, if you want to drill down on a particular
| thing, you need to use some of the describe-* commands. For
| example want to know how emacs save something?
|
| 1) find the command it uses with describe-keybinding, you find
| the command "save-buffer"
|
| 2) "describe-command save-buffer" brings you onto the lisp
| world where it is defined => "files.el"
|
| 3) want to know how a variable is define within files.el?
| "describe-variable buffer-file-name" and now you are in C
| territory
|
| 4) rinse and repeat with some describe-function when needed
|
| 5) get lost onto the beauty of emacs which in my opinion is its
| interactive / self documenting nature which unfortunatly is not
| more common in all the software we use
| thdhhghgbhy wrote:
| I love this.
| rbanffy wrote:
| I love tools like this. I remember using a similar one (made by
| Red Hat IIRC) that I used to look inside the sources for the
| Brazilian voting machine (I was asked to map duplicate files and
| functionality and simplify the codebase) in 2002. It was a
| desktop app with a very Motif interface.
| Gormanu wrote:
| You know, I think this Explorer is exactly the tool many of us
| lacked. Reading the Linux kernel source always felt daunting --
| thousands of files, confusing paths, complex structure. This
| feels like a "map" that helps you orient yourself, see how parts
| interconnect, how VFS works, how modules tie together. Yeah,
| sometimes a feature breaks (API limits, errors opening
| directories), but even so -- this is a great way to peek "under
| the hood," understand the architecture, and take the first step.
| Big thanks to the folks behind it.
| tosti wrote:
| I don't get it. I can't pull master, I can't grep, I can't edit
| and I certainly can't gmake there.
|
| What's the use?
| kinow wrote:
| I believe it's a navigation tool, with pointers to important
| parts of the code. Useful for those that want to learn about
| the code base but do not know where to get started.
| cepera wrote:
| Can I somehow deploy it locally?
| maartin0 wrote:
| I really like this reactive guide style interface, which maybe
| could be quite a good project idea like mdBook[1] but also you to
| insert quizzes/examples alongside static notes
|
| [1]: https://github.com/rust-lang/mdBook
| notachatbot123 wrote:
| Were the quiz questions generated by a human or AI?
| bakugo wrote:
| The very first sentence of the guide is "It's not X--it's Y. It
| does Z". Safe to assume the entire thing is AI generated.
| reverserdev wrote:
| Can you please elaborate what exactly is the problem with the
| first sentence?
|
| "The kernel isn't a process--it's the system. It serves user
| processes, reacts to context, and enforces separation and
| control."
|
| This is actually based on "The Kernel in The Mind" by Moon
| Hee Lee. You are welcome to provide feedback.
| bakugo wrote:
| Is it or is it not AI generated? That's all I said, and you
| didn't deny it.
| soraminazuki wrote:
| Calm down. You had the answer served on a platter.
|
| From "The Kernel in the Mind":
|
| > The Kernel Is Not a Process. It Is the System.
|
| https://www.linkedin.com/pulse/kernel-mind-moon-hee-lee-
| miwz...
|
| It's X but Y came from elsewhere.
| loeg wrote:
| In particular, one of the first questions is "What is the
| fundamental difference between the kernel and a process?" It
| rejects "The kernel is a special process with elevated
| privileges" (which is essentially correct) and prefers "The
| kernel is not a process--it's the system itself that serves
| processes," which is sort of wrong? The kernel represents
| itself as a process (process zero), because kernel threads also
| need scheduling. And it is privileged, obviously.
| soraminazuki wrote:
| > The kernel represents itself as a process (process zero)
|
| This isn't true of any modern operating system. Kernel code
| isn't confined to a single process or even a limited number
| of processes. Transitioning to kernel mode doesn't
| necessitate switching to a dedicated process. Prior to the
| emergence of CPU speculative execution vulnerabilities, it
| was common for kernel code to be mapped directly into the
| virtual address spaces of userspace processes.
|
| PID 0 is merely an implementation detail of the scheduler
| shared among many Unices. It doesn't function like a normal
| process, nor is it an accurate representation of how the
| large part of the kernel operates.
| stevenhuang wrote:
| Also in Chapter 6 1. What is the relationship between CPU
| state and kernel state?, it prefers "CPU is stateless; kernel
| manages state" instead of "They share state equally". I also
| wouldn't divide it down as "equally" as the kernel manages
| much more state, but CPUs have registers and cache lines so I
| wouldn't say they're stateless either.
| glenneroo wrote:
| Love this! Small bug but when changing files, it doesn't reset to
| position 0 in the file (at least on Firefox on Win11).
| kinow wrote:
| This looks amazing. Took me some time to find the author
| (https://fabiomaia.eu). Will drop a message to ask if it'd be
| possible to have a similar tool for Python. I find it useful to
| teach new engineers how to find the source code in the cpython
| repository, check if the code is Python or C, and understand what
| the code does (some times the docs are a bit lacking/confusing
| for newcomers).
| rapfaria wrote:
| > Will drop a message to ask if it'd be possible to have a
| similar tool for Python.
|
| Why not create your own? This is as wild as open-source
| expectations of a speedy implementation, addressing issues
| quickly, etc. Folks always want more and more.
| dmezzetti wrote:
| Very interesting! I was kind of expecting that this was going to
| use LLMs / coding agents to explain the kernel as you stepped
| through it. But this is a nice app.
| reverserdev wrote:
| I am considering more dynamic "tutors", since this rudimentary
| version got so much attention! :)
|
| What do you have in mind when you say "step through" the code?
| Like follow your scrolling of the source code?
| dmezzetti wrote:
| Something as simple as an LLM prompt that explains what the
| file does would go a long way I think.
| w23j wrote:
| This file from chapter 1 cannot be opened:
| arch/x86/kernel/entry_64.S ("Failed to load file").
|
| It's also not visible in the directory tree on the left.
|
| (Oddly enough another comment mentioned this already and is voted
| dead. Why?)
| rumdz wrote:
| It must be a typo. The path should actually be
| arch/x86/entry/entry_64.S
| stackedinserter wrote:
| What kind of guide says "next topic is scheduler" and just points
| you to sched.h?
| synergy20 wrote:
| I must be missing something, we had kernel source browsing online
| for years, e.g.
| https://elixir.bootlin.com/linux/v6.17.9/source/fs, this is
| another one, what extra features it provides. in fact the bootlin
| one provides some search functions but I did not spot that here.
| I was expecting some LLM explanation for the code, or dependency
| graphs etc in the AI era for a new kernel navigator...
| xeonmc wrote:
| You: "Wow, we are surely in the golden age of AI! I can't wait
| to see LLM-guided explanations for the code or a new kernel
| dependency navigator powered by AI..."
|
| The AI Era: "Meh, best I could do is AI rehashes of the same
| old functionality in a different web framework."
| wasteofelectron wrote:
| Looks great, looking forward to digging in. I had a similar idea
| a while back (B.A., before agents) but it seemed too big to take
| on. Was this able to be realised due to agentic coding?
| algorithm314 wrote:
| No language server in this explorer, so it is less useful.
___________________________________________________________________
(page generated 2025-11-27 23:00 UTC)