# Initial ram disk

This repository contains a book-in-progress about the Linux kernel and its insides.

The goal of this project is simple – to share knowledge about the Linux kernel internals and related low-level topics. If you’re curious about what’s under the hood, see the [Table of Contents](https://github.com/0xAX/linux-insides/blob/master/SUMMARY.md).

## Chapter status (kernel v7.0.0)

> \[!IMPORTANT] I started writing this series when the latest version of the kernel was `3.18`. A lot has changed since then, and I am in progress of updating the content to reflect modern kernels (v6.18+). I’ll continue revising the posts as the kernel evolves.

* [x] Booting (updated for v7.0.0)
* [ ] Initialization (pending v6.18.0 review)
* [ ] Interrupts (pending v6.18.0 review)
* [ ] System calls (pending v6.18.0 review)
* [ ] Timers and time management (pending v6.18.0 review)
* [ ] Synchronization primitives (pending v6.18.0 review)
* [ ] Memory management (pending v6.18.0 review)
* [ ] Cgroups (pending v6.18.0 review)
* [ ] SMP (pending v6.18.0 review)
* [ ] Concepts (pending v6.18.0 review)
* [ ] Data Structures in the Linux Kernel (pending v6.18.0 review)
* [ ] Theory (pending v6.18.0 review)
* [ ] Initial ram disk (pending v6.18.0 review)
* [ ] Misc (pending v6.18.0 review)
* [ ] KernelStructures (pending v6.18.0 review)

## Requirements

* Prior knowledge about the [Assembly language](https://en.wikipedia.org/wiki/Assembly_language)
* Proficiency with the [C programming language](https://en.wikipedia.org/wiki/C_\(programming_language\))
* Additionally, you can find lots of useful information about x86\_64 processors in [Intel Software Developer Manuals](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html)

> \[!TIP] You can get started with Assembler with my other series of posts about the [Assembly programming](https://github.com/0xAX/asm).

## Translations

Thanks to the volunteers, the posts about Linux are translated into different languages.

> \[!NOTE] The translations may diverge from the original content.

* [Brazilian Portuguese](https://github.com/mauri870/linux-insides)
* [Chinese](https://github.com/hust-open-atom-club/linux-insides-zh)
* [Japanese](https://github.com/tkmru/linux-insides-ja)
* [Korean](https://github.com/junsooo/linux-insides-ko)
* [Russian](https://github.com/proninyaroslav/linux-insides-ru)
* [Spanish](https://github.com/leolas95/linux-insides)
* [Turkish](https://github.com/ayyucedemirbas/linux-insides_Turkish)

## Contribution

Read the [Contribution guide](https://github.com/0xAX/linux-insides/blob/master/CONTRIBUTING.md) to learn how to contribute to the project. When contributing, make sure to follow the [Code of Conduct](https://github.com/0xAX/linux-insides/blob/master/CODE_OF_CONDUCT.md).

If you have any questions or suggestions, feel free to ping me at Twitter [@0xAX](https://twitter.com/0xAX), add an [issue](https://github.com/0xAX/linux-insides/issues/new), or drop me an [email](mailto:anotherworldofworld@gmail.com).

## Mailing list

There is a Google group mailing list (`kernelhacking@googlegroups.com`) for learning the kernel source code.

To join the group, send an email to `kernelhacking+subscribe@googlegroups.com`. You will receive a confirmation email. After replying to it, you will be added to the mailing list.

> \[!TIP] If you have a Google account, you can simply open the [archive page](https://groups.google.com/forum/#!forum/kernelhacking) and click **Apply to join group**. You will be approved automatically.

## License

This project is licensed under the [BY-NC-SA Creative Commons](http://creativecommons.org/licenses/by-nc-sa/4.0/).

## Author

The technical content is written by [@0xAX](https://x.com/0xAX).

Additional big thanks to [@klaudiagrz](https://github.com/klaudiagrz) for text improvements.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://0xax.gitbook.io/linux-insides/summary/initial-ram-disk.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
