պարբերաբար հարց եմ ստանում՝ մարդիկ բացայայտում են, որ լինուքս միջուկում իբր կան փակ, այսպէս կոչուած «բլոբ»֊եր, եւ նրանք չգիտեն էդ իմացածի հետ ինչ անել։ օգտագործել արդեօք gnu ֊ի կողմից ընդունուած էդ մասերը հանած միջո՞ւկ։ բայց ապա ոչ մի բան չի՞ աշխատի։ թէ՞ ինչ։
էս երկար ա տեւելու, սկսենք էսպէս՝
առհասարակ, երկաթ արտադրելն աւելի թանկ ա, քան ծրագիր գրելը։ երկաթ ասելով նկատի ունեմ, օրինակ՝ չիպ։ ծրագիրը մի անգամ կը գրեն, ու քոփի կանեն, իսկ չիպի սխեման պիտի տպեն ամէն չիպի վրայ։
եթէ հնարաւոր ա երկաթի մի մասը փոխարինել ծրագրով՝ ապրանքն էժանացնում ա, մրցունակ ա դարձնում։ նաեւ, էդ ծրագրի վրիպակները հնարաւոր կը լինի դզել թարմացումներով, իսկ այ երկաթը թարմացումներով դզելն այնքան էլ հեշտ չի։
ահա, օրինակ, զրօյականների սկզբին ես ունէի pentium մէկ համակարգիչ, մոդեմով։ կարողանում էի կպնել dialup֊ով ցանցին։
մոդեմս այսպէս կոչուած «սոֆթ» մոդէմ էր։ «հարդ» մոդէմն այն էր, որ իսկապէս ունէր երկաթ մոդէմութիւն անելու։ «սոֆթ» մոդէմի գործառոյթների զգալի մասը «աութսորս» ա արուել կարգչի cpu֊ի վրայ։
այդ պատճառով, երբ ես կպած էի ցանցին, ու օրինակ դիտարկչի սքրոլ բար֊ն արագ քաշէի ներքեւ, cpu֊ս չէր հերիքի, եւ կապը կընդհատուէր։
այդ «սոֆթ» մոդէմներն արժէին դէ օրինակ $20 իսկ այ «հարդ» մոդէմը կարժենար մի $100։ ու բնական ա, մեր աղքատ երկրում բոլորն առնում էին «սոֆթ» մոդէմներ։
«լինուքս» ասածում էդ «սոֆթ» մոդէմները որպէս կանոն չէին աշխատում՝ զի չկար դրանց ծրագիրը գրուած լինուքսի համար։ ու եթէ քշում էիր «լինուքս», պիտի ծախսի տակ ընկնէիր, առնէիր «հարդ» մոդէմ։
ինչի՞ չկար տէնց ծրագիր։ նախ ամէն «սոֆթ» մոդէմի համար արի ու գրի, երկրորդն էլ, ոնց հասկանում եմ, հո մենք չէինք գրի, պիտի արեւմտեան մի երկրի մարդուն պէտք լինէր, որ նա գրէր։ իսկ նրա ինչի՞ն էր պէտք, եթէ նա էդպիսի խլամ չէր առնի, կամ էլ արդէն մշտական կպած էր իր կարգիչը։
էդ մենք էինք որ պայմանական «icq»֊ին միշտ կպած չենք եղել, dialup֊ով կպնում էինք, գիտէինք ինչ պիտի անենք, գիրքը քաշել, մէյլերը նայել, անջատուել, զի ժամով էր։
ինչեւէ, ես պատմեցի որ կան սարքեր, որոնց գործառոյթների մասը կատարում ա ծրագիրը։
հիմա, ի՞նչ ա մեր օպերացիոն համակարգը։ ընդհանուր առմամբ՝ օրինակ լինուքս կոչուած միջուկը, ու դրա շուրջ աշխատող ծրագրեր։
այդ լինուքս կոչուած միջուկը՝ հիմնականում սի֊ով գրուած կոդ ա, մի մասն էլ՝ ասեմբլերով՝ որոշ cpu սպեցիֆկ մասերը տարբեր cpu֊ների համար գրւում են ասմ֊ով։
վերջերս ռասթ էլ ա աւելացել միջուկին։
ինչեւէ։
միջուկի մէջ չկայ փակ կոդ։ միջուկը՝ gpl արտօնագրով ա։
ասմ կոդը դէ ասմ ա։ կարդա հասկացի ինչ ա։ կարեւորը ձեւը չի՝ արտօնագիրն ա։ ասմի մասերը նրա պատճառով չեն ասմ, որ մարդուն բարդ լինի կարդալ, այլ որովհետեւ էդպէս ա նպատակայարմար նախագծման տեսանկիւնից։
ու դրան մենք չենք ասում «բլոբ»։ բնաւ։ էդպէս անուանում ենք «ֆիրմուերներ», որ գալիս են «linux-firmware» փաթեթով։
արդե՞օք դրանք մեզ պէտք են եւ ի՞նչ են։
եկէք շարունակենք։ ինչպէս ճշտեցինք, մեր կարգիչն ունի cpu, որն ինտերպրետացնում ա, փաստացի, ծրագրերի կոդը, ու եթէ մենք օգտագործում ենք «լինուքս», ապա այն ինտերպրետացնում ա միջուկի կոդը, եւ այլ ծրագրերի կոդը, եւ եթէ սովորական «լինուքս» դիստրօ էք քշում, պիտի որ էդ ամբողջ կոդը լինի ազատ եւ բաց։
բա ի՞նչ ա «linux-firmware»֊ը։
օկէյ, սկսենք տպիչներից։ դիցուք ունէք տպիչ։ միացուած ա ձեր կարգչին ինչ֊որ ձեւով։ գուցէ usb֊ով, գուցէ lpt֊ով, գուցէ անլար։
էդ տպիչը մեր կարգչի մէջ չի։ միացուած ա մեր կարգչին։ իրա մէջ կայ ծրագրակազմ։ այսպէս կոչուած՝ «firmware», զի ֆիրմայի կողմից գրուած, իրա հետ եկող ծրագրակազմն ա։
տպիչի վրայ կայ մենիւ, երբ կոճակներ ենք սեղմում, ինչ֊որ բան ա նշանակում, եթէ թուղթ չունի, ինչ֊որ ձեւով մեզ իմաց ա տալիս՝ իրա մէջ կայ ծրագրակազմ, եւ հետեւաբար, կայ նաեաւ cpu որի վրայ էդ ծրագրակազմն աշխատում ա։
եւ էդ ծրագրակազմը ոչ ազատ ա, ոչ բաց, մեզ չի ենթարկւում էդ տպիչը ։ էդ պատճառով, տպիչը գուցէ, օրինակ, չընդունի որ «ֆիրմա» ներկի քարթրիջները։ զի ծրագրակազմը գրուել ա արտադրողի կողմից, եւ տպիչն ենթարկւում ա արտադրողին։
պիտի երախտապարտ լինենք, եթէ ցանցին միացուած տպիչ ա, ու ցանցով ամէն տպած փաստաթուղթը չի ուղարկում արտադրողին։
արդե՞օք լաւ չէր լինի, եթէ տպիչն ունենար ազատ ծրագրակազմ։
շատ լաւ կը լինէր։ մեզ կը ենթարկուէր։ փող կը խնայէինք, անկապ թանկ քարթրիջներ չէինք առնի «vendor lock» եղած։ ու վերջապէս, գուցէ «doom» աշխատեցնէինք իրա վարյ, զի կարող ենք, որպէս սարքին տիրապետելու հաստատում։
բայց դէ ինչ կայ էդ ա։
ի՞նչ սփոփանք ունենք՝ գոնէ մեր կարգիչը, մեր կարգչի cpu֊ն աշխատեցնում ա ազատ կոդ։ մեզ ենթարկուող, ու մենք կարող ենք այն փոխել, եթէ մի բան դուրներս չի գալիս։
տպիչը՝ մեր կարգիչը չի։ տպիչը չունի աքսես մեր կարգչի յիշողութեանը։ տպիչն, ինչպէս առաջ ասում էին՝ արտաքին սարք ա։
ընդհանուր առմամբ, նախկինում շատ սարքեր, որ կոչւում էին արտաքին, այսօր արդէն այդքան էլ արտաքին չեն։
օրինակ, նախկինում կար disk controller որը արտաքին էր, ու իրան նոր միանում էր floppy drive֊ը։ էսօր այդ կոնտրոլերը ներսում ա։
էդ կոնտրոլերը հաւանաբար ունի իր մէջ ծրագրակազմ։ իսկ դրան միացուած hard drive֊ը նոյնպէս ունի իր մէջ ծրագրակազմ։ դրան կարող ենք կպնել, ու հարցնել, ի՞նչ վիճակում ա դիսկը։ քանի՞ ժամ ա աշխատել։ քանի՞ անգամ ա անսպասելիօրէն անջատուել։ քանի՞ «բեդ բլոք» ունի։ հաղորդակարգը որով կպնում ենք, կոչւում ա S.M.A.R.T, ու մեր կողմից այդ հարդ դրայւի հետ խօսում ա ազատ ծրագիր։
իսկ հարդ դրայւի միջից մեզ պատասխանում ա փակ «ֆիրմուեր»։
արդե՞օք էդ խնդիր ա, ու եթէ խնդիր ա, ինչքանո՞վ լուրջ։
դուք ասէք։ դէ լաւ կը լինէր ամէն ինչն էլ ազատ լինէր։ բայց պիտի յստակ նշենք, որ մեր կարգիչը՝ cpu֊ն, աշխատում ա ազատ ծրագրակազմով։ այն խօսում ա այլ սարքերի հետ, որ գուցէ եւ չունեն ազատ ծրագրակազմ։ բայց մեր կարգիչը ազատ ա։ մեր կարգիչը ազատ ա զի մեր cpu֊ի վրայ կատարուող կոդն ազատ ա։
տպիչի միջի կոդը՝ մեր cpu֊ի վրայ չի կատարւում։ հարդ դրայւի միջի փակ կոդը՝ մեր cpu֊ի վրայ չի կատարւում։
հիմա լաւ, ասացինք տպիչ, հարդ դրայւի միջի ծրագրակազմ։
բա վերջապէս ի՞նչ ա «linux-firmware» փաթեթի մէջ։
ուրեմն, դուք սարք նախագծող֊արտադրող էք։ դուք ուզում էք ձեր սարքը լինի հնարաւորինս էժան։
դուք արդէն այն էժանացրել էք նրանով, որ փոխարէնը սխեմա հաւաքէք, դրել էք դրա մէջ փոքրիկ թոյլ cpu որն էդ սխեմայի գործառոյթը կանի՝ ծրագրակազմով։
բայց կարող էք էլի էժանացնել։
ո՞րտեղից ա լոադ անելու էդ ծրագիրը։ պիտի իրա «հարդ դրայւի» պէս մի բան ունենայ, իր «ֆլեշ» «սթորեջը» ներքին ունենայ։
բա ի՞նչ եթէ չունենայ։ որպէսզի սարքն աշխատի, օրինակ windows֊ում, մէկ ա մենք տեղադրելու ենք «դրայւեր»։
ահա, ի՞նչ ա «դրայւերը»։ սովորաբար կերնելի մաս (բայց ոչ միշտ), ծրագրի կտոր, որ աշխատում ա մեր cpu֊ի վրայ, ու գիտի ինչպէս շփուել սարքի հետ՝ տպիչի, ուեբ խցիկի, մկնիկի, եւ այլն։ ինչ ուղարկել, ինչ ստանալ։
կարելի ա ասել, որ դրայւերը մեր կողմից՝ կարգչի կողմից իմպլեմենտացնում ա սարքի հետ շփուելու հաղորդակարգը։
հա, արտադրողը մտածում ա՝ մէկ ա էս մարդիկ պիտի «դրայւեր» տեղակայեն, որ մեր սարքի հետ շփուեն։
էլ ինչի՞ ենք փող ծախսում մի հատ էլ «ֆլեշ» դնում դրա մէջ, եքայ կոմպի դիսկը թողած։ փոխարէնը թող երբ դրայւերը սկսի սարքի հետ խօսել, սարքն ինիցիալիզացնի, թող լցնի դրա մէջ մեր «ֆիրմուերը»։ ու սարքը դրանով կաշխատի։
չունենալով ֆլեշ՝ էժանացնում ենք սարքը, եւ աւելի մրցունակ ենք։
հիմա, եթէ ուզում ենք նոյն սարքն աշխատի նաեւ լինուքսի հետ, պիտի լինուքս միջուկը սովորի դրա մէջ լցնել էդ ֆիրմուերը։
ինչն ա լաւ, ու ինչ չի կատարւում։ չի կատարւում էն, որ դուք պիտի գնաք արտադրողի կայք, էնտեղ փնտրէք էդ ֆիրմուերը ու չգտնէք, զի արդէն հանել են։ չի կատարւում էն, որ դուք պիտի դիսկն ունենաք էդ ֆիրմուերով, ու դիսկից ինսթոլ անէք։
էդ ամէնը չի կատարւում, որովհետեւ այսպէս կոչուած «լինուքսը» կարողացել ա ստեղծել էնպիսի վիճակ, որ սարք արտադրողները իրենց «ֆիրմուերը» տան եթէ ոչ ազատ (իսկ շատ ֆիրմուերներ ազատ արտօնագրով են), ապա գոնէ արտօնագրով, որ թոյլ ա տալիս «redistribution»։
ես քաշել եմ՝ կարող եմ տալ քեզ։ ոչ թէ դու պիտի գնաս իրանց մօտից քաշես։
ու հիմա կան շատ սարքեր, որ աշխատանքի համար պահանջում են, այո, որ դրանց մէջ օպերացիոն համակարգը լցնի «ֆիրմուեր»։ որ նրանք իմանան ինչ են անում, իրանց ծրագիրը կատարեն։
հիմնականում մենք առնչուել ենք դրա հետ, երբ օրինակ, տեղակայում ենք «լինուքս», ու մեր ուայֆայ քարտը չի աշխատել։ օրինակ դեբեան դիստրիբուտիւը ջանում էր լինել շատ մաքուր, եւ չունենաք քըխ ոչ ազատ ծրագրակազմ։
հետեւաբար, տեղակայում էինք դեբեան, այն որպէս կանոն ճանաչում էր ցանցային քարտը, իսկ այ ուայֆայը չէր ճանաչում։ ու պիտի ջոկող կամ սովոր մարդ լինէր, իմանար ոնց ա ցանցին կպցնում, ասում որ քաշի, ասում՝ համաձայն եմ, էդ ուայֆայի ֆիրմուերը։
էսօր դեբեանը որոշել ա էլ մարդկանց գլուխը չցավացնել, չբացատրել ինչ ա կատարւում, ու ինսթոլերի մէջ linux-firmware ունի։ լինուքսը կարող ա պէտք եկած ֆիրմուերը վերցնել, լցնել սարքի մէջ։
կրկին, լինուքսը աշխատում ա մեր cpu֊ի վրայ, իսկ էդ սարքն ունի իր cpu֊ն։
ինչպէս ասացի, հիմնականում wifi քարտերն են, որ պահանջում են սեփականատիրական firmware։ բայց որոշ wifi սարքերի firmware֊ը ազատ ա։ իսկ որոշ սարքեր՝ atheros֊ի որոշ wifi չիպեր չեն պահանջում դրանց մէջ լցնել firmware։
արդե՞օք չեն պահանջում որովհետեւ ունեն ներքին ֆլեշ յիշողութիւն, ու դրանից են բեռնո՞ւմ։ թէ՞ չեն պահանջում որովհետեւ ամէնը առանց ծրագրակամզի ա աշխատում՝ երկաթէ սխեմա ա։
իսկ դա կարեւո՞ր ա մեզ։
նոյնիսկ գուցէ լաւ ա, եթէ մենք ենք լցնում։ կարելի ա դիզասմ անել էդ բինար ֆիրմուերը, կարդալ, պատկերացում կազմել թէ ինչ ա անում։
ու բազմաթիւ սեքիւրիտի հետազտօտողներ դա անում են։
ահա ձեզ պատմութիւն «բլոբերի» մասին։ դրանք կերնելի սորսի մէջ չեն, linux-firmware փաթեթի մէջ են։
ու դրանք ձեր cpu֊ի վրայ չեն աշխատում։
ու տէնց։
#ծրագրակազմ #ազատութիւն