ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

ПишСм простой ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра Linux

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

Π—Π°Ρ…Π²Π°Ρ‚ Π—ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ ΠšΠΎΠ»ΡŒΡ†Π°-0

Linux прСдоставляСт ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈ ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΉ API для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π΅Π³ΠΎ нСдостаточно. Для взаимодСйствия с ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ осущСствлСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с доступом ΠΊ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² систСмС Π½ΡƒΠΆΠ΅Π½ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ядра.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ядра Linux β€” это скомпилированный Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вставляСтся нСпосрСдствСнно Π² ядро Linux, работая Π² ΠΊΠΎΠ»ΡŒΡ†Π΅ 0, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ ΠΈ Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΠΎΠΌ ΠΊΠΎΠ»ΡŒΡ†Π΅ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ Π² процСссорС x86–64. Π—Π΄Π΅ΡΡŒ ΠΊΠΎΠ΄ исполняСтся ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π±Π΅Π· всяких ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ, Π½ΠΎ Π·Π°Ρ‚ΠΎ Π½Π° нСвСроятной скорости ΠΈ с доступом ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ рСсурсам систСмы.

НС для простых смСртных

НаписаниС модуля ядра Linux β€” занятиС Π½Π΅ для слабонСрвных. ИзмСняя ядро, Π²Ρ‹ рискуСтС ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Π’ ΠΊΠΎΠ΄Π΅ ядра Π½Π΅Ρ‚ стандартной Π·Π°Ρ‰ΠΈΡ‚Ρ‹, ΠΊΠ°ΠΊ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… прилоТСниях Linux. Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‚ΠΎ повСситС всю систСму.

Битуация ΡƒΡ…ΡƒΠ΄ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ проявляСтся сразу. Если ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²Π΅ΡˆΠ°Π΅Ρ‚ систСму сразу послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ‚ΠΎ это Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ сцСнарий сбоя. Π§Π΅ΠΌ большС Ρ‚Π°ΠΌ ΠΊΠΎΠ΄Π°, Ρ‚Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ риск бСсконСчных Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти. Если Π²Ρ‹ нСостороТны, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ станут постСпСнно Π½Π°Ρ€Π°ΡΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² Π²Π°ΠΆΠ½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Π°ΠΆΠ΅ Π±ΡƒΡ„Π΅Ρ€Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ пСрСзаписаны.

МоТно Π² основном Π·Π°Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠšΡ€ΠΎΠΌΠ΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ модуля, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° систСмныС события, Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ядром Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ API, Π° Π½Π΅ сами прилоТСния.

Π£ вас Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅Ρ‚ доступа ΠΊ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. Π₯отя ядро прСдоставляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ€ΠΎΠ΄Π΅ printk (которая слуТит Π·Π°ΠΌΠ΅Π½ΠΎΠΉ printf ) ΠΈ kmalloc (Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° malloc ), Π² основном Π²Ρ‹ ΠΎΡΡ‚Π°Ρ‘Ρ‚Π΅ΡΡŒ Π½Π°Π΅Π΄ΠΈΠ½Π΅ с ΠΆΠ΅Π»Π΅Π·ΠΎΠΌ. Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ, послС Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ модуля слСдуСт ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π·Π° собой. Π—Π΄Π΅ΡΡŒ Π½Π΅Ρ‚ сборки мусора.

НСобходимыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ, слСдуСт ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ всСх Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… инструмСнтов для Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅, Π½ΡƒΠΆΠ½Π° машина ΠΏΠΎΠ΄ Linux. Π—Π½Π°ΡŽ, это Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ! Π₯отя ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ любой дистрибутив Linux, Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ubuntu 16.04 LTS, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π² случаС использования Π΄Ρ€ΡƒΠ³ΠΈΡ… дистрибутивов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ слСгка ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ установки.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π½ΡƒΠΆΠ½Π° ΠΈΠ»ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ физичСская машина, ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина. Π›ΠΈΡ‡Π½ΠΎ я ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС, Π½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ сами. НС ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свою ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΈΠ·-Π·Π° ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° сдСлаСтС ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π― Π³ΠΎΠ²ΠΎΡ€ΡŽ Β«ΠΊΠΎΠ³Π΄Π°Β», Π° Π½Π΅ «Ссли», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ подвСситС ΠΌΠ°ΡˆΠΈΠ½Ρƒ хотя Π±Ρ‹ нСсколько Ρ€Π°Π· Π² процСссС. Π’Π°ΡˆΠΈ послСдниС измСнСния Π² ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π΅Ρ‰Ρ‘ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π±ΡƒΡ„Π΅Ρ€Π΅ записи Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ°Π½ΠΈΠΊΠΈ ядра, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚ΡŒΡΡ ΠΈ ваши исходники. ВСстированиС Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС устраняСт эти риски.

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π½ΡƒΠΆΠ½ΠΎ хотя Π±Ρ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π½Π°Ρ‚ΡŒ C. Рабочая срСда C++ слишком Π²Π΅Π»ΠΈΠΊΠ° для ядра, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° чистом Π³ΠΎΠ»ΠΎΠΌ C. Для взаимодСйствия с ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Π½ΠΈΠ΅ ассСмблСра.

Установка срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

На Ubuntu Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ:

УстанавливаСм самыС Π²Π°ΠΆΠ½Ρ‹Π΅ инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ядра, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½ΠΈΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ ΠΈΠ·-ΠΏΠΎΠ΄ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° Π½Π΅ Ρ€ΡƒΡ‚Π°, Π½ΠΎ Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ sudo. Sudo Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ядра, Π½ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ возмоТности Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ€ΡƒΡ‚Π°.

НачинаСм

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΠΌ ΠΊ написанию ΠΊΠΎΠ΄Π°. ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ Π½Π°ΡˆΡƒ срСду:

ЗапуститС Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ (Π² ΠΌΠΎΡ‘ΠΌ случаС это vim) ΠΈ создайтС Ρ„Π°ΠΉΠ» lkm_example.c ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ содСрТания:

ΠœΡ‹ сконструировали самый простой Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ самыС Π²Π°ΠΆΠ½Ρ‹Π΅ Π΅Π³ΠΎ части:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. Для этого запускаСм:

Если всё Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ Π²Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅. Ѐункция printk обСспСчиваСт Π²Ρ‹Π΄Π°Ρ‡Ρƒ Π½Π΅ Π² консоль, Π° Π² ΠΆΡƒΡ€Π½Π°Π» ядра. Для просмотра Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ:

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ строку β€œHello, World!” с ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Π½Π°Ρ‡Π°Π»Π΅. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ наш ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра загрузился ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ сдСлал запись Π² ΠΆΡƒΡ€Π½Π°Π» ядра. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΅Ρ‰Ρ‘ Π² памяти:

Для удалСния модуля запускаСм:

Если Π²Ρ‹ снова запуститС dmesg, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ запись β€œGoodbye, World!”. МоТно снова Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ lsmod ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ выгрузился.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, эта ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° тСстирования слСгка ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Π°, Π½ΠΎ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ²:

Π² ΠΊΠΎΠ½Ρ†Π΅ Makefile, Π° ΠΏΠΎΡ‚ΠΎΠΌ запустив:

для тСстирования модуля ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Ρ‹Π΄Π°Ρ‡ΠΈ Π² ΠΆΡƒΡ€Π½Π°Π» ядра Π±Π΅Π· нСобходимости Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ, хотя ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра!

НСмного интСрСснСС

ΠšΠΎΠΏΠ½Ρ‘ΠΌ Ρ‡ΡƒΡ‚ΡŒ Π³Π»ΡƒΠ±ΠΆΠ΅. Π₯отя ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ядра способны Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всС Π²ΠΈΠ΄Ρ‹ Π·Π°Π΄Π°Ρ‡, взаимодСйствиС с прилоТСниями β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых распространённых Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ прилоТСниям Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² пространствС ядра, для взаимодСйствия с Π½ΠΈΠΌΠΈ приходится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ API. Π₯отя тСхничСски Π΅ΡΡ‚ΡŒ нСсколько способов Ρ‚Π°ΠΊΠΎΠ³ΠΎ взаимодСйствия, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΉ β€” созданиС Ρ„Π°ΠΉΠ»Π° устройства.

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ β€œHello, World”. Π₯отя это Π½Π΅ особСнно полСзная функция для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ½Π° всё Ρ€Π°Π²Π½ΠΎ дСмонстрируСт процСсс взаимодСйствия с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· Ρ„Π°ΠΉΠ» устройства.

Π’ΠΎΡ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ листинг:

ВСстированиС ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°

Π’Π΅ΠΏΠ΅Ρ€ΡŒ наш ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π΅Ρ‡Ρ‚ΠΎ большСС, Ρ‡Π΅ΠΌ просто Π²Ρ‹Π²ΠΎΠ΄ сообщСния ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ понадобится ΠΌΠ΅Π½Π΅Π΅ строгая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° тСстирования. ИзмСним Makefile Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ модуля, Π±Π΅Π· Π΅Π³ΠΎ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ послС запуска make test Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π²Ρ‹Π΄Π°Ρ‡Ρƒ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° устройства. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΅Π³ΠΎ автоматичСски присваиваСт ядро. Однако этот Π½ΠΎΠΌΠ΅Ρ€ Π½ΡƒΠΆΠ΅Π½ для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ устройства.

(Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ MAJOR Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния make test ΠΈΠ»ΠΈ dmesg )

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ c Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ mknod Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ mknod, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» символьного устройства.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ содСрТимоС с устройства:

ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ dd :

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ этому Ρ„Π°ΠΉΠ»Ρƒ ΠΈΠ· ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ скомпилированныС прилоТСния β€” Π΄Π°ΠΆΠ΅ Ρƒ скриптов Python, Ruby ΠΈ PHP Π΅ΡΡ‚ΡŒ доступ ΠΊ этим Π΄Π°Π½Π½Ρ‹ΠΌ.

Когда ΠΌΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ с устройством, удаляСм Π΅Π³ΠΎ ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

НадСюсь, Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΈΡΡŒ наши ΡˆΠ°Π»ΠΎΡΡ‚ΠΈ Π² пространствС ядра. Π₯отя ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹, эти структуры ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания собствСнных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… ΠΎΡ‡Π΅Π½ΡŒ слоТныС Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² пространствС ядра всё ΠΏΠΎΠ΄ Π²Π°ΡˆΡƒ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ. Π’Π°ΠΌ для вашСго ΠΊΠΎΠ΄Π° Π½Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ»ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ шанса. Если Π΄Π΅Π»Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ для ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅, Ссли Π½Π΅ Ρ‚Ρ€ΠΎΠΉΠ½ΠΎΠ΅ врСмя Π½Π° ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ. Код ядра Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ΄Π΅Π°Π»Π΅Π½, насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ систСм, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ запускаСтся.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ компиляция ядра Linux

ΠŸΠ΅Ρ€Π΅ΡΠ±ΠΎΡ€ΠΊΠ° ядра Linux Π΄Π΅Π»ΠΎ ΠΎΡ‡Π΅Π½ΡŒ интСрСсноС ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ часто ΠΎΡ‚ΠΏΡƒΠ³ΠΈΠ²Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ². Но Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного Π² этом Π½Π΅Ρ‚, ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ядро Linux Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ слоТнСС, Ρ‡Π΅ΠΌ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ (ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ) Π»ΡŽΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ· исходников. ΠŸΠ΅Ρ€Π΅ΡΠ±ΠΎΡ€ΠΊΠ° ядра ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ядро, ΠΈΠ»ΠΈ ΠΆΠ΅, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ. ВсС дальнСйшиС дСйствия ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² Ubuntu Linux.

Установка ΡƒΡ‚ΠΈΠ»ΠΈΡ‚

Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ исходный ΠΊΠΎΠ΄ ядра

Π’Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

Имя ΠΏΠ°ΠΊΠ΅Ρ‚Π°, содСрТащСго исходныС ΠΊΠΎΠ΄Ρ‹ ядра ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄: linux-source-ВСрсия. НапримСр, для ядра вСрсии 2.6.24: linux-source-2.6.24. Бамая послСдняя вСрсия ядра Π² рСпозиториях Ubuntu называСтся просто linux-source, Π±Π΅Π· указания вСрсии Π½Π° ΠΊΠΎΠ½Ρ†Π΅. Для установки исходных ΠΊΠΎΠ΄ΠΎΠ² послСднСй вСрсии ядра Ubuntu Linux, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

РаспаковываСм исходный ΠΊΠΎΠ΄ ядра

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ /usr/src ΠΈ Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΡƒΠ΅ΠΌ ядро. Для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ядра

ΠŸΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ появится интСрфСйс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ ядра:

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«ExitΒ» (Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ Π’ΠΏΡ€Π°Π²ΠΎ ΠΈ Π·Π°Ρ‚Π΅ΠΌ Enter ) ΠΈ Π²Ρ‹ΠΉΠ΄ΠΈΡ‚Π΅ ΠΈΠ· ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹. ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ выскочит сообщСниС с вопросом β€” ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½Π½Ρ‹Π΅ измСнСния, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Yes.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ядра

ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ядро с Ρ‚Π΅ΠΌΠΈ измСнСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ внСсли Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ шагС. Для Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, которая ΡƒΠ΄Π°Π»ΠΈΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ (Ссли ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ), ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ компиляции:

НаконСц, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ядра, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ядра Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ довольно ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π»ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… дСсятков ΠΌΠΈΠ½ΡƒΡ‚ Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… часов, Π² зависимости ΠΎΡ‚ мощности вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

Установка (инсталляция) ядра

Запуск систСмы с Π½ΠΎΠ²Ρ‹ΠΌ ядром

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ систСмы с Π½ΠΎΠ²Ρ‹ΠΌ ядром. ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. Π’ мСню Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° GRUB Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π²Π°ΡˆΠ΅ΠΌΡƒ Π½ΠΎΠ²ΠΎΠΌΡƒ ядру, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Если всС ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Ρ‚ΠΎ систСма запустится с Π½ΠΎΠ²Ρ‹ΠΌ ядром.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

РусскиС Π‘Π»ΠΎΠ³ΠΈ

Π“Π»Π°Π²Π° 1 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° модуля ядра Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°

1.1 ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° модуля ядра

1.1.1 ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ядра

1.1.2 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° модуля ядра Linux

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π°
* Ѐункция Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ модуля module_init ()
* Ѐункция удалСния модуля module_exit ()
Π”Π²Π° макроопрСдСлСния module_init () ΠΈ module_exit () ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ модуля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² linux3.14 / include / linux / init.h. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅:

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ module_init ΠΈ ΠΎΠ΄ΠΈΠ½ module_exit.
Π”Π°Π²Π°ΠΉΡ‚Π΅ сравним ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ ядра:

Π’Π°Π±Π»ΠΈΡ†Π° 1
ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux
Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ прилоТСния ΠΈ модуля ядра Ρ€Π΅Π·ΡŽΠΌΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.
Π’Π°Π±Π»ΠΈΡ†Π° 2
ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

1.1.3 Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра Linux

БобствСнно, компиляция ядра ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»Π°ΡΡŒ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим:
Makefile ядра linux3.14 Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° 5 ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:
Makefile Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Makefile

3. Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΡ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°

Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ CONFIG_EXT2_FS Ρ€Π°Π²Π½ΠΎ y ΠΈΠ»ΠΈ m, kbuild ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ext2 Π² нисходящСй ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Π½ΠΎ Π΅Π³ΠΎ Ρ€ΠΎΠ»ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° этим. Π”ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ext2 Π±Ρ‹Ρ‚ΡŒ скомпилированы ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠ»ΠΈ связаны с ядром, ΠΈΠ»ΠΈ ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ΡΡ содСрТимым Makefile Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ext2
4. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ компиляции ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.
ΠŸΡ€ΠΈ компиляции модуля Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Make modules для компиляции модуля. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ„Π°ΠΉΠ»ΠΎΠ², связанных с ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ, Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π΄Π΅Ρ€Π΅Π²Π° ΠΊΠΎΠ΄Π°. Location, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для компиляции модуля:

1.2 Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹ с компиляциСй модуля ядра Makefile

1.2.1 ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

1.2.2 Анализ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ процСсса компиляции

1.2.3 ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ описаниС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ компиляции

Если Π²Ρ‹ пСрСмСститС ΠΌΠΎΠ΄ΡƒΠ»ΡŒ hello Π² исходный ΠΊΠΎΠ΄ ядра. НапримСр, Ссли Π²Ρ‹ помСститС Π΅Π³ΠΎ Π² / usr / src / linux / driver /, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ KERNELRELEASE.
Π² / usr / src / linux / Makefile

Π’ настоящСС врСмя ΠΌΠΎΠ΄ΡƒΠ»ΡŒ hello большС Π½Π΅ компилируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ make, Π° компилируСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ make Π² ядрС. Π’ это врСмя ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° компилируСтся с ядром.

1.3 ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² модуля

1.3.1 ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ module_param ()

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Ρ‡Π΅Ρ€Π΅Π· main (), Π° ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра, Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‡Π΅Ρ€Π΅Π· module_param ().
ΠœΠ°ΠΊΡ€ΠΎΡ module_param () Π½Π΅Π΄Π°Π²Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ядро ​​Linux 2.6. Π­Ρ‚ΠΎΡ‚ макрос ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² Ρ„Π°ΠΉΠ»Π΅ include / linux / moduleparam.h ΠΈ опрСдСляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ опрСдСляСм ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ модуля Ρ‡Π΅Ρ€Π΅Π· макрос module_param ():

1.3.2 Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ module_param ()

ΠœΠ°ΠΊΡ€ΠΎΡ module_param () Π½Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, поэтому Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄ использованиСм макроса. Π’ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ использованиС выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Они Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ записаны Π² Π½Π°Ρ‡Π°Π»Π΅ исходного Ρ„Π°ΠΉΠ»Π° модуля. Π’ΠΎ Π΅ΡΡ‚ΡŒ int_var являСтся Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ. Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ исходного Ρ„Π°ΠΉΠ»Π° модуля ΠΈ имя внСшнСго ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ module_param_ named ().
a – module_param_named()
module_param_named(name, variable, type, perm);
имя внСшнСС (пространство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) имя Π²ΠΈΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°;
пСрСмСнная Имя глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² исходном Ρ„Π°ΠΉΠ»Π΅;
Ρ‚ΠΈΠΏ
Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° доступ
И ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ module_param рСализуСтся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ module_param_ named, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ имя совпадаСт с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
НапримСр:

b-строковый ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€
Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ модуля являСтся строкой, для опрСдСлСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° модуля ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΈΠΏ charp. Π―Π΄Ρ€ΠΎ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ строку, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ пСрСмСнная ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° эту строку.
НапримСр:

ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ c-массива
ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ массива, значСния, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² спискС, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ запятыми, Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ модуля. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массива, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

Имя массива ΠΈΠΌΠ΅Π½ (Ρ‚Π°ΠΊΠΆΠ΅ имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°),
type Π’ΠΈΠΏ элСмСнта массива,
num цСлочислСнная пСрСмСнная,
ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ perm.
Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массива установлСн ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, num устанавливаСтся Ρ€Π°Π²Π½Ρ‹ΠΌ количСству прСдоставлСнных чисСл.Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ модуля отказываСтся ΠΈΠΌΠ΅Ρ‚ΡŒ большС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ массив.

1.3.3 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ сгСнСрируйтС исполняСмый Ρ„Π°ΠΉΠ» hello

1.4 Экспорт Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ символов

Оба этих макроса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для экспорта Π΄Π°Π½Π½ΠΎΠ³ΠΎ символа Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ модуля.ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ макроса вСрсии _GPL ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ символ доступным Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для модуля с Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPL. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Π° модуля, Π° Π½Π΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π²Π° Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… макроса Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ объявлСниС, Π° пСрСмСнная Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ глобальной. Π­Ρ‚Π° пСрСмСнная хранится Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ исполняСмой части модуля (Β«ELF-Ρ€Π°Π·Π΄Π΅Π»Β»). ΠŸΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ядро β€‹β€‹ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ этот Ρ€Π°Π·Π΄Π΅Π» для поиска ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, экспортируСмых ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ (заинтСрСсованныС Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ

1.4.1 ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ макроса EXPORT_SYMBOL Π°Π½Π°Π»ΠΈΠ·

1. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

ΠŸΠ΅Ρ€Π΅Π΄ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ сначала усвойтС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ связанныС знания:
1) # ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ## ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€
ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ # для создания строки Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ макроса. #abc ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ строку Β«abcΒ» ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.
## ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ называСтся ΡΠ²ΡΠ·ΡƒΡŽΡ‰ΠΈΠΌ Π·Π²Π΅Π½ΠΎΠΌ прСпроцСссора ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΈ склСйки Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… символов,
, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: #define xName (n) x ## n
, Ρ‚ΠΎΠ³Π΄Π° xName (4) становится x4
2) gcc_ attribute_ Атрибуты:
_ attribute_Ѐункция ((section (Β«section_nameΒ»))) Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² Ρ€Π°Π·Π΄Π΅Π» с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«section_nameΒ».
_ attribute_Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСпосрСдствСнно Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ опрСдСлСния, ΠΊΠΎΠ³Π΄Π° функция ΠΈΠ»ΠΈ пСрСмСнная ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹.
, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
int myvar__ attribute__((section(β€œmydata”))) = 0;
ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ цСлочислСнная пСрСмСнная myvar = 0 ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°, Π° пСрСмСнная хранится Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«mydataΒ»
ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС gcc_attribute см. ΠΏΠΎ адрСсу:
http://blog.sina.com.cn/s/blog_661314940100qujt.html
2. Какова Ρ€ΠΎΠ»ΡŒ EXPORT_SYMBOL?
Ѐункция ΠΈΠ»ΠΈ символ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² Ρ‚Π΅Π³Π΅ EXPORT_SYMBOL, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ для всСго ΠΊΠΎΠ΄Π° ядра ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Ρ‹Π·Π²Π°Π½Ρ‹ Π² вашСм ΠΌΠΎΠ΄ΡƒΠ»Π΅ ядра Π±Π΅Π· измСнСния ΠΊΠΎΠ΄Π° ядра, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ использованиС EXPORT_SYMBOL ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ символичСски Экспорт Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для использования.
Π’ΠΎΡ‚ сравнСниС с System.map: System.map содСрТит адрСс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ соСдинСниС установлСно, Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ядра 2.6 нСизвСстно, ΠΊΠ°ΠΊΠΎΠΉ символ находится ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ адрСсу.
Π‘ΠΈΠΌΠ²ΠΎΠ» EXPORT_SYMBOL сохраняСт эти символы ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ адрСса, ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ адрСса этих символов ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ядра. Π’ процСссС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ модуля Π΅Π³ΠΎ ΡΡƒΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² динамичСском ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊ ядру.Если Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Π΅ΡΡ‚ΡŒ ссылки Π½Π° символы ядра ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, эти символы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ EXPORT_SYMBOL, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ адрСсноС соСдинСниС.

1.4.2 Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ EXPORT_SYMBOL

1.4.3 ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ПослС компиляции Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ dmesg для просмотра ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ядра.

Подсказки:

ОписаниС Ρ„Π°ΠΉΠ»Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°

2. ΠŸΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ include / asm Ρ„Π°ΠΉΠ»ΠΎΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ², относящихся ΠΊ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅.
Π­Ρ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π² основном ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΠ°ΠΊΡ€ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, тСсно связанныС с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ ЦП. ВсСго 4 Ρ„Π°ΠΉΠ»Π°.

3. ΠŸΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ядра Linux include / linux

4. ΠŸΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с систСмной структурой Π΄Π°Π½Π½Ρ‹Ρ… include / sys

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘Π±ΠΎΡ€ΠΊΠ° модуля ядра Linux Π±Π΅Π· Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ вас имССтся ΠΎΠ±Ρ€Π°Π· ядра Linux для Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° Π½Π° Π±Π°Π·Π΅ Android, Π½ΠΎ Π²Ρ‹ Π½Π΅ располагаСтС Π½ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ исходниками, Π½ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ядра. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ядро ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ), ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ядра. БущСствуСт нСсколько Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎΡ‡Π΅ΠΌΡƒ нСльзя просто ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ядро ΠΈΠ· исходников ΠΈ просто Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ Π½Π° Ρ‚ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² собранном ядрС отсутствуСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ устройства, Π²Ρ€ΠΎΠ΄Π΅ LCD ΠΈΠ»ΠΈ тачскрина). Π‘ постоянно ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌΡΡ ABI ядра Linux ΠΈ отсутствиСм исходников ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ зашли Π² Ρ‚ΡƒΠΏΠΈΠΊ.

Как констатация Ρ„Π°ΠΊΡ‚Π°, Ссли Π²Ρ‹ собСрСтС ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ (Π½Π΅ΠΆΠ΅Π»ΠΈ Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для сборки Ρ‚ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° ядра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ располагаСтС, β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€.), ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ смоТСт Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ с ошибками, зависящими ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, насколько Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°Π»ΠΈΡΡŒ ΠΎΡ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ…. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎ ΠΏΠ»ΠΎΡ…ΠΈΡ… сигнатурах, ΠΏΠ»ΠΎΡ…ΠΈΡ… вСрсиях ΠΈ ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Π²Π΅Ρ‰Π°Ρ….

Но большС ΠΎΠ± этом Π΄Π°Π»Π΅Π΅.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ядра

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, Ρ‡Ρ‚ΠΎ arm-eabi-gcc Ρƒ вас доступСн ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· ΠΏΡƒΡ‚Π΅ΠΉ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния PATH, ΠΈ Ρ‡Ρ‚ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Π² ΠΏΠ°ΠΏΠΊΠ΅ с исходными Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ядра, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ядра ΠΈ установку Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ скриптов:

НаписаниС простого модуля

ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ тСкст Π² Ρ„Π°ΠΉΠ» Makefile Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ:

Π‘Π±ΠΎΡ€ΠΊΠ° модуля достаточна проста, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ смоТСт Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ.

Π‘Π±ΠΎΡ€ΠΊΠ° модуля

Π”Π°Π»Π΅Π΅, Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΠΌ здСсь ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ структуры модуля:

НачинаСтС ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ прСдполагаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² точности Ρ‚Π΅ ΠΆΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π±Ρ‹Π»ΠΎ собрано нашС ядро?

Π”Π°Π»Π΅Π΅, опрСдСлСния вСрсий символов:

Π’Π°ΠΊ, Ссли ΠΌΡ‹ собСрСм ядро с исходниками ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ, достаточно Π±Π»ΠΈΠ·ΠΊΠΈΠΌΠΈ ΠΊ Ρ‚Π΅ΠΌ, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π» собран ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ Ρƒ нас ΠΎΠ±Ρ€Π°Π· ядра, Π΅ΡΡ‚ΡŒ шанс Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π΅ ΠΆΠ΅ самыС сигнатуры, Ρ‡Ρ‚ΠΎ ΠΈ Π² нашСм ΠΎΠ±Ρ€Π°Π·Π΅ ядра, ΠΈ ΠΎΠ½ΠΎ Ρ€ΡƒΠ³Π½ΡƒΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ модуля:

Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ ядро

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ядро Π΄Π΅Π»Π°Π΅Ρ‚ эти ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΎΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ содСрТит список символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ экспортируСт ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ сигнатуры. Когда ядро Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΎΠ½ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ всСм символам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΈΡ… Π² своСй Ρ‚Π°Π±Π»ΠΈΡ†Π΅ символов (ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… символов ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ) ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ сигнатуры.

Π―Π΄Ρ€ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для поиска Π² своСй Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ символов (Π² kernel/module.c):

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π² include/linux/module.h:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ядра Π½Π΅ измСнился Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π° послСдниС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π³ΠΎΠ΄Π° (Π²ΠΈΠ΄ΠΈΠΌΠΎ, с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° рассматриваСмого Ρ€Π΅Π»ΠΈΠ·Π° ядра 3.0, β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€.).

Π’ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ each_symbol_section β€” Ρ‚Ρ€ΠΈ (ΠΈΠ»ΠΈ ΠΏΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ CONFIG_UNUSED_SYMBOLS Π²ΠΊΠ»ΡŽΡ‡Π΅Π½) поля, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТит Π½Π°Ρ‡Π°Π»ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ символов, Π΅Π΅ ΠΊΠΎΠ½Π΅Ρ† ΠΈ Π΄Π²Π° Ρ„Π»Π°Π³Π°.

К Π½Π΅ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ядСр сСгодня сТатыС ( zImage ), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ простой поиск ΠΏΠΎ сТатому ΠΎΠ±Ρ€Π°Π·Ρƒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½. Π‘ΠΆΠ°Ρ‚ΠΎΠ΅ ядро Π½Π° самом Π΄Π΅Π»Π΅ прСдставляСт нСбольшой Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ, слСдом Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠ΄Π΅Ρ‚ сТатый ΠΏΠΎΡ‚ΠΎΠΊ. МоТно ΠΏΡ€ΠΎΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» zImage с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ сТатый ΠΏΠΎΡ‚ΠΎΠΊ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ распакованный ΠΎΠ±Ρ€Π°Π·.

Π― написал скрипт для дСкомпрСссии ΠΈ извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ символах ядра Π² автоматичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с любой свСТСй вСрсиСй ядра, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ядро Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌΠΎΠ΅ (relocatable) ΠΈ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс Π² памяти, ΠΊΡƒΠ΄Π° ΠΎΠ½ΠΎ грузится. Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΏΡ†ΠΈΠΈ для количСства ΠΈ порядка слСдования Π±ΠΈΡ‚ΠΎΠ² (endianness) Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ значСния, подходящиС для ARM. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½, Π½Π° ядрах ARM, Π² dmesg :

(ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€. β€” ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π΅ всС ядра выводят эти Π΄Π°Π½Π½Ρ‹Π΅ Π² Π»ΠΎΠ³, ΠΌΠ½Π΅ довСлось Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ‚Π°ΠΊΠΎΠΉ практичСски ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ случай, ΠΊΠΎΠ³Π΄Π°, Π²ΠΈΠ΄ΠΈΠΌΠΎ, Π²Π²ΠΈΠ΄Ρƒ ΡƒΡ€Π΅Π·Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ эта информация Π½Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ, Π² Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³Ρƒ PAGE_OFFSET Π² Ρ„Π°ΠΉΠ»Π΅ arch/arm/Kconfig ΠΈ просто Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Π΅Π½Π΄ΠΎΡ€ использовал ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ).

Если ΠΊΠ°ΠΊ я, Π²Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΠ΅Ρ‚Π΅ΡΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ модуля Π½Π° дСвайсС Android, Ρ‚ΠΎΠ³Π΄Π° Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ ядра, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ β€” ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· boot. ΠžΠ±Ρ€Π°Π· boot содСрТит Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π΅Ρ‰ΠΈ ΠΏΠΎΠΌΠΈΠΌΠΎ ядра, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ со скриптом Π²Ρ‹ΡˆΠ΅. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ составляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΡ‚ случай, Ссли ядро Π² ΠΎΠ±Ρ€Π°Π·Π΅ boot сТато, ΠΏΡ€ΠΈ этом Ρ‡Π°ΡΡ‚ΡŒ скрипта, которая ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ сТатый ΠΎΠ±Ρ€Π°Π·, всС Ρ€Π°Π²Π½ΠΎ Π½Π°ΠΉΠ΄Π΅Ρ‚ ядро.

Если ядро Π½Π΅ сТато, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ unbootimg ΠΊΠ°ΠΊ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ постС, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π· ядра ΠΈΠ· вашСго ΠΎΠ±Ρ€Π°Π·Π° boot. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π· ядра, скрипт ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘Π±ΠΎΡ€ΠΊΠ° ядра Linux

Π‘Π°ΠΌΡ‹ΠΌ основным ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Linux Π΅ΡΡ‚ΡŒ ядро. ИмСнно ядро выступаСт ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ Π·Π²Π΅Π½ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ ΠΈ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π’ΠΎ всСх Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… дистрибутивах Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ сборкС ΠΈ настройкС ядра, всС ΡƒΠΆΠ΅ сдСлали Π·Π° нас Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ дистрибутива. Но Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠ°ΠΌΡƒΡŽ ΡΠ²Π΅ΠΆΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ядра ΠΈΠ»ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ΄ сСбя ΡƒΠ΄Π°Π»ΠΈΠ² ΠΎΡ‚ Ρ‚ΡƒΠ΄Π° всё лишнСС, Π²Π°ΠΌ придСтся ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

РаньшС ядро собирали для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ своСго оборудования, Π½ΠΎ сСйчас, учитывая ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ мощности ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ сборкС ядра совсСм Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ. БСйчас сборка ядра ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π½Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… дистрибутивов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Gentoo, Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ внСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния Π² ядро, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΡΠ°ΠΌΡƒΡŽ ΡΠ²Π΅ΠΆΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ядра ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΆΠ΅ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ своСй систСмы. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим ΠΊΠ°ΠΊ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ядро Linux Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дистрибутива Ubuntu.

Π‘Π±ΠΎΡ€ΠΊΠ° ядра Linux ΠΈΠ· исходников

1. ВСкущая вСрсия ядра

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ядра, ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ Π² систСмС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

2. Установка Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

Для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ сборки ядра Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ убСдится, Ρ‡Ρ‚ΠΎ Π² вашСй систСмС установлСны всС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Π½ΡƒΠΆΠ½Ρ‹Π΅ для сборки ядра ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅. Для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

sudo apt install libncurses-dev libncurses dwarves build-essential gcc bc bison flex libssl-dev libelf-dev

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

ПослС установки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ исходников ядра.

3. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ исходников ядра

Π˜ΡΡ…ΠΎΠ΄Π½ΠΈΠΊΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ Π±Ρ€Π°Ρ‚ΡŒ с сайта вашСго дистрибутива, Ссли ΠΎΠ½ΠΈ Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта ядра: kernel.org. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСна Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° исходников с kernel.org.

Π˜Ρ‚Π°ΠΊ ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈΡΡŒ с вСрсиСй Π·Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° kernel.org ΠΈ скачайтС Π½ΡƒΠΆΠ½Ρ‹Π΅ исходники Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ tarball:

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ использована самая новая Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ вСрсия 5.13.7. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта Π°Ρ€Ρ…ΠΈΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ. Для этого ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΡƒ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ распаковки:

Π—Π°Ρ‚Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΏΠ°ΠΏΠΊΡƒ с распакованными исходниками ядра. НапримСр, для вСрсии 5.13.7 ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

4. ВСкущая конфигурация ядра

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сами Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ядро с нуля, Π½ΠΎ это, скорСС всСго, Π·Π°ΠΉΠΌΠ΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ². ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ всСго Π²Π·ΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ядра ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ Π² качСствС Π±Π°Π·Ρ‹ для сборки Π½ΠΎΠ²ΠΎΠ³ΠΎ. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… дистрибутивах конфигурация хранится Π² Ρ„Π°ΠΉΠ»Π΅ /proc/config.gz. Однако это Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π±Ρ‹Π»Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ опция ядра. Π˜Π·Π²Π»Π΅Ρ‡ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Часто ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° этой возмоТности ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π°. Но Π² Ubuntu ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… соврСмСнных дистрибутивах, конфигурация ядра находится Π² ΠΏΠ°ΠΏΠΊΠ΅ /boot, Π² Ρ„Π°ΠΉΠ»Π΅ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ config ΠΈ вСрсия ядра. Если Ρƒ вас Π² систСмС установлСно нСсколько ядСр, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ нСсколько ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². НапримСр, config-5.11.0-25-generic:

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² ΠΏΠ°ΠΏΠΊΡƒ с исходниками Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

5. АвтоматичСская конфигурация

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎ состояния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ядра. Π’ Π½ΠΎΠ²Ρ‹Ρ… вСрсиях ядра, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅Ρ‰Ρ‘ Π½Π΅Ρ‚ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ядра вашСго дистрибутива. Для этого Π΅ΡΡ‚ΡŒ нСсколько скриптов. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π°: oldconfig ΠΈ localmodulesconfig. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ скрипт позволяСт Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ поля ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Для Π΅Π³ΠΎ запуска Π² ΠΏΠ°ΠΏΠΊΠ΅ с исходниками ядра Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

ПослС запуска скрипта Π²Π°ΠΌ придСтся ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° Π½ΠΈΡ…. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ скрипт совСтуСт ΠΊΠ°ΠΊ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ ΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π½ΠΎ Ссли Π²Ρ‹ ΡΠΎΠΌΠ½Π΅Π²Π°Π΅Ρ‚Π΅ΡΡŒ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ стоит Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π² Google. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ удСляйтС ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌ, Π½Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΌ ΠΊΠ°ΠΊ NEW, Ρ‚Π°ΠΊΠΈΠ΅ настройки Π½Π΅ Π½ΠΎΠ²Ρ‹Π΅ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ вашСго Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°.

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

ПослС ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° всС вопросы ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡˆΠ°Π³Ρƒ. Однако, ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ способС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ядра останутся Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ сборка Π·Π°ΠΉΠΌΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΌΠ½ΠΎΠ³ΠΎ мСста Π½Π° дискС (Π΄ΠΎ 20 Π“Π±) ΠΈ само ядро получится большого Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ localmodulesconfig ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс. Π­Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° вопрос ΠΊΠ°ΠΊ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ядро Linux ΠΏΠΎΠ΄ своС ΠΆΠ΅Π»Π΅Π·ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ всСго. Она Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ этому провСряСт ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ядра сСйчас Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ ΠΈ оставляСт Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ…, сборку всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚. Π’Π°ΠΊΠΎΠ΅ ядро собСрСтся Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Π΄Π° ΠΈ вопросов, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ мСньшС.

Π—Π΄Π΅ΡΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сТатия ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ядра. Π›ΡƒΡ‡ΡˆΠ΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π±Π΅Π· сТатия:

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

6. Ручная настройка ядра

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· автоматичСских скриптов настройки ядра, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° menuconfig. Она позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ настройки ядра Π² псвСвдографичСском мСню. Для Π΅Π³ΠΎ запуска Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

По ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ справку. Для этого Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Help ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Enter:

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

ΠŸΡƒΠ½ΠΊΡ‚ Support for paging of anonymous memory (swap) позволяСт Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΈ:

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π°Π·Π°Π΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ Exit, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ File systems. Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ext4 ΠΈ ext3, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Btrfs ΠΈ F2FS:

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

6. Π‘Π±ΠΎΡ€ΠΊΠ° ядра ΠΈ установка Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ядро Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ достаточно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для Π΅Π³ΠΎ сборки:

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ядро процСссора. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ сборку попросив ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сразу нСсколько ядСр с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ -j. НапримСр, для сборки Π² 8 ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ выполнСния этих ΠΊΠΎΠΌΠ°Π½Π΄ сборка ядра Linux Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°, дальшС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ядро. Для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

Π‘ΠΊΡ€ΠΈΠΏΡ‚ автоматичСски ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Grub ΠΈ Π²Ρ‹ смоТСтС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ядро:

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΠ΄Ρ‚ΠΈ дальшС, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ способ сборки ядра.

7. Π‘Π±ΠΎΡ€ΠΊΠ° ΠΏΠ°ΠΊΠ΅Ρ‚Π° для Ubuntu

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ способ установки Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ссли Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ядро, Π²Π°ΠΌ придСтся это Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. ВмСсто этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ для своСго дистрибутива ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°. Для сборки deb ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ сборки ядра Linux ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ появятся Π½Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π²Ρ‹ΡˆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° с исходниками:

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

Для установки этих ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² достаточно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈ убСдится, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½ΠΎΠ²ΠΎΠ΅ ядро:

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

Для удалСния ядра, установлСнного Ρ‚Π°ΠΊΠΈΠΌ способом достаточно загрузится с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ядром ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ядра ΠΈΠ· систСмы. НапримСр, для этой вСрсии ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

sudo apt remove linux-headers-5.13.7 linux-image-5.13.7 linux-image-5.13.7-dbg linux-libc-dev

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ссли ядро Π½Π΅ загруТаСтся

Если ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ собранноС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ядро Π½Π΅ загруТаСтся, Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ Π΅Ρ‰Ρ‘ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ загрузится со старым ядром ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ всё сначала ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ядро ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ систСму со старым ядром. Для этого Π² мСню Grub Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ядра, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: 5.11.0.25:

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра linux

Если мСню Grub Π½Π΅ отобраТаСтся, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π·Π°ΠΆΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Shift. ПослС Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² систСмС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ядро с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°, Ссли использовали Π΅Π³ΠΎ для установки ΠΈΠ»ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Для удалСния Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ слСдуСт ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ядра ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ /boot. НапримСр:

А Π·Π°Ρ‚Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Grub:

ПослС этого Π² вашСй систСмС останутся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ старыС ядра.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π’ΠΎΡ‚ ΠΈ всС. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрСли выполняСтся сборка ядра Linux ΠΈΠ· исходников. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ всСм ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠΌ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ свою систСму, ΠΈ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ°ΠΌΡƒΡŽ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ядра Π² своСй систСмС. Если ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ вопросы, Π·Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ!

НСт ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… записСй

ΠžΡ†Π΅Π½ΠΈΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ:

Об Π°Π²Ρ‚ΠΎΡ€Π΅

ΠžΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈ администратор сайта losst.ru, ΡƒΠ²Π»Π΅ΠΊΠ°ΡŽΡΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой Linux. Π’ качСствС основной ОБ сСйчас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ubuntu. ΠšΡ€ΠΎΠΌΠ΅ Linux, ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡΡŒ всСм, Ρ‡Ρ‚ΠΎ связано с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ тСхнологиями ΠΈ соврСмСнной Π½Π°ΡƒΠΊΠΎΠΉ.

47 ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²

Установку ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ своСго линукса Π½Π°Ρ‡ΠΈΠ½Π°Π» с ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ€ΡƒΡ‡Π½ΠΎΠΉ настройки ΠΈ сборки ядра. Π£ΠΆΠ΅ ΠΈ Π½Π΅ помню сколько Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠ½ΠΎ «Π·Π°Π²Π΅Π»ΠΎΡΡŒ»:) Π“Π΄Π΅-Ρ‚ΠΎ нСдСлю ΠΏΠΎ Π²Π΅Ρ‡Π΅Ρ€Π°ΠΌ послС Ρ€Π°Π±ΠΎΡ‚Ρ‹ я Π΅Π³ΠΎ собирал Π½Π° домашнСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ читая хэндбуки Π² консольном Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ 🙂 Π­Ρ‚ΠΎ Π² 2008-ΠΌ Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π»ΠΎ. Π‘ Π²ΠΈΠ½Π΄Ρ‹ сСл Π½Π° gentoo. На сборку всСй систСмы Π΄ΠΎ юзабСльного состояния Ρƒ мСня ΡƒΡˆΠ»ΠΎ Π½Π΅Π΄Π΅Π»ΠΈ 3. Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΈ ΠΊΠΎΠ²Ρ‹Ρ€ΡΡŽΡΡŒ Π² никсах.

ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ с ΠΎΠΊΠ½ΠΎΡƒΠ·Π° ΠΈ сразу Π½Π° Π³Π΅Π½Ρ‚Ρƒ это ΡƒΠΆΠ΅ цСлая биография

МоТно Ρ€Π°Π·Π²Π΅ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ староС ядро ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ дистрибутиву.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ссли Π·Π½Π°Π΅Ρ‚Π΅ Π‘ΠΈ, Ρ‡Ρ‚ΠΎΠ± Π²Ρ‹Ρ‚ΡΠ½ΡƒΡ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΈ ΠΊΡƒΡ‡Ρƒ зависимостСй ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² исходном ΠΊΠΎΠ΄Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ядра. Π’ΠΎΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊΠΎΠΉ вэтом Π²Π΅Π»ΠΈΠΊΠΈΠΉ смысл для домашнСго ПК, находящСгося Π·Π° NAT ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° ΠΈ Π·Π° NAT Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π°? Или Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ уязвимости старой вСрсии ядра, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄ΠΎΠΌΠ°Ρ‡Π°Π΄Ρ†Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ?

Π₯ΠΎΡ€ΠΎΡˆΠΎ Ρ‡Ρ‚ΠΎ сказали, Ρ‡Π΅Ρ€Π΅Π· консоль качаСтся ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ лишнСго, Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ссылку.

Π― Ρ‚Π°ΠΊ понимаю это ошибка ΠΈ вмСсто lscpi Π½ΡƒΠΆΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ lspci

Π‘ΠΌΠΎΡ‚Ρ€ΡŽ Π²Ρ‹ Ρ‚Π°ΠΊ ссылку ΠΈ Π½Π΅ помСняли. ΠŸΡ€ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ скачиваСтся ΠΌΠ½ΠΎΠ³ΠΎ лишнСго.

Бсылку помСнял Π½Π° Github, Π½ΠΎ Ρ‚Π°ΠΌ Ρ‚ΠΎΠΆΠ΅ скачиваСтся докумСнтация. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли Π½ΡƒΠΆΠ½Π° самая послСдняя вСрсия, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅Ρ‰Π΅ Π½Π΅Ρ‚ Π½Π° сайтС, Ρ‚ΠΎ придСтся ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ всС.

А послС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ инсталяции
$ sudo make install && sudo make modules_install
Как Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ядро ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΡ€ΠΈ этом Π½Π΅ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΠ² ΠΌΠΎΠ΄ΡƒΠ»ΠΈ старого ядра?
У мСня ОБ ROSA Linux Fresh.

admin, расскаТи, Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ интСрСсно ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сломав

Π½Π΅Π΅Π΅Π΅, Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ sudo make modules_install ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ эту установку?

Π― нашСл ΠΎΡ‚Π²Π΅Ρ‚ Ссли ΠΊΠΎΠΌΡƒ интСрСсно Π±ΡƒΠ΄Π΅Ρ‚, удаляСтС ядра ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ большС, Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /boot Ρ‚Π°ΠΊ ΠΆΠ΅ удаляСтС ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ для удаляСмых ядСр, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: system.map ΠΈ initramfs. Π”Π°Π»Π΅Π΅ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ обращСния Π² ΡΠΏΡΡ‚ΡŒ make modules_install: Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /lib/modules просто удаляСтС ΠΏΠ°ΠΏΠΊΡƒ с модулями ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ядра ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ удаляСтС. И всС, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ядра Π² цСлостности ΠΈ сохранности ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ испорчСнно. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ взята ΠΈΠ· ΠΆΡƒΡ€Π½Π°Π»Π° LinuxFormat Π·Π° ΠΎΠΊΡ‚ΡΠ±Ρ€ΡŒ 2016 Π³ΠΎΠ΄Π°, ΠΎΡ‡Π΅Π½ΡŒ полСзная Π²Π΅Ρ‰ΡŒ(Π½Π΅ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°, совСт Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ).

ΠŸΠΎΡΡ‚Π°Π²ΠΈΠ» сСбС Ubuntu 16.04 Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΈ скачал ядро 4.11. Начал ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ, столкнулся с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ сборкС. ΠœΠΎΠΆΠ΅Ρ‚, ΠΊΠΎΠΌΡƒ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚.

sudo apt-get install libssl-dev build-essential kernel-package libncurses-dev

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих установок Π½Π° Ubuntu 16.04 Ρƒ мСня всё Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ ΠΈ ядро Π½Π°Ρ‡Π°Π»ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒΡΡ.

Админ, ΡΡ‚Π°Ρ‚ΡŒΡ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ, ΠΌΠ½Π΅ Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΠ»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ прСднастроСк самой систСмы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со сборкой ядра, Ссли добавишь, Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒΡ ΠΎΡ‚ А Π΄ΠΎ Π―.

Π’Π°ΠΊ Π²ΠΎΡ‚ ΠΎΠ½ΠΎ Ρ‡Ρ‚ΠΎ! МнС ΠΏΡ€ΠΈ сборкС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ make && make modules Π²Ρ‹Π΄Π°Π²Π°Π»ΠΎ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΎ отсуствиС openssl, ядро 4.19.2. Всё Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ

А ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ RAID NTFS? Π―Π΄Ρ€ΠΎ 4.9.

Π― софт Ρ€Π΅ΠΉΠ΄-1 Π΄Π΅Π»Π°Π» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ mdadm

Как Ρ€Π°Π· этой строчки ΠΌΠ½Π΅ ΠΈ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ «sudo apt-get install libssl-dev build-essential kernel-package libncurses-dev».
Бпасибо.

Как Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ само ядро описанно cp arch/x86_64/boot/bzImage /boot/vmlinuz, Π° ΠΊΠ°ΠΊ Π² Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для ядра?

Ρ…ΠΌ, Ссли это Ρ‚Π°ΠΊ просто Ρ‚ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±Ρ‹ Π½Π΅ ставят самоС послСднСС ядро?
Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Linux Mint сСйчас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ядро 4.15 Π° Π½Π° kernel.org ΡƒΠΆΠ΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ΅ 4.17

ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ мСняСтся API ядра ΠΈ Ρ€Π°Π·Ρ€Π°Π±Π°ΠΌ Π½Π°Π΄ΠΎ ΠΊΡƒΡ‡Ρƒ софта ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ± ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π½Π° Π½ΠΎΠ²ΠΎΠΌ ядрС. Π½Π΅ всё Ρ‚Π°ΠΊ быстро. Π’Ρ‹ ΠΆΠ΅ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π²Π΅Ρ‡Π½ΠΎ Π³Π»ΡŽΡ‡Π½Ρ‹ΠΉ дистрибутив?

А Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ядро ML?
По инструкции Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· статСй здСсь обновляю ядро, Π½ΠΎ Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ€ΡΠΈΡŽ ML.
Π”ΠΎ этого Π² систСмС Π±Ρ‹Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ вСрсии ядра, Π±Π΅Π· ML.

Π― Π΄Π°Π²Π½ΠΎ (ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°Π²Π½ΠΎ) Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π» ядра. Π΅Ρ‰Π΅ со Π²Ρ‚ΠΎΡ€Ρ‹Ρ… вСрсий.

Π΅ΡΡ‚ΡŒ вопорос: Π² случаС Ссли Π½ΠΎΠ²ΠΎΠ΅ ядро Π½Π΅ ΠΎΠΆΠΈΠ²Ρ‘Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ ΠΈ Π·Π°Π½ΠΎΠ²ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ сборки?

РаньшС я Ρ€ΡƒΠΊΠ°ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ» Π³Ρ€Π°Π± для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ староС ядро.

БСйчас Π² grub Π΅ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ мСню со старыми ядрами ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ.

я ΡƒΠΆΠ΅ оТидаю Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ компиляции. 5.2.8

странно ΠΊΠ°ΠΊ-Ρ‚ΠΎ. Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π° сСцчас ΠΈ Π±Π΅Π· ΠΈΡ… ΠΈΠ΄Ρ‘Ρ‚ компиляция Π˜Π›Π˜ ΠΎΠ½ΠΈ Ρƒ мСня ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ.

РаньшС, Π½Π°ΠΏΡ€ΠΌΠ΅Ρ€, для компиляции ядра 2.4.2 Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈ распак linux-headers-2.4.2. БСйчас Π½Π΅ Ρ‚Π°ΠΊ. И распоковку ΠΊΠΎΠ΄ΠΎΠ² ядра Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ строго Π² /usr/src/

Ну понятно Ρ‡Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π΅ ΠΌΠ°Π»ΠΎ ΠΏΡ€ΠΎΡˆΠ»ΠΎ со Π²Ρ€Π΅ΠΌΠ΅Π½ ядра 2,4, сСйчас ΠΏΡ€ΠΎΡ‰Π΅.

я ΡƒΠΆΠ΅ оТидаю Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ компиляции. 5.2.8

странно ΠΊΠ°ΠΊ-Ρ‚ΠΎ. Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π° сСцчас ΠΈ Π±Π΅Π· ΠΈΡ… ΠΈΠ΄Ρ‘Ρ‚ компиляция Π˜Π›Π˜ ΠΎΠ½ΠΈ Ρƒ мСня ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ.

РаньшС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для компиляции ядра 2.4.2, Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈ распак linux-headers-2.4.2. БСйчас Π½Π΅ Ρ‚Π°ΠΊ. И распаковку ΠΊΠΎΠ΄ΠΎΠ² ядра Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ строго Π² /usr/src/.

Ну понятно Ρ‡Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π΅ ΠΌΠ°Π»ΠΎ ΠΏΡ€ΠΎΡˆΠ»ΠΎ со Π²Ρ€Π΅ΠΌΠ΅Π½ ядра 2,4, сСйчас ΠΏΡ€ΠΎΡ‰Π΅.

Π° ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ grub Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ?
update-grub

По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ядрами 2.4, ядра 4.15 ΠΈ 5.2 Π² ДВА Ρ€Π°Π·Π° большС. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго ΠΈΠ·-Π·Π° добавлСния Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΆΠ΅Π»Π΅Π·Π° ΠΈ появлСния Π½ΠΎΠ²Ρ‹Ρ… ΡˆΡ‚ΡƒΡ‡Π΅ΠΊ (Π² ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠΌ понятии этого слова).

Π£ мСня вопрос Ρƒ Π°Π²Ρ‚ΠΎΡ€Ρƒ ΠΈ ΠΊΠΎ всСм ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ. КВО-ВО Π˜Π— ВАБ ΠŸΠ ΠžΠ’ΠžΠ”Π˜Π› Π‘Π‘ΠžΠ ΠšΠ£ ЯДРА Π‘ΠžΠ“Π›ΠΠ‘ΠΠž ЭВОМУ ПОБВУ. Π—ΠΠ§Π•Πœ Π’ΠΠšΠžΠ• ПИБАВЬ? Π˜Π›Π˜ ЭВО ΠžΠŸΠ•Π§ΠΠ’ΠšΠ˜.

И ОПЫВ, БЫН ΠžΠ¨Π˜Π‘ΠžΠš.

ΠŸΠ ΠΠ’Π˜Π›Π¬ΠΠž ΠΠ£Π–ΠΠž НЕ sudo make install && sudo make modules_install, А

всё. Ρƒ мСня всё ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ!

Π­Ρ‚Π° ошибка Π²Ρ‹Π»Π°Π·ΠΈΠ΅Ρ‚,Π½Π΅ ΠΌΠΎΠ³Ρƒ Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ?

sudo make install && sudo make modules_install ВАК НЕ ΠŸΠ ΠΠ’Π˜Π›Π¬ΠΠž.

ΡΠ»ΡƒΡˆΠ°ΠΉ, Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΠΏΡƒΡ‚Π΅Ρ€Ρ‹ эти ΠΈ Π’ΠΈΠΌΠΎΡ„Π΅ΠΉ Π₯ΠΈΡ€ΡŒΡΠ½ΠΎΠ², это всС Π½Π΅ Ρ‚Π²ΠΎΠ΅?

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ установлСно Π»ΠΈ ядро ΠΈΠ»ΠΈ Π½Π΅Ρ‚ послС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ?

Вся ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ΠΏΠΎΠ»ΠΎΠΌΠ°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ (с ошибками, Π½Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Π½Ρ‹Π΅), начиная с ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΆΠ΅ строк! ADMIN это Π½ΠΈΠΊ ΠΈΠ»ΠΈ статус Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° сайта? Π’ любом случаС, Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ, Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ, ΠΏΠΎΠ·ΠΎΡ€! Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π½Π΅ Π΄ΠΎΠΏΠΈΠ»ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π΄ΠΎ ΡƒΠΌΠ° Π·Π° 5 Π»Π΅Ρ‚! Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ для Ρ‚Π°ΠΊΠΎΠ³ΠΎ популярного рСсурса ΠΈ ΡƒΠΆ Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ для ΡΡ‚ΠΎΠ»ΡŒ Π²Π°ΠΆΠ½ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹, основы основ Linux(Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ дальшС Π½ΠΈΠΊΡ‚ΠΎ ΠΈ Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ Π΄Π²ΠΈΠ½Π΅Ρ‚)! ΠŸΡ€ΠΈ ΡƒΡ‡Ρ‘Ρ‚Π΅ Π²ΠΏΠΎΠ»Π½Π΅ вмСняСмых ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², с исправлСниями ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌΠΈ!
ΠŸΠžΠ—ΠžΠ .

Π‘Π΅Ρ€Π³Π΅ΠΉ прСкрасно ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ». Π²ΠΎΡ‚ достойная ΠΏΠΎΠΌΠΎΡ‰ΡŒ. НавСрноС Π’Ρ‹ Ρ€ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ с ΠžΠ—Π£ Π½Π΅ скаТу Π³Π΄Π΅. Π§Π΅Π»ΠΎΠ²Π΅ΠΊ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ. Π•Π³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ Π΅Π³ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅ΠΌΡƒ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *