Научная статья на тему 'Методика конфигурации из старой в новую версию ядра оС linux'

Методика конфигурации из старой в новую версию ядра оС linux Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
56
23
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ОПЕРАЦИОННАЯ СИСТЕМА / LINUX / КОНФИГУРАЦИЯ ЯДРА

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Грушицын А.С.

Одними из основных аспектов преподавания в высшей школе являются концентрация внимания учащихся в процессе обучения и проблема заинтересованности преподаваемым предметом [1-4]. В данной статье рассматриваются методика сборки операционной системы Linux.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Методика конфигурации из старой в новую версию ядра оС linux»

МЕТОДИКА КОНФИГУРАЦИИ ИЗ СТАРОЙ В НОВУЮ ВЕРСИЮ ЯДРА ОС LINUX

© Грушицын А.С.*

Московский авиационный институт (национальный исследовательский университет), г. Москва

Одними из основных аспектов преподавания в высшей школе являются концентрация внимания учащихся в процессе обучения и проблема заинтересованности преподаваемым предметом [1-4]. В данной статье рассматриваются методика сборки операционной системы Linux.

Ключевые слова операционная система, Linux, конфигурация ядра.

Ядро операционной системы Linux постоянно развивается, и с каждой новой версией в конфигурационный файл включаются новые опции и параметры, у которых со временем разработчики могут менять даже наименование. Способ экспорта старой конфигурации в текущую нецелесообразен, так как для этих параметров современное ядро не найдет соответствия в старой конфигурации. Оно примет значения по умолчанию. В результате окажется, что вновь собранное ядро осталось без какого-либо драйвера или в него включены какие-то функционалы, так как мы экспортировали неправильно конфигурацию. Более корректный способ экспорта предыдущей конфигурации в текущую версию ядра - «oldconfig» (рис. 1).

mail linux # ср ../Iinux-3.15/-config . mail linux # make oldconfigl

Рис. 1

При таком способе экспорта, для всех параметров новой версии ядра, если не будет найдено соответствие в старой конфигурации, то пользователю будут задаваться вопросы в диалоговом режиме. Все значения, которые известны и определены, ядро примет по имеющейся конфигурации. Если какой-то параметр не определен в старой конфигурации или не существует, то он будет задан. При, достаточно регулярном обновлении ядра, будет примерно 10-20 вопросов (рис. 2).

В основном вопросы касаются поддержки нового оборудования, т.е. ядро включает драйверы нового оборудования. Чаще всего приходится отвечать на них просто по умолчанию. Таким образом, корректно импортируется старая конфигурация в новое ядро. Полученное ядро разворачивается в каталоге - /usr/src/ и создается ссылка с именем Linux на него. Внутри этого каталога (если ядро новое и предыдущей конфигурации нет), чаще всего

* Старший преподаватель.

требуется запустить команду - make menuconfig. Если предыдущая конфигурация уже была, то просто копируем файл config из файлового дерева предыдущей версии ядра в текущую и запускаем «make oldconfig». Когда конфигурация готова, мы можем переходить к компиляции и сборке ядра, что выполняется утилитой «make» (maillinux # make). По умолчанию, утилита make скомпилирует и собирает ядро из исходных кодов (рис. 3).

* Compile-time checks and compiler options

«

Enable _deprecated logic (enable_.varn_deprecated) [N/y/?] n

Enable __must_check logic (ENABLE_MUST_CHECK) [Y/n/?] y Warn for stack frames larger than (needs gcc 4.4) (frame_,\iarn) [1024] 1024 Strip assembler-generated symbols during link (STRIP__ASM_SYMS) [N/y/?] n Enable unused/obsolete exported symbols (UNUSED_SYMBOLS) [N/y/?] n Debug Filesystem (DEBUG_FS) [N/y/?] n

Run make header s_check' when building vmlinux (HEADERS_CHECK) [N/y/?] n Enable full Section mismatch analysis (DEBUG_SECTiON_MISNATCH) [N/y/?] n Compile the kernel with frame pointers (FRAME_POINTER) [Y/n/?] y Magic SysRq key (MAGIC_SYSRQ) [Y/n/?] y

Enable magic SysRq key functions by default (MAGIC_SYSRQ_DEFAULT_ENABLE) [0x1] 0x1 Kernel debugging (DEBUG_KERNEl) [N/y/?] n ft

* Memory Debugging

slub debugging on by default (slub_debug_on) [N/y/"'] n Enable slub performance statistics (slub_stats) [N/y/''] n

- Debug Lockups and Hangs

Panic on Oops (PANIC_ON_OOPS) [N/y/?] n panic timeout (PANIC_TIMEOUT) [0] 0

* Lock Debugging (spinlocks, mutexes, etc...) Stack backtrace support (STACKTRACE) [N/y/?] (NEW)

* RCU Debugging

ft

RCU debugging: sparse-based checks for pointer usage (SPARSE_RCu_POINTER) [N/y/?] n

RCU CPU stall timeout in seconds (RCU_CPU_STALL_TIMEOUT) [21] 21

*

- Tracers

Tracers (FTRACE) [N/y/?] n

ft Runtime Testing

*

Perform an atomic64_t self-test at boot (AT0MIC64_SELFTEST) [N/y/?] n

Test functions located in the string_helpers module at runtime (TEST_STRING_HELPERS) [I

Test kstrto*() family of functions at runtime (TEST_KSTRTOX) [N/m/y] n

Perform selftest on resizable hash table (TEST_RHASHTABLE) [N/y/?] (NEW)

Remote debugging over FireWire early on boot (PRO\aDE_OHCI1394_DMA_INIT) [N/y/?] n

Enable debugging of DMA-API usage (DMA_API_DEBUG) [n/y/?] n

Test module loading with 'hello rarld' module (TEST_MODULE) [N/m/?] n </m/y] n

Puc. 2

По умолчанию, ядро располагается в каталоге «boot» (mail ~ # 1s /boot). Каталог boot и его содержимое необходимы только при старте системы. После старта системы, образ ядра не нужен. Для того, чтобы его смонтировать, набираем команду - mail ~ # mount /boot. В каталоге boot могут лежать несколько образов ядра. Сами образы ядра в Linux принято именовать по имени «vmlinuz» и указывать имя версии (рис. 4).

mail linux ff make

scri pts/kconfi g/conf

■si lentoldconfig Kconfig

SYSTBL arch/x86/syscalls/../include/generated/asm/sysc.

SYSHDR arch/x86/syscalls/../include/generated/uapi/asm

SYSHDR arch/x86/syscalls/../include/generated/uapi/asm

SYSHDR arch/x86/syscalls/../include/generated/uapi/asm

HOSTCC arch/x86/tools/relocs_32.o

HOSTCC arch/x86/tools/relocs_64.o

HOSTCC arch/x86/tools/relocs_common.о

HOSTLD arch/x86/tools/re1ocs

CHK include/config/kernel.release

UPD include/config/kernel.release

WRAP arch/x86/include/generated/asm/clkdev.h

WRAP arch/х8б/i nclude/generated/asm/cputime.h

WRAP arch/x86/include/generated/asm/early_ioremap.h

WRAP arch/х8б/i nclude/generated/asm/mcs_spi nlock.h

WRAP arch/x86/i nclude/generated/asm/scatter1i st.h

CHK i nclude/generated/uapi/11nux/version.h

UPD i nclude/generated/uapi/li nux/version.h

CHK include/generated/utsrelease.h

UPD include/generated/utsrelease.h

CC kernel/bounds.s

GEN include/qenerated/bounds.h

CC arch/x86/kernel/asm-offsets.s

GEN i nclude/generated/asm-offsets.h

CALL scripts/checksyscalls.sh

CC scripts/mod/empty.о

HOSTCC scripts/mod/mk_eIfconfig

MKELF scripts/mod/elfconfig.h

CC scripts/mod/devicetable-offsets.s

GEN scri pts/mod/devi cetable-offsets.h

HOSTCC scripts/mod/file2alias.o

HOSTCC scripts/mod/modpost.o

HOSTCC scripts/mod/sumversion.o

HOSTLD scripts/mod/modpost

HOSTCC scri pts/kal1syms

HOSTCC scripts/pnmtologo

HOSTCC scripts/conmakenash

HOSTCC scripts/sortextable

CC i nit/main, о

CHK include/generated/compile.h

UPD include/generated/compile.h

CC init/version.o

CC init/do_mounts.o

CC init/do_mounts_rd.o

Рис. 3: CC - компиляция, LD - сборка модулей

Using username 'vsop'.

Using keyboard-interactive authentication. Password:

vsopWmai1 - $ su -

Пароль:

mail ~ # Is /boot

mail ~ If mount /boot

mail ~ II Is /boot

boot.0800 config-3.15

config initramfs-genkernel-x86-3.14

config-3.14.7 initramfs-genkernel-x86-3.15

mail - # Is -1 /boot

итого 13138

-rw-r--r-- 1 root root 512 июн 17 17:38 lrwxrwxrwx 1 root root 17 okt 16 15:24 -rw-r--r-- 1 root root 71324 июн 17 16:06 -rw-r—r— 1 root root 72222 июн 17 19:10 -rw-r--r-- 1 root root 1312300 июн 17 16:15 -rw-r--r-- 1 root root 1312260 июн 17 19:12 lrwxrwxrwx 1 root root 36 okt 16 15:25

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

drwx------ 2 root root 12288 июн 11 15:41

lrwxrwxrwx 1 root root 21 okt 16 15:25 -rw-r--r-- 1 root root 1661952 июн 17 16:06 -rw-r-~r-- 1 root root 1677848 июн 17 19:10 lrwxrwxrwx 1 root root 18 okt 16 15:25 -rw-r--r-- 1 root root 3610688 июн 17 16:07 -rw-г--г-- 1 root root 3655856 июн 17 19:11 mail - # |

initramfs.img System.map-3.14.7 vmlinuz-3.14.7 7 lost+found System.map-3.15 vmlinuz-3.15 0 System.map vmlinuz

boot.0800

config -> /boot/config-3.15 config-3.14.7 config-3.15

initramfs-genkernel-x86-3.14.7 initramfs-genkernel-x86-3.15.0

initramfs.img -> /boot/initramfs-genkernel-x86-3.15.0 lost+found

System.map -> /boot/System.map-3.15

System.map-3.14.7

System.map-3.15

vmlinuz -> /boot/vmlinuz-3.15

vmlinuz-3.14.7

Ш11ШВВЗ

Рис. 4

Как правило, чтобы снова создать дефолтное ядро, нужно сделать на него ссылку и оно будет загружаться по умолчанию. По умолчанию будет загружаться ядро 3.15. В этом же каталоге может лежать файл system.map -вспомогательный файл, он генерируется по умолчанию, используется ядром системы и содержит символьную таблицу адресов функции ядра. Предназначен этот файл, главным образом, для откладки в аварийной ситуации и генерируется автоматически. При необходимости, его можно собрать самому при помощи команды «ln» (mail ~ # ln) и он будет собран автоматически. У каждого ядра свой system.map и, по умолчанию, на дефолтное ядро делается символьная ссылка с именем system.map. Конфигурационный файл у каждой версии ядра свой. Еще один файл, который раньше был не обязателен, а сейчас, чаще всего, нужен, это initRAMFS / initrd (расшифровывается InitRAMDisk). До 2012 года можно было обходиться без этого файла. В 2012 году был выпущен менеджер устройств - udev 181. В целях упрощения загрузки ядра, старта системы, выхода системы из сна, этот менеджер устройств был упрощен, начиная с версии 181. И теперь, по умолчанию, если у нас каталог usr монтируется в отдельный дисковой раздел без initRAMFS, то система не запустится. InitRAMFS - это стартовый образ файловой системы, который, при старте системы создается в памяти. Эта начальная стартовая система содержит информацию о модулях ядра и утилиты для работы с файловой системой, в том числе, утилита fsc для проверки целостности файловой системы. Эта утилита необходима, потому что модуль ядра и, в частности, драйвер дисковой системы, может находиться на диске. И для того, чтобы его загрузить, предварительно требуется смонтировать дисковые системы. Для того чтобы получить доступ к диску, необходимо загрузить модель. Для того чтобы загрузить модуль, необходимо смонтировать диск. В результате, данных принятых соглашений по упрощению, сейчас отдельно смонтированный каталог usr при старте системы, без этого начального образа не смонтируется. Именно для этого и делается initRAMFS, тогда старт происходит и монтируется любая файловая система без проблем. InitRAMFS на производительность и на безопасность системы не влияет. Как только система стартовала, этот начальный образ системы будет смонтирован в штатные жесткие диски. Не стоит избегать, также, каталога usr в отдельном дисковом разделе. Расположение каталога usr в корне и в корневой файловой системе чревато массой неприятностей. Поэтому с initRAMFS лучше примириться и научиться с ней работать.

Список литературы:

1. Нефедова И.В. Методика конфигурации ядра Linux // Современные образовательные технологии в мировом учебно-воспитательном пространстве. - 2015. - № 2. - С. 49-53.

2. Балдина А.Д., Нефедова И.В. Применение сетей Петри в моделировании динамических систем // Будущее Науки-2014: сб. науч. ст. 2-й Меж-дунар. молодежи. науч. конф. - Курск: ЗАО «Университетская книга», 2014. -С. 79-81.

3. Лунгу К.Н., Макаров, Е.В. Нефедова И.В. Основы проектирования учебно-методического комплекса по математике для студентов технических специальностей // Наука и современность. - 2014. - № 27. - С. 70-74.

4. Макаров Е.В., Монахов И.А., Нефедова И.В. Двуосное растяжение пластины с круговым отверстием // Вестник российского университета дружбы народов. Серия: Инженерные исследования. - М.: Изд-во: Российский университет дружбы народов, 2015. - № 1. - С. 100-105. - ISSN: 2312-8143.

i Надоели баннеры? Вы всегда можете отключить рекламу.