Linux-ի կորիզում հին ARM պրոցեսորների աջակցությունը դադարեցնելու ծրագիր

Արնդ Բերգմանը (Arnd Bergmann), ով պատասխանատու է SUSE-ի կոր kernel փաթեթների համար, հրապարակեց Linux kernel-ի մշակողների ցուցակում GCC հիմնադրված kernel-ի և հավաքման գործիքների ծրագիր, որը նախատեսում է հրաժարվել հին ARM CPU-ներին և այդ հետ կապված ABI-ին, հրահանգների հավաքածու և kernel-ի հնարավորություններին: Ծրագիրը դեռ գտնվում է RFC փուլում, այսինքն՝ ներկայացված է հանրային քննարկման: Եթե ծրագիրը հաստատվի, հին ARM պրոցեսորների դուրսբերումը առաջարկվում է սկսելու Linux kernel 6.12-ում, որի թողարկումն ակնկալվում է դեկտեմբերի ընթացքում: Պետք է նշել, որ առաջինը դուրսբերման թեկնածուները ARMv4-ն է (առանց ARMv4T-ի հեռացման), iWMMXt, BE32 և OABI:

Հին ARM CPU-ների աջակցության прекращение-ն համընկնում է նրանց աջակցության прекращение-ին GCC-ում՝ ներկայացված CPUs-ների մի մասը արդեն չի աջակցվում նորագույն GCC ճյուղերում, իսկ որոշ մասնիկներ նախատեսվում է հեռացնել ապագայում, ինչը կվաճառի նոր հնարավորությունների ներդրման և բարելավման գործընթացները հարթ։ Գումարել՝ այս ճյուղի անկման շրջանակում, GCC-ում միջադեպները պահանջում են նրա աջակցության հեռացում kernel-ի համար, եթե աջակցության նվազագույն տարբերակը GST (GCC 5.1) բարձրանա:

Ծրագրավորված հեռացում kernel-ից architectures, chips և expansions:

  • ARMv3 — աջակցությունը արդեն դադարեցվել է GCC 9-ում:
  • ARMv4 — օգտագործվում է դեռևս գործարկման մեջ StrongARM և FA526 պրոցեսորների համար, մինչդեռ վերջիններից ամենաին նորը արտադրվել է շուրջ 20 տարի առաջ: ARMv4-ի աջակցությունը դադարեցվել է Debian 5.0-ում։ Առաջարկվում է նախ դադարեցնել ARMv4-ի աջակցությունը GCC-ում, իսկ մի քանի տարիների ընթացքում՝ նաև kernel-ում:
  • ARMv4T — գործարկման մեջ առկա են 6 SoC ընտանիքներ ARM720T, ARM920T և ARM922T-ով, որոնք ավելի տարածված են, քան ARMv4 բազայով SoC-ները: ARMv4T-ի աջակցությունը դադարեցվել է Debian 9.0-ում: Kernel-ում ARMv4T աջակցության դադարեցումը նախատեսվում է ARMv5-ի աջակցության դադարեցումից հետո:
  • ARMv5 — օգտագործվում է շուրջ 1/3 բոլոր աջակցվող հարթակներում, բայց այդ հարթակների մեծ մասը մոտենում է իր կյանքի օրակարգին: Debian-ը շարունակում է աջակցել ARMv5-ին, բայց FPU և ատոմար գործողությունների բացակայությունից ելնելով, աջակցությունը պահպանել դժվարանում է և, հավանաբար, շուտով Debian-ի ARMv5-ի պորտը կփոխանցվի՝ որպես անպաշտպան:
  • ARMv6-ի առաջին սերունդները — օգտագործվում են նման SoC-ներում, ինչպես ARM1136r0p (NXP i.MX31) և OMAP24xx (Nokia N8xx), սակայն դրանց աջակցությունը պահանջում է հաքերներ՝ SMP kernels-ի հետ աշխատելու համար:
  • ARMv6K — օգտագործվում է ARM1176-ում (Raspberry Pi 1, AST2500) և ARM1136r1-ում: Kernel-ում աջակցության դադարեցման համար խոչընդոտներ չկան, սակայն տարաբախտություններն առաջանում են դիստրիբուտիվներում՝ չհամապատասխանելով armv7-a+vfpv3-d16-ի տիպիկ հավաքածուին:
  • ARMv7-M — օգտագործվում է Cortex-M3/M4/M7 բազայով միկրոcontrollers-ների համար, որոնք շարունակում են մնալ վերջին խցիկները առանց հիշողության կառավարման блока (MMU): MMU չունեցող համակարգերի վրա մշակումը դադարեցվել է 2017 թվականին, նման խցիկների համար RTOS-ների, ինչպիսիք են Zephyr, զարգացման անցնելուց հետո: ARMv7-M աջակցությունը առաջարկվում է հեռացնել 2027 թվականին, 10 տարի անց, ձողի մշակման դադարեցմանց հետո, չնայած GCC-ում աջակցության շարունակությանը:
  • iWMMXt — CPU ARMv7 PJ4 (MMP2, Berlin) ядրում արդեն прекращена поддержка, հետևանքով այդ Instruction set-ով աշխատող համակարգեր մնացել չեն: iWMMXt աջակցությունը արդեն դադարեցվել է Clang-ում և առաջարկվել է հեռացնել GCC-ից:
  • BE32 (big endian ARMv5) — օգտագործվում է միայն մեկ SoC Intel IXP4xx-ում: Debian-ի հին տարբերակներում աջակցվում էր միայն little-endian ռեժիմը, սակայն դենց վիճակում մնացած խնդիրներ կան драйվերներում: Հաշվի առնելով, որ մի քանի տարիների ընթացքում խնդիրների լուծման համար ոչ ոք չի փորձել, առաջարկվում է BE32 աջակցությունը հեռացնել GCC-ից և ядրից:
  • BE8 (big-endian ARMv7) — շատ драйվերներում խնդիրներ կան, աշխատանքի թեստավորումը դադարեցվել է և տեղեկություններ մնացած համակարգերի մասին չկան: BE8 ռեժիմը կարող է հետաքրքրում լինել օգտագործողի տարածքում բաղադրիչների փորձարկման համար big-endian համակարգերում, այդ պատճառով BE8 աջակցությունը նախատեսվում է պահպանել ядրում և GCC-ում առնվազն մի քանի տարի, մինչ այն սկսի առաջացնել խնդիրներ:

Linux ядրից հեռացնելու համար առաջարկվող հնարավորություններ:

  • param_struct կառուցվածքը, որը օգտագործվում է ATAGS (ARM Tag-Area) նախագծերի միջոցով — միանշանակորեն մանթրված հնացած է 2001 թվականին, բայց դեռ օգտագործվում է RiscPC և Footbridge ծրագրերի մեջ:
  • ATAGS կառուցվածք ընդունող պարամետրի ֆայլերը (օգտագործվում էին սարքի քաղաքագրություն փոխանցելուց Device Tree-ին) — ядրում մնում է 29 ֆայլ, որոնք կապված են 10 SoC ծրագրերի հետ, օգտագործում են ATAGS:
  • OABI (Old ABI, հին ABI ARM-եի համար) — այժմ գրեթե ամենուրեք օգտագործվում է EABI (Embedded ABI): OABI-ն բազմաթիվ խնդիրների պատճառ է, քանի որ драйվերների մշակողները չեն հաշվի առնում մի քանի վերաբերող առանձնահատկություններ: OABI-ի աջակցությունը օգտագործողի տարածքի բաղադրիչներ կառուցելու ժամանակ դադարեցվել է GCC 4.8-ում, սակայն ядրում մնացել է «-mabi=apcs-gnu» դրոշակը: Այժմ առաջարկվում է OABI-ը պահպանել, սակայն բարդացնել ակնհայտությունից բաց թողնելու պարագայում:
  • OABI_COMPAT ռեժիմը — թույլ է տալիս իրականացնել OABI-ի համար կառուցված գործադիր ֆայլերը EABI-ով ядուրի օգտագործման միջոցով: Դ драйվերներում առաջանում են առանձին խնդիրներ ioctl-ի հետ անհամատեղելիության պատճառով, բայց այս ռեժիմը պահելու դժվարությունը զգալիորեն փոքր է, քան OABI-ով ядրերի աջակցության դժվարությունները: StrongARM-ի աջակցությունը պահպանելու համար ռացիոնալ կլինի OABI կամ OABI_COMPAT աջակցությունը պահպանելը:
  • NWFPE (No Floating Point Emulator, շարժական կետի էմուլյատոր) —patch-ները հեռացնելու համար առաջարկվել են արդեն 11 տարի, բայց NWFPE -ն անհրաժեշտ է որոշ օգտագործողի տարածքի բաղադրիչների համար, որոնք հավաքվել են OABI-ի համար, այնպես որ NWFPE-ի աջակցությունը խորհուրդ է տրվում պահպանել այնքան ժամանակ, քանի դեռ քաշում գործում է OABI կամ OABI_COMPAT-ի աջակցությունը:
  • Highmem (օգտագործվում է հիշողության կառավարման համար 1 ԳԲ-ից հետո) — մեծամասնությունը ARM համակարգերի կարող են աշխատել առանց highmem- ի միացումից կամ կարող են օգտագործել CONFIG_VMSPLIT_2GB՝ առաջին 2ԳԲ ֆիզիկական հիշողությանը հասնելու համար: Կատարվում են աշխատանքներ 4 ԳԲ RAM-ին հասանելիություն ապահովելու համար LPAE (Cortex-A7/A15) համակարգերում, որի ավարտից հետո Highmem-ի աջակցությունը կարող է նպատակ ունենալ հանել:
  • Sparsemem — պահանջվում է համակարգերի համար, քանի որ անհրաժեշտ է highmem:

Կողմնորոշված հանելու համար առաջարկված հարթակները:

  • RiscPC — նորագույնից ամենահին աջակցվող պլատֆորմը: GCC-ում այլևս չի աջակցվում, սկսած 9.x ճյուղից` ARMv3 աջակցության հեռացվելու պատճառով: Հետանցումներից մեկը շարունակում է իրականացնել համակարգի փորձարկումները տվյալ հարթակում, բայց իրական օգտվողներ կարծես թե արդեն չկան, այնպես որ աջակցությունը կարող է կրճատվել, եթե հետանցումների հետաքրքրությունն կրճատվի:
  • SA1100, Footbridge — հնացած հարթակներ, պահվող, միայն հուշերի նկատառումներով: Nearly all platform description files for these platforms have been removed from kernel version 6.3, leaving only support for ipaq h3600, assabet, netwinder and ebsa285 devices. The issue of removal depends on the intentions of the maintainer.
  • Gemini, Moxart — օգտագործում են ARMv4 հիմնված CPU: Չիպերը թողարկվել են ավելի քան 20 տարի առաջ, բայց նրանց աջակցության համար լրացուցիչ ջանքեր պետք չեն, այդ պատճառով իմաստ չկա նրանց հեռացնելու մինչև StrongARM հարթակի հեռացումը:
  • PXA-ի աջակցության ֆայլերը — հարթակը գտնվում է լքված վիճակում և դուրս է եկել օգտագործումից, եթե նրանց հետաքրքրությունը չվերադառնա, դրանց հեռացնել կարող են 2025 թվականի սկզբին:
  • OMAP1 — մի կողմից մնում է ARMv4T/ARMv5 հիմնված միակ հարթակը առանց Device Tree աջակցման, և Device Tree տեղափոխվելու վերաբերյալ ոչ մի շարժ չկա, բայց մյուս կողմից, հարթակի օգտվողներ առկա են:
  • Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1 — օգտագործում են ARMv4T հիմնված CPU: Կատարվում է մարքեյի նկարագրությունները Device Tree-ի վրա, բայց աջակցությունը մնալու իմաստ ունի միայն այնքան հիման վրա, որքան ARMv5-ի աջակցությունն մնա:
  • OMAP24xx — ARMv6 բարձրաձև միակ հարթակը, որն ունի ակտիվ օգտվողներ: Աջակցության պահպանման կախված է arm1136r0 CPU-ի պահպանման:
  • iMX31 — գոյություն չունեն ակտիվ օգտվողների մասին ձեռնարկում, բայց իմաստ չկա հեռացնել ավելի շուտ, քան OMAP2:
  • S3C64xx (Cragganmore) — միակ հարթակը առանց Device Tree աջակցման, որը կառուցված է ARMv6K- ի հիման վրա: Հարթակը շարունակում է օգտագործվել ձայնային կոդեկների փորձարկման համար, ուստի հեռացումը հետաձգված է այնքան, մինչև փորձարկումը տեղափոխվի այլ հարթակ:
  • Orion5x, mv78xx0 — հարցը կքննարկվի հաջորդ տարվա սկզբին:
  • iMX35, WM8750, AST2500, BCM2835 — լավ աջակցություն են ստանում և ակտիվ օգտվողներ ունեն, մինչև այժմ հեռացնելու պլաններ չեն:
  • stm32f4/f7/h7 — միկրոկontrolլերներ առանց MMU-ի, ուղեկցումը միջուկում շարունակվում է և ակտիվ օգտվողներ կան: Հարցը կքննարկվի 2026 թվականին:

Ընտանիք: opennet.ru

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster