Вы находитесь на странице: 1из 6

Лабораторная работа № 4.

Установка (обновление) ядра Linux в операционной системе


Debian 11.7. Исследование способов обновления версии ядра Linux, загрузки и
конфигурирования исходных текстов ядра Linux, сборки и его установки в операционной
системе Debian 11.7

ЦЕЛЬ: Сформировать у обучающихся практические умения установки (обновления) ядра


Linux, загрузки и конфигурирования исходных текстов ядра Linux, сборки и его установки в
операционной системе Debian 11.7

ПОДГОТОВКА К ЛАБОРАТОРНОЙ РАБОТЕ

1. Скачать установочный дистрибутив ОС Debian 11.7 с сайта https://www.debian.org.


(https://www.debian.org/releases/stable/debian-installer/)
2. Выполнить установку операционной системы Debain 11.7 в соответствии с
руководством по установке, представленном на странице
https://www.debian.org/releases/stable/amd64/ - для процессоров архитектуры х86-64),
либо на странице https://www.debian.org/releases/stable/i386/ - для процессоров
архитектуры х86. Установка ОС может быть выполнена как с использованием
средств виртуализации (приоритетный вариант!), так и в нативном режиме.
3. Для получения сведений о версии установленного ядра Linux необходимо с
использованием терминала выполнить:
$uname –r
5.10.0-21-amd64
либо, для получения полной сведений об установленном ядре, выполнить команду:
$uname –a
Linux debian 5.10.0 #1 SMP Thu Dec 16 03:06:07 EST 2022 x86_64 GNU/Linux

4. От имени привилегированного пользователя выполнить настройку в файле


/etc/apt/source.list источников обновления пакетов из репозитория ОС Debian.
5. Для выполнения лабораторной работы требуются права привилегированного
пользователя. В связи с этим требуется выполнить настройку файла /etc/sudoers для
пользователя, от имени которого будет выполняться лабораторная работа.
6. Выполнить команду обновления репозитория:
$sudo apt-get update
7. В рамках выполнения лабораторной работы должны быть зафиксированы в лог-файле
следующие сведения:
- версия старого ядра, версия нового ядра;
- характеристики компьютера, на котором выполнена лабораторная работа (процессор,
объем оперативной памяти, модель и размер рабочего раздела диска);
- время компиляции ядра, с указанием параметров запуска make -jn компиляции;
- результаты сравнения поддерживаемых старым и новым ядрами набора системных
вызовов.

Исходные данные:
ПЭВМ архитектуры х86-64;
Установочный образ дистрибутива ОС Debian 11.7;
Консольные команды и утилиты;
Консольная утилита wget;
Текстовый редактор – vim, nano;
Справочная система – man;
Команды пакетного менеджера apt:
Для бинарников
apt-get update Синхронизация пакетов
apt Программа работы с репозиторием
dpkg Программа работы с пакетами
apt-cache search <название пакета> Поиск пакета в локальном списке
apt-get install <название пакета> Поиск пакета в локальном списке и его установка с
учетом всех зависимостей
dpkg —list|grep <название пакета> Поиск пакета в списке установки
apt-get download <название пакета> Поиск и скачивание пакета
apt-cache rdepends <название пакета> Поиск зависимостей для пакета
apt-cache depends <название пакета> Поиск всех зависимостей пакета

Для исходников
1 apt-cache show src <название бинарного Поиск названия пакета с исходными
пакета> текстами по названию бинарного пакета
2 apt-get source <название пакета с Поиск и скачивание пакета с исходными
исходными текстами> текстами
3 dpkg-source –x <название пакета.dsc> Распаковка пакета с исходными текстами.
Для использования команды dpkg-source
необходимо становить пакет dpkg-dev
(выполнить команду:
apt-get install dpkg-dev)

Описание репозитария в source /etc/apt/source.list


deb file - Репозитарий с бинарниками
deb src - Репозитарий с исходниками
Например,
deb file:///var/repo/deb <имя дистрибутива> main

Назначение ядра Linux

Ядро Linux — ядро операционной системы, соответствующее стандартам POSIX,


составляющее основу операционных систем семейства Linux, а также ряда операционных
систем для мобильных устройств, в том числе Android.
Код написан в основном на Си с некоторыми расширениями gcc и на ассемблере.
Распространяется как свободное программное обеспечение на условиях GNU General
Public License, кроме несвободных элементов, особенно драйверов, которые используют
прошивки, распространяемые под различными лицензиями.
Операционные системы на базе ядра Linux являются лидерами на рынках
суперкомпьютеров, микрокомпьютеров, серверов и смартфонов.
Ядро Linux связывает аппаратные и программные компоненты, управляя
компьютерными ресурсами.
Ядро работает в пространстве ядра и выполняет следующие задачи:
- управление памятью;
- управление процессами;
- управление драйверами устройств;
- разграничение доступом субъектов к объектам;
- предоставление системных вызовов для пользовательских программ.

Поскольку ядро Linux – это программный код, его можно разрабатывать и обновлять
точно так же, как любую другую программу.
В свою очередь ядро Linux имеет некоторые отличия в сравнении с обычными
пользовательскими программами. Эти отличия хотя и не обязательно приводят к серьезным
усложнениям при программировании, но все же создают специфические проблемы при
разработке ядра. Ниже приведены наиболее важные отличия:
- ядро не имеет доступа к библиотеке функций языка С;
- ядро программируется с использованием компилятора GNU C;
- в ядре нет такой защиты памяти, как в режиме пользователя;
- в ядре нельзя легко использовать вычисления с плавающей точкой;
- ядро использует стек небольшого фиксированного размера (8 Кбайт — для 32-
разрядных аппаратных платформ и 16 Кбайт — для 64-разрядных);
- поскольку в ядре используются асинхронные прерывания, ядро является
преемптивным (вытесняемым, preemptible) и в ядре имеется поддержка SMP, то в ядре
необходимо учитывать наличие параллелизма и использовать синхронизацию;
- соблюдение переносимости очень важно.

В настоящей лабораторной работе, в качестве примера (в рамках способа 2),


продемонстрирована последовательность действий по обновлению ядра Linux
с версии 5.10.0-23 на версию 5.10.0-191.

ВЫПОЛНЕНИЕ ЛАБОРАТОРНОЙ РАБОТЫ

1. Скачивание исходных текстов ядра Linux


Способ 1 – с использованием утилиты wget
$sudo mkdir –p /usr/src/linux
$cd /usr/src/linux
$sudo wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.xx.tar.xz
$sudo wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.xx.tar.sign
В результате в текущей директории будет находиться скаченный архивный файл tar xvf
linux-5.10.xx.tar.xz и файл linux-5.10.xx.tar.sign
Для разархивирования необходимо выполнить команду:
$sudo xvf linux-5.10.xx.tar.xz

Способ 2 – с использованием утилиты apt


$sudo mkdir –p /usr/src/linux
$cd /usr/src/linux

Обновление репозитория:
$sudo apt-get update

Поиск доступного обновления ядра Linux:


$sudo apt-cache search linux-source

Скачать доступное обновление ядра Linux, с последующей автоматической распаковкой


архива с исходными текстами:
$ sudo apt-get source linux-source-5.10
Переход в директорию с исходными текстами:
$ cd linux-5.10.191
2. Установка и конфигурирование ядра Linux

Копирование текущего конфигурационного файла ядра осуществляется при помощи команд:

$cd linux-5.10.191
$sudo cp -v /boot/config-$(uname -r) .config

Установка требуемых программных пакетов для сборки ядра Linux выполняется при помощи
команд:

$sudo apt-get install build-essential dwarves python3 libncurses-dev pkg-config


flex bison libssl-dev bc libelf-dev

Конфигурация ядра Linux осуществляется при помощи команды:

$sudo make menuconfig

3. Компиляция ядра Linux

Компиляция ядра Linux выполняется при помощи команды (выполнение команды занимает
значительное время, зависящее от производительности компьютера):

$sudo make

По умолчанию утилита make запускает только одну задачу. Для компиляции ядра с
использованием параллельной сборки необходимо выполнить следующую команду:

$sudo make -jn

где n – количество заданий, которые необходимо запустить. Обычно запускается один или
два процесса напроцессор. Например, для четырехядерного процессора можно использовать
следующий запуск:

$sudo make -j8 bzImage

SYNC include/config/auto.conf.cmd
HOSTCC scripts/kconfig/conf.o
HOSTLD scripts/kconfig/conf
SYSHDR arch/x86/include/generated/uapi/asm/unistd_32.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_64.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_x32.h
SYSTBL arch/x86/include/generated/asm/syscalls_32.h
.........
OBJCOPY arch/x86/boot/setup.bin
OBJCOPY arch/x86/boot/vmlinux.bin
HOSTCC arch/x86/boot/tools/build
BUILD arch/x86/boot/bzImage
Kernel: arch/x86/boot/bzImage is ready (#2)

4. Установка модулей

Установка модулей выполняется следующими командами:


$sudo make modules
$sudo make modules_install
5. Установка ядра Linux
Установка скомпилированного ядра выполняется следующей командой:
$sudo make install

В результате выполнения команды в директории /boot будут установлены следующие файлы:

initrd.img-5.10.191
System.map-5.10.191
vmlinuz-5.10.191

6. Обновление загрузчика Grub

Для обновления загрузчика GRUB операционной системы Debian 11 необходимо выполнить


команду:

$ sudo update-grub

7. Перезагрузка ОС

После установки нового ядра и конфигурирования загрузчика необходимо перезагрузить


операционную систему:

$sudo reboot -i

8. Проверка обновления ядра Linux


Для проверки того, что ядро Linux обновлено необходимо выполнить команду
$ uname -a
Linux debian 5.10.191 #1 SMP Tue Sep 19 00:38:58 MSK 2023 x86_64 GNU/Linux

Ядро Linux обновлено с версии 5.10.23 до 5.10.191.

Для обновления списка программных пакетов дистрибутива ОС необходимо выполнить


следующие команды:

$sudo apt update && sudo apt upgrade

СОДЕРЖАНИЕ ОТЧЁТА
– титульный лист;
– алгоритм выполнения задания;
– листинги и скрины выполненных команд и полученных результатов;
– описание полученного результата;
– вывод.
ВАРИАНТЫ ЗАДАНИЙ
Вариант Задание
1 Рабочая директория /usr/src/linux-v1
Лог-файл - /usr/src/linux-v1/Log.<user>.lb4
2 Рабочая директория /usr/src/linux-v2
Лог-файл - /usr/src/linux-v2/Log.<user>.lb4
3 Рабочая директория /usr/src/linux-v3
Лог-файл - /usr/src/linux-v3/Log.<user>.lb4
4 Рабочая директория /usr/src/linux-v4
Лог-файл - /usr/src/linux-v4/Log.<user>.lb4
5 Рабочая директория /usr/src/linux-v5
Лог-файл - /usr/src/linux-v5/Log.<user>.lb4
6 Рабочая директория /usr/src/linux-v6
Лог-файл - /usr/src/linux-v6/Log.<user>.lb4
7 Рабочая директория /usr/src/linux-v7
Лог-файл - /usr/src/linux-v7/Log.<user>.lb4
8 Рабочая директория /usr/src/linux-v8
Лог-файл - /usr/src/linux-v8/Log.<user>.lb4
9 Рабочая директория /usr/src/linux-v9
Лог-файл - /usr/src/linux-v9/Log.<user>.lb4
10 Рабочая директория /usr/src/linux-v10
Лог-файл - /usr/src/linux-v10/Log.<user>.lb4

Вам также может понравиться