Заміна ядра в ос windows - форум системних адміністраторів

Основи ядерної інженерії

Найцікавіше, що насправді ніякого відкриття зроблено не було. Багато просунуті товариші експериментували з ядрами ще за часів Windows NT 4.0. Особисто я можу підтвердити: так, заміна ядра може дати відчутний приріст продуктивності, але тоді про ACPI і багатьох інших сучасних вкусностях доведеться забути. До речі кажучи, це документована особливість поведінки системи, і ніякого підступу тут немає. Чи не віриш мені - запитай у Microsoft.

ядерна хірургія

Існує кілька способів зміни ядра, самим відомий з яких зводиться до перевстановлення операційної системи і натискання клавіші F5 під час тестування конфігурації ( «Press F6 if you need to install a third party SCSI or RAID driver» / »Натисніть F6, якщо Вам необхідно завантажити SCSI або RAID драйвер стороннього виробника »). Ні, все вірно! Коли тебе просять натиснути F6, ти повинен натиснути F5. Ось така вона, Microsoft.

Якщо ніяких клавіш не чіпати, Windows автоматично вибирає найбільш підходяще, з її точки зору, ядро ​​(якщо, звичайно, не помилиться). F7 скасовує тестування і призначає стандартне ядро ​​за замовчуванням, а F5 форсує вибір ядра вручну. У штатний комплект поставки Windows XP входять близько десятка різних ядер, перерахованих в таблиці 1.

Тип ядра повинен відповідати типу обладнання. Так, наприклад, робота стандартного ядра на многопроцессорной материнської плати (навіть якщо на ній встановлений всього лише один процесор) не пройшло перевірку Microsoft і тому не гарантується. Проте в переважній більшості випадків це ядро ​​працювати все-таки буде.

Спадкоємні версії ядер можна перемикати і без установки системи, просто замінюючи файли бібліотеки апаратних абстракцій - Hardware Abstraction Layer або скорочено HAL (за замовчуванням hal.dll) і виконавчої системи - Executive System, також звану KERNEL'ом (за замовчуванням ntoskrnl.exe, що не плутати з kernel32.dll - цей файл зовсім з іншої опери). Разом вони і утворюють ядро ​​операційної системи, на якому тримаються всі інші компоненти.

Зайди в Панель управління -<Система -<Оборудование -<Диспетчер устройств -<Компьютер (Control Panel -

Диспетчер пристроїв запропонує тобі на вибір одне або кілька спадкоємних ядер, які стануть до ладу відразу ж після перезавантаження. Правда, якщо оновлення пройде невдало, система навідріз відмовиться завантажуватися. Зазвичай це відбувається при спробі оновлення стандартного ядра до ACPI або навпаки. Справа в тому, що ACPI і не-ACPI ядра використовують різні дерева пристроїв і по-різному розподіляють системні ресурси. Диспетчер пристроїв дозволяє перемикати тільки спадкоємні версії ядер, але іноді він помиляється, і систему доводиться лагодити. Утримуючи F8 при запуску Windows, дочекайся появи завантажувального меню. Зайди в Last Known Good Configuration і, вибравши відповідний профіль обладнання, скажи Configuration Recovery.

Для обходу обмежень, властивих диспетчеру пристроїв, передбачений чисто хакерський спосіб ручного перемикання ядер, що дозволяє вибирати непреемственние ядра (або ядра, висмикнуті з інших дистрибутивів Windows), а також організовувати многовариантную завантаження. Для цього необхідно відредагувати файл boot.ini, що знаходиться в кореневому каталозі завантажувального диска. Відкрий його в Блокноті і знайди наступний рядок:

multi (0) disk (0) rdisk (0) partition (1) WINNT = "Windows XP Professional" / fastdetect / SOS

Тепер або додай до неї два нових ключа / KERNEL = і / HAL =. вказавши імена файлів виконавчої системи ядра і рівня апаратних абстракцій, або виділи всю рядок цілком і встав її в кінець файлу boot.ini, змінивши текст "Windows XP Professional" на що-небудь у стилі "Windows XP hacked" і додавши зазначені ключі. Тоді при старті системи на екрані з'явиться меню різноманітної завантаження, що дозволяє швидко перемикатися між різними версіями ядра, не ризикуючи при цьому обрушити основну конфігурацію системи (якщо це меню не з'явиться, тисни на F8).

Якщо ти не встановлював ніяких сервіс-паків, відкрий каталог WINNTSystem32Driver Cachei386driver.cab і витягни з нього файли, назва яких починається з «HAL». Потім знайди файли, що містять «nt» і «kr». Скопіюй їх в каталог WINNTSystem32. На машинах з встановленим сервіс-паком зазначені файли шукай де-небудь в каталозі сервіс-пака. Скажімо, в WINNTServicePackFilesi386

Керуючись таблицями 2, 3 і 4, вибери ядро ​​свій мрії, вписавши відповідні HAL'и і KENREL'и в boot.ini, відредагований варіант якого може виглядати, наприклад, так:

multi (0) disk (0) rdisk (0) partition (1) WINNT = "Windows XP Professional" / fastdetect / SOS

multi (0) disk (0) rdisk (0) partition (1) WINNT = "Windows XP hacked" / fastdetect / SOS /HAL=HALMPS.DLL /KERNEL=NTKRNLMP.EXE

Зберігши зміни в boot.ini, перезавантажити. Май на увазі, що якщо ти отредактіруешь цей файл неправильно, система може вдавитися при його завантаженні, навідріз відмовляючись запускатися! І якщо ти не хочеш заново встановлювати заново систему, то не забудь перед початком експерименту скинути резервну копію оригінального boot.ini на дискету.

Так багато ядерець хороших ...

Яку версію ядра вибрати? Це залежить від архітектурних особливостей комп'ютера і твоїх потреб. Таблиця 2 описує призначення деяких найбільш популярних ядер, з яких в першу чергу хотілося б звернути увагу на зв'язку NTKRNLMP.EXE / HALMPS.DLL, орієнтовану на багатопроцесорні системи. Якщо ти поставив Windows на комп'ютер без підтримки Hyper-Threading, а потім несподівано вирішив отримати цю підтримку, купивши новісінький Pentium-4, система не захоче працювати з другим процесором до тих пір, поки ти не перевстановити її або ... не заміниш ядро. Друге, природно, простіше і швидше. До речі, про швидкість.

Ходять чутки, що ядра з підтримкою ACPI програє не-ACPI ядер по швидкості. І хоча частка правди тут є, в загальному випадку це не так. Нормально працюючий ACPI не гальмує систему, якщо, звичайно, нічого не конфліктує і не глючить. Проблема в тому, що конфлікти виникають гнітюче часто, оскільки ACPI задерикуватий, як півень, і монструозної, як мамонт. Інша проблема пов'язана з охолодженням процесора шляхом його автоматичного відключення під час простою системи. Некоректна підтримка ACPI часто призводить не тільки до 100% завантаженні ЦП, але і до характерного тріску під час програвання аудіофайлів. До того ж, багато ACPI-системи підтримують динамічне управління продуктивністю, підбираючи тактові частоти і таймінги відповідно до поточних потреб, в тому випадку якщо ACPI-контролеру вдасться їх вгадати. Ще ACPI намагається оптимізувати системні ресурси, старанно вішаючи на одне переривання відразу кілька пристроїв. Взагалі-то ця ситуація цілком нормальна (див. Технічну замітку Q252420 в «Базі знань» Microsoft), але не ідеальна з точки зору продуктивності.

Порівнюючи продуктивність ACPI і не-ACPI ядер, не варто забувати, що вони використовують різні таймери для вимірювання системного часу, які, між іншим, ніхто не калібрував, тому бенчмарки різних ядер можуть істотно відрізнятися вже за рахунок однієї лише інструментальної похибки!

Розгін і його наслідки

Зміна ядра не змусить процесор обчислювати синус кута швидше і вже точно не розширить пропускну спроможність інтерфейсних шин. Популярні тестові програми для вимірювання швидкодії ядер також не годяться, оскільки не виявляють ніякого приросту продуктивності навіть тоді, коли різниця видна неозброєним оком. Чому так відбувається? Все дуже просто. «Швидкі» ядра відрізняються від «повільних» перш за все накладними витратами на обробку переривань і перемикань між завданнями. Проміжок часу між двома перемиканнями (умовно званий квантом) - це ціла вічність для процесора, протягом якої він встигає обрахувати безліч тестових завдань, в результаті чого тривалість перемикань просто не враховується. До того ж, при малому числі потоків витрати від перемикань між ними досить невеликі, але варто запустити паралельно з тестової програмою кілька великовагових додатків, як все зміниться!

Практика показує, що на комп'ютерах, оснащених SDR-пам'яттю і процесорами з частотою менше 1 ГГц, i486 ядро ​​істотно підвищує чуйність системи, і працювати з нею стає значно приємніше. Для перевірки запусти пару десятків додатків (звичайний стан системи до кінця робочого дня, чи не так?) І завмер час виконання контрольної завдання (наприклад, накладення фільтра на гігабайтний малюнок в Photoshop, компіляцію мегабайтного файлу, контекстний пошук в тисячосторінковому pdf'e).

Природно, з ростом швидкодії комп'ютера заміна ядра дає все менший і менший виграш швидкодії, але навіть на потужних робочих станціях він залишається помітним. Попутно зникають конфлікти, властиві не цілком ACPI-сумісних пристроїв, драйверів і BIOS'ам. На зміну їм приходять конфлікти з давньої версією ядра, на сумісність з якої ні пристрої, ні драйвера, ні BIOS'и взагалі ніким не тестувалися. Тому як поведе себе 486-ядро в твоїй системі, заздалегідь не відомо.

Єдиної думки з приводу доцільності переходу на 486 ядро ​​як не було, так і немає. Повідомлення про реально проведених експериментах поодинокі, і статистики по ним не побудуєш. Проте, перепробувати різні ядра, порівнюючи їх на смак, все-таки варто. Це не тільки цікаво, але ще і пізнавально.


Я не злопам'ятний, я просто часто колупаю логи

Схожі статті