ElementalX 커널 파트 1 개발자 Flar2와의 인터뷰

ElementalX 커널 개발자 flar2를 인터뷰하고 그의 개인 생활, 개발 작업 등과 같은 주제를 탐구합니다.

저는 최근 유명한 ElementalX 커널과 그의 더욱 인기 있는 ElementalX Kernel Manager 애플리케이션을 개발한 flar2를 인터뷰하게 되었습니다. 그는 다음을 포함하여 다양한 장치용 커널 버전을 출시했습니다. 원플러스 그리고 Nexus 기기.

이번 편에서는 Android 성능 병목 현상에 대한 flar2의 생각과 개인적인 삶에 대해 물어봅니다! 확인하실 수 있습니다 이 인터뷰의 2부는 여기에서 확인하세요.


안녕하세요! 질문에 답하기 전에 먼저 자기소개를 해주세요.

제 이름은 flar2라고도 알려진 Aaron Segaert입니다. 대부분의 사람들은 나를 ElementalX 커널 개발자로 알고 있습니다. 나는 또한 몇 가지 앱을 가지고 있습니다.

사전에 컴퓨터 및 개발 경험이 있었나요? 컴퓨터 과학 학위 같은 거요?

저는 아주 어렸을 때부터 컴퓨터를 시작했습니다. 내 첫 번째 컴퓨터는 Texas Instruments TI-99/4A였습니다. 저는 BASIC으로 코딩하는 방법을 배웠고 프로그램을 카세트 테이프에 저장했습니다(예, 저는 늙었습니다). 그런 다음 우리 가족은 286 IBM 클론을 구입했고 그 시점에서 코딩에서 벗어났습니다. 인터넷은 널리 알려져 있었지만 나는 어떤 자원도 없었고 인터넷을 가진 다른 사람도 알지 못했습니다. 컴퓨터. 저는 대학에서 컴퓨터 공학을 시작했지만 1학년 때 낙제했습니다. 나는 밴드와 함께 연주하고 연주하느라 너무 바빴기 때문에 수업에 제대로 참석한 적이 없습니다. 나중에 나는 학교로 돌아와 사회학 박사 학위를 받았습니다. 학생 시절에 저는 Linux와 오픈 소스에 관심을 가지게 되었지만 진지한 프로그래밍을 접해본 적은 없었습니다. 여기저기서 약간의 기여를 했지만 대부분은 내 목적에 맞는 스크립트와 작은 프로그램을 만들었습니다. 나는 아마도 2002년쯤에 처음으로 리눅스 커널을 만들었습니다. 당시 저는 직접 코드를 작성하지 않고 성능 향상을 위해 다양한 패치와 빌드 옵션만 실험했습니다. 나는 컴퓨터를 만들고, 오버클러킹하고, 일반적으로 하드웨어가 해서는 안 되는 일을 하도록 만드는 데 더 관심이 있었습니다.

Android 앱 개발과 커널 개발 외에 관심 있는 개발이 있나요?

사실은 아닙니다. 컴퓨터에서 수행하는 데 필요한 거의 모든 작업에 사용할 수 있는 좋은 도구를 찾았습니다. 제가 안드로이드용 커널과 앱 작업을 시작한 이유는 특정 기능에 대한 필요성과 기존 도구에 대한 개선의 여지가 있다고 느꼈기 때문입니다. 예를 들어 저는 삼성 휴대폰의 홈 키가 더 많은 기능을 수행하기를 원했고 역방향 뒤로 키와 최근 키가 마음에 들지 않았기 때문에 Button Mapper를 만들었습니다. 다른 시스템 정보 앱에서는 내가 보고 싶은 정보가 명확하고 간결하게 표시되지 않아서 DevCheck를 만들었습니다. ElementalX 커널은 새로운 하드웨어 기능을 추가하고 EX Kernel Manager는 이러한 기능을 제어하며 개발을 더 쉽게 만드는 데 사용하는 몇 가지 도구를 추가합니다. 저는 문제 해결을 좋아하며, 리버스 엔지니어링을 하거나 휴대폰에 새로운 하드웨어 기능을 추가하는 것은 재미있는 일입니다.

Android 개발, 특히 커널 개발에 어떻게 접하게 되었나요?

나는 항상 휴대폰을 싫어했고 오랫동안 거부했습니다. 아내와 나는 주로 비상용으로 사용하는 미니멀한 요금제의 기본적인 플립폰을 공유했다. 2012년에 우리 집에 화재가 나서 거의 3개월 동안 집에 없었다. 모든 유틸리티가 중단되었고 유선 전화를 다시 연결하지 않기로 결정하여 LG P급 스마트폰을 구입했습니다. 저는 그것이 미니 컴퓨터와 같다는 것을 깨닫고 나만의 미니 컴퓨터가 필요하다고 판단하여 HTC One V를 구입했습니다.

저는 거의 모든 것을 수정하고 수정했기 때문에 즉시 XDA를 발견했고 Android 휴대폰에서 Linux를 실행할 뿐만 아니라 오버클럭이 가능하다는 사실을 발견했습니다. 저는 오랫동안 Linux 사용자였기 때문에 커널 중 하나를 포크하여 푹 빠졌습니다. 나는 곧 저렴한 Acer 태블릿을 구입하고 USB OTG를 갖기를 원했기 때문에 해당 하드웨어와 커널을 조작하기 시작했습니다. 하드웨어가 지원하지 않는 것으로 밝혀졌지만 그것이 제가 모바일 하드웨어에 대해 더 많이 배우기 시작한 방법입니다. 나는 LG, Acer 태블릿 또는 One V용 커널을 공개적으로 출시한 적이 없지만 Android가 아직 성숙하지 않았기 때문에 당시에 필요했던 각각에 대해 자체 커널을 구축하고 사용자 정의 ROM을 설치했습니다.

나는 곧 One V보다 성장하여 HTC One XL로 교환했고 그때 ElementalX가 탄생했습니다.

ElementalX의 초기 목표는 무엇이었고, 최근 몇 년간 그 목표가 어떻게 바뀌었나요?

ElementalX의 목표는 항상 안정성이나 성능을 저하시키지 않으면서 유용한 하드웨어 기능을 추가하고 사람들이 믿고 작업할 수 있는 제품을 출시하는 것이었습니다. 저는 휴대폰이 안정적이어야 하기 때문에 항상 안정성을 최우선으로 생각합니다. 무작위로 재부팅하거나 카메라가 작동하지 않는 등의 현상이 발생하지 않습니다. 철학은 수년 동안 동일하게 유지되었습니다. 나는 일을 단순하게 유지하고 유용하다고 생각되는 하드웨어 기능을 추가합니다. 깨우기 동작, 고휘도 모드, 진동 조정, 사운드 제어, 더 많은 파일 시스템 지원, 조이스틱 등과 같은 것입니다.

나는 커널을 최신 상태로 유지하고, 설치하기 쉽고, 최대한 광범위하게 호환되도록 열심히 노력합니다. 일부 사용자는 내가 CAF나 업스트림 Linux에서 패치를 많이 추가하지 않는 것에 실망하지만, 나의 주요 목표는 이상한 문제 없이 매우 안정적인 제품을 제공하는 것입니다. 내 사용자 중 상당수는 XDA에 글을 많이 게시하는 사람이 아니라 특정 요구 사항을 충족하는 고급 사용자입니다. 맞춤형 커널 또는 때때로 하드웨어를 만지작거리고 싶지만 하드코어는 아닌 사람들 플래시홀릭. 최신 Android 개발을 모두 따르지 않는 사람들도 ElementalX를 문제 없이 사용할 수 있기를 바랍니다.

업스트림 패치를 실험하는 다른 커널도 많이 있습니다. ElementalX에서는 신중하게 선택된 패치 및 최적화 세트를 사용합니다. Android 이외의 경력에서는 측정하기 어려운 것들을 측정하고 증거를 사용하여 정책을 수립하고 조언을 제공합니다. 나는 커널 개발에도 동일한 원칙을 적용하고 측정 가능한 이점이 없으면 일반적으로 패치를 사용하지 않습니다. EX Kernel Manager의 배터리 모니터가 이에 대한 예입니다. 배터리 조정 및 커널 변경의 효과를 객관적으로 측정할 수 있는 방법을 제공합니다. DevCheck의 플로팅 모니터는 주로 CPU 모니터링을 위해 개발에 사용하는 또 다른 도구입니다. 게임, 비디오 시청, 웹 시청 등 다양한 사용 사례에서의 주파수 및 온도 브라우징.

지난 몇 년간 Android의 변화가 귀하의 작업에 어떤 영향을 미쳤나요?

때로는 많은 보안 변경 사항을 처리하기가 어렵지만 이해합니다. 제가 착각한 것이 아니라면 이제 Android는 Windows보다 더 널리 사용되므로 이를 타겟으로 삼고 있습니다. 나쁜 사람들은 가능한 모든 각도에서 Android 사용자를 이용하려고 합니다.

시스템 파티션의 수정을 방지하는 것은 분명히 장치의 무결성을 보호하는 데 중요합니다. HTC가 2012년이나 2013년에 이 작업을 시작했을 때를 기억합니다. 세상이 끝나는 것처럼 보였습니다. 당시 루트에는 /system에 쓰기, build.prop 편집, 권한 있는 앱 설치, 블로트웨어 및 거의 모든 인기 모드 제거가 필요했습니다. 당시의 많은 사용자 정의에는 프레임워크 수정 및 해독과 같은 작업이 포함되었습니다. 오랫동안 HTC에는 커널 소스가 없었기 때문에 기본 커널에 시스템 쓰기 방지 기능을 비활성화하는 커널 모듈을 만들었고, 이로 인해 개발자로서 처음 유명해졌습니다. 그러나 시간이 지나면서 verity와 같은 보호 기능이 Android의 표준 부분이 되면서 혁신을 강요하고 더 나은 성능을 제공하게 되었습니다. Chainfire의 시스템리스 루트와 같은 솔루션이 있으며 이제 모든 종류의 작업을 수행하는 Magisk가 있습니다. 시스템 없이.

또 다른 큰 문제는 SELinux로, 이로 인해 수많은 앱의 작동이 중단되었습니다. 많은 사용자가 이를 싫어했지만 오늘날에도 허용 모드에서 SELinux를 실행하는 사람들이 있습니다. 이는 매우 나쁜 생각입니다. SELinux는 Android의 가장 중요한 보안 기능이라고 말하고 싶습니다. SELinux의 중요성에 대한 예를 들자면, 제가 처음 Pixel XL을 구입했을 때 사용 가능한 루트가 없었지만 Dirty Cow 익스플로잇이 뉴스에 등장했습니다. 나는 커널 개발을 시작하고 싶었습니다. 이는 루트가 필요한 sysfs 파일을 검색하거나 수정하는 것을 의미합니다. Dirty Cow 개념 증명 중 하나를 컴파일하고 루트로 명령을 실행할 수 있었지만 SELinux로 인해 흥미로운 작업을 수행할 수 없었습니다. SELinux를 허용하도록 boot.img를 수정해야 했습니다. 커널을 수정하지 않고도 전체 액세스 권한을 얻을 수 있었을 수도 있지만, 그렇게 하려면 아주 많은 시간이 걸렸을 것입니다. 말하자면, SELinux 시행을 그대로 놔두는 것이 맬웨어에 대한 주요 방어선입니다. sepolicy-inject를 사용하여 필요에 따라 특정 정책을 변경하는 방법을 알아보세요.

Nougat가 등장했을 때 처음에는 거의 모든 /sys 및 /proc가 사용자 앱에 보이지 않게 되었습니다. 변경 작업을 수행하려면 항상 루트가 필요했지만 갑자기 /sys 및 /proc를 읽으려면 루트가 필요했습니다. 해당 파일 시스템에는 장치를 악용하는 데 사용할 수 있는 정보가 분명히 있으므로 제한 사항을 추가해야 했습니다. 하지만 사용자가 볼 수 있어야 하는 정보도 많이 있습니다. 현재 I/O 스케줄러, GPU 주파수 또는 패널 하드웨어 유형을 보려면 루트가 필요한 이유는 무엇입니까? 이를 처리하기 위해 DevCheck에 많은 변경을 가해야 했고, 많은 사용자들은 Nougat로 업데이트한 후 왜 더 이상 정보를 사용할 수 없는지에 대해 혼란스러워했습니다. 결국 sysfs 경로에 대한 일부 제한 사항이 해제되었습니다.

그 외에도 앱 개발 관점에서 보면 Android에 대한 API 변경 사항 중 대부분이 마음에 듭니다. 비록 이로 인해 앱을 많이 변경해야 하지만 말이죠. 이러한 변화는 일반적으로 더 나은 것입니다.


이번 인터뷰 2부를 확인해보세요!