4.1 Структура ядра Linux

ЯДРО LINUX (монолитное с модулями)
┌─────────────────────────────────────────────────┐
│  УПРАВЛЕНИЕ ПРОЦЕССАМИ                          │
│  • Планировщик CFS (Completely Fair Scheduler)  │
│  • Распределяет CPU между процессами            │
│  • Приоритеты nice (-20 до +19)                 │
├─────────────────────────────────────────────────┤
│  УПРАВЛЕНИЕ ПАМЯТЬЮ                             │
│  • Виртуальная память                           │
│  • Страничная организация (4 КБ страницы)       │
│  • Swap (виртуальная память на диске)           │
│  • OOM Killer (убивает процессы при нехватке RAM│
├─────────────────────────────────────────────────┤
│  ФАЙЛОВЫЕ СИСТЕМЫ (VFS)                         │
│  • ext4 — стандарт Linux                        │
│  • xfs — для больших файлов                     │
│  • btrfs — с снапшотами                         │
│  • tmpfs — в RAM                                │
│  • proc, sys — псевдофайловые системы           │
├─────────────────────────────────────────────────┤
│  СЕТЕВОЙ СТЕК                                   │
│  • TCP/IP протоколы                             │
│  • Netfilter (iptables/nftables)                │
│  • Сетевые драйверы                             │
├─────────────────────────────────────────────────┤
│  ДРАЙВЕРЫ УСТРОЙСТВ                             │
│  • Блочные устройства (диски)                   │
│  • Символьные устройства (tty, мышь)            │
│  • Сетевые устройства                           │
└─────────────────────────────────────────────────┘

4.2 Пространство ядра и пользователя

┌──────────────────────────────────────────────────┐
│           ПРОСТРАНСТВО ПОЛЬЗОВАТЕЛЯ              │
│         (User Space / Ring 3)                    │
│  Firefox │ bash │ vim │ python                   │
│  • Процессы изолированы друг от друга            │
│  • Нет прямого доступа к железу                  │
│  • При сбое — падает только процесс              │
├──────────────────────────────────────────────────┤
│            СИСТЕМНЫЕ ВЫЗОВЫ (syscalls)           │
│   read() write() open() fork() exec() socket()  │
├──────────────────────────────────────────────────┤
│           ПРОСТРАНСТВО ЯДРА                      │
│         (Kernel Space / Ring 0)                  │
│  • Полный доступ ко всему железу                 │
│  • Ошибка здесь = kernel panic (крах системы)    │
│  • Максимальные привилегии                       │
└──────────────────────────────────────────────────┘

4.3 Файлы ядра в /boot

/boot/
├── vmlinuz-5.15.0        ← сжатое ядро (vmlinux + gz)
├── initramfs-5.15.0.img  ← временная файловая система
├── System.map-5.15.0     ← таблица символов ядра
├── config-5.15.0         ← конфигурация сборки ядра
└── grub/                 ← файлы загрузчика

4.4 Функция start_kernel()

start_kernel()
├── setup_arch()           ← настройка архитектуры x86_64
├── mm_init()              ← инициализация памяти
├── sched_init()           ← инициализация планировщика
├── rcu_init()             ← синхронизация (RCU)
├── init_IRQ()             ← прерывания
├── timekeeping_init()     ← системное время
├── console_init()         ← консоль (теперь можно выводить!)
├── vfs_caches_init()      ← файловые системы
├── signals_init()         ← сигналы (SIGKILL и др.)
└── rest_init()
    ├── kernel_thread(kernel_init) ← создаёт поток init
    └── cpu_idle()         ← ядро уходит в idle

4.5 Kernel Panic

! Аналог "синего экрана смерти" в Windows
[  0.000000] Kernel panic - not syncing: VFS:
             Unable to mount root fs on unknown-block(0,0)

Частые причины:
• Не найдена корневая файловая система
• Повреждён initramfs
• Отсутствует драйвер диска
• Неправильный параметр root= в GRUB
← GRUB2