เคอร์เนล Linux กับ Android Kernel แตกต่างกันอย่างไร?


18

การแก้ไขทำในเคอร์เนล linux เพื่อให้เป็นเคอร์เนล android คืออะไร? จากคำถามนี้ฉันหมายถึงอะไรคือความแตกต่างระหว่างเคอร์เนล linux และ android kernel?


คำตอบ:


7

ความแตกต่างเปลี่ยนจากรุ่นเป็นรุ่น (ทั้ง Linux และ Android) และเคอร์เนลที่แน่นอนจะแตกต่างกันสำหรับแต่ละอุปกรณ์ เคอร์เนลสำหรับ Android เป็นเคอร์เนลลีนุกซ์หลักพร้อมไดรเวอร์เพิ่มเติมสำหรับอุปกรณ์เฉพาะและฟังก์ชั่นเพิ่มเติมอื่น ๆ เช่นการจัดการพลังงานที่เพิ่มขึ้นหรือการรองรับกราฟิกที่เร็วขึ้น

คุณสมบัติหลายอย่างในเคอร์เนล Android จะถูกเพิ่มเข้ามาใน upstream Linux หลังจากชุมชนโอเพ่นซอร์สได้ยอมรับ (และอาจแก้ไข) พวกเขา แต่คุณสมบัติอื่น ๆ ไม่เคยอัปสตรีมเพราะพวกเขาไม่ยอมรับนักพัฒนาเคอร์เนล Linux หรือเพราะพวกเขา ' ใช้ได้เฉพาะกับ Android หรือฮาร์ดแวร์ที่ระบุเท่านั้น


3
ไดรเวอร์ส่วนใหญ่สำหรับฮาร์ดแวร์เฉพาะของ Android นั้นได้รับการยอมรับให้เป็นเคอร์เนลแบบฉีด แต่คุณสมบัติบางอย่างเช่นการล็อกปลุกซึ่งก่อให้เกิดข้อพิพาทครั้งใหญ่เมื่อหลายปีก่อนยังคงเป็นปัญหาอยู่เพราะผู้พัฒนาเคอร์เนล mainline และ android ไม่เห็นด้วยว่าเป็นความคิดที่ดีหรือไม่
โกหกที่

"เคอร์เนลสำหรับ Android เป็นเคอร์เนลลีนุกซ์หลักพร้อมไดรเวอร์เพิ่มเติมสำหรับอุปกรณ์เฉพาะและฟังก์ชั่นเพิ่มเติมอื่น ๆ เช่นการจัดการพลังงานที่เพิ่มขึ้นหรือการรองรับกราฟิกที่เร็วขึ้น" ดังนั้นจึงเป็นไดร์เวอร์ส่วนใหญ่? ไม่มีการเปลี่ยนแปลงรหัสที่มา?
Guerlando OCs

@GuerlandoOCs ฉันไม่แน่ใจว่าสิ่งที่คุณคิดว่าไดรเวอร์คือถ้าไม่มีการเปลี่ยนแปลงซอร์สโค้ด แต่ไม่คำนึงถึง "ฟังก์ชั่นเพิ่มเติมอื่น ๆ " ฉันกล่าวถึงค่อนข้างใหญ่ในวันนี้ มีการเปลี่ยนแปลงซอร์สโค้ดมากมาย
Dan Hulme

@DanHulme เป็นแหล่งแก้ไขแพทช์หรือเพียงแค่รหัสเปลี่ยนด้วยมือ ฉันจะดูสิ่งต่าง ๆ ที่เปลี่ยนแปลงได้อย่างไร ฉันได้อ่านแล้วว่าคุณสามารถแพตช์เคอร์เนล linux ของคุณให้เข้ากันได้กับ Android แต่แพทช์เหล่านั้นอยู่ที่ไหนฉันจะอ่านได้
Guerlando OCs

5

นอกเหนือจากความแตกต่างเฉพาะของอุปกรณ์และการล็อกปลุกที่ Dan Hulme และ Lie Ryan กล่าวถึง Android จะลบคุณสมบัติของ System V IPC (คิวข้อความส่วนของหน่วยความจำที่ใช้ร่วมกันเซมาฟอร์) ที่อาจนำไปสู่การรั่วไหลของทรัพยากร ( http://www.kandroid.org/ndk /docs/system/libc/SYSV-IPC.html ) นี่อาจเป็นเพียงเรื่องของการกำหนดค่าการสร้างเคอร์เนล นอกจากนี้ Android IPC ของทางเลือกที่เรียกว่า Binder มีการสนับสนุนบางอย่างในเคอร์เนลที่ความรู้ของฉันไม่รวมอยู่ในเมล็ด Linux มาตรฐาน


4

ฉันคิดว่าแหล่งที่มาของ Androidนี้เป็นเอกสารที่ดีสำหรับการทำความเข้าใจ

และนี่คือรายการของการเปลี่ยนแปลงที่ทำจากเคอร์เนลฉีดสำหรับ Android เคอร์เนล 4.14

คุณสมบัติที่ใหญ่ที่สุด ได้แก่ :

  • การจัดกำหนดการ Energy Aware 19.8% (เคอร์เนล / กำหนดเวลา)
  • ระบบเครือข่าย 13.8% (สุทธิ / เน็ตฟิลเตอร์)
  • 13.5% Sdcardfs (fs / sdcardfs)
  • 9.4% USB (ไดรเวอร์ / usb)
  • 7.2% SoC (arch / arm64, arch / x86)
  • 6.2% f2fs (fs / f2fs - backport จากอัปสตรีม)
  • 6.1% อินพุต (ไดรเวอร์ / อินพุต / อื่น ๆ )
  • 5.4% FIQ ดีบักเกอร์ (ไดรเวอร์ / การจัดเตรียม / android / fiq_debugger)
  • 3.6% โปรแกรมจำลองปลาทอง (ไดรเวอร์ / แท่น / ปลาทอง)
  • 3.4% ความถูกต้อง (ไดรเวอร์ / md)
  • 11.6% อื่น ๆ

ความแตกต่างจาก LTS

เมื่อเปรียบเทียบกับ LTS (4.14.0) เคอร์เนลทั่วไปของ Android มีการเปลี่ยนแปลง 355 ครั้งการแทรก 32266 ครั้งและการลบ 1546 ครั้ง (ณ เดือนกุมภาพันธ์ 2561)

ป้อนคำอธิบายรูปภาพที่นี่


ฉันไม่เข้าใจว่าทำไมผู้คนถึงลงคะแนน ??? ฉันเขียนคำตอบภายใน 5 วินาทีฉันก็ลงคะแนน !! Nice
chankruze

+1 สำหรับคำตอบของคุณ ไดรฟ์ downvoters โดยดูด
iBug

+1 ของคุณดีที่สุดในหมู่คนอื่น ๆ
Irfan Latif
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.