Skip to content

Commit

Permalink
Move the linux kernel notes.
Browse files Browse the repository at this point in the history
  • Loading branch information
kentlouisetonino committed Nov 19, 2024
1 parent b37897f commit 5a2f4e5
Show file tree
Hide file tree
Showing 110 changed files with 3,208 additions and 0 deletions.
3 changes: 3 additions & 0 deletions linux-kernel/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## $\textnormal{Tinkering Linux}$

> - All things I learned related to Linux Kernel.
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
## $\textnormal{Welcome to LFD103}$

> - The `Linux Kernel` is the largest component of the Linux ecosystem, <br />
and is charged with managing the hardware, running user programs, and <br />
maintaining the security and integrity of the whole system. <br />
> - It is a 24 hour a day, seven days a week, 365 day a year development <br />
process that results in a new release once every 9-10 weeks, along <br />
with several stable and extended stable releases. <br />
> - At all times, new development and current release integration cycles <br />
run in parallel.

> - `LFD103` is designed for anyone interested in becoming a Linux Kernel <br />
Developer and contributor.

> - The course aims to ease the Linux Kernel Mentorhship application process. <br />
> - It also serves as a resource for developers from companies and communities <br />
that might not be able to take advantage of the mentorship program, and <br />
want to learn kernel development on their own; as well as a resource for <br />
experienced engineers new to open source and upstream kernel development that <br />
are tasked with working with the kernel community.
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
## $\textnormal{Course Learning Objectives}$

> - The course will cover the following.
```plaintext
- Select and configure the development system.
- Provide an overview of Linux Kernel repositories and releases.
- Understand git basics - checking out kernel repositories and working with them.
- Build your first kernel and install it.
- Understand the Linux Kernel Contributor Covenant Code of Conduct.
- Familiarize yourself with the Linux Kernel Enforcement Statement.
- Write kernel patches and test them.
- Understand the do's and dont's of the communications with the kernel community.
- Know who to and how to send patches (checkpath.pl and get_maintainers.pl).
- Re-work patches and act on feedback from reviewers.
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
## $\textnormal{Course Audience and Requirements}$

```plaintext
Audience
- This course is designed for individuals interested in becoming Linux Kernel
developers and contributors.
Knowledge/Skills
- Proficiency in C and shell.
- Kernel development experience desired, but not required.
System Prerequisites
- As far as prequisites go, an x86_64 laptop will be needed.
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## $\textnormal{Instructor}$

> - `Shuah Khan` is a Linux Kernel Fellow at The Linux Foundation.
> - She is an experienced Linux Kernel developer, maintainer, and contributor.
> - `Shuah` maintains the Kernel Selftest framework, USB over IP driver, and cpupower, <br />
and is an active contributor to the Linux media subsystem.

> - She has also contributed to IOMMU, and DMA areas.
> - In addition, she is helping with stable release kernel testing.
> - She has presented at several Linux conferences and Linux Kernel Developer keynote <br />
panels.

> - She served on the Linux Foundataion Technical Advisory Board.
> - She authored Linux Kernel Testing and Debugging paper published in the Linux <br />
Journal and wrote several Linux Journal Kernal news articles.
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## $\textnormal{Course Support}$
> - One great way to interact with peers taking this course is via the Class Forum.
> - Class Forum: https://forum.linuxfoundation.org/categories/lfd103-class-forum
> - The forum can be used in the following ways.
```plaintext
- To introduce yourself to other peers taking this course.
- To discuss concepts, tools and technologies presented in this course, or related
to the topics discussed in the course materials.
- To ask questions or report issues with labs or course content.
- To share resources and ideas related to Linux Kernel development.
```

> - The class forum will be reviewed periodically by the Linux Foundation staff, <br />
but it is primarily a community resource, not an `ask the instructor` service.
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## $\textnormal{Course Timing}$

> - This course is entirely self-paced; there is no fixed schedule for going <br />
through the material. You can go through the course at your own pace, <br />
and you will always be returned to exactly where you left off when you <br />
come back to start a new session.

> - However, we still suggest you avoid long breaks in between periods of work, <br />
as learning will be faster and content retention improved.

> - You have unlimited access to this course for 12 months from the date you <br />
registered, even after you have completed the course.

> - The chapters in the course have been designed to build on one another. It <br />
is probably best to work through them in sequence; if you skip or only <br />
skim some chapters quickly, you may find there are topics being discussed <br />
you have not been exposed to yet.

> - But this is all self-paced, and you can always go back, so you can thread <br />
your own path through the material.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## $\textnormal{Assessments}$

> - While not having lab exercises per se, this course is hands-on, and guides <br />
you through the processes involved in Linux Kernel development.

> - At the end of each chapter, you will also find a series of knowledge check <br />
questions. These questions, just like the labs, were designed with one main <br />
goal in mind: to help you better comprehend the course content and reinforce <br />
what you have learned. We would also like to emphasize that you will not be <br />
required to take a final exam to complete this course.
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
## $\textnormal{Course Formatting}$
> - In order to make it easier to distinguish the various types of content <br />
in the course, we use the color coding and formats below.

<br />

| Course Formmating |
| ----------------- |
| ![Course Formatting](./images/image-course-formatting.png) |
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## $\textnormal{Copyright}$

> - The training materials provided or developed by The Linux Foundation in <br />
connection with the training services are protected by copyright and other <br />
intellectual property rights.

> - Open source code incorporated herein may have other copyright holders and <br />
is used pursuant to the applicable open source license.

> - Although third-party application software packages may be referenced herein, <br />
this is for demonstration purposes only and shall not constitute an endorsement <br />
of any of these software applications.

> - All the Linux Foundation training, including all the material provided herein, <br />
is supplied without any guarantees from the Linux Foundation. The Linux <br />
Foundation assumes no liability for damages or legal action arising from the <br />
use or misuse of contents or details contained herein.

> - Linux is a registered trademark of Linux Torvalds. Other trademarks within <br />
this course material are the property of their respective owners.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
## $\textnormal{Linux Foundation}$

> - `The Linux Foundation` provides a neutral, trusted hub for developers to <br />
code, manage, and scale open technology projects.

> - Founded in 2000, the Linux Foundation is supported by more than 1,000 <br />
members and is the world's leading home for collaboration on open <br />
source software, open standards, open data and open hardware.

> - The Linux Foundation's methodology focuses on leveraging best practices <br />
and addressing the needs of contributors, users and solution providers to <br />
create sustainable models for open collaboration.

> - The Linux Foundation hosts Linux, the world's largest and most pervasive <br />
open source software project in history. It is also home to Linux creator <br />
Linus Torvalds and lead maintainer Greg Kroah-Hartman.

> - The success of Linux has catalyzed growth in the open source community, <br />
demonstrating the commercial efficacy of open source and inspiring <br />
countless new projects across all industries and levels of the technology <br />
stack.

> - As a result, the Linux Foundation today hosts far more than Linux; it is <br />
the umbrella for many critical open source projects that power corporations <br />
today, spanning virtually all industry sectors.

> - Some of the technologies we focus on include big data and analytics, <br />
networking, embedded systems and IoT, web tools, cloud computing, edge <br />
computing, automotive, security, blockchain, and many more.
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
## $\textnormal{The Linux Foundation Events}$

> - Over 85,000 open source technologists and leaders worldwide gather at Linux
Foundation events annually to share ideas, learn and collaborate.

> - Linux Foundation events are the meeting place of choice for open source
maintainers, developers, architects, infrastructure managers, and sysadmins
and technologists leading open source program offices, and other critical
leadership functions.

> - These events are the best place to gain visibility within the open source
community quickly and advance open source development work by forming
connections with the people evaluating and creating the next generation of
technology.

> - They provide a forum to share and gain knowledge, help organizations identify
software trends early to inform future technology investments, connect
employers with talent, and showcase technologies and services to influential
open source professionals, media, and analysts around the globe.

> - The Linux Foundation hosts an increasing number of events each year.
```plaintext
- Open Source Summit North America, Europe, and Japan.
- Embbedded Linux Conference North America and Europe.
- Open Networking and Edge Summit.
- KubeCon + CloudNativeCon North America, Europe, and China.
- Automotive Linux Summit.
- KVM Forum.
- Linux Storage Filesystem and Memory Management Summit.
- Linux Security Summit North America and Europe.
- Linux Kernel Maintainer Summit.
- The Linux Foundation Member Summit.
- Open Compliance Summiit.
- And More.
Link: https://events.linuxfoundation.org/
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
## $\textnormal{Training Venues}$

> - The Linux Foundation's training is for the community, by the community, and
features instructors and content straight from the leaders of the Linux
Developer community.

> - The Linux Foundation offers several types of training.
```plaintext
- Classroom
- Online
- On-site
- Events-based
```

> - Attendees receive Linux and open source software training that is distribution
flexible, technically advanced and created with the actual leaders of the Linux
and open source software development community themeselves.

> - The Linux Foundation courses give attendees the broad, foundational knowledge and
networking needed to thrive in their careers today.

> - With either online or in-person training, the Linux Foundation classes can keep
you or your developers ahead of the curve on open source essentials.
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
## $\textnormal{The Linux Foundation Training Offerings}$

> - Our current course offerings include:
```plaintext
- Linux programming and development training.
- Enterprise IT and open source system administration courses.
- Open source compliance courses.
Link: https://training.linuxfoundation.org/
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## $\textnormal{The Linux Foundation Certification}$

> - The Linux Foundation certifications give you a way to diffentiate yourself in a
job market that's hungry for your skills.

```plaintext
https://training.linuxfoundation.org/certification-catalog/
```

> - We've taken a new innovative approach to open source certification that allows
you to showcase your skills in a way that other peers will respect and employers
will trust:

```plaintext
- You can take your certification exam from any computer, anywhere, at any time.
- The certification exams are either performance-based or multiple choice.
- The exams are distribution flexible.
- The exams are up-to-date, testing knowledge and skills that actually matter in today's
IT environment.
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
## $\textnormal{Training Certification Firewall}$

> - The Linux Foundation has two separate training divisions: Course Delivery and Certification.
These two divisions are separated by a `firewall`.

> - The curriculum development and maintenance division of the Linux Foundation Training
department has no direct role in developing, administering, or grading certification exams.

> - Enforcing this self-imposed firewall ensures that independent organizations and companies
can develop third party training material, geared towards helping test takers pass their
certification exams.

> - Furthermore, it ensures that there are no secret `tips` (or secrets in general) that one
needs to be familiar with in order to succeed.

> - It also permits the Linux Foundation to develop a very robust set of courses that do far more
than `teach the test`, but rather equip attendees with a broad knowledge of the many areas
they may be required to master to have a successful career in open source system administration.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## $\textnormal{Introduction to Linux Kernel Development Process}$

> - In this chapter, we will provide an overview of the Linux <br />
Kernel development process, and we will learn how small <br />
incremental changes (`patches`) sent to a mailing list get <br />
included in the upstream kernel.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## $\textnormal{Learning Objectives}$

> - By the end of this chapter, you should be able to:
```plaintext
- Understand how the Linux kernel is developed.
- Discuss the Linux kernel release cycle and merge window.
- Discuss active kernel releases.
- Explain the concept of kernel trees.
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
## $\textnormal{About the Linux Kernel}$

<br />

| Tux |
| --- |
| ![Tux](./images/image-tux.png) |

<br />

> - The `Linux Kernel` is the result of collaborative development efforts from developers
across the globe.

> - Small incremental changes, also known as `patches`, add new features, make
enhancements, and fix bugs.

> - It is a 24-hour, seven days a week, and 365 days of continuous development process
that results in a new release once every 2+ months, and several stable and extended
stable releases once a week. New development and current release integration cycles
run in parallel.

> - A new release comes out once a every 10 to 11 weeks. Releases are time-based rather
than feature-based. That means releases are not held up for features. There is no
set date for these releases.
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
## $\textnormal{What Does the Release Cycle Look Like?}$

> - While the kernel development is a continuous process, at certain points during the
development, when a set of features and bug fixes are ready, a new version of the
kernel is released.

> - These new version are called `kernel releases`.
> - Linus Torvalds releases a new kernel and opens 2-week merge window.
> - During this merge window, he pulls code for the next release from subsystem
maintainers.

> - Subsystem maintainers send signed git pull requests to Linux either during the
merge window or before.

> - All major new development is added to the kernel during the merge window.
> - 10,000+ change sets (patches) get pulled into Linus's tree during these 2 weeks,
at the end of which he releases the first release candidate, known as `rc1`.

> - At this point, the release cycle moves into a bug fixes-only mode, with a series
of `release candidate (rc)` releases from Linus.

> - One week after `rc1` is released, `rc2` comes out; `rc3` comes out a week after,
and so on, until all major bug fixes and regressions (if any) are resolved.

> - The new cycle begins with a 3-week `quiet period`, which starts a week before the
release, and continues through the 2-week merge window.

> - Maintainers and key contributors are busy getting their trees ready to send pull
requests to Linus.

> - Please notee that the quiet period isn't formalized, and each sub-system might
handle it differently.

> - This period isn'tt well advertised, and new developers might see a slow response
from the community.

| Linux Development Cycle |
| ----------------------- |
| ![Linux Development Cycle](./images/image-linux-development-cycle.png) |
Loading

0 comments on commit 5a2f4e5

Please sign in to comment.