ჩვენ ცოტა ხნის წინ გამოვკითხეთ eng.stk, blu_spark ბირთვის შემქმნელი. ამ ნაწილში მას ვეკითხებით მისი წარმოშობისა და განვითარების შესახებ.
ახლახან მომეცა საშუალება გავესაუბრე XDA-ს უფროს წევრს eng.stk, blu_spark ბირთვის დეველოპერი. ის ხელმისაწვდომია ბევრ მოწყობილობაზე ჩვენს ფორუმზე, მათ შორის Nexus 5, OnePlus 3/T და OnePlus 5T. ამ ნაწილში ჩვენ ვეკითხებით eng.stk-ს მისი წარმოშობის შესახებ განვითარებაში და როგორ ავითარებს blu_spark ბირთვს.
ასე რომ, პირველ რიგში, წარმოადგინეთ საკუთარი თავი და თქვენი ბირთვი. როგორ განასხვავებს თქვენი ბირთვი კონკურენტებისგან? რა არის თქვენი დიზაინის ფილოსოფია ბირთვის ცვლილებებისთვის და როგორ ახორციელებთ მათ?
მე ვარ eng.stk და XDA-ზე ვარ 2010 წლიდან. უმეტესობა მიცნობს ჩემი code_blue და blu_spark პროექტებიდან :)
დავიწყე XDA-ზე რამდენიმე სკრიპტის და სხვადასხვა ხელსაწყოების დაწერით, ფრეიმერის ჰაკით. ასევე ბევრი თემა მაქვს გაკეთებული... აქ ყოფნის დროს მე ასევე უშუალოდ ვთანამშრომლობდი ზოგიერთ პროექტთან, როგორიცაა Purity ROM, Universal Kernel Manager, Kernel Adiutor და ახლახან Magisk და WireGuard მხოლოდ რამდენიმეს დასასახელებლად. ბოლო დროს ასევე ვაკეთებ TWRP სამუშაოებს (განსაკუთრებით OnePlus მოწყობილობებზე), Magisk მოდულები და სხვა ინსტრუმენტები/ჰაკები [რომლებიც] გამოსადეგია ჩემი ბირთვული პროექტების სასიცოცხლო ციკლის განმავლობაში (ზოგიერთი რამ გადავიდა XDA პორტალზე, თუ მახსოვს სწორად). blu_spark ბირთვი გახდა არა მხოლოდ ბირთვი, არამედ ყოვლისმომცველი გამოცდილება ბირთვს, ხელსაწყოების ჯაჭვებს, აღდგენას, თემატიკას, ხელსაწყოებს, სკრიპტებს და ა.შ. მაგრამ ბირთვის მუშაობა არის ის, რაც ყველაზე მეტად მსიამოვნებს და მიბიძგებს.
ყოველთვის მსიამოვნებდა ჰაკერების გატეხვა და ზოგიერთი კოდის/სკრიპტის შედგენა, როცა მქონდა შესაძლებლობა (ელექტრონული სათამაშოების დაშლა და ჩემი ბიძაშვილის Commodore 64-ის ძირითადი კოდირება სახალისო იყო). ჩემთვის კოდირება არ არის მიზნის მიღწევის საშუალება, არამედ უბრალოდ ინსტრუმენტი, როგორც ზოგიერთი სხვა, განსაზღვრული მიზნის მისაღწევად. ჩემი უფრო სერიოზული საქმის უმეტესობა და ჩემი მუშაობის საფუძვლები გაკეთდა, როდესაც აღმოვაჩინე Linux ჩემს მოზარდობაში/დაწყებული ოციან წლებში. მოგვიანებით, სადღაც უნივერსიტეტის დროს, ანდროიდი იყო ჩემთვის ლოგიკური შემდეგი ნაბიჯი: თვინიერის ოცნება, სადაც ტექნიკის ან პროგრამული უზრუნველყოფის თამაში შეიძლებოდა ბევრი.
საუკეთესო სიტყვები blu_spark-ის აღსაწერად არის ოპტიმიზაცია და სტაბილურობა. ადამიანებმა, რომლებიც იყენებენ მას, იციან, რომ მათ შეუძლიათ დაეყრდნონ მას. ჩემი ბირთვის builds არის გარკვეულწილად "საკმაოდ" ისე, რომ მე არ ვცდილობ ამოიღო ზოგიერთი ნივთი, რომელიც ხელმისაწვდომია ყუთიდან, ყველაფერი არჩევითია, რათა ხალხს შეეძლოს არჩევანის გაკეთება. არ მიყვარს ზედმეტი ნივთების დამატება, უბრალოდ ვცვლი ან ვამატებ იმას, რაც საუკეთესოდ მიმაჩნია თითოეული მოცემული სფეროსთვის. CPU სიხშირის დრაივერი, IO დაგეგმავი, ქსელის პროტოკოლები, ფაილური სისტემები და ა.შ. მე ასევე ვაშენებ პერსონალურად დამზადებულ ხელსაწყოების ჯაჭვებს (Linaro-დან, GCC-ის გასაოცარი ვერსია), ძირითადად არქიტექტურიდან საუკეთესოს მისაღებად.
დედააზრი, ადამიანების უმეტესობამ იცის, რომ ისინი იმყოფებიან blu_spark-ზე იმ მომენტიდან, როდესაც ისინი აანთებენ ბირთვს მოწყობილობაზე. მე ყოველთვის ვეძებ ახალ ნივთებს და გზებს, რომ მივცე საუკეთესო UX. უსაფრთხოდ.
გვითხარით თქვენი blu_active გუბერნატორის შესახებ! რა არის ის, რას აკეთებს და რატომ არის განსაკუთრებული?
ვიცი, რომ ადამიანები ხანდახან ბლუ_აქტიურს ბლუ_სპარკთან ურევენ. blu_active მხოლოდ მცირე ნაწილია დანარჩენთან შედარებით, რასაც მე ვაკეთებ.
CPU გუბერნატორი ძირითადად იღებს გადაწყვეტილებებს CPU სიხშირეების აწევის ან დაწევის შესახებ, სისტემის საჭიროებების შესაბამისად. გუბერნატორს დაწყების დღიდან რამდენიმე ცვლილება და მუტაცია ჰქონდა. ისევე როგორც ყველაფერს, რასაც ვაკეთებ, მე მჭირდებოდა ის, რაც ჩემს მოთხოვნილებებს აკმაყოფილებდა. იგი დაფუძნებულია ჩემს საყვარელ გუბერნატორზე, ინტერაქტიულ გუბერნატორზე. თავიდან მე უბრალოდ დავდე მასზე ზემო დინებაში რაღაცეები, მაგრამ შემდეგ დავიწყე რამდენიმე სხვა ნივთის დამატება, როგორიცაა CAF განახლებები ან ლოგიკა, რომელიც მე მინახავს სხვა გუბერნატორებში, რომლებიც მე სასარგებლოა. მე ასევე დავამატე HMP თავსებადობა და რამდენიმე სხვა სიკეთე.
უახლესი გამეორება დაფუძნებულია Google-ის Linux 4.4 Android-ის ფილიალზე, ასევე ზევით და CAF შესწორებებით, მაგრამ ბევრად უფრო მწირი, ვიდრე ადრე. უბრალოდ გამოიყენეთ ის, რაც გაქვთ სრულად, ამოიღეთ ის, რაც არ გაქვთ. მე ყოველთვის ვცდილობ უკეთესი ბატარეის მიღებას, ვიდრე მარაგის პარამეტრებით, რაც ამცირებს გადინებას და ვცდილობ გავაუმჯობესო სპექტაკლი (რეალობის შესრულება, ის, რასაც გრძნობთ თვალებით და თითებით და არა სინთეტიკით იარაღები).
დროის ერთ მომენტში, მე მინდოდა მარტივი რეგულირებადი, რათა ხალხს შეეძლო ეთამაშა შესრულებაზე მარტივი გზით. ასე დაიბადა Fastlane :). ლოგიკა გარკვეულწილად წააგავს Honda VTEC-ის მუშაობას: თამაში მოცემული ზღურბლიდან ვადებში. ასე რომ, მარტივი გადართვისა და ცვლადი ზღვრული მნიშვნელობით, ადამიანებს შეეძლოთ უფრო პირდაპირი და აგრესიული CPU სიხშირის სკალირება. მისი შეყვანა ადრე თუ გვიან სისტემის დატვირთვის მიხედვით, სამიზნე დატვირთვების გვერდის ავლით. ის სრულად თავსებადია HMP-თან და მისი შესწორება შესაძლებელია თითო კლასტერზე ხალხის საჭიროებების შესაბამისად, სრულყოფილად მორგებული თითოეული მოწყობილობისთვის, რომელზეც მუშაობს.
რა ჩაშენებული მექანიზმები ან შესწორებები მოგწონთ/არ მოგწონთ, რომლებსაც გთავაზობთ OEM? ანუ Qualcomm-ის შეყვანის გაძლიერება.
ზოგიერთი მომხმარებლის სივრცის გაძლიერება და სხვა რეგულირება, რომლებიც დაყენებულია HAL-ებში (Hardware Abstraction Layers), მყარი კოდირებულ ჩარჩოებში და ა.შ., ზოგჯერ შეიძლება იყოს შემაშფოთებელი. რა თქმა უნდა, ცნობილია, რომ ბირთვის დეველოპერები მუშაობენ ზოგიერთ მათგანზე Nexus 5-ზე, მაგალითად, ჩვენგანმა უმეტესობამ მოიშორა mpdecision და მიიღო მორგებული hotplug - ჩვენ გვქონდა blu_plug ადგილზე. ზოგიერთ სხვა მოწყობილობას ჰქონდა ცუდი თერმული მენეჯმენტი და მორგებული თერმული კონტროლი sysf-ით ტემპერატურის დონისთვის, შერბილების სიხშირისთვის და ა.შ. ზოგიერთ უახლეს მოწყობილობას აქვს გარკვეული მკაცრი წესები ბატარეასთან დაკავშირებით, ბირთვების გამორთვა და სხვა ნივთები "დაბალ დონეზე", რამაც არ მოიტანა რეალური მოგება მოწყობილობის გამოყენებაში. ფაქტობრივად, ის ზოგჯერ ანადგურებდა მომხმარებლის გამოცდილებასაც კი, ამიტომ საჭირო იყო CTL და BCL ტექნოლოგიების შემცირება.
მე ასევე მახსოვს მოწყობილობებში დაშიფვრის ამოღება, როდესაც ეს იყო, ყველა ცვლილება SELinux-ის გამეორებებმა შემოიღო ცვლილებები, რამაც წინა ჰაკები სხვაგვარად მუშაობდა... Android უსაფრთხოების ზოგიერთი ბოლოდროინდელი ცვლილება მუდმივი გამოწვევაა. მათ შორისაა AVB (ზოგიერთი ნაწილი ძირითადად ცნობილია როგორც dm-verity). ზოგიერთმა სხვა ცვლილებამ დაწესდა შეზღუდვები tunables და sysfs ადგილებისთვის, რომლებიც გადატანილი იყო, რადგან ჩვენ არ გვაქვს წვდომა იმავე ადგილებზე, რაც ადრე გვქონდა. ამ შეზღუდვების უმეტესობა უფრო აქტუალურია საფონდო ROM-ებისთვის (რომლებშიც მე ვაკეთებ ჩემი სამუშაოს უმეტეს ნაწილს), ჩვეულებრივ, ეს გზას უხსნის და ამარტივებს, როდესაც საქმე ეხება საბაჟო ROM-ებს (სადაც შეზღუდვები უფრო დაბალია).
ბოლო SoC-ებში, როგორიცაა Qualcomm Snapdragon 820 და 835, ზოგიერთმა OEM-მა დაამატა გარკვეული გაძლიერება მომხმარებელთა სივრციდან, რომლებიც მისასალმებელია და ებრძვის სისტემის ბრმა წერტილებს, ყველა OEM არ არის ცუდი. რაც შეეხება ბირთვის წყაროს, რაც უფრო სუფთა და დოკუმენტირებულია წყარო, მით უკეთესი.
რა სხვა ფუნქციების ჩართვა გსურთ? როგორიცაა გაფართოებული ფერის კონტროლი და ა.შ.
მე ჩვეულებრივ არ ვგულისხმობ ნივთებს, რომლებსაც პირადად არ ვიყენებ ან არ მიმაჩნია სასარგებლო. რაღაცეები, რისი გაკეთებაც მომწონს, გარდა blu_active-ისა, მოიცავს არქიტექტურის ოპტიმიზაციას და შესწორებებს, კრიპტო მასალების განახლებებს, IO დაგეგმვას და სხვა შენახვის/ფაილის სისტემის სიკეთეები, KCAL, USB სწრაფი დამუხტვა, ვიბრაციის სიძლიერე, ბატარეის/შეტყობინებების LED კონტროლი, Wakelock ბლოკატორები, WireGuard, და ა.შ. მე ყოველთვის ვაშენებ პერსონალური კონსტრუქციის ხელსაწყოების ჯაჭვით, როგორც ადრე ვთქვი.
რა ტესტირების მეთოდოლოგიას იყენებთ თქვენი ბირთვისთვის? იყენებთ მომხმარებლის ანგარიშებს, ეტალონებს ან სხვა მორგებულ რუტინებს?
მე ვფლობ ყველა ტელეფონს, რომლისთვისაც ვამუშავებ, ასე რომ, ნებისმიერი ცვლილება ყოველთვის შემოწმებულია. იმის გამო, რომ მე ყოველდღიურად ვმართავ ყველა მოწყობილობას დიდი ხნის განმავლობაში, ყველაფერი, რაც მიმაჩნია, რომ არ ვარგა, არ უნდა იყოს შესაფერისი სხვისთვის. როდესაც საჯაროდ გამოვაქვეყნებ build-ს, მას უკვე ჩაუტარდა უამრავი ტესტირება ჩემგან და სხვა ადამიანებისგან, რომლებსაც ვენდობი სასარგებლო გამოხმაურების მიწოდებაში. ვიცი, რომ ზოგჯერ ზოგიერთ მომხმარებელს ბეზრდება იმის გამო, რომ მუდმივად მუშაობს ყველაფერი ისე, როგორც უნდა, მაგრამ მე ყველაზე მეტად ვაფასებ სტაბილურობას: მე ყოველთვის პირველ რიგში თავს ვიყენებ მომხმარებლის ფეხსაცმელზე.
მე მივდივარ რეალურ ცხოვრებაში გამოყენების შემთხვევაში და არა სინთეზური ტესტებისკენ. ამ ტიპის პროგრამული უზრუნველყოფა შექმნილია ადამიანებისთვის და არა ოფისში არსებული მანქანებისთვის. საწყისი წერტილი ყოველთვის უკეთესია, ვიდრე საფონდო გამოცდილება, ყველა ფრონტზე, მაგრამ მე ნამდვილად არ ვაფასებ უახლეს Antutu მაღალ ქულას. ჩემი ბირთვები შეიძლება იყოს მორგებული ამ ტიპის ეტალონზე, მაგრამ ეს არ არის ჩემი საბოლოო მიზანი. მე ვაფასებ ზოგიერთ ინდიკატორს, რომლებიც უფრო პირდაპირია, მაგალითად, IO შენახვის ტესტირება. მათ შეუძლიათ სწრაფი გზა დაადასტურონ ცოტა ხნის წინ გაკეთებული ცვლილებები, მაგალითად.
მე ვაკეთებ ჩემს ტესტირებას საფონდო ROM-ებით, რათა მქონდეს სტაბილური საბაზისო ხაზი ნივთებისთვის. მე ვაკეთებ საბაჟო build-ებს საბაჟო ROM-ებისთვის, მაგრამ საბაჟო ROM-ების არასტაბილური ბუნების გამო დამატებული დამატებითი ფუნქციებით, ღამის და კიდევ განხორციელების განსხვავება ზოგიერთ მახასიათებელში, შეუძლებელია ყველა მათგანის დაფარვა და ყველასთვის სათანადო მხარდაჭერა, სამწუხაროდ.
მე ასევე ხანდახან ვაშენებ ბეტა ბილდებს რაიმე კონკრეტულის შესამოწმებლად ან იმისთვის, როდესაც ვიწყებ ბილდებს ბეტა ROM-ებზე ან დეველოპერების გადახედვებზე. მე ასე გავაკეთე Nexus-ისა და OnePlus-ის მოწყობილობებზე, ადამიანებს მოსწონთ რაღაცის გამოცდა ხანდახან :)
შეამოწმეთ ნაწილი 2: F2FS, EAS და რჩევები ბირთვის დამწყებ დეველოპერებისთვის