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

гради сваки поједини део језгра, чак ни најчешће Линук дистрибуције попут Убунту или Минт. То не значи да не бисте требали узимати ове поправке јер тамо АРЕ исправке за возаче вас УРАДИТЕ трцати. Узмимо за пример арм / арм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. Вратите или поправите урезивање проблема.

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

НЕ гњечите надоградње надоградње

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

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

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

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

9 минута читања