Кръпка ядрото на Линукс

Често задавани въпроси Linux ядрото мейлинг лист - това е да се прилагат кръпка на ядрото, или по-точно, как да закърпи ядро ​​подходящ. В този документ се обяснява.







В допълнение към обяснението на това как да се прилага и отменя лепенки, тук е кратко описание на структурата на различни клонове на ядрото (и примери за това как да се прилагат специфични петна).

Какво е кръпка (кръпка)?

Patch, или кръпка - малък текстов документ, който съдържа същността на промените между две различни версии на изходния код. Пластирите са създадени с помощта на "раз" програма. За правилното прилагане на пластира трябва да знаете, въз основа на която е бил създаден, и в който има нова версия на пластира ще се превърне източниците на ядрото. И двете могат да бъдат представени във файла с метаданни и лепенка може в името си.

Как се кандидатства или да отхвърлите кръпка?

Пластирът се прилага от програма "кръпка". Тази програма чете разлика файл (или кръпка) и прави промени в правилните места на изходния код.

Лепенки за Линукс ядрото се генерират в сравнение с предната директория съдържаща източниците на ядрото.

Това означава, че пътищата на файловете във файла кръпка съдържа името на източника на директория ядро ​​по отношение на което се генерира кръпка (или някои други имена на директории, като #xab; а / # Xbb; или #xab; б / # Xbb).

Тъй като е малко вероятно това име, за да съвпада с името на вашата машина директория ядрото източник код (въпреки че често това помага да се види на пластира е създаден за версия на ядрото), вие трябва да отидете в директорията, съдържаща кода на ядрото източник, а след това изхвърлете първия елемент в пътуват имена на файлове в кръпка файл преди нейното използване (за това е ключът към -p1 програма "кръпка").

За отмяна на приложената лепенка, използвайте ключ -R. Например, ако прилагате пластир, както следва:

след това да го отмени, можете да:

Как да прехвърля файлове петна / програма кръпка "кръпка"?

Това (и други Unix-подобните операционни системи) може да се направи по няколко начина. Във всички по-долу примери, давам файла (разархивирайте в) програма чрез стандартния вход, като използвате следния синтаксис:

Програма "кръпка" може да премине на името на файла с помощта на опцията -i, както в следния пример:

Ако файлът кръпка се съдържа в архива GZIP или bzip на, а вие не искате да го разопаковате предварително, можете да се обадите на "кръпка", както следва:

Ако файлът кръпка се съдържа в архива, и искате да ги извлечете ръчно преди употреба (в примерите по-долу, се приема), можете да го направите:

Това ще ви даде един обикновен текстов файл, който можете да прехвърлите програма "кръпка" на стандартния вход или опцията -i, колкото искате.

Сред програма интересни ключове "кръпка" са -s, принуждавайки програмата не показва никакви съобщения с изключение на съобщения за грешки, което им позволява по-добре да се наблюдава и ключ --dry управляван което прави програмата лесно да се даде списък на това, което ще се случи, но в действителност нищо не се е променило. И накрая, --verbose превключвател разказва програма "кръпка" на максималните нужди за изходни данни за това, което се случва.

основни грешки

Когато програмата "кръпка" се прилага пластира, тя се опитва да провери преписката по различни начини. В частност, той се проверява, че файлът е валиден за корекции и кода заобикалящата бита, които трябва да бъдат променени, съобразени с контекста на пластира.

Ако програмата "кръпка" смята, че кръпка нещо изглежда наред, тя може да избере един от вариантите на поведение - да откаже да извърши промените и да излезете или да се опита да намери начин да се прилага пластира с няколко промени.

Един пример за ситуация, #xab; че нещо не е наред # Xbb;, която програма се опитва да оправи - е, когато са налице промени в контекст, редовете са, но те имат и други помещения. Така че може да се случи например, ако програмата "кръпка" прави промени в средата на файла, но по някаква причина, няколко реда в началото на файла е добавена или премахната. Ако всичко друго е наред, програмата обикновено се настройва номерата на редовете и прилага пластира.

Всеки път, когато дадена програма "кръпка" се прилага кръпка за своята предварителна модификация, той ви казва, че се поставя пластира с "подходящи" ( "пух").

Вие трябва да бъдете внимателни с тези промени, защото дори ако всичко изглежда наред, че не винаги е така, а може да има проблем.

Когато програмата се сблъсква с промените, които тя дори не може да направи добре, тя ги отхвърля и произвежда файл с .rej разширение (отхвърляне на файла). Можете да я прочетете, за да разберете какво точно се променя, не може да се приложи, и да определи нещо, ако искаш.

Ако не се прилага за изходния код на своите ядрото неофициални кръпки и използвайте само кръпки от kernel.org ресурс, прилагането им в правилния ред, и не се правят неразрешени промени в изходния код на ядрото, вие никога няма да видите съобщението "мъх" или "отхвърли "програмата" кръпка ". Ако те са издадени, това е показателно за увреждане на вашия локален източник или изтегления пластир. Трябва да се опитате отново да качите кръпка, а ако това не разреши проблема, изтеглете пълния изходен код на ядрото от kernel.org.

Нека да разгледаме други доклади, които могат да генерират програма "кръпка".

Ако програмата спира и показва съобщението "Файл, за да кръпка", а след това тя не можа да намери кръпка файл. Това обикновено означава, че сте забравили да уточни -p1 ключ или не са в правилната директория. Но понякога това се случва, когато приложите кръпка, за който ви е необходим ключ -p0, не -p1 (изследват за корекции за него, и ако е така, това е човешка грешка, създаване на кръпка, и това е поправимо).

Ако получите съобщение "Hunk # 2 успели 1887 с мъх 2 (офсет 7 линии)." или нещо подобно, което означава, че програмата "кръпка" регламентирано прилагане на промените (в този случай, трябва да се премине към 7 линии от мястото, където те са били да се прилагат към тях е станало възможно да се прилагат). Полученият файл може да се превърне прав или не в зависимост от причините, поради които файла източник не е същото, както се очаква. Както често се случва, когато се опитвате да приложите кръпка на грешен версия на ядрото.







Ако получите съобщение "Hunk # 3 FAILED на 2387.", това означава, че програмата не е в състояние да прилага пластира дори и с годни. В този случай, на генерирания файл .rej информация за неуспешно на климата, както и файл с .orig разширение, съдържащ оригиналния текст, който не може да бъде заменен.

Съобщение "обърната (или преди прилага) пластир открити! Предположим -R? [N]" означава, че програмата установено, че вече се прилага пластира.

Ако наистина се прилага тази кръпка, а второто искане - това е грешка, натиснете [N] и завършване на програмата. Ако сте го използвали, а сега искате да се откажете, просто забравя да се уточни -R клавиш, натиснете [у]. Това се случва, когато хората създават кръпка обърната на източника и местоназначението директории, и в този случай използването на пластира и се връща.

Както бе посочено по-горе, тези грешки не се появяват, когато се прилага официалните кръпки от kernel.org ресурс в правилния ред и да не се променят ядрото източник. Така че, ако това се случи с петна от kernel.org, това представлява нарушаване кръпка сваляне или изходния код на машината ви, а вие трябва да бъде напълно ре-помпа изходния код на ядрото или пластир, който възнамерявате да се прилагат.

Има ли програма "кръпка" алтернативи?

Тя ще ви пусна, например, чрез 2.6.12.2 до 2.6.12.3 в една стъпка. Flag програма -Z interdiff ви позволява да работите с лепенки в GZIP на архиви и bzip2, без да ги предварително се сваля на ръка и без използването на zcat и bzcat.

Въпреки това, докато програмата ще ви спести една крачка или две, се препоръчва да се прилагат всички стъпки, тъй като в някои случаи може да не успее interdiff.

Други интересни инструменти са diffstat, което показва обобщена информация за промените, направени от софтуер кръпка; lsdiff, в който се показва кратък списък с файлове, които определят засегнатата кръпка файл, заедно с различни номера на реда; и grepdiff, което показва списък на файловете модифициран пластир, при който елементите на пластири съдържат определения регулярния израз.

Къде мога да намеря корекции?

Вместо това можете да използвате ftp.kernel.org ftp.cc.kernel.org. където сс - кода на държавата. С помощта на огледало, за да изтеглите най-близките до вашата страна позволява по-бързо зареждане, намаляване на глобалното движение и да се намали натоварването на kernel.org сървъра. Ето защо, ако е възможно, използвайте огледало.

ядро 2.6.x

Там са основно стабилни версии, издадени от Линус Торвалдс. По-големият брой, толкова свежа версия.

Ако открива регресия или други сериозни недостатъци коригиране пластир -STABLE (виж по-долу) се произвежда за тези базови пресата. Веднага след като има нова 2.6.x освобождаване основните линии на ядрото и пусна кръпка, която му позволява да отидете на предишната версия.

За да приложите кръпка от 2.6.11 до 2.6.12, трябва да направите следното (имайте предвид, че тези петна не се прилагат към ядрата 2.6.xy версии, те могат да се прилагат само към основната версия 2.6.x ядрото - ако искате да отидете от 2.6 до 2.6.xy .x + 1, първо трябва да се прилага на пластира, за отмяна на 2.6.xy, т.е. връщане към 2.6.x).

Ето няколко примера:

ядрото 2.6.x.y

Версия на ядрото номера с chetyrehtsifrennymi наречени -STABLE. Те съдържат минимум критични поправки, свързани с проблеми със сигурността или значителни регресии, открити в даден ядро ​​2.6.h.

Този клон, който се препоръчва за потребители, които искат да имат стабилно ядро ​​и не се интересуват от разработването и тестването на експериментални версии.

Ако няма на разположение ядро ​​2.6.x.y, текущата версия е стабилна ядро ​​с най-голям брой 2.6.x.

Забележка: -STABLE екип развитие обикновено стават достъпни не само кръпки за последната основна версия, но нарастващи петна. Въпреки това, по-долу говоря само за не постепенни корекции. Допълнителни същите петна достъпно на ftp://ftp.kernel.org/pub/linux/kernel/v2.6/incr/

Не е ли допълнителни средства за корекция, например, че кръпка за 2.6.12.3 актуализация основната версия 2.6.12, но не и междинната версия 2.6.12.2. За да приложите кръпка към съществуващата ядрото 2.6.12.3 2.6.12.2, трябва първо да отмените кръпка 2.6.12.2 (да се върнете към версия 2.6.12), и след това да приложите кръпка 2.6.12.3.

Ето един пример:

Kernel -Rc: Ядро на изданието кандидат

Те са имали ядро, произведени от Линус, когато смята, че сегашната Git дърво (източник за управление на кода на приложението ядрото) е в състояние, много подходящи за тестване.

Тези ядра не са стабилни, и можете да очаквате временни проблеми, ако ще да се изпълнява. Въпреки това, те са най-стабилни от всички опитни основните отрасли и, освен това, той в крайна сметка ще се превърне в стабилна ядро. Така, че е важно да ги тестваме за много хора.

Това е добър избор за тези, които искат да тестват новото ядро, но, всъщност, не иска да експериментира. (Тези хора трябва да прочетат следните секции и -git -ММ-долу).

Кръпки -Rc - не постепенно, те се прилагат към 2.6.x. базовата ядрото като пластири 2.6.x.y, отбелязано по-горе. Част от номера на версията на ядрото, за да -rcN наставка показва номера на версията на ядрото, което, в крайна сметка, всичко е станала.

По този начин, 2.6.13-RC5 означава, че това е петата версия 2.6.13 кандидат за ядрото и лепенка трябва да се прилага до версия 2.6.12.

Ето три примера за налагане на пластира:

Тези ежедневни снимки на Линус ядро ​​дърво (направени в хранилище стомашно-чревния тракт, така че името му).

Тези петна обикновено ежедневно и да отразяват текущото състояние на Линус версия. Те са по-експериментален от -Rc ядрото като генерира автоматично, без дори един бегъл поглед към тяхното изпълнение.

Кръпки -git - не постепенно и се прилага към база ядро ​​2.6.x ядро ​​или база 2.6.x.rc, което е видно от техните имена. Patch име 2.6.12-git1 важи и за ядрото 2.6.12 и кръпка с име 2.6.13-RC3-git2 - до 2.6.13-RC3.

Ето няколко примера за прилагане на петна:

Този експериментален ядро ​​произведено Andryu Mortonom (Андрю Мортън).

-ММ клон е някакво място за изпробване на образуването на петна с нови функции и други експериментални функции.

След известно кръпка доказва своята стойност в -ММ клон по време на някои от времето, Андрю предлага на Линус за включване в основните линии.

Въпреки, че в съответствие с установените правила, тези петна се изпращат на Линус чрез -ММ клон, тези правила не винаги се спазват. Подържат подсистеми (или фирми) понякога изпращат своите пластири директно на Линус, дори ако те се смесват и се тества в -ММ (а понякога дори и без предварително тестване в -ММ).

За да се осигури максимална тест в повечето случаи, трябва да се стремим да намеря корекции чрез -ММ.

Този клон е в непрекъснато развитие и съдържа много експериментални функции; има много отстраняване на грешки петна не са подходящи за основни клона, и т.н. Това е най-експерименталната на всички клонове, описани в този документ.

Тези ядки не са подходящи за използване в системи, които трябва да бъдат стабилни, използването им има по-голям риск, отколкото при работа с ядрата на всеки друг клон (не забравяйте за архивиране - това трябва да се направи с помощта на който и да е експериментално ядро ​​и т.н. повече, когато се работи с клонове на -ММ ядки).

За тези ядра, в допълнение към всички други експериментални кръпки, обикновено се поддържа от различни промени в основните браншови ядра -git ядра да се освободи време.

Тест ядра -ММ е много похвално и занятие е плевел регресия провали, корупция данни (или други грешки), преди да ги приложите към Линус основни клона. Но тестери -ММ клона, трябва да разберат, че в тези версии повече грешки, отколкото всеки друг.

-ММ ядки не са освободени от всеки набор план, но това е обикновено между ядрото пресата -RC няколко версии -ММ ядрото (обикновено 2:59). -ММ пластири клонове се прилагат 2.6.x базовата ядрото (за излизане -Rc версия) или на клона -Rc Лин.

Ето няколко примера за това как да ги използвате:

На този списък разяснения по различните ядрото дърветата може да бъде завършена.

Надявам се, че сега са ясно как да се прилагат различни пачове и помогнаха да се ядра.

Специални благодарности Ренди Danlep (Ранди Дънлап), Ролф Айке BERU (Rolf Айке Beer), Линус Torvalsu (Linus Torvalds), Бог Егерт (Бодо Егерт), Йоханес Stezenbahu (Йоханес Stezenbach), Грант Коди (Grant Коуди), Пол Machek (Pavel Machek) и други, които съм забравил да уточни, за тяхната помощ в създаването на този документ.