Linux 커널의 성공적인 포크 또는 리팩터링이 있습니까?

Linux 커널의 성공적인 포크 또는 리팩터링이 있습니까?

Google 검색 쇼이 슬래시 이야기생산하다이 github 저장소는 2016년 이후로 커밋이 없습니다.. 가지다github.com에 22,602개의 포크가 등록되어 있습니다.그러나 이것들은 거의 전부는 아니지만 대부분 개발 분기일 뿐입니다.토발즈/리눅스.

이전에 Linux가 상당히 나빠졌다는 것을 읽은 적이 있습니다. 내 생각에는 적어도 사용자 경험 측면에서 보면 Linux는 10년 전보다 훨씬 더 세련되었습니다. 커널 소스 코드, "와, 이 줄을 이해할 수 없습니다"라는 간략한 내용을 제외하고는 랩톱의 Linux 기능과 관련하여 커널에서 많은 개발이 이루어지고 있다는 것을 알고 있습니다. 어쨌든, 나는 BSD 사용자들이 Linux의 단점에 대해 불평하는 것을 본 적이 있다는 것을 알고 있습니다. vim의 결함을 기반으로 한 vim의 neovim 포크를 고려하면 비슷한 노력이 커널에서도 성과를 거둘 것이라고 생각합니다.

이 문제의 원인은LWN에 대한 이 기사clang을 사용하여 Linux를 컴파일하려는 시도에 대해 토론합니다. 나는 커널이 많은 gcc 관련 단점/특수 기능으로 최적화되어 있다는 것을 읽었으며(링크된 기사는 내 기억에 비해 이러한 기능을 경시하는 것처럼 보이지만) 리팩토링/포킹을 시도한 사람이 있는지 궁금해지기 시작했습니다. 커널을 더 이식성 있게 만들거나 적어도 GNU 환경 외부에서 컴파일 가능하게 만듭니다. 나는 또한 gcc 자체가 서투르고 Linus 자신이 그것을 비판했다는 것도 알고 있습니다.

나는 RMS와 GNU를 싫어하고 GNU 없는 Linux에 관심이 있는 유일한 사람이 아니라는 것을 알고 있습니다. 알아요알파인 리눅스gnu 도구는 필요하지 않지만 커널은 여전히 ​​gcc로 컴파일되어 있지 않습니까? 대체 툴체인 및 사용자 영역 소프트웨어에 대한 참조가 많이 있지만 특히 커널과 gcc/gnu 종속성을 제거하는 포크가 있는지 궁금합니다. 제목에 대한 부가적인 질문이 있습니다. 혼자 물어보기엔 아깝다.

답변1

특히 커널과 gcc/gnu 종속성을 제거하는 포크가 있는지 궁금합니다.

누구도 clang과 Linux를 동기화할 수 없습니다.그런 다음 장기 포크로 보관하십시오.. 특히 메인 스토리에 대한 관심과 의지가 너무 높을 때는 더욱 그렇습니다. ~하지 않는 한이는 여러분이 찾을 수 있는 대규모 가시 프로젝트의 작은 부분일 뿐입니다. (당신처럼...).

이것을 제목에 대한 부수적인 질문이라고 생각하십시오. 제 생각에는 제목 자체를 묻는 것은 낭비입니다.

기계적 인조 인간, 첫 번째 답변에서 언급했듯이.

일부 부분이 합쳐져서 원본만큼 나쁘지 않을 수도 있습니다. 나는 이것에 대해 잘 모른다. Mainline은 확실히 BIG.little과 같은 일부 ARM CPU 관련 항목을 처리할 수 있습니다. Android는 메인라인 릴리스를 기반으로 지속적으로 재개발되고 있습니다. Google도 크게 뒤처지지 않을 것입니다.

그러나 이것은 오랫동안 실행되는 포크입니다. "업스트림 우선" 규칙을 따르지 않습니다. 그들은 많은 하드웨어 지원을 제공합니다.

제 생각에는 "Android"와 "Google"은 Linux의 포크임을 정당화하는 데 필요한 리소스 수준을 나타내는 좋은 지표입니다.

Android에는 실행되는 장치와 함께 제공되는 커널에 트리 외부 코드가 대량(대개 수백만 줄) 포함되어 있기 때문에 문제가 있습니다. --https://lwn.net/Articles/738225/


그리고 RHEL 커널은이름이 끔찍해요예를 들어 2018년의 경우 2.6.32-754입니다. 이는 단지 보안 업데이트가 아니라 2.6.32와 같은 기본 커널 버전에 더 가까운 동작을 제공하는 것을 목표로 하면서 일부 새로운 하드웨어에 대한 지원을 포함할 것입니다. 나는 포크가 RH가 이를 유지하는 데 필요한 리소스를 설명하는 데 적절한 단어라고 생각합니다.

다양한 최신 하드웨어에서 잘 실행되기 위해서는 비용이 높기 때문에 가치가 있습니다. 이것이 Linux 커널 프로젝트의 전부이며 두 분기를 모두 이해하는 데 가장 중요한 요소라고 말하고 싶습니다.

openhub.net에서 vim과 Linux 코드 크기를 비교하고 Linux가 크기의 20배 정도밖에 되지 않는다고 생각할 수도 있습니다. 그러나 커밋 수의 차이는 훨씬 더 큽니다. 이탈률은 상당히 큽니다.

또한 제대로 하기가 더 어려운 것은 커널 코드뿐만 아니라... 사실이지만... 하드웨어 지원도 마찬가지입니다. 겉으로는 무해해 보이는 리팩토링으로 인해 일부 장치가 손상되는 경우 문제를 디버깅하고 해결하려면 해당 특정 장치에 액세스해야 합니다.


하드웨어 지원이 생각나네요 https://en.wikipedia.org/wiki/Embeddable_Linux_Kernel_Subset:-피.

서버 가상화의 세계에서는 다양한 하드웨어를 따라잡을 필요가 없기 때문에 이에 최적화된 분기가 있을 것이라고 생각할 수도 있습니다. 하지만 좋은 예가 생각나지 않네요. "unikernels"를 찾아보면 Linux 기반이 아닌 것이 몇 가지 있는 것 같습니다.


리눅스-rt/PREEMPT_RT또한 트리 외부 패치 세트로 간주됩니다. 연속된 메인라인 버전을 기반으로 재구축된 패치 세트입니다. 200KB(압축)의 전문 코드는 훌륭한 패치 세트입니다. 적어도 한 지점에서는 일부 덩어리가 병합되었습니다.

답변2

안드로이드는 리눅스의 포크이다. 리누스에 따르면. https://www.youtube.com/watch?v=duDC_u4ydVo 그다지 도움이 되지는 않을 것 같습니다. 아마도 데스크톱용을 찾고 계실 것입니다. Android는 그렇지 않습니다.

관련 정보