Linux
?GNU/Linux є вільним клоном операційної системи Unix, що використовує утиліти GNU, написаний Лінусом Торвальдсом (Linus Torvalds) разом з незліченною кількістю хакерів у мережі Internet. Він відповідає стандартові POSIX і Єдиній Специфікації UNIX.
версія 1 (rc1)
В даній статті, максимально детально, описується вибір, компіляція та встановлення нового ядра GNU/Linux
За мотивами:
Що таке GNU/Linux?
GNU/Linux має всі можливості найсучасніших систем Unix і все, що Ви очікуєте, включаючи реальну багатозадачність, віртуальну пам'ять, спільні бібліотеки, завантаження на вимогу, чудовий менеджер пам'яті та розширенні мережеві можливості: підтримку групової адресації, ІР версій 4 і 6. Згідно оцінок незалежних експертів з допомогою сучасних дистрибутивів ?GNU/Linux розв'язується більше 95% всіх задач, що взагалі можна розв'язати з допомогою комп'ютера, а надійність та стабільність системи складає понад 99,99%.
Сьогодні Linux працює на великій кількості архітектур, серед яких: Intel x86, Compaq Alpha AXP, Sun SPARC і UltraSPARC, Motorola 68000, PowerPC, ARM, Hitachi SuperH, IBM S/390, MIPS, HP PA-RISC, Intel IA-64, DEC VAX, AMD x86-64, AXIS CRIS, Renesas M32R, Atmel AVR32 для більшості архітектур в 32 та 64 бітному варіанті, а також на багатьох інших архітектурах з деякими обмеженнями. І це тільки початок!
Ви вперше знайомитесь з Лінуксом?
Якщо Ви вперше почули про Лінукс і хочете встановити його на свій комп'ютер, вам не потрібно зтягувати з Internet та компілювати ядро, так, як це лише маленька частинка робочої Лінукс системи. В цьому випадку необхідний котрийсь з великої кількості Лінукс ?дистрибутивів, які є цілісною операційною системою. Для першого знайомства найзручнішими будуть DYSTRYK - кирилізований Лінукс розроблений спеціально для науки, освіти та бізнесу, Knoppix, Slax, науковцям краще взяти Quantian , або BCCD - це однодискові надзвичайно прості LiveCD(DVD), котрі дозволяють завантажитись прямо з компакт-диску і працювати без встановлення системи! Для професійного і постійного використання можете вибрати Debian, Gentoo, Slackware чи кирилізовану версію Slackware, LFS та українські версії LFS: http://lfs-ua.nm.ru/ http://unicyb.kiev.ua/~mkozlov/ (розташовані у порядку зростання складності; обов'язково ознайомтесь з їх філософією перед тим як зробите свій вибір!).
Замовити диски почтою по Україні можна за такими адресами:
Корисною також може бути загальна документація по встановленню Лінукса: http://mirrors.kernel.org/LDP/HOWTO/Installation-HOWTO/
Вступ
Що таке ядро
?Ядро - це програма, яка знаходиться між вашим устаткуванням та всіма іншими програмами, запущеними на вашому комп'ютері. Тобто ядро - це серце операційних систем, базованих на ядрі. Коли ви тільки но включаєте свій комп'ютер ?BIOS (базова система вводу-виводу) після тесту заліза виконує на центральному процесорі інструкції, звично, з зарезервованої області жорсткого диску - MBR (головний завантажувальний запис). Ці інструкції, переважно, є вашим завантажувальником, котрий і вантажить ядро. Після завантаження ядра, саме воно керує усіма процесами, що виконуються на комп'ютері.
Навіщо перезбирати ядро?
Однією з причин може бути необхідність оптимізувати ядро під ваше залізо, іншою може бути необхідність використання можливостей, яких в робочому ядрі немає; також компілюють ядро коли бажають обновитися до новішої версії, очікуючи від неї більше можливостей, безпеки, стабільності та швидкості роботи. Істотного збільшення швидкості роботи Лінукса, після перекомпіляції ядра, ви не помітите, тим не менш.
Вимоги
До комп'ютерного обладнання
Важко сказати мінімальну конфігурацію, абсолютним мінімумом є: 386SX/16, 1 MB RAM, 1.2 MB дисковід, плюс відео, що підтримується Лінуксом, клавіатура, монітор,... , але така система не придатна для практичної роботи. Щоб сьогодні нормально, автономно працювати на комп'ютері в сучасному графічному середовищі Лінукса потрібно: процесор 500Mhz, 64Mb RAM, 3Gb HDD, відео карта і монітор, що здатні забезпечити роздільну здатність 1024x768 при частоті 85Hz, клавіатура та мишка. Дану конфігурацію можна вважати середньо-мінімальною для робочих станцій.
Структурований перелік обладнання що підтримується ядром можна переглянути, виконавши з директорії джерельних кодів ядра команду:
$ make menuconfig
і далі вибрати пункт меню:
Device Drivers --->
Досить непогану інформативну систему пошуку обладнання, що підтримується Лінуксом можна знайти тут:
Звукові карти: http://www.alsa-project.org/alsa-doc/
Сенсори: http://lm-sensors.org/wiki/SupportedDevices http://lm-sensors.org/wiki/NewDrivers
WinModems - дешеві програмні модеми PC розетки для телефонного кабеля: http://start.at/modem
Нормальні апаратні, RS232 модеми підтримуються всі.
Підстаркувате залізо, за сьогоднішніми мірками, що підтримується Лінуксом описане в:
Linux Hardware-HOWTO http://en.tldp.org/HOWTO/Hardware-HOWTO/
Linux INFO-SHEET http://en.tldp.org/HOWTO/INFO-SHEET.html
Linux/m68k Frequently Asked Questions http://www.linux-m68k.org/faq/faq.html
Раджу всім, хто має свободу вибору апаратного забезпечення, переконатись перед його придбанням, що воно сумісне з Лінуксом і драйвери до нього є вільними. Сьогодні багато виробників апаратного забезпечення випускають драйвери для Лінукса і описують їх встановлення на своїх сайтах, дисках, котрі поставляються разом з обладнанням, тому перш за все зайдіть на сайт виробника. Беріть обладнання, виробники котрого підтримують розробку відкритих, вільних драйверів до Лінукса, або хоча б надають повні відкриті специфікації.
Список не сумісного з Лінуксом обладнання:
http://www.leenooks.com/
До програмного середовища
Сучасні дистрибутиви Лінукс мають всі необхідні програми для компіляції нового ядра. На мою думку, для системи потрібно наступний мінімум програм (може хтось поправить):
linux-headers
texinfo
gettext
patch
sed
gnuconfig
automake
diffutils
make
autoconf
gcc-config
binutils-config
binutils
coreutils
gcc
glibc
zlib
glib
tar
bzip2
unzip
bash
Щодо версій, то небажаними є як найновіші версії, так і застарілі; версії gcc і make є критичними.
Встановлення ядра Лінукс
Визначення Вашого обладнання
Перед тим, як почати перекомпіляцію ядра потрібно чітко знати, для якого саме обладнання воно збиратиметься, а також деяку іншу інформацію про майбутню систему, щоб визначити підтримку яких драйверів необхідно включити у нове ядро. Особливу увагу потрібно звернути на: процесор, модель і тип (IDE, SCSI) контроллерів дисків, мережеву карту, відео та звукову карту, порти які будуть використовуватись периферією: USB HUB, IrDA - інфрачервоні, паралельні, послідовні і ps/2 та пристрої, що будуть до них підключатись: маніпулятори, принтери, сканери, відеокамери, карти флеш-пам'яті...
Для отримання частини з цієї інформації можна скористатись командою:
$ /sbin/lspci
0000:00:00.0 Host bridge: Intel Corp. 82865G/PE/P DRAM Controller/Host-Hub Interface (rev 02)
0000:00:01.0 PCI bridge: Intel Corp. 82865G/PE/P PCI to AGP Controller (rev 02)
0000:00:1d.0 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (rev 02)
0000:00:1d.1 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (rev 02)
0000:00:1d.2 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #3 (rev 02)
0000:00:1d.3 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (rev 02)
0000:00:1d.7 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (rev 02)
0000:00:1e.0 PCI bridge: Intel Corp. 82801 PCI Bridge (rev c2)
0000:00:1f.0 ISA bridge: Intel Corp. 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge (rev 02)
0000:00:1f.1 IDE interface: Intel Corp. 82801EB/ER (ICH5/ICH5R) IDE Controller (rev 02)
0000:00:1f.2 IDE interface: Intel Corp. 82801EB (ICH5) SATA Controller (rev 02)
0000:00:1f.3 SMBus: Intel Corp. 82801EB/ER (ICH5/ICH5R) SMBus Controller (rev 02)
0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (rev 02)
0000:01:00.0 VGA compatible controller: ATI Technologies Inc RV280 [Radeon 9200] (rev 01)
0000:01:00.1 Display controller: ATI Technologies Inc RV280 [Radeon 9200] (Secondary) (rev 01)
0000:02:04.0 Multimedia controller: Philips Semiconductors SAA7146 (rev 01)
Коли є файлова система /proc то для з'ясування типу процесора можна скористатись командою:
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 2
model name : Intel(R) Celeron(R) CPU 2.40GHz
stepping : 9
cpu MHz : 2394.823
cache size : 128 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid xtpr
bogomips : 4734.97
Допоможе в цьому випадку і команда:
$ dmesg
Можливо для когось буде корисним прочитати це: http://members.tripod.com/~algolog/lnxchk.htm
Вибір ядра
Так! Це означає що навіть тут у Вас є вибір, причому досить великий. Пов'язано це з тим, що до ядра пишеться дуже багато патчів, які додають до нього специфічні додаткові можливості, кластерності, багатотермінальності, патчі для роботи в режимі реального часу, експериментальні та інші:
-ac патч випускається Аланом Коксом (Alan Cox). Експериментальне ядро.
Скачати його патч можна тут: http://kernel.org/pub/linux/kernel/people/alan/
-ck патч випускається Коном Колівасом (Con Kolivas). Цей патч розроблявся спеціально для підвищення відкликів та інтерактивності системи і може налаштовуватись як для робочих станцій так і для серверів. Патч проходить дуже сильний тюнинг розробників з великим акцентом на стабільність і безпеку.
Скачати можна звідси http://kernel.kolivas.org
Підтримка тут #ck on irc.oftc.net.
-drbd патч ядра для побудови кластера дисків на базі Лінукс. Детальний опис побудови кластера на його основі можна знайти тут: ?drbd - кластер дисків.
Детальніша інформація і патч: http://www.drbd.org
-fuse патч ядра котрий надає можливість створення повнофункціональної файлової системи на рівні програм користувача (нормально в Лінуксі файлові системи працюють на рівні ядра)
Детальніша інформація і патч: http://fuse.sourceforge.net/
-hardened патч, це серверний патч для Gentoo. Об'єднуючий патч багатьох проектів Gentoo Hardened, який включає в себе LSM/SELinux, grsecurity, rsbac плюс стабілізаційні та патчі безпеки, що включаються в класичний gentoo патч.
Детальніша інформація і патч: http://www.gentoo.org/proj/en/hardened/
-hardened-om патч який поєднює в собі в основному hardened та om патчі плюс деякі на мою думку корисні та необхідні речі.
Скачати цей патч можна тут: https://sourceforge.net/project/showfiles.php?group_id=116780&package_id=211038
-mm патч випускається Андрю Мортоном (Andrew Morton), як додаток до офіційного ядра. Додає експериментальні можливості в ядро. Більшість з цих можливостей потім включаються в ядро, а ті, що псують роботу Лінукс відкидають. Він має характер людини яка не може всидіти на одному місці і постійно рухається в перед, що і відбивається на радикальності ідей реалізованих в його патчі; хакери використовують його тестовий патч як базу для подальшого розвитку ядра.
Скачати його патч можна тут: http://kernel.org/pub/linux/kernel/people/akpm/
-om openMosix патч, який додає підтримку кластера openMosix в ядро.
Детальну інформацію про створення на його базі кластеру можна в прочитати тут ?openMosix - кластер балансування навантаження.
Скачати патч можна звідси: http://www.openmosix.org, або не офіційний: http://openmosix.snarc.org/
-ruby патч на основі Linux Console Progect який додає багатотермінальність в ядро Лінукса, для одночасної роботи багатьох користувачів за одним комп'ютером.
Детальніша інформація і патч: http://www.ltn.lv/~aivils/
-rtl патч для побудови систем реального часу. Системи реального часу гарантують реакцію операційної системи на подію в наперед визначений період часу (час реакції системи). Сучасні досягнення дають гарантію відгуку операційної системи на подію менше ніж за 5 мікросекунд.
Детальніша інформація і патч: http://www.rtlinuxfree.com
-squashfs патч котрий надає підтримку стисненої файлової системи тільки для читання в ядро Лінукса. Squashfs використовується переважно як файлова система тільки для читання, для архівації, та для спеціалізованих систем: LiveCD/DVD та подібних, що містяться на пристроях з обмеженою/спеціалізованою пам'яттю.
Детальніша інформація і патч: http://squashfs.sourceforge.net/
-usermode патч спеціально розроблений для запуску Лінукса з Лінукса з Лінукса ітд... Використовують для тестування і підтримки віртуальних серверів.
Детальніша інформація і патч: http://user-mode-linux.sourceforge.net.
-win4lin патч для підтримки win4lin утиліт, що дозволяють запускати користувачам різні оффтопікові (TM) програми, але ще швидше і надійніше ніж вони працюють в рідному, глючному середовищі.
Детальніша інформація і патч: http://www.netraverse.com/
Якщо не уподобали собі ніяких додаткових можливостей то беріть звичайне "ванільне" ядро від Лінуса Торвальдса (Linus Torvalds). Можна сказати: все що необхідно, стабільно, безпечно і без всяких збочень ;-)
Детальніша інформація і саме ядро: http://www.kernel.org/
Зтягнення сирців для Gentoo
Вибір ядра фіксується так:
$ cat /mnt/ext/etc/portage/profile/virtuals
...
virtual/linux-sources sys-kernel/vanilla-sources
...
Наступна команда сама стягне і при необхідності пропатчить вибрані сирці ядра в /usr/src/
# emerge virtual/linux-sources
Далі можете скористатись Genkernel для автоматичного визначення обладнання комп'ютера, конфігурації та компіляції ядра.
Спочатку встановимо genkernel:
emerge genkernel
Зовсім не складно, чи не так?
genkernel --help
А тепер виконуємо приблизно таку команду:
genkernel --udev all --no-clean --install --menuconfig
Можна і без ключа --menuconfig, якщо у вас є робочий .config. Його приклад для LiveCD можна знайти тут: .configLiveCD
Що потрібно зтягнути в загальному випадку?
Додайте відкритий GPG ключ, якщо у Вас ще його нема:
$ gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0E
Зтягніть з http://www.kernel.org/pub/linux/kernel/v2.6/
останню версію ядра kernel-2.6..bz2, чи патчі поновлення patch-2.6..bz2..., patch-2.6...bz2 та відповідні їм файли підписів *.sign
Наприклад, якщо у Вас вже є kernel-2.6.10.bz2, а на сайті http://www.kernel.org остання стабільна версія ядра 2.6.13.2, то Вам потрібно додатково зтягнути наступні файли:
patch-2.6.11.bz2 patch-2.6.11.sign
patch-2.6.12.bz2 patch-2.6.12.sign
patch-2.6.13.bz2 patch-2.6.13.sign
patch-2.6.13.2.bz2 patch-2.6.13.2.sign
Перевірте підписи кожного зкачаного файлу. Наприклад для перевірки файлу /usr/src/linux-2.6.10.tar.bz2 виконайте:
$ gpg --verify /usr/src/linux-2.6.10.tar.bz2.sign
gpg: Signature made Sat 25 Dec 2004 00:47:14 EET using DSA key ID 517D0F0E
gpg: Good signature from "Linux Kernel Archives Verification Key <ftpadmin@kernel.org>"
Якщо сподобали собі, якісь додаткові можливості то зтягніть і останні версії відповідних їм патчів.
Розпакування та патчення сирців ядра
Тепер коли вже уявляєте яке ядро Лінукса хочете давайте спробуємо дістати його сирці. В залежності від захцянок це може бути надзвичайно складним завданням і навіть привести до "підправлянь" самого коду ядра...
Можливо краще перечитати використання quilt: Патчення з допомогою git cogito та quilt.
Розпаковуємо ядро в /usr/src, а ще краще в свій домашній каталог ~, так зможете патчити і компілювати сирці без привілегій root.
# cd /usr/src
# bzip2 -dkc /usr/src/linux-2.6.10.tar.bz2 | tar xf -
Накладаємо патчі, їх потрібно накладати послідовно, поки ядро не стане необхідної версії.
# cd /usr/src/linux-2.6.10
# bzip2 -dkc bzip2 /usr/src/patch-2.6.11.bz2 | patch -Np1 -s
...
# bzip2 -dkc bzip2 /usr/src/patch-2.6.13.bz2 | patch -Np1 -s
Можна скористатись стандартним скриптом:
# /usr/src/linux-2.6.10/scripts/patch-kernel /usr/src/linux-2.6.10 /usr/src/ 2.6.12
Де перший параметр - директорія сирців ядра; другий - директорія де знаходяться патчі; третій (не обов'язковий) - версія ядра до якої необхідно його пропатчити (на якій спинеться скрипт).
Тепер накладається стабілізаційний припатч останньої версії для даного ядра:
# bzip2 -dkc bzip2 /usr/src/patch-2.6.13.2.bz2 | patch -Np1 -s
По аналогії, зі стабілізаційним припатчом, накладаються і додаткові патчі.
Пам'ятайте, що додаткові патчі накладаються тільки на відповідну їм версію ядра!
Можна накладати патчі вже розархівовані наприклад:
# patch -p1 < /usr/src/ruby-2.6.11-1.diff
Проблемним стає момент коли потрібно накласти декілька додаткових патчів і після накладання першого ядро змінюється і наступний чисто вже не лягає. Ну тоді потрібно ретельно переглянути всі .rej файли і поправити необхідні речі руками...
Деколи потрібно відкатати патч назад, допустимо маємо джерела кодів 2.6.12.5 і патч 2.6.12.5 потрібно отримати джерела ядра версії 2.6.12, тоді з директорії сирців виконуємо:
# bzip2 -dc ../patch-2.6.12.5.bz2 | patch -R -p1
Перейменовуємо директорію сирців відповідно до їх версії:
# cd ..
# mv /usr/src/linux-2.6.10 /usr/src/linux-2.6.13.2
Конфігурація ядра
Спочатку провсяк випадок підчистимо сирці:
# cd /usr/src/linux-2.6.13.2
# make mrproper
Якщо Ви вже перезбирали ядро і маєте файл конфігурації .config то можете скористатись ним. Скопіюйте його в директорію сирців
# cp /шлях/до/файлу/.config ./
і виконайте:
# make oldconfig
дайте відповідь на нові опції ядра, якщо такі появились і можете перейти до пункту "Компіляція ядра".
Також є спроба написати універсальний файл налаштування ядра .configLiveCD котрий має підтримку всього найпоширенішого обладнання і буде корисний для розробників дистрибутивів.
Ще один приклад файла налаштувань .config.
Нижче детально описано основні опції для linux-2.6.13.* ДЛЯ МОГО ОБЛАДНАННЯ наведеного в пункті "Визначення Вашого обладнання". Ви напевно захочете вибрати інші драйвери під своє обладнання, а також змінити багато опцій для своїх потреб.
Запускаємо програму конфігурації:
# make menuconfig (або xconfig)
Отримуємо меню:
Code maturity level options ---> чи потрібно запитувати про тестові драйвери
General setup ---> загальні питання, типи системних викликів
Loadable module support ---> компілити частини коду модулями чи монолітним ядром
Processor type and features ---> тип процесору і все що з ним пов'язано
Power management options (ACPI, APM) ---> керування енергоживленням (енергозбереження)
Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> драйвери до системних шин комп'ютера
Executable file formats ---> підтримка двійкових виконавчих файлів ядром
Networking ---> всі опції що стосуються підтримки мереж
Device Drivers ---> всі драйвери залізяк встановлених на машині
File systems ---> драйвери файлових систем
Profiling support ---> підтримка профілів
Kernel hacking ---> хакінг ядра
Security options ---> опції що стосуються політик безпеки
Cryptographic options ---> криптографія
HPC options ---> кластерні опції openMosix (потребують додаткового патчу)
Library routines ---> деякі бібліотеки
---
Load an Alternate Configuration File завантаження конфігураційного файлу ядра, потрібно вказати шлях.
Save Configuration to an Alternate File записати конфігурацію в файл.
Code maturity level options
В даному розділі включається підтримка експериментальних чи неповних драйверів, коду в ядро, тобто бета версій, а також залишки коду який вже не підтримується і скоро буде викинутий з ядра.
[*] Prompt for development and/or incomplete code/drivers
дозволяє використання експериментального коду. Для стабільних систем краще її виключити, але якщо Ви бажаєте користуватись драйверами до самого нового заліза її потрібно включити.
[*] Select only drivers expected to compile cleanly
включає підтримку тільки тих драйверів які компіляться без помилок. Якщо у вас при компіляції ядра видає помилку обов'язково включіть цю опцію, а якщо це не допомагає виключте попередню!
General setup
Цей важливий розділ містить загальні опції системи.
(+OpenMosix+ruby) Local version - append to kernel release
локальна версія що додасться до версії ядра. Корисно, наприклад, для розрізняння модулів ядра однієї версії.
[ *] Support for paging of anonymous memory (swap)
включає підтримку свопу як файлу чи диску.
[ *] System V IPC
включає внутрішню взаємодію процесів у ядро, що дозволяє процесам (працюючим програмам) синхронізувати та обмінюватись інформацією. Без неї багато програм не працюватиме.
[ *] POSIX Message Queues
включає стандарт черг повідомлень POSIX - частина ІРС. Черга повідомлень стандарту POSIX має систему пріоритетів яка вирішує черговість передачі повідомлення процесу. Включіть її якщо збираєте програми з NTPL (підтримкою стандартних POSIX бібліотек)
[ *] BSD Process Accounting
[ *] BSD Process Accounting version 3 file format
включають підтримку ядром спеціального системного виклику через який користувацькі програми можуть інформувати ядро записувати інформацію про процес у файл.
[ *] Sysctl support
дозволяє динамічну конфігурацію працюючого ядра Лінукс без перекомпіляції чи перезавантаження. Також включіть "/proc file system support" і дерево з системними опціями, що модифікуються, буде доступне в /proc/sys. Документація <file:Documentation/sysctl/>
[ *] Auditing support
[ *] Enable system-call auditing support
включають підтримку аудиту (навіть системних викликів). Дуже корисна разом з SELinux.
[ *] Support for hot-pluggable devices
включають тоді коли модуль скомпілений поза ядром вимагає "гарячу заміну".
[ *] Kernel Userspace Events
включає простий зв'язок ядро -> користувач через netlink socket.
[ *] Kernel .config support
[ *] Enable access to .config through /proc/config.gz
включають збереження файлу конфігурації ядра, що Ви зараз створюєте в саме ядро і експорт цього файлу через /proc/config.gz
[ *] Cpuset support
включає можливість динамічного розподілу системи по вказаних вузлах процесорів і пам'яті для багатопроцесорних систем.
[ ] Configure standard kernel features (for small systems) ---
дозволяє підтримку специфічних систем, конфіґуратор ядра сам включить необхідні опції з цього розділу.
Loadable module support
Модуль - маленький кусок зкомпільованого коду, котрий можна при необхідності вставити/забрати з працюючого ядра, замість того, щоб на постійно включити його в збудоване монолітне ядро. Утиліта /sbin/modprobe вставляє/вилучає такі модулі.
[ *] Enable loadable module support
включає підтримку модулів ядром, якщо не збираєте монолітне ядро то обов'язково включіть. Багато частин ядра стають доступні як модулі і Ви зможете відповідати - включити як модуль, або <> - включити в саме ядро; замість [] - що дає змогу включати тільки в ядро.
[ *] Module unloading
[ ] Forced module unloading
включають підтримку вивантаження модулів працюючим ядром.
[ ] Module versioning support (EXPERIMENTAL)
включає підтримку модулів збудованих для інших ядер. Не кожен модуль обов'язково працюватиме з Вашим ядром, але шанс це йому дасть.
[ ] Source checksum for all modules
для хакерів ядра, щоб пересвідчитись з якої версії коду збудований модуль.
[ *] Automatic kernel module loading
включає підтримку автоматичного завантаження модулів ядром при необхідності.
Processor type and features
Опис архітектури комп'ютера, процесора та деяких його можливостей.
Subarchitecture Type (PC-compatible) --->
опис типу комп'ютера.
Processor family (Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon) --->
опис архітектури проца.
[ ] Generic x86 support
додає деяку оптимізацію і до відмінних від вибраної архітектур. Використовують коли ядро планують завантажувати і на інших процах даного типу.
[ *] HPET Timer Support
[ *] Provide RTC interrupt
якщо ваша платформа і BIOS підтримують новий внутрішній таймер ядра, то використовується новий, інакше старий 8254.
[ *] Symmetric multi-processing support
(16) Maximum number of CPUs (2-255)
включають підтримку багатопроцесорних систем, необхідні для побудови кластеру openMosix.
[ ] SMT (Hyperthreading) scheduler support
включає HyperThreading для процесора Intel Pentium 4
Preemption Model (Preemptible Kernel (Low-Latency Desktop)) --->
доступно три варіанти: No Forced Preemption (Server) для серверів, Voluntary Kernel Preemption (Desktop) для ненавантажених робочих станцій, Preemptible Kernel (Low-Latency Desktop) для робочих станцій з вимогою підвищеної реакції.
[ *] Preempt The Big Kernel Lock
включають в ядро поведінку подібну до систем реального часу. Покращується час реакції на програми реального часу при сильному навантажені системи за рахунок зменшення витрат процесорного часу на низько пріоритетні процеси і системні виклики. Корисно для систем реального часу, робочих станцій.
[ *] Machine Check Exception
< *> Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4
[ *] check for P4 thermal throttling interrupt.
дозволяє процесору P4 інформувати ядро про різні проблеми: не фатальні помилки, критичну температуру.
< > Toshiba Laptop support
< > Dell laptop support
[ ] Enable X86 board specific fixups for reboot
<*> /dev/cpu/microcode - Intel IA32 CPU microcode support
для всіх своїх процесорів починаючи з PentiumPRO Intel підтримує мікрокоди що дозволяють перешивати інструкції процесора, Celeron від цього не стає Pentium, але працюватиме краще.
<*> /dev/cpu/*/msr - Model-specific register support
<*> /dev/cpu/*/cpuid - CPU information support
інформують процеси про інструкції процесора.
Firmware Drivers --->
< *> BIOS Enhanced Disk Drive calls determine boot disk (EXPERIMENTAL)
High Memory Support (4GB) --->
пам'ять RAM 2-999 Mb; 1-4GB; 4-64GB.
Memory model (Flat Memory) --->
[ *] Allocate 3rd-level pagetables from highmem
для ощадного використання пам'яті віртуальними машинами.
[ ] Math emulation
емулює математичний сопроцесор сучасні проци включають математичні модулі в кристал. Так що ця опція стане потрібна коли такий модуль буде з помилкою.
[ *] MTRR (Memory Type Range Register) support
включай контроль доступу до адресного простору пам'яті через MTRR інструкції процесора. Особливо корисна для робочих станцій з AGP відеокартами.
[ ] Boot from EFI support (EXPERIMENTAL)
[ *] Enable kernel irq balancing
включає підтримку рівномірного завантаження переривань ядром.
[ ] Use register arguments (EXPERIMENTAL)
[*] Enable seccomp to safely compute untrusted bytecode
коисна для багатьох програм, що під час своєї роботи мусять виконувати ненадійний двійковий код.
Timer frequency (100 HZ) --->
[ ] Use register arguments (EXPERIMENTAL)
Power management options (ACPI, APM)
В розділі знаходяться опції що стосуються живлення та енергозбереження: виключення комп'ютера, перевід його в енергозберігаючий чи сплячий режим. Вони допоможуть дуже сильно продовжити час роботи систем з автономним живленням, докментація: <file:Documentation/power>
[ *] Power Management support
[ ] Power Management Debug Support
[ *] Software Suspend (EXPERIMENTAL)
(/dev/sda2) Default resume partition включає підтримку сплячого режиму з записом образу пам'яті на /dev/sda2 (розділ swap).
ACPI (Advanced Configuration and Power Interface) Support --->
[ *] ACPI Support включає ACPI опції енергозбереження
[ *] Sleep States (EXPERIMENTAL) включає підтримку сплячого режиму
< > AC Adapter індикатор стану ноутбука
< *> Battery додає підтримку інформації про батареї в /proc/acpi/battery
< *> Button події пов'язані з кнопками регістуються в /proc/acpi/event
< > Video ACPI для інтегрованих відях
< *> Fan дозволяє керування охолоджувачами
< *> Processor
< *> Thermal Zone включають підтримку енергозбереження процесором обов'язкова
< > ASUS/Medion Laptop Extras
< > IBM ThinkPad Laptop Extras
< > Toshiba Laptop Extras
(1995) Disable ACPI for systems before Jan 1st this year
[ ] Debug Statements
[ *] Power Management Timer Support використовується для визначення часу подій
< > ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL)
APM (Advanced Power Management) BIOS Support --->
APM опції енергозбереження, якщо BIOS дозволяє використовуйте замість них ACPI
CPU Frequency scaling ---> дозволяє змінювати частоту працюючого проца!
Bus options (PCI, PCMCIA, EISA, MCA, ISA)
Тут описуються системні шини компа
[ *] PCI support додає підтримку PCI шини
PCI access mode (Any) ---> визначає тип доступу () BIOS, ( ) MMConfig, ( ) Direct, ( ) Any
[ ] PCI Express support додає підтримку шини PCI Express
[ ] Message Signaled Interrupts (MSI and MSI-X)
[ *] Legacy /proc/pci interface
[ *] PCI device name database додають опис PCI пристроїв у /proc/pci, /proc/ioports
[ ] ISA support додає підтримку шини ISA (антиквар)
[ ] MCA support додає підтримку шини MCA (антиквар)
< > NatSemi SCx200 support неготовий
[ ] Support for hot-pluggable CPUs (EXPERIMENTAL) круто...
PCCARD (PCMCIA/CardBus) support --->
спеціалізована шина для ноутбуків, якщо у Вас ноутбук, обов'язково увімкніть її підтримку, а також підтримку відповідних йому драйверів
PCI Hotplug Support --->
додає підтримку гарячої заміни PCI обладнання, файлова система pcihpfs мусить бути примонтована і повинен бути драйвер до Вашого обладнання.
Executable file formats
Підтримка ядром різних двійкових форматів.
[ *] Kernel support for ELF binaries рідний формат Лінукса
< > Kernel support for a.out and ECOFF binaries старий
< *> Kernel support for MISC binaries
необхідно включити для роботи: Java, Python, .NET, Emacs-Lisp, dosemu...
Networking
[*] Networking support
Networking options --->
<*> Packet socket
[*] Packet socket: mmapped IO
<*> Unix domain sockets
<*> IPsec user configuration interface
<*> PF_KEY sockets
[*] TCP/IP networking
[*] IP: multicasting
[*] IP: advanced router
Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure) (FIB_HASH) --->
[*] IP: policy routing
[*] IP: use netfilter MARK value as routing key
[*] IP: equal cost multipath
[ ] IP: equal cost multipath with caching support (EXPERIMENTAL)
[*] IP: verbose route monitoring
[ ] IP: kernel level autoconfiguration
<*> IP: tunneling
<*> IP: GRE tunnels over IP
[*] IP: broadcast GRE over IP
[*] IP: multicast routing
[*] IP: PIM-SM version 1 support
[*] IP: PIM-SM version 2 support
[*] IP: ARP daemon support (EXPERIMENTAL)
[*] IP: TCP syncookie support (disabled per default)
<*> IP: AH transformation
<*> IP: ESP transformation
<*> IP: IPComp transformation
--- IP: tunnel transformation
<*> IP: TCP socket monitoring interface
[*] TCP: advanced congestion control
TCP congestion control --->
<*> Binary Increase Congestion (BIC) control
<*> TCP Westwood+
<*> H-TCP
<*> High Speed TCP
<*> TCP-Hybla congestion control algorithm
<*> TCP Vegas
<*> Scalable TCP
IP: Virtual Server Configuration --->
< *> IP virtual server support (EXPERIMENTAL)
[ ] IP virtual server debugging
(12) IPVS connection table size (the Nth power of 2)
--- IPVS transport protocol load balancing support
[ *] TCP load balancing support
[ *] UDP load balancing support
[ *] ESP load balancing support
[ *] AH load balancing support
--- IPVS scheduler
< > round-robin scheduling
< *> weighted round-robin scheduling
< > least-connection scheduling
< *> weighted least-connection scheduling
< > locality-based least-connection scheduling
< *> locality-based least-connection with replication scheduling
< > destination hashing scheduling
< > source hashing scheduling
< > shortest expected delay scheduling
< *> never queue scheduling
--- IPVS application helper
< > FTP protocol helper
<*> The IPv6 protocol
[*] IPv6: Privacy Extensions (RFC 3041) support
<*> IPv6: AH transformation
<*> IPv6: ESP transformation
<*> IPv6: IPComp transformation
--- IPv6: tunnel transformation
<*> IPv6: IPv6-in-IPv6 tunnel
[*] Network packet filtering (replaces ipchains) --->
див: ?Iptables - мережевий екран
SCTP Configuration (EXPERIMENTAL) ---> можна і всі, якщо потрібно...
< > Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)
< > 802.1d Ethernet Bridging
<*> 802.1Q VLAN Support
< > DECnet Support
<*> ANSI/IEEE 802.2 LLC type 2 Support
< > The IPX protocol
< > Appletalk protocol support
< > CCITT X.25 Packet Layer (EXPERIMENTAL)
< > LAPB Data Link Driver (EXPERIMENTAL)
[ ] Frame Diverter (EXPERIMENTAL)
< > Acorn Econet/AUN protocols (EXPERIMENTAL)
< > WAN router
[*] QoS and/or fair queueing ---> можна і всі....
<*> Firewall based classifier
<*> U32 classifier
[*] U32 classifier performance counters
[*] classify input device (slows things u32/fw)
[*] Use nfmark as a key in U32 classifier
<*> Special RSVP classifier
<*> Special RSVP classifier for IPv6
[*] Extended Matches
(32) Stack size
<*> Simple packet data comparison
<*> Multi byte comparison
<*> U32 hashing key
<*> Metadata
<*> Textsearch
[*] Packet ACTION
<*> Policing Actions
<*> generic Actions
[*] generic Actions probability
<*> Packet In/Egress redirecton/mirror Actions
<*> iptables Actions
<*> Generic Packet Editor Actions
<*> Simple action
Network testing --->
<*> Packet Generator (USE WITH CAUTION)
[ ] Amateur Radio support --->
<M> IrDA (infrared) subsystem support --->
--- IrDA (infrared) subsystem support
--- IrDA protocols
<M> IrLAN protocol
<M> IrNET protocol
<M> IrCOMM protocol
[*] Ultra (connectionless) protocol
--- IrDA options
[*] Cache last LSAP
[*] Fast RRs (low latency)
[ ] Debug information (NEW)
Infrared-port device drivers --->
.......
<M> IrDA USB dongles
.......
< > Bluetooth subsystem support --->
Device Drivers
Цей розділ майже повністю присвячений драйверам найрізноманітніших пристроїв і є найбільшим...
Generic Driver Options --->
[ *] Select only drivers that don't need compile-time external firmware
[ *] Prevent firmware from being built
< > Hotplug firmware loading support
Memory Technology Devices (MTD) --->
Драйвери для чіпів пам'яті типу flash
< *> Memory Technology Device (MTD) support
[ ] Debugging
[ ] MTD partitioning support
< > MTD concatenating support
--- User Modules And Translation Layers
< > Direct char device access to MTD devices
< > Caching block device access to MTD devices
< > Readonly block device access to MTD devices
< > FTL (Flash Translation Layer) support
< *> NFTL (NAND Flash Translation Layer) support
[ *] Write support for NFTL
< *> INFTL (Inverse NAND Flash Translation Layer) support
RAM/ROM/Flash chip drivers --->
Mapping drivers for chip access --->
Self-contained MTD device drivers --->
NAND Flash Device Drivers --->
< *> NAND Device Support
[ ] Verify NAND page writes
< *> DiskOnChip 2000, Millennium and Millennium Plus (NAND reimplementation) (EXPERIMENTAL)
[ *] Advanced detection options for DiskOnChip
(0x0) Physical address of DiskOnChip
[ *] Probe high addresses
[ *] Allow BBT writes on DiskOnChip Millennium and 2000TSOP
Parallel port support --->
Підтримка паралельних портів
<*> Parallel port support
<*> PC-style hardware звичайний LPT порт
< > Multi-IO cards (parallel and serial)
[ ] Use FIFO/DMA if available (EXPERIMENTAL)
[ ] SuperIO chipset support (EXPERIMENTAL)
[ ] Support foreign hardware
[ ] IEEE 1284 transfer modes
Plug and Play support --->
Включення авторозпізнавання і конфігурації заліза, яке підтримує PnP
[ *] Plug and Play support
[ ] PnP Debug Messages
--- Protocols
[ *] Plug and Play ACPI support (EXPERIMENTAL)
Block devices --->
<*> Normal floppy disk support
<*> Parallel port IDE device support
--- Parallel IDE high-level drivers
<*> Parallel port IDE disks
<*> Parallel port ATAPI CD-ROMs
<*> Parallel port ATAPI disks
< > Parallel port ATAPI tapes
<*> Parallel port generic ATAPI devices
--- Parallel IDE protocol modules
< > ATEN EH-100 protocol
< > MicroSolutions backpack (Series 5) protocol
< > MicroSolutions backpack (Series 6) protocol
< > DataStor Commuter protocol
< > DataStor EP-2000 protocol
< > FIT TD-2000 protocol
< > FIT TD-3000 protocol
< > Shuttle EPAT/EPEZ protocol
< > Shuttle EPIA protocol
< > Freecom IQ ASIC-2 protocol
< > FreeCom power protocol
< > KingByte KBIC-951A/971A protocols
< > KT PHd protocol
< > OnSpec 90c20 protocol
< > OnSpec 90c26 protocol
< > Compaq SMART2 support
< > Compaq Smart Array 5xxx support
< > Mylex DAC960/DAC1100 PCI RAID Controller support
< > Micro Memory MM5415 Battery Backed RAM support (EXPERIMENTAL)
<*> Loopback device support
< > Cryptoloop Support
< > Network block device support
< > Promise SATA SX8 support
< > Low Performance USB Block driver
<*> RAM disk support
(2) Default number of RAM disks
(8192) Default RAM disk size (kbytes)
[*] Initial RAM disk (initrd) support
() Initramfs source file(s)
[*] Support for Large Block Devices
<*> Packet writing on CD/DVD media
(8) Free buffers for data gathering
[*] Enable write caching
IO Schedulers --->
<*> Anticipatory I/O scheduler
<*> Deadline I/O scheduler
<*> CFQ I/O scheduler
<*> ATA over Ethernet support
ATA/ATAPI/MFM/RLL support --->
Якщо у вас чисто SCSI система, то даний розділ можна відключити. Драйвери контролерів до яких під'єднані диски з /boot, /root розділами повинні бути компільованими в саме ядро, а не як модулі!
<*> ATA/ATAPI/MFM/RLL support
<*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
--- Please see Documentation/ide.txt for help/info on IDE drives
[ ] Support for SATA (deprecated; conflicts with libata SATA driver)
[ ] Use old disk-only driver on primary interface
<*> Include IDE/ATA-2 DISK support
[ ] Use multi-mode by default
<*> Include IDE/ATAPI CDROM support
< > Include IDE/ATAPI TAPE support (EXPERIMENTAL)
<*> Include IDE/ATAPI FLOPPY support
< > SCSI emulation support
[ ] IDE Taskfile Access
--- IDE chipset support/bugfixes
< > generic/default IDE chipset support
[ ] CMD640 chipset bugfix/support
[ ] PNP EIDE support
[ *] PCI IDE chipset support
[ *] Sharing PCI IDE interrupts support
[ ] Boot off-board chipsets first support
< > Generic PCI IDE Chipset Support
< > OPTi 82C621 chipset enhanced support (EXPERIMENTAL)
< > RZ1000 chipset bugfix/support
[ *] Generic PCI bus-master DMA support
[ ] Force enable legacy 2.0.X HOSTS to use DMA
[ *] Use PCI DMA by default when available
[ ] Enable DMA only for disks
.......
<*> Intel PIIXn chipsets support
......
SCSI device support --->
Якщо у вас чисто IDE система, то даний розділ можна відключити. Драйвери SCSI контроллерів до яких підєднанні диски з /boot, /root розділами повинні бути компільовані в саме ядро, а не як модулі!
--- SCSI device support
[*] legacy /proc/scsi/ support
--- SCSI support type (disk, tape, CD-ROM)
<*> SCSI disk support
< > SCSI tape support
< > SCSI OnStream SC-x0 tape support
< > SCSI CDROM support
< > SCSI generic support
--- Some SCSI devices (e.g. CD jukebox) support multiple LUNs
[ *] Probe all LUNs on each SCSI device
[ ] Verbose SCSI error reporting (kernel size +=12K)
[ *] SCSI logging facility
SCSI Transport Attributes --->
<*> Parallel SCSI (SPI) Transport Attributes
< > FiberChannel Transport Attributes
<*> iSCSI Transport Attributes
SCSI low-level drivers --->
............
[ *] Serial ATA (SATA) support
< > AHCI SATA support
< > ServerWorks Frodo / Apple K2 SATA support
<*> Intel PIIX/ICH SATA support
.........
Multi-device support (RAID and LVM) --->
Якщо не знаєте для чого RAID і LVM, то не включаєте.
[ *] Multiple devices driver support (RAID and LVM)
<*> RAID support
<*> Linear (append) mode
<*> RAID-0 (striping) mode
<*> RAID-1 (mirroring) mode
< > RAID-10 (mirrored striping) mode (EXPERIMENTAL)
<*> RAID-4/RAID-5 mode
<*> RAID-6 mode (EXPERIMENTAL)
<*> Multipath I/O support
< > Faulty test module for MD
<*> Device mapper support
<*> Crypt target support
< > Snapshot target (EXPERIMENTAL)
< > Mirror target (EXPERIMENTAL)
< > Zero target (EXPERIMENTAL)
Fusion MPT device support --->
< > Fusion MPT (base + ScsiHost) drivers
IEEE 1394 (FireWire) support --->
< > IEEE 1394 (FireWire) support
I2O device support --->
< > I2O support
Network device support --->
[*] Network device support
< > Dummy net driver support
< > Bonding driver support
< > EQL (serial line load balancing) support
< > Universal TUN/TAP device driver support
< > General Instruments Surfboard 1000 (NEW)
ARCnet devices --->
Ethernet (10 or 100Mbit) --->
[ *] Ethernet (10 or 100Mbit)
--- Generic Media Independent Interface device support
< > Sun Happy Meal 10/100baseT support
< > Sun GEM support
[ *] 3COM cards
<*> 3c590/3c900 series (592/595/597) "Vortex/Boomerang" support
..................
Ethernet (1000 Mbit) --->
Ethernet (10000 Mbit) --->
Token Ring devices --->
Wireless LAN (non-hamradio) --->
Wan interfaces --->
[ ] FDDI driver support
[ ] HIPPI driver support (EXPERIMENTAL)
<*> PLIP (parallel port) support
<*> PPP (point-to-point protocol) support
[ *] PPP multilink support (EXPERIMENTAL)
[ *] PPP filtering
<*> PPP support for async serial ports
<*> PPP support for sync tty ports
<*> PPP Deflate compression
<*> PPP BSD-Compress compression
< > PPP over Ethernet (EXPERIMENTAL)
<*> SLIP (serial line) support
[ *] CSLIP compressed headers
[ *] Keepalive and linefill
[ *] Six bit SLIP encapsulation
[ ] Fibre Channel driver support
<*> Traffic Shaper (EXPERIMENTAL)
< > Network console logging support (EXPERIMENTAL)
ISDN subsystem --->
< > ISDN support
Telephony Support --->
< > Linux telephony support
тест
Input device support --->
--- Userland interfaces
--- Mouse interface
[ *] Provide legacy /dev/psaux device
(1024) Horizontal screen resolution
(768) Vertical screen resolution
< > Joystick interface
< > Touchscreen interface
< *> Event interface
< > Event debugging
--- Input I/O drivers
< > Gameport support
< *> Serial port line discipline
< > ct82c710 Aux port controller
< *> Parallel port keyboard adapter
< *> PCI PS/2 keyboard and PS/2 mouse controller
< *> Raw access to serio ports
--- Input Device Drivers
--- Keyboards
< > Sun Type 4 and Type 5 keyboard support
< > DECstation/VAXstation LK201/LK401 keyboard support
< > XT Keyboard support
< > Newton keyboard
[ *] Mice
< *> PS/2 mouse
< *> Serial mouse
< > DEC VSXXX-AA/GA mouse and VSXXX-AB tablet
[ ] Joysticks
[ ] Touchscreens
[ *] Misc
< *> PC Speaker support
< *> User level driver support
Character devices --->
[ ] Non-standard serial port support
Serial drivers --->
[*] Legacy (BSD) PTY support
(256) Maximum number of legacy PTY in use
<M> Parallel printer support
[ ] Support for console on line printer
<*> Support for user-space parallel port device drivers
< > Texas Instruments parallel link cable support
IPMI ---> Для підтримки IPMI стандарту управління сенсорами.
< *> IPMI top-level message handler
[ *] Generate a panic event to all BMCs on a panic
[ *] Generate OEM events containing the panic string
< > Device interface for IPMI
< > IPMI System Interface handler
< *> IPMI Watchdog Timer
< *> IPMI Poweroff
Watchdog Cards --->
<*> Intel/AMD/VIA HW Random Number Generator support
<*> /dev/nvram support
<*> Enhanced Real Time Clock Support
< > Double Talk PC internal speech card support
< > Siemens R3964 line discipline
< > Applicom intelligent fieldbus card support
< > Sony Vaio Programmable I/O Control Device support (EXPERIMENTAL)
Ftape, the floppy tape device driver ---> для підтримки дисководу
<M> /dev/agpgart (AGP Support)
< > ALI chipset support
< > ATI chipset support
< > AMD Irongate, 761, and 762 chipset support
< > AMD Opteron/Athlon64 on-CPU GART support
<M> Intel 440LX/BX/GX, I8xx and E7x05 chipset support
< > Intel i865 chipset support
< > NVIDIA nForce/nForce2 chipset support
< > SiS chipset support
< > Serverworks LE/HE chipset support
< > VIA chipset support
< > Transmeta Efficeon support
<M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
< > 3dfx Banshee/Voodoo3+
< > ATI Rage 128
<M> ATI Radeon
..................
I2C support --->
Низькорівневий протокол послідовної шини даних. Використовують в багатьох мікроконтролерах, наприклад різноманітних датчиках.
--- I2C support
<*> I2C device interface
I2C Algorithms --->
--- I2C bit-banging interfaces
<*> I2C PCF 8584 interfaces
<*> I2C PCA 9564 interfaces
Вибираємо алгоритми що використовують Ваші чіпи
I2C Hardware Bus support --->
< > ALI 1535
< > ALI 1563
< > ALI 15x3
< > AMD 756/766/768/8111 and nVidia nForce
< > AMD 8111
<*> Intel 801 для інтеловських мамок і865
< > Intel 810/815
<*> ISA Bus support
< > Nvidia Nforce2
< > Parallel port adapter
< > Parallel port adapter (light)
< > Intel PIIX4
< > S3/VIA (Pro)Savage
< > S3 Savage 4
< > NatSemi SCx200 ACCESS.bus
< > SiS 5595
< > SiS 630/730
< > SiS 96x
< > I2C/SMBus Test Stub (NEW)
< > VIA 82C586B
< > VIA 82C596/82C686/823x
< > Voodoo 3
< > PCA9564 on an ISA bus
Вибір типу Вашої послідовної шини.
Miscellaneous I2C Chip support --->
< > Dallas Semiconductor DS1337 and DS1339 Real Time Clock
< > Maxim/Dallas Semiconductor DS1374 Real Time Clock
<*> EEPROM reader
< > Philips PCF8574 and PCF8574A
< > Philips PCA9539 16-bit I/O port
< > Philips PCF8591
< > Epson 8564 RTC chip
...................
Dallas's 1-wire bus --->
< > Dallas's 1-wire support
Hardware Monitoring support --->
<*> Hardware Monitoring support
< > Analog Devices ADM1021 and compatibles
< > Analog Devices ADM1025 and compatibles для інтеловських мамок і815 (temp, volt)
< > Analog Devices ADM1026 and compatibles
< > Analog Devices ADM1031 and compatibles
< > Asus ASB100 Bach
< > Dallas Semiconductor DS1621 and DS1625
< > FSC Hermes
< > Genesys Logic GL518SM
< > ITE IT87xx and compatibles
< > National Semiconductor LM63
< > National Semiconductor LM75 and compatibles
< > National Semiconductor LM77
< > National Semiconductor LM78 and compatibles
< > National Semiconductor LM80
< > National Semiconductor LM83
<*> National Semiconductor LM85 and compatibles для інтеловських мамок і865
< > National Semiconductor LM87
< > National Semiconductor LM90 and compatibles
< > Maxim MAX1619 sensor chip
< > National Semiconductor PC87360 family
< > SMSC LPC47B397-NC
< > SMSC LPC47M10x and compatibles для інтеловських мамок і815 (Fun)
< > VIA686A
< > Winbond W83781D, W83782D, W83783S, W83627HF, Asus AS99127F
< > Winbond W83L785TS-S
< > Winbond W83627HF, W83627THF, W83637HF, W83697HF
Вибираємо чіпсет, тут потрібно вказати чіпсет Вашої системної плати, чи відеокарти.
Misc devices --->
< > Device driver for IBM RSA service processor
Multimedia devices --->
<*> Video For Linux
Video For Linux --->
--- Video Adapters
...................
<*> Philips-Semiconductors 'dpc7146 demonstration board'
..................
Radio Adapters --->
Digital Video Broadcasting Devices --->
Graphics support --->
[*] Support for frame buffer devices
--- Enable Video Mode Handling Helpers
........................
<*> ATI Radeon display support
[*] DDC/I2C for ATI Radeon support
........................
< > Virtual Frame Buffer support (ONLY FOR TESTING!)
Console display driver support --->
--- VGA text console
[ *] Video mode selection support
< *> Framebuffer Console support
[ *] Select compiled-in fonts
[ ] VGA 8x8 font
[ *] VGA 8x16 font
[ ] Mac console 6x11 font (not supported by all drivers)
[ ] Pearl (old m68k) console 8x8 font
[ ] Acorn console 8x8 font
[ ] Mini 4x6 font
[ *] Sparc console 8x16 font
[ ] Sparc console 12x22 font (not supported by all drivers)
Logo configuration --->
[ *] Bootup logo
................
[ *] Standard 224-color Linux logo
[ ] Backlight & LCD device support --->
Sound --->
<*> Sound card support
Advanced Linux Sound Architecture --->
< *> Advanced Linux Sound Architecture
< *> Sequencer support
< > Sequencer dummy client
< *> OSS Mixer API
< *> OSS PCM (digital audio) API
[ *] OSS Sequencer API
< *> RTC Timer support
[ ] Verbose printk
[ ] Debug
Generic devices --->
PCI devices --->
...................
<*> Intel/SiS/nVidia/AMD/ALi AC97 Controller
...................
USB devices --->
Open Sound System --->
USB support --->
< *> Support for Host-side USB
[ ] USB verbose debug messages
--- Miscellaneous USB options
[ *] USB device filesystem
[ *] Enforce USB bandwidth allocation (EXPERIMENTAL)
[ *] Dynamic USB minor allocation (EXPERIMENTAL)
[ ] USB suspend/resume (EXPERIMENTAL)
--- USB Host Controller Drivers
< *> EHCI HCD (USB 2.0) support
[ *] Full speed ISO transactions (EXPERIMENTAL)
[ *] Root Hub Transaction Translators (EXPERIMENTAL)
< > OHCI HCD support
< *> UHCI HCD (most Intel and VIA) support
< > SL811HS HCD support
--- USB Device Class drivers
< > USB Audio support
< > USB Bluetooth TTY support
< > USB MIDI support
< *> USB Modem (CDC ACM) support
< M> USB Printer support
--- NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Hel
< M> USB Mass Storage support
[ ] USB Mass Storage verbose debug
[ ] USB Mass Storage Write-Protected Media Detection (EXPERIMENTAL)
[ *] Datafab Compact Flash Reader support (EXPERIMENTAL)
[ *] Freecom USB/ATAPI Bridge support
[ *] ISD-200 USB/ATA Bridge support
[ *] Microtech/ZiO! CompactFlash/SmartMedia support
[ ] HP CD-Writer 82xx support (EXPERIMENTAL)
[ ] SanDisk SDDR-09 (and other SmartMedia) support (EXPERIMENTAL)
[ ] SanDisk SDDR-55 SmartMedia support (EXPERIMENTAL)
[ ] Lexar Jumpshot Compact Flash Reader (EXPERIMENTAL)
--- USB Input Devices
< *> USB Human Interface Device (full HID) support
[ *] HID input layer support
[ ] Force feedback support (EXPERIMENTAL)
[ *] /dev/hiddev raw HID device support
< > Aiptek 6000U/8000U tablet support
< > Wacom Intuos/Graphire tablet support
< > KB Gear JamStudio tablet support
< > Griffin PowerMate and Contour Jog support
< > MicroTouch USB Touchscreen Driver
< > eGalax TouchKit USB Touchscreen Driver
< > X-Box gamepad support
< M> ATI / X10 USB RF remote control
--- USB Imaging devices
< > USB Mustek MDC800 Digital Camera support (EXPERIMENTAL)
< > Microtek X6USB scanner support
--- USB Multimedia devices
< > DABUSB driver
< > USB 3com HomeConnect (aka vicam) support (EXPERIMENTAL)
< > D-Link USB FM radio support (EXPERIMENTAL)
< > USB IBM (Xirlink) C-it Camera support
< > USB Konica Webcam support
< > USB OV511 Camera support
< > USB SE401 Camera support
< > USB SN9C10x PC Camera Controller support
< > USB STV680 (Pencam) Camera support
USB Network Adapters --->
< > USB CATC NetMate-based Ethernet device support (EXPERIMENTAL)
< > USB KLSI KL5USB101-based ethernet device support
< > USB Pegasus/Pegasus-II based ethernet device support
< > USB RTL8150 based ethernet device support (EXPERIMENTAL)
<M> Multi-purpose USB Networking Framework
--- USB Host-to-Host Cables
[ *] ALi M5632 based 'USB 2.0 Data Link' cables
[ *] AnchorChips 2720 based cables (Xircom PGUNET, ...)
[ *] eTEK based host-to-host cables (Advance, Belkin, ...)
[ *] GeneSys GL620USB-A based cables
[ *] NetChip 1080 based cables (Laplink, ...)
[ *] Prolific PL-2301/2302 based cables
[ *] KT Technology KC2190 based cables (InstaNet)
--- Intelligent USB Devices/Gadgets
[ *] Embedded ARM Linux links (iPaq, ...)
[ *] Epson 2888 based firmware (DEVELOPMENT)
[ *] Sharp Zaurus (stock ROMs)
[ *] CDC Ethernet support (smart devices such as cable modems)
--- USB Network Adapters
[ ] ASIX AX88172 Based USB 2.0 Ethernet Devices
--- USB port drivers
< > USS720 parport driver
USB Serial Converter support --->
--- USB Miscellaneous drivers
< > EMI 6|2m USB Audio interface support
< > EMI 2|6 USB Audio interface support
< > USB Auerswald ISDN support (EXPERIMENTAL)
< > USB Diamond Rio500 support (EXPERIMENTAL)
< > USB Lego Infrared Tower support (EXPERIMENTAL)
< > USB LCD driver support
< > USB LED driver support
< > Cypress USB thermometer driver support
< > USB PhidgetKit support
< > USB PhidgetServo support
< > Siemens ID USB Mouse Fingerprint sensor support
< > USB testing driver (DEVELOPMENT)
--- USB ATM/DSL drivers
USB Gadget Support --->
MMC/SD Card support --->
<*> MMC support
[ ] MMC debugging
<*> MMC block device driver
InfiniBand support --->
Підтримка високошвидкісного обладнання для з'єднання комп'ютерів у кластер (дороге)
< > InfiniBand support
SN Devices --->
File systems
Важливий пункт де потрібно вказати всі файлові системи, котрі будуть вами використовуватись, як на жорстких дисках, так і на змінних носіях. Файлові системи /boot, /root розділів повинні бути компільовані в саме ядро, а не як модулі!
[ *] Second extended fs support
[ *] Ext2 extended attributes
[ *] Ext2 POSIX Access Control Lists
[ *] Ext2 Security Labels
проста файлова система без журналізації з підтримкою квот
[ *] Ext3 journalling file system support
[ *] Ext3 extended attributes
[ *] Ext3 POSIX Access Control Lists
[ *] Ext3 Security Labels
[ ] JBD (ext3) debugging support
така ж, як Ext2, але з журналом
[ *] Reiserfs support
[ ] Enable reiserfs debug mode
[ *] Stats in /proc/fs/reiserfs
[ *] ReiserFS extended attributes
[ *] ReiserFS POSIX Access Control Lists
[ *] ReiserFS Security Labels
швидка, b-tree, з журналом, добра для гігантських директорій з сотнями тисяч маленьких файлів, але без квот
< > JFS filesystem support
[ ] JFS POSIX Access Control Lists
[ ] JFS Security Labels
[ ] JFS debugging
[ ] JFS statistics
журналізована файлова система IBM
XFS support --->
високо продуктивна b-tree файлова система SGI IRIX, з підтримкою задач реального часу. Кажуть наявність блоку безперебійного живлення при її використанні обов'язкова!
< > Minix fs support
< > ROM file system support
[ *] Quota support
< > Old quota format support
< *> Quota format v2 support
дозволяє встановити обмеження на використання дисків користувачами.
< > Kernel automounter support
< *> Kernel automounter version 4 support (also supports v3)
дозволяє монтувати мережеві файлові системи за вимогою.
CD-ROM/DVD Filesystems --->
<*> ISO 9660 CDROM file system support
[*] Microsoft Joliet CDROM extensions
[*] Transparent decompression extension
<*> UDF file system support
підтримка змінних носіїв
DOS/FAT/NT Filesystems --->
Pseudo filesystems --->
[*] /proc file system support
[*] /proc/kcore support
[ ] /dev file system support (OBSOLETE)
[ ] /dev/pts Extended Attributes
[*] Virtual memory file system support (former shm fs)
[*] tmpfs Extended Attributes
[*] tmpfs Security Labels
[*] HugeTLB file system support
підтримка псевдо файлових систем
Miscellaneous filesystems --->
Network File Systems ---> детальніше дивіться: <span class="createlink"><a href="/cgi-bin/ikiwiki.cgi?page=NFS_-_%D0%BC%D0%B5%D1%80%D0%B5%D0%B6%D0%B5%D0%B2%D0%B0_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%B0_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0&from=%D0%86%D0%BD%D1%88%D0%B5%2F%D0%9A%D0%BE%D0%BC%D0%BF%D1%96%D0%BB%D1%8F%D1%86%D1%96%D1%8F_%D1%8F%D0%B4%D1%80%D0%B0_GNU_Linux&do=create" rel="nofollow">?</a>NFS - мережева файлова система</span>
Partition Types --->
Native Language Support --->
--- Base native language support
(UTF8) Default NLS Option детальніше дивіться: <span class="createlink"><a href="/cgi-bin/ikiwiki.cgi?page=UTF-8&from=%D0%86%D0%BD%D1%88%D0%B5%2F%D0%9A%D0%BE%D0%BC%D0%BF%D1%96%D0%BB%D1%8F%D1%86%D1%96%D1%8F_%D1%8F%D0%B4%D1%80%D0%B0_GNU_Linux&do=create" rel="nofollow">?</a>UTF-8</span>
<*> Codepage 437 (United States, Canada)
< > Codepage 737 (Greek)
< > Codepage 775 (Baltic Rim)
< > Codepage 850 (Europe)
< > Codepage 852 (Central/Eastern Europe)
<*> Codepage 855 (Cyrillic)
< > Codepage 857 (Turkish)
< > Codepage 860 (Portuguese)
< > Codepage 861 (Icelandic)
< > Codepage 862 (Hebrew)
< > Codepage 863 (Canadian French)
< > Codepage 864 (Arabic)
< > Codepage 865 (Norwegian, Danish)
<*> Codepage 866 (Cyrillic/Russian)
< > Codepage 869 (Greek)
< > Simplified Chinese charset (CP936, GB2312)
< > Traditional Chinese charset (Big5)
< > Japanese charsets (Shift-JIS, EUC-JP)
< > Korean charset (CP949, EUC-KR)
< > Thai charset (CP874, TIS-620)
< > Hebrew charsets (ISO-8859-8, CP1255)
< > Windows CP1250 (Slavic/Central European Languages)
<*> Windows CP1251 (Bulgarian, Belarusian)
<*> ASCII (United States)
<*> NLS ISO 8859-1 (Latin 1; Western European Languages)
< > NLS ISO 8859-2 (Latin 2; Slavic/Central European Languages)
< > NLS ISO 8859-3 (Latin 3; Esperanto, Galician, Maltese, Turkish)
< > NLS ISO 8859-4 (Latin 4; old Baltic charset)
<*> NLS ISO 8859-5 (Cyrillic)
< > NLS ISO 8859-6 (Arabic)
< > NLS ISO 8859-7 (Modern Greek)
< > NLS ISO 8859-9 (Latin 5; Turkish)
< > NLS ISO 8859-9 (Latin 5; Turkish)
< > NLS ISO 8859-13 (Latin 7; Baltic)
< > NLS ISO 8859-14 (Latin 8; Celtic)
< > NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)
<*> NLS KOI8-R (Russian)
<*> NLS KOI8-U/RU (Ukrainian, Belarusian)
<*> NLS UTF8
можна обійтись однією UTF8 решта для історії і сумісності з старими fs.
Profiling support
Підтримка різноманітних профілів.
Kernel hacking
Опції цікаві переважно розробникам ядра, правда у версії 2.6.12.* з'явилась опція, яка додає час в kernel.log при завантажені, це дозволяє проаналізувати, що викликає затримку при завантажені ядра.
[*] Show timing information on printks
[ ] Kernel debugging
Security options
[ ] Enable access key retention support
[ *] Enable different security models
включає підтримку різноманітних мудулів безпеки
[ ] Socket and Networking Security Hooks
для забезпечення контролю доступу до сокетів і мережі
[ *] Default Linux Capabilities
звичайна поведінка Лінукса
[ *] Root Plug Support
забороняє програмам працювати з правами egid == 0 якщо специфічного USB заліза нема
[ *] BSD Secure Levels
додає рівень безпеки BSD
[ *] NSA SELinux Support
Розширення Безпеки Лінукса Національною Агенцією Безпеки (США) selinux(8)
Це надзвичайно потужний інструмент який дозволить мати контроль доступу та аудит різноманітних системних процесів. Ця опція включає підтримку ядром Розширення-Безпеки Лінукса (SELinux). Вам також необхідно налаштування політик та файлові системи з підтримкою міток безпеки. Потрібно взяти приклади політик з http://www.nsa.gov/selinux/ коригувати їх під свої потреби та зібрати з допомогою компілятора політик checkpolicy(8), завантажити ?load policy(8), і помітити файлові системи утилітою setfiles(8). Додати в /etc/fstab стрічку:
none /selinux selinuxfs defaults 0 0
[*] NSA SELinux boot parameter
(1) NSA SELinux boot parameter default value
Останні дві опції встановлюють значення за замовчуванням для пераметру завантаження ядра selinux=, котрий дозволяє відключити SELinux при завантажені. Значення (0) встановлює за замовчуванням параметр завантаження selinux=0, що відключає SELinux, тоді як (1) встановлює selinux=1, що автоматично включає SELinux при завантажені.
[ ] NSA SELinux runtime disable
Опція дозволить писати в /selinux/disable, якщо дозволяється політикою; це відключить SELinux під час роботи. SELinux буде недоступним поки не перевантажитесь. Дія даної опції еквівалентна параметру завантаження selinux=0.
[*] NSA SELinux Development Support
Ядро стартує в режимі permissive все записується і не забороняється, для зміни додаємо параметр завантаження ядра: enforcing=1, або без перевантаження міняємо через /selinux/enforce
[*] NSA SELinux AVC Statistics
Збирає статистику в /selinux/avc/cache_stats, яку можна використовувати для моніторингу через avcstat
(1) NSA SELinux checkreqprot default value
Ця опція встановлює значення по замовчуванню параметра завантаження ядра checkreqprot і може бути ним змінена. Вона визначає чи SELinux перевіряє захист, який вимагається ядром, чи захист, який вимагається програмами. Якщо ця опція (0), то по замовчуванню SELinux перевірятиме захист, що вимагається ядром. Якщо (1), то той який вимагють програми. Поведінку можна змінити параметром завантаження ядра 'checkreqprot=', або під час роботи системи через /selinux/checkreqprot, якщо існуюча політика безпеки дозволяє це.
Cryptographic options
Опції які включають криптографічні алгоритми в ядро, виберіть ті які використовуєте, а можна і всі.
Hardware crypto devices ---> тут можна встановити підтримку криптографічних чіпів.
HPC options
Ці опції появляться тільки після ?накладання патчу openMosix
[ * ] Enable OpenMosix clustering включає підтримку кластера в ядро
[ * ] Enable OpenMosix to be more verbose для тестування можна додати
[ * ] Add some message when migrating для того щоб впевнитись, що якісь процеси мігрують і наш кластер працює
[ ] Enable OpenMosix debug
Library routines
В принципі конфіґуратор ядра сам включає необхідні бібліотеки. Можете вибрати всі.
--- CRC-CCITT functions
--- CRC32 functions
--- CRC32c (Castagnoli, et al) Cyclic Redundancy-Check
Компіляція ядра
make
Встановлення нового ядра
Встановлення модулів здійснюється з допомогою команди:
make modules_install
Копіюємо ядро:
cp arch/i386/boot/bzImage /boot/kernel-2.6.13.2
cp System.map /boot/System.map-2.6.13.2
Вказуємо нову директорію з джерельними кодами:
rm /usr/src/linux
ln -s /usr/src/linux-2.6.12.5 /usr/src/linux
initrd
Якщо Ви зробили дурницю і кучу речей які потрібні при завантажені системи (IDE, SCSI,ext3,...) включили в ядро як модулі та вже не бажаєте перезібрати нормальне ядро, Вам потрібний initrd - ініціалізаційний образ файлової системи необхідний і достатній для завантаження Лінукса. Він і вирішує Вашу діалему "курки і яйця": драйвери потрібні для завантаження кореневої файлової системи, але самі драйвери не можуть завантажитись перед кореневою системою, бо знаходяться на ній.
Ініціалізаційний образ можна створити так:
$ mkinitrd /boot/initrd-2.6.0.img 2.6.0
Деякі версії mkinitrd вимагають додаткових опцій - шляху до нового ядра, наприклад, для SuSe 9.0:
$ mkinitrd -k vmlinux-VERSION -i initrd-VERSION
GRUB
Детальна документація: ?grub.conf(5), ?grub(8).
Відкоригуємо необхідне в grub.conf
$ cat /boot/grub/grub.conf
# Boot menu configuration file
#password --md5 xxxxxxxxxxxxxxxxxxxxxxx
splashimage /boot/grub/splash.xpm.gz
# Boot automatically after 10 secs.
timeout 10
# By default, boot the first entry.
default 0
# Fallback to the second entry.
fallback 1
# For booting GNU/Linux
# kernel - checkreqprot=0
# program - checkreqprot=1
# disabl SEL - disabled=1
# audited - permissive=1
# denials - enforcing=1
title SELinux-2.6.12.5
root (hd0,10)
kernel /boot/kernel-2.6.12.5 root=/dev/sda11 vga=791 checkreqprot=1 enforcing=0
title Linux-2.6.11.12 openMosix & MultiHad
root (hd0,0)
kernel /boot/kernel-2.6.11.12+openMosix+ruby root=/dev/sda3 dumbcon=4
Lilo
Детальна документація: lilo.conf(5), lilo(8).
Відкоригуємо необхідне в /etc/lilo.conf
# Unlike GrUB, any changes to lilo.conf will not be set until the lilo program is rerun.
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
default=test-2.6.12.5
keytable=/boot/us.klt
lba32
prompt
timeout=50
message=/boot/message
menu-scheme=wb:bw:wb:bw
image=/boot/vmlinuz
label=linux
root=/dev/hda3
append=" ide1=autotune ide0=autotune"
read-only
image=/boot/bzImage-2.6.12.5
label=test-2.6.12.5
root=/dev/hda2
read-only
і обов'язково виконуємо:
# /sbin/lilo
або для деяких систем:
# /sbin/lilo -R test-2.6.12.5
Приклад скрипта для патчення, компіляції та встановлення ядра Лінукс
Нижче наведено зсилку на скрипт який накладе необхідні патчі, та за наявності файлу конфіґурації скомпілить і встановить ядро.
?Скрипт для патчення, компіляції та встановлення ядра Лінукса.
Можливі помилки компіляції та шляхи їх розв'язання
Якщо компіляція закінчилась помилкою 11 то найймовірніше проблема з залізом, часто помилки пам'яті. Єдиний спосіб перевірити це - запусти ти компіляцію знову. Якщо ви отримаєте помилку в іншому місці, перед попереднім, значить однозначно погане залізо. Є декілька шляхів для коректування цієї проблеми:
Спробуйте змінити в BIOS параметри пам'яті на більш консервативні. Наприклад змінити на SLOW чи NORMAL замість FAST.
Перевірити достатність пам'яті і свопу.
Одна з хитростей полягає в тому, щоб ядру при завантажені вказати менше пам'яті ніж є насправді. Це може допомогти в діагностиці SIMMs чи SDRAM
Перевірити роботу охолоджуючих систем, температур, напруг живлення. Як включити моніторинг заліза можна прочитати тут: ?Моніторинг роботи системи.
Якщо make спиняється весь час в одному і тому ж місці - це помилка конфігурації. Найчастіше причиною є не включення опції, яка вимагається іншою включеною опцією. Наприклад, якщо IP Firewalling вимагає TCP/IP і останній не включений, то буде помилка компіляції.
Також можливі помилки при включенні "не того" процесора в "Processor type and features --->", чи використанні дуже старого, або нового ще тестового компілятора.
Пам'ятайте, що ядро надзвичайно чутливе до версій компілятора та linker.
Література
Linux Kernel Development, 2ed
By Robert Love
Pages: xxi + 401
ISBN: 0672327201
Format: Paperback
Publisher: Novell Press
Publish Date: 12 Jan 2005
Understanding the Linux Kernel, Third Edition
By Daniel P. Bovet, Marco Cesati
Third Edition November 2005
ISBN: 0-596-00565-2
http://tldp.org/HOWTO/HOWTO-INDEX/os.html#OSKERNEL
LKI-2.4
--Svyat 19:28, 19 серп 2005 (EEST)
|