Како ажурирати Андроид Кернел на најновији Линук Стабле

Описали смо водиче за Андроид кернеле, као што су „Како да направите прилагођени кернел“ и „Бест Цустом Кернел фор Андроид“, али данас ћемо вам показати како да надоградите своје језгро на најновијем Линук стабилу.

Имајте на уму да су то напредне ствари - ако никада раније нисте компилирали кернел, слиједите горе наведени водич „Како направити прилагођену кернел“ и овај водич ће укључивати брање трешања и спајање обавеза са најновијим Линук-овима, стабилно језгро са Андроид језгром пре него што га саставите.

Ажурирање вашег Андроид кернела на најновију стабилност Линук-а има пуно позитивних предности, као што су ажурирање са најновијим безбедносним обавезама и исправкама - неке од предности и недостатака објаснићемо у овом водичу.

Шта је Линук стабилно језгро?

Линук-стабилан као што само име говори је стабилна рука Линук кернела. Друга рука је позната као "главна линија", што је главна грана . Сав развој кернела Линука одвија се у главној линији и углавном следи овај процес:

  1. Линус Торвалдс ће две недеље узети гомилу закрпа од својих одржавача.
  2. Након ове две недеље, он ослобађа рц1 (нпр. 4.14-рц1) кернел.
  3. За сваку недељу у наредних 6-8 недеља, он ће пустити још једно РЦ (нпр. 4.14-рц2, 4.14-рц3, итд) језгро, које садржи САМО исправке грешака и регресије.
  4. Једном када се оцијени стабилним, бит ће објављен као тарбалл за преузимање на орг (нпр. 4.14).

Шта су ЛТС кернери?

Сваке године Грег ће одабрати једно језгро и одржаваће га било две године (ЛТС) или шест година (продужени ЛТС). Дизајнирани су тако да имају производе којима је потребна стабилност (попут Андроид телефона или других ИОТ уређаја). Процес је потпуно исти као и горе, догађа се само дуже време. Тренутно постоји шест ЛТС језгара (које се увек могу видети на страници са издањима кернел.орг):

  • 4.14 (ЛТС), одржао Грег Кроах-Хартман
  • 4.9 (ЛТС), одржавао Грег Кроах-Хартман
  • 4.4 (еЛТС), који одржава Грег Кроах-Хартман
  • 4.1 (ЛТС), одржава Саша Левин
  • 3.16 (ЛТС), који одржава Бен Хутцхингс
  • 3.2 (ЛТС), који одржава Бен Хутцхингс

Које су предности надоградње мог Андроид језгра на Линук Стабле?

Када се открију / фиксирају важне рањивости, стабилна језгра су прва која их добијају. Тако ће ваше Андроид кернел бити много сигурнији од напада, пропуста у безбедности и грешака уопште.

Линук стабилизатор садржи исправке за пуно управљачких програма који мој Андроид уређај не користи, зар ово углавном није непотребно?

Да и не, овисно о томе како дефинирате „углавном“. Линук кернел може да садржи пуно кода који се не користи у Андроид систему, али то не гарантује да неће бити сукоба тих датотека приликом спајања нових верзија! Схватите да скоро нико не гради сваки део кернела, чак ни најобичније Линук дистрибуције попут Убунту или Минт. То не значи да не бисте требали да предузимате ове поправке, јер постоје АРЕ исправке за управљачке програме које ДОСТЕ извршавате. Узмимо за пример арм / арм64 и ект4, који су најчешћа Андроид архитектура и систем датотека. У 4.4, од 4.4.78 (верзија најновије Орео ЦАФ ознаке) до 4.4.121 (најновија узлазна ознака), то су следећи бројеви за наредбе тих система:

 ~ / кернел / линук-стабле (мастер) $ гит лог --формат =% х в4.4.78..в4.4.121 | вц -л2285 ~ / кернелс / линук-стабле (мастер) $ гит лог --формат =% х в4.4.78..в4.4.121 арцх / арм | вц -л58 ~ / кернел / линук-стабле (мастер) $ гит лог --формат =% х в4.4.78..в4.4.121 арцх / арм64 | вц -л22 ~ / кернел / линук-стабле (мастер) $ гит лог --формат =% х в4.4.78..в4.4.121 фс / ект4 | вц -л18 

Део који одузима највише времена је иницијални одгој; након што будете потпуно ажурни, не треба времена да се спајате у ново издање, које обично садржи не више од 100 обавеза. Користи које ово доноси (већа стабилност и већа сигурност за ваше кориснике) ипак би требало да захтевају овај поступак.

Како спојити стабилни кернел Линука у Андроид Кернел

Прво морате да утврдите која је верзија кернела на вашем Андроид уређају.

Колико год ово изгледало тривијално, потребно је знати одакле требате почети. Изведите следећу наредбу у вашем стаблу кернела:

 направити кернелверзију 

Вратиће вам верзију на којој сте. Прва два броја користиће се за утврђивање потребне гране (нпр. Линук-4.4.и за било који 4.4 кернел), а последњи број ће се користити за одређивање верзије која треба да започнете спајањем (нпр. Ако сте на 4.4 .21, спојите 4.4.22 следећи).

Узмите најновији извор кернела са сајта кернел.орг

кернел.орг чува најновији кернел извор у Линук-стабилном спремишту. На дну ове странице налазе се три везе за дохваћање. По мом искуству, Гоогле огледало је обично најбрже, али ваши резултати могу варирати. Покрените следеће команде:

 гит даљинско додавање стабилног Линука //кернел.гооглесоурце.цом/пуб/сцм/линук/кернел/гит/стабле/линук-стабле.гитгит дохват линук-стабле 

Одлучите да ли желите спојити целокупно језгро или трешњу-изаберите комитенте

Затим ћете морати да одаберете да ли желите објединити обавезе или одабрати трешњу. Ево предности и недостатака сваког од њих и када то желите да урадите.

НАПОМЕНА: Ако је ваш кернел извор у облику тарболе, вероватно ћете требати да одаберете цхерри-пицк, иначе ћете добити хиљаде сукоба датотека јер гит пуни историју засновану искључиво на узводном делу, а не на ономе што ОЕМ или ЦАФ имају промењено. Једноставно пређите на корак 4.

Шлаг на торти:

Прос:

  • Лакше је ријешити конфликте јер тачно знате који сукоб узрокује проблем.
  • Лакше је поново успоставити јер је свака обавеза самостална.
  • Лакше је подјелити ако наиђете на проблеме

Против:

  • Траје дуже јер се свака обавеза мора одабрати појединачно.
  • Мало је теже утврдити да ли је почињење од првог погледа узлазно

Споји се

Прос :

  • Брже је јер не морате чекати да се сви чисти закрпи споје.
  • Лакше је видјети када је почињење изводно, јер ви нећете бити починитељ, узлазни ће бити.

Против:

  • Рјешавање сукоба може бити мало теже јер ћете морати потражити која почињена изазива сукоб користећи гит лог / гит бламе, то вам неће директно рећи.
  • Поновно издавање је тешко јер спајање не можете поново поставити, оно ће понудити да одаберете све обавезе појединачно. Међутим, не бисте требали често да поново пуштате, уместо тога да користите гит реверт и гит спајање где је то могуће.

Препоручио бих да урадите бирање трешње да бисте прво открили било какве проблеме у сукобу, обавили спајање, а затим проблем поново починили након тога, тако да је ажурирање лакше (јер је спајање брже након ажурирања).

Додајте обавезе вашем извору, једну по једну верзију

Најважнији део овог процеса је појединачна верзија. МОЖЕ да постоји закрпа проблема у вашој низводној серији, што може изазвати проблем са покретањем или покварити нешто попут звука или пуњења (објашњено у одељку савета и трикова). Због тога је извршавање инкременталних промена верзија важно због тога је лакше пронаћи проблем у 50 комитета него на неким од 2000 верзија. Препоручио бих вам потпуно спајање тек када сазнате све проблеме и решења сукоба.

Шлаг на торти

Формат:

 гит цхерри пицк .. 

Пример:

гит цхерри-пицк в3.10.73..в3.10.74

Споји се

Формат:

 гит мерге 

Пример:

гит мерге в3.10.74

Препоручујем да пратите сукобе у комитентима спајања уклањањем # маркера.

Како решити конфликте

Не можемо дати корак по корак водич за решавање сваког појединачног сукоба, јер укључује добро познавање језика Ц, али ево неколико наговештаја.

Ако се спајате, схватите шта почињење изазива сукоб. То можете учинити на два начина:

  1. гит лог -пв $ (направити кернелверсион) .. да бисте изменили вашу тренутну верзију и најновију верзију изводно. Ознака -п ће вам пружити измене које сте извршили за сваку обавезу да бисте могли да видите.
  2. Покрените гит кривицу на датотеци да бисте добили хешеве сваке наредбе у том подручју. Затим можете покренути гит схов –формат = фуллер да видите да ли је налогодавац из главне линије / стабилне, Гоогле или ЦодеАурора.
  • Откријте да ли већ имате обавезу. Неки добављачи попут Гоогле-а или ЦАФ-а покушаће да потраже критичне грешке, попут поправка прљавих ЦОВ-а, и њихови бацкпортс-и могу бити у сукобу са упстреам-овима. Можете покренути гит лог –греп = ”” и видети да ли нешто враћа. Ако се то догоди, можете прескочити почињење (ако је брање трешања коришћењем ресетовања гита –хард && гит цхерри-пицк –у наставку) или игнорисати сукобе (уклоните <<<<< >>>>>).
  • Откријте да ли је постојао потпорни портфељ који је забрљао одлуку. Гоогле и ЦАФ воле да подржавају одређене закрпе које стабилна не би била. Стабилни ће често морати да прилагођавају резолуцију главних обавеза са апсцесом неких закрпа које Гоогле одлучи да подржи. На главну линију можете погледати покретањем гит схов-а (хасх за главни ред ће бити доступан у поруци завршавања стабилне обавезе). Ако је узвратно стање занемарено, измене можете или одбацити или користити главну верзију (што је обично потребно да урадите).
  • Прочитајте шта комисија покушава да уради и видећете да ли је проблем већ отклоњен. Понекад ЦАФ може исправити грешку независно од узводне верзије, што значи да можете пребрисати њихов исправку за узводну или је одбацити, као горе.

У супротном, то може бити само додатак ЦАФ / Гоогле / ОЕМ, а у том случају само морате измешати неке ствари.

Ево огледала стабилног Линука кернел.орг складишта на ГитХуб-у, што може бити лакше за тражење пописа обавеза и различито за решавање сукоба. Препоручујем да прво одете на преглед листе извршавања и пронађете проблем да бисте видели оригиналну разлику да бисте је упоредили са вашом.

Пример УРЛ-а: //гитхуб.цом/натханцханце/линук-стабле/цоммитс/линук-3.10.и/арцх/арм64/мм/мму.ц

То можете учинити и путем командне линије:

 гит лог .. гит схов 

Решавање резолуција се односи на контекст. Оно што бисте Увек требали учинити је да провјерите да ли се ваш коначни разлика подудара с узводним путем тако што ћете у сљедеће двије наредбе покренути сљедеће наредбе:

 гит дифф ХЕАД гит дифф в $ (маке кернелверсион) .. $ (гит таг --сорт = -таггердате -лв $ (маке кернелверсион | цут -д. -ф 1, 2) * | хеад -н1) 

Омогући поновно употребу

Гит има функцију која се зове ререре (означава поновну употребу снимљене резолуције), што значи да када открије сукоб, забележит ће како сте је разрешили тако да је можете поново користити поново. Ово је посебно корисно за обоје хроничне кориснике који спајају и брање трешања јер ћете једноставно требати да покренете гит адд. && гит - наставите када понављате надовезивање, јер ће сукоб бити решен како сте га претходно решили.

То се може омогућити покретањем следеће наредбе у вашем керпо репо-у:

 гит цонфиг ререре.енаблед труе 

Како гит бисецт када налетите на преводилац или грешка током извршавања

С обзиром на то да ћете додавати знатан број обавеза, врло је могуће да уведете грешку преводилаца или рунтиме-а. Уместо да одустанете, помоћу гит-овог уграђеног алата за бисектство можете открити основни узрок проблема! У идеалном случају ћете правити и бљескати сваку поједину верзију кернела док је додате, тако да ће вам обрада рачунара требати мање времена ако је потребно, али можете и без проблема раздвојити 5000 обавеза.

Оно што ће урадити гит бисецт је узети низ преузимања, одакле је проблем присутан до места где није било, а затим почните преполовити опсег обавеза, омогућавајући вам да саставите и тестирате и дајте му до знања да ли је добар или не . То ће наставити све док не избаци обавезу која узрокује ваш проблем. У том тренутку можете га поправити или вратити.

  1. Започни бисекинг: старт гит бисецт
  2. Означите тренутну ревизију као лошу: гит бисецт бад
  3. Означите ревизију као добру: гит бисецт гоод
  4. Градите новом ревизијом
  5. На основу резултата (ако је проблем присутан или не) реците гит: гит бисецт гоод ИЛИ гит бисецт бад
  6. Исперите и понављајте кораке 4-5 све док се проблем не утврди!
  7. Вратите или исправите проблем.

НАПОМЕНА: Спајања ће морати привремено покренути гит ребасе -и да примијене све закрпе на вашу подружницу ради правилног дијељења, јер ће се дијељење са спајањем на мјесту често пута наплаћивати на претпројектним обавезама, што значи да немате ниједну Андроид обавезу. Могу да се позабавим овим захтевом, али верујте ми, потребно је. Након што идентифицирате почињење проблема, можете га вратити или поново успоставити у спајању.

НЕ скидајте исправке узводно

Многи нови програмери су у искушењу да то ураде јер је „чистији“ и „лакши“ за управљање. Ово је страшно из неколико разлога:

  • Ауторство је изгубљено. Остали програмери нису фер да им је кредит за посао онемогућен.
  • Разбијање је немогуће. Ако исечете серију обавеза и нешто је проблем у тој серији, немогуће је рећи шта је почињење проузроковало проблем у скуасху.
  • Будући боркери су тежи. Ако вам је потребно да се поново саставите са сецканом серијом, тешко је / немогуће рећи одакле долази сукоб.

Претплатите се на Линук Кернел маилинг листу за благовремена ажурирања

Да бисте добили обавештења кад год постоји надоградња, претплатите се на линук-кернел-најавити листу. Ово ће вам омогућити да добијете е-пошту сваки пут када се објави ново језгро, тако да можете ажурирати и притискати што је брже могуће.

Занимљиви Чланци