우리는 최근 blu_spark 커널 개발자인 eng.stk를 인터뷰했습니다. 이 부분에서는 그에게 그의 출신과 개발 작업에 대해 물어본다.
최근 XDA Senior Member를 인터뷰할 기회가 생겼습니다. eng.stk, blu_spark 커널 개발자. Nexus 5, OnePlus 3/T, OnePlus 5T 등 포럼의 다양한 기기에서 사용할 수 있습니다. 이 부분에서는 eng.stk에게 개발 경력과 blu_spark 커널 개발 방법에 대해 물어봅니다.
먼저 자신과 커널을 소개하세요. 귀사의 커널은 경쟁업체와 어떻게 차별화됩니까? 커널 변경에 대한 디자인 철학은 무엇이며 어떻게 진행하시나요?
저는 eng.stk이고 2010년부터 XDA에 참여해 왔습니다. 여러분 대부분은 내 code_blue 및 blu_spark 프로젝트에서 저를 알고 계십니다 :)
저는 일부 스크립트와 기타 도구, 프레임워크 해킹을 작성하여 XDA를 시작했습니다. 테마도 많이 해봤는데.. 여기에 근무하는 동안 Purity ROM, Universal Kernel Manager, Kernel Adiutor 및 최근에는 Magisk와 같은 일부 프로젝트에 직접 협력했습니다. 와이어가드 몇가지 말하자면. 저는 최근에 일부 TWRP 작업(특히 OnePlus 장치에서), Magisk 모듈 및 기타 도구/해킹을 수행하고 있습니다. [그것은] 내 커널 프로젝트의 수명 주기 동안 유용합니다(제가 기억한다면 일부 내용은 XDA 포털에 올라갔습니다). 바르게). blu_spark 커널은 커널일 뿐만 아니라 커널, 툴체인, 복구, 테마, 도구, 스크립트 등 간의 포괄적인 경험이 되기 시작했습니다. 하지만 커널 작업은 제가 가장 즐기는 작업이자 저를 이끄는 원동력입니다.
나는 기회가 있을 때마다 해킹하고 일부 코드/스크립트를 작성하는 것을 즐겼습니다(사촌의 Commodore 64에서 전자 장난감을 분해하고 기본 코딩을 하는 것은 재미있었습니다). 나에게 코딩은 목적을 위한 수단이 아니라 정의된 목적을 달성하기 위한 다른 도구일 뿐입니다. 내 작업의 더 진지한 작업과 기초 작업의 대부분은 청소년기/20대 초반에 Linux를 발견했을 때 완료되었습니다. 나중에 대학 시절 어느 시점에 Android는 나에게 논리적인 다음 단계였습니다. 하드웨어나 소프트웨어를 많이 사용할 수 있는 곳은 정말 땜장이의 꿈이었습니다.
blu_spark를 설명하는 가장 좋은 단어는 최적화와 안정성입니다. 그것을 사용하는 사람들은 그것이 신뢰할 수 있다는 것을 알고 있습니다. 내 커널 빌드는 사람들이 선택할 수 있도록 모든 것을 선택 사항으로 유지하고 상자에서 사용할 수 있는 일부 항목을 제거하지 않는 경향이 있다는 점에서 다소 '비축적'입니다. 나는 너무 많은 것을 추가하는 것을 좋아하지 않으며, 주어진 각 분야에 대해 내가 가장 좋다고 생각하는 것을 변경하거나 추가합니다. CPU 주파수 드라이버, IO 스케줄러, 네트워크 프로토콜, 파일 시스템 등을 조정하거나 주어진 매개변수에 대해 일부 조정 가능 항목을 조정하거나 최상의 결과를 위해 일부 드라이버를 업스트림합니다. 또한 주로 아키텍처를 최대한 활용하기 위해 맞춤 제작 툴체인(Linaro의 GCC에 대한 멋진 해석)을 구축합니다.
결론적으로, 대부분의 사람들은 장치에서 커널을 플래시하는 순간부터 자신이 blu_spark에 있다는 것을 알고 있습니다. 저는 항상 최고의 UX를 제공할 수 있는 새로운 방법과 방법을 찾고 있습니다. 안전하게.
당신의 blu_active 거버너에 대해 알려주세요! 그것은 무엇이며, 어떤 역할을 하며, 왜 특별한가요?
사람들이 때때로 blu_active와 blu_spark를 혼동한다는 것을 알고 있습니다. blu_active는 제가 하는 나머지 모든 [작업]에 비하면 작은 부분일 뿐입니다.
CPU 거버너는 기본적으로 시스템의 필요에 따라 CPU 주파수를 높이거나 낮추는 결정을 내립니다. 주지사는 출범 이후 여러 가지 변화와 변이를 겪었습니다. 내가 하는 다른 모든 일과 마찬가지로 나에게도 내 필요를 충족시켜 줄 무언가가 필요했습니다. 제가 가장 좋아하는 인터랙티브 거버너를 기반으로 제작되었습니다. 처음에는 일부 업스트림 항목을 추가하기 시작했지만 CAF 업데이트나 다른 거버너에서 본 유용하다고 생각되는 로직과 같은 다른 항목을 추가하기 시작했습니다. 또한 HMP 호환성과 기타 기능도 추가했습니다.
최신 버전은 Google의 Linux 4.4 Android 브랜치를 기반으로 하며 일부 업스트림 및 CAF 수정 사항도 포함되어 있지만 이전보다 훨씬 더 간결해졌습니다. 가지고 있는 것을 최대한 활용하고, 그렇지 않은 것은 제거하세요. 나는 항상 기본 설정보다 더 나은 배터리를 얻으려고 노력하고 소모를 줄이면서 개선하려고 노력합니다. 성능(실제 성능, 합성이 아닌 눈과 손가락으로 느끼는 성능) 도구).
한때 저는 사람들이 간단한 방법으로 성능을 시험해 볼 수 있도록 간단한 조정이 가능하고 싶었습니다. 이것이 Fastlane이 탄생한 방법입니다 :). 논리는 Honda VTEC의 작동 방식과 다소 유사합니다. 즉, 주어진 임계값의 타이밍을 가지고 플레이합니다. 따라서 간단한 스위치와 가변 임계값을 통해 사람들은 보다 직접적이고 공격적인 CPU 주파수 스케일링을 가질 수 있습니다. 시스템 부하에 따라 조만간 진입하게 하여 목표 부하를 우회합니다. HMP와 완벽하게 호환되며 사람들의 필요에 따라 클러스터별로 조정할 수 있고 실행되는 각 장치에 맞게 미세 조정될 수 있습니다.
OEM이 제공하는 내장 메커니즘이나 조정이 마음에 들거나 마음에 들지 않습니까? 즉, Qualcomm의 입력 부스트입니다.
HAL(하드웨어 추상화 계층), 하드코딩된 프레임워크 등에 설정된 일부 사용자 공간 향상 및 기타 조정 가능 항목은 때때로 성가실 수 있습니다. 물론 커널 개발자들은 이러한 문제 중 일부를 해결하는 것으로 알려져 있습니다. 예를 들어 Nexus 5에서는 대부분의 사람들이 mpdecision을 제거하고 맞춤형 핫플러그를 얻었습니다. 당시에는 blu_plug가 있었습니다. 일부 다른 장치에는 열 관리가 불량하고 온도 수준, 완화 빈도 등에 대한 sysfs를 사용한 사용자 정의 열 제어 기능이 있었습니다. 일부 최신 장치에는 배터리에 대한 몇 가지 엄격한 정책이 있으며, 코어 및 기타 항목을 "낮은 수준"에서 분리하여 장치 사용량에 실질적인 이득을 주지 못했습니다. 실제로 때로는 사용자 경험을 망치기도 했기 때문에 CTL과 BCL 기술을 길들이는 것이 필요했습니다.
나는 또한 장치에서 암호화를 제거한 것을 기억합니다. SELinux 반복의 모든 변경 사항은 이전 해킹이 다른 방식으로 작동하도록 하는 변경 사항을 도입했습니다... 최근의 일부 Android 보안 변경 사항은 끊임없는 과제입니다. 여기에는 AVB(대부분 dm-verity로 알려진 일부 부분)가 포함됩니다. 다른 변경 사항으로 인해 이전과 동일한 위치에 액세스할 수 없기 때문에 이동해야 했던 튜너블 및 sysfs 위치가 제한되었습니다. 이러한 제한 사항 중 대부분은 기본 ROM(내가 대부분의 작업을 수행하는 경우)과 더 관련이 있으며, 일반적으로 이는 길을 닦고 사용자 정의 ROM(제한 사항이 더 낮은 경우)의 경우 더 쉽게 만듭니다.
Qualcomm Snapdragon 820 및 835와 같은 최근 SoC에서 일부 OEM은 환영받는 사용자 공간의 일부 향상을 추가하고 시스템의 사각지대를 해결했지만 모든 OEM이 나쁜 것은 아닙니다. 커널 소스의 경우 소스가 더 깨끗하고 문서화되어 있을수록 더 좋습니다.
어떤 다른 기능을 추가하고 싶나요? 고급 색상 제어 등과 같은.
나는 일반적으로 개인적으로 사용하지 않거나 유용하지 않은 항목을 포함하지 않습니다. blu_active 외에 내가 좋아하는 작업에는 아키텍처 최적화 및 수정, 암호화 관련 업데이트, IO 스케줄링 및 기타 작업이 포함됩니다. 저장소/파일 시스템 기능, KCAL, USB 고속 충전, 진동 강도, 배터리/알림 LED 제어, Wakelock 차단기, WireGuard, 등. 저는 앞서 말했듯이 항상 맞춤형 빌드 툴체인을 사용하여 빌드합니다.
커널에 어떤 테스트 방법을 사용합니까? 사용자 보고서, 벤치마크 또는 기타 사용자 정의 루틴을 사용하십니까?
나는 내가 개발하는 모든 전화기를 소유하고 있으므로 모든 변경 사항은 항상 내가 테스트합니다. 나는 매일 모든 장치를 오랫동안 운전하기 때문에 나에게 적합하지 않다고 생각하는 모든 장치는 다른 누구에게도 적합해서는 안 됩니다. 빌드를 공개적으로 출시하면 이미 저와 제가 신뢰하는 유용한 피드백을 제공할 수 있는 다른 사람들로부터 많은 테스트를 거쳤습니다. 때때로 일부 사용자는 모든 작업이 정상적으로 작동하는 데 지루해한다는 것을 알고 있지만 무엇보다도 안정성을 중요하게 생각합니다. 나는 항상 사용자의 입장에서 생각합니다.
저는 합성 테스트가 아닌 실제 사용 사례를 중심으로 작업을 진행합니다. 이런 종류의 소프트웨어는 백오피스의 기계가 아닌 사람을 위해 만들어졌습니다. 시작점은 모든면에서 항상 주식 경험보다 낫습니다. 그러나 저는 최신 Antutu 높은 점수를 그다지 중요하게 생각하지 않습니다. 내 커널은 이런 종류의 벤치마크에 맞춰 조정될 수 있지만 이것이 내 최종 목표는 아닙니다. 예를 들어 IO 스토리지 테스트와 같이 보다 직접적인 일부 벤치마크를 중요하게 생각합니다. 예를 들어 최근에 수행된 일부 변경 사항을 주장하는 빠른 방법을 제공할 수 있습니다.
나는 사물에 대한 안정적인 기준선을 가질 수 있도록 재고 ROM을 사용하여 테스트를 수행합니다. 나는 맞춤형 ROM에 대한 맞춤형 빌드를 수행하지만 추가 항목, 야간 및 심지어 추가 기능이 포함된 맞춤형 ROM의 변동성 특성으로 인해 일부 기능의 구현 차이로 인해 모든 기능을 포괄하고 모든 사람에게 적절한 지원을 제공하는 것은 불가능합니다. 안타깝게도.
또한 특정 항목을 테스트하기 위해 또는 베타 ROM 또는 개발자 미리 보기에 대한 빌드를 시작할 때 베타 빌드를 빌드하는 경우도 있습니다. 저는 Nexus와 OnePlus 기기에서 그렇게 했습니다. 사람들은 때때로 뭔가를 테스트하고 싶어합니다. :)
2부 확인: F2FS, EAS 및 야심 찬 커널 개발자를 위한 팁