2013-03-13

Хоёр сонирхогч распэри паяын үйлдлийн системийг хэрхэн хийв

Распиан (Raspbian) Пая-д илүү хурдан ажиллаж Федорагийн өмнө орсон юм

35$-ын распэри пая (Raspberry Pi) авахад үйлдлийн систем нь дагалдаж ирдэггүй билээ. Хүссэн үйлдлийн системээ эсди картад бэлтгэсний дараа паяаа асаахад нэг их хэцүү биш асчихдаг. Гэхдээ паяд зориулагдсан үйлдлийн систем хаанаас гараад ирвээ?
Хэдийгээр распэри пая дөнгөж нэг настай золгоод байгаа боловч хэрхэн албан ёсоор сайшаагдсан Распиан хэмээх үйлдлийн системтэй болоод амжсаныг сурвалжиллаа. Үүнийг гэртээ бэлдсэн АРМ компьютерүүдийн кластер (cluster of ARM) дээр 19000 линүксийн сангуудыг дахин хөрвүүлэн бүтээсэн ба долоо хоногийн 60 цагийг зарцуулжээ. Харин энэ бүхнийг сайн дурын хоёр залуу хийсэн байна.


Яг распери пая шиг гэнэтийн амжилтанд хүрсэн түүх
Хэдийгээр паяд зориулсан нилээн олон төрлийн үйлдлийн системүүд байдаг боловч Распэри пая сангаас нэгийг нь л нийтэд тохиромжтой хэмээн онцолжээ. Нэг жилийн өмнө Распэри пая анх бүтээгдэхдээ АРМ суурьтай тооцоолууруудад зориулагдсан Улаан малгайны Федора (Red Hats's Fedora) гэх үйлдлийн системийг тохиромжтой гэж зарлаж байв. Гэвч хэдхэн сарын дараа Федора Распианд байраа тавьж өгсөн юм. Энэ нь Маяк Томпсон (Mike Tomphson), Петер Грийн (Peter Green) гэсэн хоёр нөхрийн сайн дураараа Распэри паяд зориулан хийсэн Дэбианы нэгэн шинэчилж хөрвүүлсэн хувилбар байлаа.
Энэ бүхэн Томпсоны дараагийн нэг том зүйлээ хийх хүслээс эхэлжээ. Томпсон 2005 онд ВэбТалынТүүх (WebSideStory) гэдэг газрын худалдаж авсан Атомз гэдэг газар хамтран үүсгэгч, ТХД (технологийн хэлтсийн дарга) ажил хийдэг байж. Томпсон 45 сая долларын хэсгийг компаниа зарсан ашгаас хүртсэн бөгөөд хэдэн жил ажил хийлгүй гэр бүлтэйгээ жаргаж байжээ.
Жилийн өмнө тэрээр дахин арга ухааны салбарт шинэ зүйл хийхэд бэлэн болсон байж. Роботикст бол Томпсоны сонирхлуудын нэг бөгөөд Пая түүнд нь зориулагдсан гайхалтай цогц болохыг таньжээ. Энэ нь хэмжээ багатай учир юунд ч угсарч болохоор бас үнэ нь хямд байж. Гэвч роботын болон өөр олон тооцооллууд хийхэд хэрэглэгддэг хөвөх цэгтэй тооцоолол хийдэг хэсэг нь яг сайн ажилладаг Паяд зориулсан үйлдлийн систем байхгүй байжээ.
"Би анх распэри паяийг судалж үзээд, паяд суурилагдсан хөвөх цэгтэй тооны төхөөрөмжийг маш хурдтайгаар ашиглаж байгаа линүкс хувилбар олоогүй тул их л сэтгэл ханамжгүй байлаа." гэж Томпсон хэлсэн. "Робот хөгжүүлэхэд энэ хямдхан хайрцагнуудтай удаан хугацаагаар ноцолдох байсан тул Дэбианыг хөвөх цэгтэй тоог нь дэмжүүлчихээр шийдсэн, учир нь би дэбианыг удаан хэрэглэж байна."
Дэбиан АРМви7 боловсруулагчид хөвөх цэгтэй тооцооллыг оруулж өгсөн боловч, паяийг хийхэд ашигласан АРМви6 боловсруулагчид оруулаагүй байлаа. "Хэдийгээр паяд хэрэглэсэн АРМви6 нь хөвөх цэгтэй тоог хөөрхөн боловсруулчихаар байхад тэд хийгээгүй нь Дэбиан распэри пая мэтийн шинээр гэрч ирж байгаа бүтээгдэхүүнүүдэд нэг их анхаарал тавиагүй байх. " гэж Томпсон хэлсэн. Ингэснээр "мянга бүр хэдэн арван мянган програм хангамжууд распэри паяд дэмжигдэлгүй үлдэх байлаа".

Дүрс боловсруулах хэсэг нь тооцооллуудаа маш хурдан хийдгээс нь "хөвөх цэгтэй тооцооллын хэсэг нь маш хурдан" болохыг мэдэж болно гэжээ. "Энэ нь бүх тооцоолууруудад байгаад байдаггүй дагалдах төхөөрөмж боловч  суурилуулчихсан үед чи давуу талыг мэдрэх болно." пая дээр суулгасан хөвөх цэгтэй тооцооллын хэсэг нь Броадкомын БиСиЭм2835 гэх чип дэх систем юм.
Хэрвээ чи төхөөрөмжийн шатанд хөвөх цэгтэй тооцооллын давуу талыг авч ашиглахгүй юм бол зөөлөн хангамжийн хувьд хийх тооны үйлдлүүд чинь паяын бодох хугацааг ихэсгэх болно. "Энэ нь роботод моторын хурд, даралт хэмжигч, мэдрүүлүүд, камер зэрэг олон янзын мэдрүүлүүдээс орж ирж байгаа тоон өгөгдлийг хурдтай боловсруулахад чухал үүрэгтэй" гэж Томпсон хэлсэн. Мөн энэ нь дүрс дууны боловсруулалт, физикийн туршилт зэрэг нарийн тооцоолол шаардсан ажлуудад ихээхэн чухал болохыг онцолжээ.

Ашигтай хамтрал

Дэбианыг дахин хөрвүүлж распэри паяд ажилуулах арга зам нь Томпсонд ойлгожтой байлаа. Энэ нь 19000 багцуудыг дэбианаас распианд өөрчлөн хөрвүүлэх гэсэн аварга том ажил байв.
Томпсон гэхдээ ганцаараа бүгдийг хийсэнгүй ээ. Тэрээр распэри паяын хэлэлцүүлэгт дэбианыг распэри паяд оруулж ирэх тухай сэдэв нээж бусад хүмүүстэй харилцжээ. Энэ нь Дэбианы хөгжүүлэгч, Англид докторын зэрэг горилогч Пэтэр Грийний анхаарлыг татжээ. 
Грийн үнэхээр ховор хамтрагч юм. Хэдийгээр тэр Томпсонтой хамтран ажиллаж чадах цор ганц хүн биш ч гэсэн тэр үүнийг хийж чадах галзуу нэгэн байлаа.
"Распианы эхлэл болсон тэр хэлэлцүүлэгт би өөрийгөө тэнд бичиж байсан хүмүүсээс дэбианыг шинээр амжилттай хөрвүүлэх цорын ганц хүн шиг л бодож байлаа" гэж Грийн яриад цааш нь үргэлжлүүлж "Энэ төслийг жоохон л сонирхоод, галзууран дайрахад л хийж чадах өөр олон хүмүүс дэбиан төсөлд байгаа гэдэгт би эргэлзэхгүй байна. Бас өчнөөн олон хүн бидэнд дэбиан төслөөс тусалж байлаа".
Томпсон болон Грийн нар ажлаа эхэлэхэд пая арай бэлэн болоогүй байсан юм. Бэлэн болчихсон байсан дэбианыг дахиж хөрвүүлэх боломжгүй байлаа. Тиймээс Томпсон тус бүр нь 1ГБ санах ойтой, 1ГГц-ийн АРМви7 боловсруулагчтай, 8 боловсруулагчийн систем (Freescale iMX53 Quick Start Boards ) босгожээ. Мэдээж САТА хатуу диск мөн ашигласан. Энэ ажилд паяийн тохироогүй гол шалтгаан бол ЮүЭсБи хадгалууртай ажилладагт байсан гэж Томпсон хэлжээ. Энэ угсармал хавтан нь распианыг хаанаас нь ч хөрвүүлсэн распэри паяийн хурдаас 4-өөс 12 дахин хурдан хийх боломжтой байв. 
Томпсон бараг 3000$-ыг угсармал тооцоолууртаа зарцуулсан бөгөөд энэ нь төсөлд оруулсан хандив нь болсон юм. Үүний дээрээс нэг хавтантай АРМ системд зориулсан линукс тооцоолуурыг распианы хөрвүүлэх ажилд зориулсан агуулах (repository) болгожээ. Энэ агуулах нь дэбианы эх кодуудыг агуулах тус бүрээс нь авч, хөрвүүлэх ажлыг хуваарилан, хөрвүүлж дууссан үр дүнгүүдийг хадгалдаг байна. "Хөрвүүлэгдсэн багцууд нь бүгд бидний нээсэн www.raspbian.org хуудасны агуулахад хуулагддаг ба хэрэглэгчид шинэ багцуудыг шууд татаж авах боломжтой байдаг" гэж Томпсон тайлбарлажээ.


Эхэндээ АРМ суурьтай 8 угсармал хавтанг ашиглаж байлаа
Courtesy of Mike Thompson
Маяк Томпсоны өмч
Таван угсармал хавтангийн систем болон АРМ суурьтай ЭчПи сервер (HP server)
Courtesy of Mike Thompson
Маяк Томпсоны өмч
Анхандаа Томпсон АРМ суурьтай ЭчПи-гийн Мэдэ ваулт ЭмВи5150-ыг агуулахдаа ашиглаж байсан ч сүүлд нь илүү их чадал шаардагдахын хирээр интэл суурьтай системд шилжсэн байна. Хэдийгээр угсармал тооцоолуур маань багцуудыг хөрвүүлэхэд зориулсан хадгалууртай боловч, ерөнхий хадгалуур нь агуулахын 500 ГБ санайх ойд байлаа. Одоо бараг үүний гуравны хоёр нь дүүрчээ.
Томпсон болон Грийн нар хов хоосноос эхлээгүй. Дэбиан нь аль хэдийн олонд түгсэн линүкс суурьтай үйлдлийн систем юм. Мөн АРМви7-д зорлиулсан хувилбар нь маш сайн суурь болж өгсөн.
"Бид дэбиан төслийн АРМви7 төхөөрөмжүүдэд зориулж хийсэн байсан зүйлийг нь авч ашигласан" гэж Томпсон хэлээд "19000 програм хангамжийн кодыг дахин хөрвүүлэхээс бусад ажлуудын 95 хувь нь аль хэдийн распэри паяд дэбианаас зориулан хийгдсэн байлаа."
That's not to say the Thompson/Green work in bringing Debian to ARMv6 and its floating point unit was trivial, however. Green explained:
Энэ нь Томпсон, Грийн нар дэбианыг АРМви6-д зориулан өөрчилсөн гэсэн үг биш юм, зөвхөн хөвөх цэгтэй тооны хэсгийг өөрчилсөн. Грийн тайлбарлахдаа:
Дэбианд хөрвүүлэгчид нь өгөгдмөл тохиргоотой байдаг. Энэ өгөгдмөл тохиргоо нь хэрэглэгдэж байгаа боловсруулагчын бүл (CPU family), боловсруулагчийн доод үзүүлэлт болон ABI [application binary interface] зэргийг зааж өгсөн байдаг. Хөрвүүлэгдсэн багцуудын ихэнх нь энэ тохируулгыг шууд хэрэглэсэн байдаг. Хөрвүүлэгчийг тохиргоог бид АРМви6-д зориулсан болгож өөрчилсөн.
Эх кодуудыг дахин хөрвүүлэхэд хэрэглэсэн хөрвүүлэгчийн шинэ тохиргоо АРМви6-д зориулсан машин код гаргаж авахад хангалттай байсан.

Нилээн их ажлууд гар аргаар хийгдсэн бөгөөд Грийн сүүлд нь тэр ажлуудаа автоматаар хийдэг програм зохиожээ. Эдгээр авт-хөрвүүлэгчид (auto-builders) нь дэбианы chroot орчинд ажилладаг бас одоо ч ажилласаар л байна. Дэбианы агуулахуудаас багцуудыг авч автоматаар шинэчлэн распианд зориулан хөрвүүлэх ажил автоматаар үргэлжилж байна.
Those auto-builders also detect when there's a problem that prevents the package from being automatically rebuilt. Green explained in an e-mail:
Бас энэ авт-хөрвүүлэгчид нь автоматаар хөрвүүлэх үед гарах алдаануудыг илрүүлдэг хэмээжээ. Грийн цахим шуудангаар тайлбарлахдаа:.
Багц хөрвүүлэгдэх үед АРМви7-д зориулсан кодтой багц гарч ирэх хэд хэдэн шалтгаан бий.
Багцад байгаа АРМви7 кодыг шалгадаг кодын хэсгийг бид өөрчилсөн (readelf ашиглаж), ингэснээр бид ямар багцыг өөрчлөх, цаашлаад аль багцыг устгах хэрэгтэй гэдгийг мэдэж авах боломжтой болсон. АРМви7-д зориулсан кодтой багц гарч ирэх шалтгаанууд хэд хэд байна.
Статик сангууд [нэгэн жишээ нь]: энэ нь хөрвүүлсэн орчноосоо өвлөж авсан болон хөрвүүлэгдсэн хоёртын файлуудаас үүддэг юм. Хэрвээ статик сан нь АРМви7-ын кодыг агуулсан байвал үр дүнд нь гарч ирэх хоёртын файл мөн АРМви7-ын кодыг агуулж гарч ирэх болно. Төсөл эхэлж байх үед энэ нилээн том асуудал байсан ба бид дэбианы арм-эйч-эф (armhf Debian's ARM floating point port) багцыг ашиглан хамаарлын эргэлтийг (dependency cycle) өөрчилсөн. Гэвч багцууд АРМви7-ын кодыг статик сангуудаас авсаар байсан тул бид өөр багцуудыг суулгаж аль сангууд АРМви7 кодтой байгааг олж өөрчилсөн. Бид распиан орчинд энэ хөрвүүлэх ажлыг явуулж эхэлснээр уг асуудал бараг алга болсон.

2012 оны 4 сарын 20-нд распианыг татаж  авахаар бэлэн болсон бөгөөд 5 хувийг нь л дэбианы багцууд эзэлж байлаа. "Энэ хувилбар нь командын мөрнөөс ажилладаг файл систем босгоход хангалттай болсон байсан" гэж Томпсон хэлсэн юм.

19000 багцыг дахин хөрвүүлсэн нь

Томпсон хэлэхдээ, "Дэбианы АРМ хувилбарт шаардлагатай 36000 багцууд байдаг боловч аз болоход 17000 нь ажилладаг бус (not executable) шууд илүү ажил хийлгүйгээр распианд хуулж болох багцууд байсан юм. Эдгээр ажилладаг бус багцуудад тусламж, багцын баримт бичгүүд, үсгийн тиг (help pages, man pages, package documentation, fonts etc) зэргүүд байсан."

Бусад 19000 ажилладаг багцууд нь нилээн том ажил үүсгэсэн бөгөөд зургаадугаар сарын эхэн хүртэл тэр багцуудыг бүгдийг нь дахин хөрвүүлэх ажил хийгдсэн юм.
Энэ нь Томпсонд бараг гурван сарын бүтэн цагийн ажил байсан ба "заримдаа долоо хоногт 60-80 цаг ажиллаж байлаа" гэжээ.
Анх гарч байсан асуудлуудаас Томпсон дурдахдаа:
Хамгийн эхний асуудал бол распэри паяийн төхөөрөмж нь распиан төсөл эхэлснээс хойш хэдэн сарын дараа гарсан явдал юм. Гэхдээ распэри пая сангийн нөхдүүд бидний хийсэн хоёртын файлуудыг туршиж өгч байсан учраас распэри пая дээр бусад хөрвүүлсэн кодууд маань ажиллана гэдгийг баталж өгсөн.
Дараах нэг том асуудал бол хэрхэн линүкс хувилбарыг хөрвүүлэн хийх вэ гэсэн асуудал байсан. Аз болоход линүксийн бүлэг ерөнхийд зүйлст, дэбианы бүлэг тусгай зүйлст надад хариулт өгч маш нөхөрсөгөөр тусалж байсан тул намайг асуудалд орох бүрд туслаж байлаа. Нэг удаа Пэтэр бидэндтэй нэгдэж өдөрт мянга мянган багцын хөрвүүлэх чадалтай найман АРМ (ARM) суурьтай найман боловсруулагчтай тооцоолуураа хийхэд тусласан юм.

Заримдаа бусдаас удаан байлаа. Грийн распианы вэб хөтөч мидорид хэрэглэгдсэн вэбкитийг онцлоод "хөрвүүлэхэд хэдэн өдөр болж байж дуусдаг байв" гэжээ.
Ихэнх багцууд асуудалгүй хөрвүүлэгдчихдэг байсан. Баш мэтийн командын хясаа (command shell like bash) зэргийг бид ямар ч асуудалгүй хөрвүүлэгдэх байх гэж бодож байсан гээд Томпсон үргэлжлүүлэн "Бид зүгээр л татаж аваад, дахин хөрвүүлж, агуулахруу хийж байна" гэсэн юм.
Дэбианы бараг 5 хувь нь авт-хөрвүүлэгчээр хийгдээгүй гэж Томпсон дурьджээ. Энэ нь Грийн тэр хоёр зөвхөн АРМви7-д зориулсан кодыг АРМви6-ынх болгож өөрчилж бичсэн хэсэг гэж ойлгож болно.
Хөрвүүлэгчид, жава уншигчид (java interpreters) гэх мэт зохион байгуулалтанд (architecture) хэрэг болдог тэдгээртэй холбоотой зүйл бидэнд дээрхи төрлийн алдаануудыг гаргаж өгч байсан гэжээ. Ихэнх тохиолдолд бид багцын засварыг хийгээд шууд хүмүүст илгээж болох байсан ч зарим нэг шалтгаанаар цөөн зарим багцууд распэри паяд ороогүй байна.
Ердөө 50-100 багц ороогүй бөгөөд. Тэдгээр нь шалгагч (debugger) болон зөвхөн АРМви7-д зориулагдсан зүйлс байсан ба тэдний зарим нь распэри пая дээр ажиллах үед бүр огт хэрэг болоогүй гэжээ.
Распиан нь дүрст орчинтой болон орчингүй аль алинд нь ажилладаг. Нэгэнт пая нь програмчлал заах зориулалтаар хийгдсэн тул өгөгдмөл орчин нь паятоны хөгжүүлэлтийнх байх юм.

Жич: Хэт их хэтрүүлэгтэй орчуулсан бол уучлаарай.

Англи эхийг уншмаар байвал энэ хаягаас үзээрэй.

No comments:

Post a Comment