กระพริบเคอร์เนลของอุปกรณ์ Android ภาพรวมของคุณสมบัติของเคอร์เนล Android 3.10 65 เคอร์เนลเวอร์ชัน

ในเย็นวันอาทิตย์ Linus Torvalds ซึ่งเป็นผู้ปกครองของ Linux และผู้พัฒนาเคอร์เนลระบบปฏิบัติการประกาศเปิดตัวเคอร์เนล Linux 3.10 เวอร์ชันใหม่หลังจากทำงานสองเดือน

นักพัฒนาเองกล่าวว่าแกนกลางนี้กลายเป็นนวัตกรรมที่ใหญ่ที่สุดในช่วงไม่กี่ปีที่ผ่านมา

Linus ยอมรับว่าในตอนแรกเขาตั้งใจจะปล่อยตัวผู้มีสิทธิ์ออกตัวอีกราย แต่หลังจากครุ่นคิดแล้ว เขาก็เอนเอียงไปทางการปล่อยตัวสุดท้ายในอันดับ 3.10 ทันที Torvalds ยังตั้งข้อสังเกตในข้อความของเขาว่าเคอร์เนลใหม่เช่นเวอร์ชัน 3.9 พร้อมสำหรับการใช้งานทุกวันอย่างสมบูรณ์

นอกจากนี้ในการประกาศเคอร์เนลรุ่น RC Linus Torvalds เขียนว่าก่อนหน้านี้เขามักจะรวมรายชื่อผู้ที่ส่งรหัสบางส่วน แต่คราวนี้รายการนี้จะใหญ่มากจนไม่สามารถ ให้ครบในใบเดียว ส่งไปรษณีย์

รายการการเปลี่ยนแปลงที่สำคัญในเคอร์เนล 3.10:

  • ขณะนี้ มีความเป็นไปได้ที่จะป้องกันไม่ให้สคริปต์ทำงานเป็นโปรแกรม - ฟังก์ชันสำหรับการเรียกใช้สคริปต์ที่มีเส้นทางไปยังล่ามในส่วนหัว "#!" สามารถคอมไพล์เป็นโมดูลเคอร์เนลได้แล้ว
  • ระบบ Bcache ที่ Google พัฒนาและใช้งานนั้นถูกรวมเข้าด้วยกัน Bcache อนุญาตให้คุณแคชการเข้าถึงฮาร์ดไดรฟ์ที่ช้าบนไดรฟ์ SSD ที่รวดเร็ว การแคชจะดำเนินการที่ระดับอุปกรณ์บล็อก - และสิ่งนี้ช่วยให้คุณเข้าถึงไดรฟ์ได้เร็วขึ้นโดยไม่คำนึงถึงระบบไฟล์ที่ใช้ในอุปกรณ์
  • เคอร์เนลสามารถคอมไพล์ได้ด้วยคอมไพเลอร์ Clang ด้วยแพตช์ที่เตรียมโดยโปรเจ็กต์ LLVMLinux;
  • ระบบควบคุมแบบไดนามิกสำหรับการสร้างการขัดจังหวะของตัวจับเวลาได้ปรากฏขึ้น ตอนนี้ ขึ้นอยู่กับสถานะปัจจุบัน คุณสามารถเปลี่ยนอินเตอร์รัปต์ในช่วงจากหลายพันขีดต่อวินาทีเป็นหนึ่งอินเทอร์รัปต์ต่อวินาที - ซึ่งช่วยให้คุณลดภาระงานบน CPU เมื่อประมวลผลการขัดจังหวะในกรณีที่ระบบไม่ทำงาน ปัจจุบันคุณลักษณะนี้ใช้สำหรับระบบเรียลไทม์และ HPC (การประมวลผลประสิทธิภาพสูง) แต่ในเคอร์เนลรุ่นต่อๆ ไป จะมีการเปิดใช้สำหรับระบบเดสก์ท็อปด้วย
  • ตอนนี้ เป็นไปได้ที่จะสร้างเหตุการณ์ที่แจ้งแอปพลิเคชันเกี่ยวกับการใกล้หมดหน่วยความจำที่พร้อมใช้งานสำหรับกระบวนการ/ระบบ (ใน cgroups);
  • การทำโปรไฟล์การเข้าถึงหน่วยความจำพร้อมใช้งานสำหรับคำสั่ง perf;
  • เพิ่มการรองรับโปรโตคอล RDMA (iSER) ให้กับระบบย่อย iSCSI
  • มีไดรเวอร์ "ซิงค์" ใหม่ (ทดลอง) ได้รับการพัฒนาภายในแพลตฟอร์ม Android และใช้สำหรับซิงโครไนซ์ระหว่างไดรเวอร์อื่น
  • ไดรเวอร์การ์ดแสดงผลเสมือน QXL ถูกรวมเข้าด้วยกัน (ใช้ในระบบเวอร์ชวลไลเซชันสำหรับเอาต์พุตกราฟิกแบบเร่งความเร็วโดยใช้โปรโตคอล SPICE)
  • คุณสมบัติการจัดการพลังงานใหม่ที่นำมาใช้กับโปรเซสเซอร์ AMD 16h (Jaguar) ได้รับการสนับสนุนแล้ว
  • เพิ่มการรองรับการถอดรหัสวิดีโอแบบเร่งความเร็วโดยใช้ตัวถอดรหัส UVD ของฮาร์ดแวร์ที่ติดตั้งใน GPU AMD รุ่นใหม่ใน Radeon DRM
  • ไดรเวอร์สำหรับอะแดปเตอร์วิดีโอเสมือนของ Microsoft Hyper-V ปรากฏขึ้น (นอกจากนี้ยังมีการปรับปรุงในการทำงานของ Hyper-V โดยรวม);
  • การทำงานของฟังก์ชันการเข้ารหัส (sha256, sha512, ปลาปักเป้า, ปลาทู, งูและดอกเคมีเลีย) ได้รับการปรับให้เหมาะสมโดยใช้คำสั่ง AVX/AVX2 และ SSE

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

เคอร์เนลของระบบปฏิบัติการ Android และเฟิร์มแวร์

แกนหลักของอุปกรณ์พกพาคืออะไร?

เคอร์เนลระบบปฏิบัติการเป็นพื้นฐานของซอฟต์แวร์ที่จัดการฮาร์ดแวร์ของอุปกรณ์ พารามิเตอร์หลักของแกดเจ็ตใด ๆ ขึ้นอยู่กับมัน ควรสังเกตว่าประกอบด้วยสามองค์ประกอบที่สัมพันธ์กัน ได้แก่ เคอร์เนล Linux เครื่องแนวตั้ง Dalvik และบริการและไลบรารีระดับต่ำต่างๆ หากเรากำลังพูดถึงเฟิร์มแวร์แบบกำหนดเอง จะได้รับผลกระทบเพียงสององค์ประกอบเท่านั้น ซึ่งช่วยให้คุณสามารถเพิ่มบริการระบบใหม่ ปรับพารามิเตอร์ที่มีอยู่ให้เหมาะสม และเปลี่ยนเชลล์กราฟิกได้

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

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

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

เฟิร์มแวร์ Gadget ผ่าน Fastboot

คุณสามารถแฟลชอุปกรณ์ Android ของคุณโดยใช้ Fastboot แต่ก่อนอื่นคุณต้องติดตั้งยูทิลิตี้บนอุปกรณ์ของคุณ โปรแกรมนี้มีสองเวอร์ชัน ประการแรกเกี่ยวข้องกับการดาวน์โหลด Fastboot ร่วมกับโปรแกรม Android SDK อย่างเป็นทางการ รุ่นที่สองเกี่ยวข้องกับการดาวน์โหลดยูทิลิตี้แยกต่างหาก

เราแนะนำให้ตรวจสอบว่าอุปกรณ์มือถือของคุณเห็นแล็ปท็อปหรือคอมพิวเตอร์หรือไม่ ในการทำเช่นนี้ คุณต้องดำเนินการ หลังจากดาวน์โหลดและติดตั้งบนคอมพิวเตอร์ แล็ปท็อปที่ทำงานบนระบบปฏิบัติการ Windows ยูทิลิตี้ Fastboot และเชื่อมต่อสมาร์ทโฟน คุณต้องเปิดบรรทัดคำสั่ง ในการดำเนินการนี้ ให้เปิดการค้นหา ใน Windows 8 สิ่งที่คุณต้องทำคือชี้เคอร์เซอร์ของเมาส์ไปทางด้านขวาของหน้าจอและเลือกส่วนที่เหมาะสม ในการค้นหาคุณต้องป้อน "cmd" หลังจากนั้นบรรทัดคำสั่งจะปรากฏขึ้นต่อหน้าคุณ อุปกรณ์ควรเข้าสู่โหมดเฟิร์มแวร์ ถัดไป ป้อนคำสั่งที่จะทดสอบการโต้ตอบระหว่างคอมพิวเตอร์และอุปกรณ์มือถือ:

อุปกรณ์ fastboot

หากทุกอย่างใช้งานได้ คุณต้องโหลดเวอร์ชันที่ถูกต้องของเฟิร์มแวร์เคอร์เนล boot.img เราไม่แนะนำให้ทำการแฟลชแกนกลางของเฟิร์มแวร์ดั้งเดิม เนื่องจากอาจทำให้เกิดปัญหาในสมาร์ทโฟนได้ ไฟล์ควรถูกบันทึกลงในพาร์ติชั่นที่สร้างไว้ล่วงหน้าบนไดรฟ์ C ชื่อ "Android" หลังจากนั้น คุณต้องบูตอุปกรณ์มือถือของคุณเข้าสู่ Fastboot และเชื่อมต่อกับคอมพิวเตอร์ของคุณ ข้อความ "Fastboot USB" จะปรากฏขึ้นบนหน้าจอ

  • cd C:\Android.
  • บูตแฟลช fastboot boot.img
  • fastboot ลบแคช
  • รีบูตเครื่องอย่างรวดเร็ว

สิ่งสำคัญคือต้องป้อนทุกคำให้ถูกต้อง โดยคำนึงถึงตัวพิมพ์และตัวพิมพ์ใหญ่ คำสั่ง cd เปิดโฟลเดอร์ที่ต้องการ ซึ่งมีไฟล์ที่จำเป็น หลังจากนั้นจะเกิดการกะพริบ คำสั่ง fastboot ลบแคชจะลบพาร์ติชั่นแคช คำสั่งสุดท้าย - รีบูตเครื่องอย่างรวดเร็วจะรีบูตอุปกรณ์จากโหมดเฟิร์มแวร์เป็นโหมดปกติ หากคุณทำตามขั้นตอนเหล่านี้อย่างถูกต้อง กระบวนการก็จะสำเร็จ

เฟิร์มแวร์ที่ใช้ ClockworkMod Recovery

ClockworkMod Recovery (หรือเรียกสั้นๆ ว่า CWM) เป็นระบบการกู้คืนที่ใช้แทน Recovery ดั้งเดิมจากโรงงาน CWM อนุญาตให้คุณติดตั้งเฟิร์มแวร์ใหม่บนอุปกรณ์มือถือ แฟลชเคอร์เนล ไฟล์สำรอง และกู้คืนเชลล์ ระบบดังกล่าวสามารถทำงานกับไฟล์อัพเดตเฟิร์มแวร์ที่มีรูปแบบ zip ติดตั้ง ClockworkMod ใน แทนที่การกู้คืนจากโรงงาน ในการเปิดใช้ CWM คุณจำเป็นต้องทราบคีย์ผสมที่เหมาะสมกับแกดเจ็ตของคุณ ในกรณีส่วนใหญ่ นี่คือการรวมกันของปุ่มลดระดับเสียงและปุ่มเปิดเครื่อง ซึ่งควรกดในระหว่างการบู๊ตอุปกรณ์

หากต้องการแฟลชเคอร์เนล ให้ดาวน์โหลดไฟล์เก็บถาวรที่มีนามสกุล zip จะต้องมีโฟลเดอร์ META-INF ถัดมา มีสองตัวเลือก ในกรณีแรก คุณต้องระบุไฟล์เฟิร์มแวร์ ตัวเลือกที่สองเกี่ยวข้องกับการวางไฟล์เฟิร์มแวร์ในโฟลเดอร์ / sdcard หลังจากนั้น คุณควรเปิดใช้งานการกู้คืน ClockworkMod ค้นหาใช้การอัปเดตจากฟังก์ชัน sdcard ที่นั่น และระบุไฟล์ที่ต้องการ

ควรสังเกตว่าเมนู ClockworkMod Recovery สะดวกและเข้าใจง่ายสำหรับผู้ใช้ส่วนใหญ่ นอกจากระบบการกู้คืนสำหรับเฟิร์มแวร์แล้ว คุณสามารถใช้ TWRP Recovery ได้ เครื่องมือนี้สะดวกและเป็นที่นิยมในหมู่ผู้ใช้ Android สิ่งสำคัญคือการเลือกไฟล์เฟิร์มแวร์ที่ถูกต้อง

การกะพริบเคอร์เนล Android เป็นขั้นตอนที่เราไม่แนะนำให้ใช้หากคุณพอใจกับการทำงานของแกดเจ็ตอย่างสมบูรณ์ การกระทำดังกล่าวเกิดจากความปรารถนาที่จะปรับปรุงประสิทธิภาพของโทรศัพท์มือถือหรือแท็บเล็ต ผู้ใช้ขั้นสูงสามารถตั้งค่าพารามิเตอร์ในระดับที่ต่ำกว่าได้ แต่หากไม่มีความรู้และเหตุผลเชิงวัตถุประสงค์ เป็นการดีกว่าที่จะไม่เปลี่ยนส่วนซอฟต์แวร์ของอุปกรณ์มือถือ เนื่องจากสิ่งนี้เกี่ยวข้องกับความเสี่ยงและความล้มเหลวในการทำงาน

“ และฉัน ... ล้างคาร์บูเรเตอร์!”
เรื่องตลก

บทนำ

ในโรงเรียนอนุบาล คนที่มีความคิดเหมือนกันและฉันผ่าตั๊กแตนโดยหวังว่าจะเข้าใจโครงสร้างของพวกเขา เครื่องรับวิทยุ "รัสเซีย" ถูกบัดกรีที่โรงเรียน ที่สถาบันมันเป็นจุดเปลี่ยนของรถยนต์ซึ่งมีการจัดเรียงถั่วใหม่หลายครั้ง ความสนใจเปลี่ยนไป แต่บางครั้งความปรารถนาที่จะ "แยกส่วน" ก็ตื่นขึ้น และวันนี้ก็มุ่งไปที่ Android

คุณได้รับความช่วยเหลือจากแหล่งที่มาของ Android กี่ครั้งแล้ว ฉันไม่สามารถนับได้อีกต่อไป Android เป็นโครงการโอเพ่นซอร์ส แต่น่าเสียดายที่เรามีเพียงความสามารถในการอ่าน การแก้ไขโค้ด Android โดยไม่ต้องเป็นพนักงานของ Google แทบจะเป็นไปไม่ได้เลย มาไว้ทุกข์ในขณะนี้และดาวน์โหลดที่เก็บ วิธีการทำสิ่งนี้อธิบายไว้อย่างสมบูรณ์อย่างเป็นทางการ


สถาปัตยกรรมทั่วไป

สถาปัตยกรรมของ Android สามารถแสดงแผนผังได้ดังนี้:

คอมพิวเตอร์เดสก์ท็อปและแล็ปท็อปมีระบบโหมดพลังงานที่เป็นที่ยอมรับ (โปรเซสเซอร์ x86 มีหลายโหมด): คอมพิวเตอร์ทำงาน "ด้วยความเร็วเต็มที่" เมื่อมีบางอย่างทำ และเข้าสู่โหมดประหยัดพลังงานเมื่อระบบไม่ได้ใช้งาน การเข้าสู่โหมด "สลีป" เกิดขึ้นได้หลังจากไม่มีการใช้งานเป็นเวลานานพอสมควร หรือดำเนินการด้วยตนเอง เช่น เมื่อปิดฝาแล็ปท็อป

บนโทรศัพท์ต้องใช้กลไกที่แตกต่างกัน: สถานะหลักของระบบคือ "โหมดไฮเบอร์เนต" การออกจากระบบจะดำเนินการในกรณีที่จำเป็นเท่านั้น ดังนั้นระบบสามารถเข้าสู่โหมดสลีปได้แม้ว่าบางแอพพลิเคชั่นจะทำงานอยู่ก็ตาม ใน Android กลไก Wakelock ถูกนำมาใช้: หากแอปพลิเคชัน (หรือไดรเวอร์) กำลังทำสิ่งที่สำคัญที่ควรบรรลุข้อสรุปเชิงตรรกะ มันจะ "จับ" เวคล็อกเพื่อป้องกันไม่ให้อุปกรณ์เข้าสู่โหมดสลีป

ความพยายามที่จะย้ายกลไก wakelock ไปยังเคอร์เนลทำให้เกิดการต่อต้านจากนักพัฒนาจำนวนมาก โปรแกรมเมอร์ Android แก้ปัญหาเฉพาะ ซึ่งวิธีแก้ปัญหาคือกลไกบางอย่าง เงื่อนไขของงานนั้นแคบมาก แพลตฟอร์มเป้าหมายคือ ARM ดังนั้นจึงใช้คุณลักษณะต่างๆ: โปรเซสเซอร์ ARM ในขั้นต้นถือว่ามีการเปลี่ยนแปลงบ่อยครั้งในโหมดสลีปและปลุก ซึ่งแตกต่างจาก x86 ใน Android แอปพลิเคชันจะสื่อสารกับระบบการจัดการพลังงานผ่าน PowerManager แต่แอปพลิเคชันไคลเอนต์ Linux ล่ะ

นักพัฒนา Android ไม่ได้พยายามหาวิธีแก้ปัญหาทั่วไป "สำหรับอนาคต" ซึ่งจะไหลเข้าสู่เคอร์เนลหลักโดยไม่มีปัญหาใดๆ ไม่ได้ปรึกษาชุมชนเคอร์เนลของ Linux เกี่ยวกับปัญหานี้ พวกเขาสามารถตำหนิเรื่องนี้ได้หรือไม่? แม้จะมีปัญหาและการอภิปรายทั้งหมด ตามที่กล่าวไว้ข้างต้น API ก็ปรากฏในแกนกลางด้วยฟังก์ชันการทำงานอัตโนมัติเหมือนกัน

โปรแกรมเมอร์แอปพลิเคชัน Android แทบไม่ต้องจัดการกับ Wakelock เนื่องจากแพลตฟอร์มและไดรเวอร์จัดการภาระหน้าที่ที่ได้รับมอบหมาย โดยคำนึงถึงโหมด "สลีป" อย่างไรก็ตาม PowerManager ที่คุ้นเคยจะช่วยแทรกแซงในกระบวนการนี้ อย่างไรก็ตาม ผู้เขียนมีสถานการณ์เดียวเท่านั้น: เพื่อป้องกันไม่ให้โทรศัพท์หลับเมื่อเริ่มบริการจาก BroadcastReceiver ซึ่งแก้ไขโดยคลาสเสริมจาก Android Support Library WakefulBroadcastReceiver

นักฆ่าหน่วยความจำต่ำ

เคอร์เนล Linux มาตรฐานมี Out of Memory Killer ซึ่งกำหนดกระบวนการที่จะฆ่าตามพารามิเตอร์ badness:

Badness_for_task = total_vm_for_task / (sqrt(cpu_time_in_seconds) *
sqrt(sqrt(cpu_time_in_minutes)))

ดังนั้น ยิ่งกระบวนการใช้หน่วยความจำมากเท่าใด และยิ่งใช้หน่วยความจำน้อยลงเท่าใด โชคก็จะยิ่งน้อยลงเท่านั้น

แผนภาพแสดงระบบบันทึกทั่วไปของ Android ไดรเวอร์การบันทึกให้การเข้าถึงแต่ละบัฟเฟอร์ผ่าน /dev/log/* แอปพลิเคชันไม่สามารถเข้าถึงได้โดยตรง แต่ผ่านไลบรารี liblog ไลบรารี liblog สื่อสารกับคลาส Log , Slog และ EventLog คำสั่ง adb logcat แสดงเนื้อหาของบัฟเฟอร์ "main"

บทสรุป

ในบันทึกนี้ เราได้ตรวจสอบคุณลักษณะบางอย่างของ Android อย่างสั้นๆ ว่าเป็นระบบ Linux ส่วนอื่นๆ บางส่วนไม่มีวงเล็บ (pmem, คอนโซล RAM ฯลฯ) รวมถึงส่วนสำคัญของแพลตฟอร์มโดยรวม เช่น System Service กระบวนการเริ่มต้นระบบ และอื่นๆ หากหัวข้อนี้เป็นที่สนใจ เราจะพิจารณาในบทความต่อไปนี้

เราได้เขียนเกี่ยวกับเฟิร์มแวร์ที่กำหนดเอง แอปพลิเคชันรูท และเมนูการบูตทางเลือกมากกว่าหนึ่งครั้ง ทั้งหมดนี้เป็นหัวข้อมาตรฐานในชุมชนแฮ็กเกอร์ Android อย่างไรก็ตาม นอกเหนือจากทั้งหมดที่กล่าวมา ยังมี "เคอร์เนลแบบกำหนดเอง" อีกด้วย ซึ่งสามารถให้ความเป็นไปได้เกือบไม่จำกัดในการจัดการสมาร์ทโฟนและฮาร์ดแวร์ในระดับต่ำสุด ระดับ. ในบทความนี้ ผมจะบอกคุณว่ามันคืออะไร ทำไมคุณถึงต้องการมัน และวิธีการเลือกเคอร์เนลที่กำหนดเองที่เหมาะสม

เคอร์เนลที่กำหนดเอง?

เคอร์เนลที่กำหนดเองคืออะไร? อย่างที่เราทราบกันดีว่า Android เป็นวงกลมที่ประกอบด้วยเลเยอร์พื้นฐานสามชั้น: เคอร์เนล Linux ชุดของไลบรารีและบริการระดับต่ำ และเครื่องเสมือน Dalvik ที่ด้านบนสุดของเชลล์กราฟิกทำงาน เครื่องมือระดับสูง และ บริการและแอพพลิเคชั่นเกือบทั้งหมดที่ติดตั้งจากตลาด ผู้สร้าง ROM แบบกำหนดเองทางเลือกส่วนใหญ่มักจะทำงานกับสองชั้นบนสุดเท่านั้น เพิ่มฟังก์ชันให้กับเชลล์กราฟิก (เช่น ปุ่มในม่าน) เปลี่ยนแปลง (เอ็นจิ้นของธีมใน CyanogenMod) รวมถึงเพิ่มบริการระบบใหม่ (อีควอไลเซอร์ ใน CyanogenMod) และเพิ่มประสิทธิภาพที่มีอยู่

ผู้เขียนเฟิร์มแวร์ยอดนิยมยังทำการเปลี่ยนแปลงกับเคอร์เนล Linux เท่าที่จะทำได้: พวกเขาปรับให้เหมาะสม (สร้างด้วยแฟล็กการเพิ่มประสิทธิภาพคอมไพเลอร์ที่ก้าวร้าวมากขึ้น) รวมถึงฟังก์ชันใหม่ (เช่น รองรับการแชร์ Windows) และทำการเปลี่ยนแปลงอื่น ๆ เช่น ความสามารถในการเพิ่มความถี่โปรเซสเซอร์ให้สูงกว่าความถี่ที่ผู้ผลิตให้มา บ่อยครั้ง ทั้งหมดนี้ยังคงอยู่เบื้องหลัง และผู้ใช้เฟิร์มแวร์แบบกำหนดเองจำนวนมากไม่ได้รับรู้ถึงคุณสมบัติเหล่านี้ โดยเฉพาะอย่างยิ่งเนื่องจาก CyanogenMod เดียวกันนั้นมาพร้อมกับเคอร์เนลแบบกำหนดเองสำหรับอุปกรณ์ที่จำกัดซึ่งทั้งซอร์สโค้ดของเคอร์เนลดั้งเดิม และสามารถเปลี่ยนทดแทนได้ ตัวอย่างเช่น เฟิร์มแวร์ CyanogenMod เกือบทั้งหมดสำหรับสมาร์ทโฟน Motorola ใช้เคอร์เนลมาตรฐาน - เป็นไปไม่ได้ที่จะแทนที่ด้วยเฟิร์มแวร์ของคุณเองเนื่องจากการป้องกันที่เจาะไม่ได้ของโปรแกรมโหลดบูต

อย่างไรก็ตาม เคอร์เนลในสมาร์ทโฟนที่มีตัวปลดล็อกโปรแกรมโหลดบูตสามารถเปลี่ยนแยกต่างหากจากเฟิร์มแวร์หลักได้ และไม่เพียงแค่แทนที่ แต่ติดตั้งเคอร์เนลที่มีฟังก์ชันต่างๆ มากมายที่ต้องใช้ความรู้ด้านเทคนิคในการจัดการ ดังนั้นจึงมักไม่ได้สร้างไว้ในเคอร์เนลของเฟิร์มแวร์ยอดนิยม เช่น CyanogenMod, AOKP และ MIUI ในบรรดาคุณสมบัติเหล่านี้ คุณจะพบการรองรับความถี่โปรเซสเซอร์สูง การควบคุมแกมมาของหน้าจอ โหมดประหยัดพลังงาน ตัวจัดการพลังงานที่มีประสิทธิภาพสูง และคุณสมบัติอื่นๆ อีกจำนวนมาก

ในบทความนี้ เราจะพูดถึงสิ่งที่ผู้สร้างเคอร์เนลแบบกำหนดเองสามารถเสนอให้เรา พิจารณาเคอร์เนลหลักแบบกำหนดเองสำหรับอุปกรณ์ต่าง ๆ และพยายามติดตั้งเคอร์เนลโดยไม่คำนึงถึงเฟิร์มแวร์หลัก และตรวจสอบทุกอย่างบนสกินของเราเอง ดังนั้นนักพัฒนาของเมล็ดทางเลือกมักจะเสนออะไร?

เครื่องควบคุมการจราจรอัจฉริยะ

OMAP35XX SoC ที่ใช้ใน Galaxy S II และ Galaxy Nexus มีฟังก์ชัน SmartReflex ที่ทำหน้าที่เป็นระบบปรับแรงดันไฟฟ้าอัจฉริยะเมื่อโหลดบนโปรเซสเซอร์เปลี่ยนแปลง อันที่จริง ผู้ใช้ไม่จำเป็นต้องปรับแรงดันไฟฟ้าแบบละเอียด


การเพิ่มประสิทธิภาพ

บ่อยครั้ง จุดประสงค์หลักของการสร้างเคอร์เนลที่กำหนดเองคือการเพิ่มประสิทธิภาพ โดยปกติ ผู้จำหน่ายเทคโนโลยีมือถือพยายามที่จะรักษาสมดุลระหว่างประสิทธิภาพและความเสถียร ดังนั้นแม้แต่เทคนิคการเพิ่มประสิทธิภาพที่ดีที่สามารถเพิ่มความเร็วของอุปกรณ์ได้อย่างมากก็อาจถูกปฏิเสธโดยผู้ผลิตเพียงเพราะว่าหลังจากแอปพลิเคชันของพวกเขา แอปพลิเคชันบางตัวเริ่มขัดข้อง ทุก ๆ การเปิดตัวครั้งที่สิบ แน่นอนว่าเรื่องเล็ก ๆ น้อย ๆ ดังกล่าวไม่ได้รบกวนผู้ที่ชื่นชอบและหลายคนพร้อมที่จะใช้ตัวเลือกคอมไพเลอร์อัลกอริธึมการประหยัดพลังงานไปยังแกนหลักของแอสเซมบลีของตัวเองและเพิ่มความถี่โปรเซสเซอร์ให้สูงที่สุดเท่าที่อุปกรณ์จะทนได้ ในบรรดาเทคนิคการเพิ่มประสิทธิภาพทั้งหมด มีสี่วิธีที่ใช้บ่อยที่สุด:



การเพิ่มประสิทธิภาพอีกประเภทหนึ่ง: การเปลี่ยนตัวกำหนดตารางเวลา I/O เริ่มต้น สถานการณ์ในฟิลด์นี้น่าสนใจยิ่งขึ้น เนื่องจากแทนที่จะเข้าใจว่าตัวกำหนดตารางเวลาทำงานอย่างไร ตัวสร้างเคอร์เนลบางตัวเพียงแค่อ่านเอกสารบนตัวกำหนดตารางเวลา Linux I / O บนเว็บและสรุปผล ในหมู่ผู้ใช้ แนวทางนี้แพร่หลายยิ่งขึ้นไปอีก อันที่จริง ตัวกำหนดตารางเวลา Linux ที่ทรงพลังและชาญฉลาดเกือบทั้งหมดนั้นไม่เหมาะกับ Android โดยสิ้นเชิง: มันถูกออกแบบมาสำหรับใช้กับที่เก็บข้อมูลเชิงกล ซึ่งความเร็วในการเข้าถึงข้อมูลจะแตกต่างกันไปตามตำแหน่งของส่วนหัว ตัวจัดกำหนดการใช้รูปแบบการรวมคิวรีที่แตกต่างกันขึ้นอยู่กับตำแหน่งทางกายภาพของข้อมูล ดังนั้นคำขอข้อมูลที่ใกล้กับตำแหน่งส่วนหัวปัจจุบันจะได้รับลำดับความสำคัญสูงกว่า สิ่งนี้ไม่สมเหตุสมผลอย่างสมบูรณ์ในกรณีของหน่วยความจำโซลิดสเตต ซึ่งรับประกันความเร็วในการเข้าถึงที่เท่ากันสำหรับเซลล์ทั้งหมด นักวางแผนขั้นสูงจะทำอันตรายมากกว่าผลดีบนสมาร์ทโฟน และผู้ที่งุ่มง่ามและเชื่องช้าที่สุดจะแสดงผลลัพธ์ที่ดีที่สุด Linux มีตัวกำหนดตารางเวลาสามตัว:

  • Noop (ไม่มีการดำเนินการ)- ที่เรียกว่า non-scheduler คิวคำขอ FIFO อย่างง่าย คำขอแรกจะได้รับการประมวลผลก่อน คำขอที่สองเป็นลำดับต่อไป เหมาะอย่างยิ่งสำหรับหน่วยความจำโซลิดสเตตและช่วยให้คุณจัดลำดับความสำคัญของแอปพลิเคชันสำหรับการเข้าถึงไดรฟ์ได้อย่างเป็นธรรม ข้อดีเพิ่มเติม: โหลดโปรเซสเซอร์ต่ำเนื่องจากหลักการทำงานที่ง่ายมาก ลบ: ไม่มีการพิจารณาเฉพาะของอุปกรณ์ซึ่งอาจทำให้ประสิทธิภาพการทำงานล้มเหลว
  • SIO (I/O แบบธรรมดา)- อะนาล็อกของตัวกำหนดตารางเวลา Deadline โดยไม่คำนึงถึงความใกล้ชิดของเซกเตอร์ซึ่งกันและกันซึ่งได้รับการออกแบบมาโดยเฉพาะสำหรับหน่วยความจำโซลิดสเตต ไฮไลท์หลักสองประการ: ลำดับความสำคัญของการดำเนินการอ่านมากกว่าการดำเนินการเขียน และการจัดกลุ่มของการดำเนินการตามกระบวนการด้วยการจัดสรรไทม์สไลซ์สำหรับแต่ละกระบวนการเพื่อดำเนินการ ในสมาร์ทโฟนที่ความเร็วของแอปพลิเคชั่นปัจจุบันและความเด่นของการอ่านมากกว่าเขียนมีความสำคัญ มันแสดงให้เห็นประสิทธิภาพที่ดีมาก พร้อมใช้งานใน Leankernel, เคอร์เนล Matr1x สำหรับ Nexus 4 และ SiyahKernel
  • ROW (อ่านทับเขียน)เป็นตัวกำหนดตารางเวลาที่ออกแบบมาโดยเฉพาะสำหรับอุปกรณ์พกพาและเพิ่มลงในคอร์เมื่อไม่กี่เดือนที่ผ่านมา ความท้าทายหลัก: การประมวลผลคำขออ่านที่มีลำดับความสำคัญสูง แต่การกระจายเวลาสำหรับคำขอเขียนอย่างยุติธรรม ถือว่าตัวจัดกำหนดการ NAND ที่ดีที่สุดที่มีอยู่ในปัจจุบัน โดยค่าเริ่มต้นใน Leankernel และ Matr1x

เป็นเรื่องที่ควรค่าแก่การกล่าวว่าเฟิร์มแวร์มาตรฐานเกือบทั้งหมดและครึ่งหนึ่งของเฟิร์มแวร์ที่กำหนดเองยังคงใช้เคอร์เนลกับตัวกำหนดตารางเวลา Linux CFQ มาตรฐาน ซึ่งก็ไม่เลวนัก เนื่องจากสามารถทำงานได้อย่างถูกต้องกับโซลิดสเตตไดรฟ์ ในทางกลับกัน มันซับซ้อนเกินไป สร้างภาระให้กับโปรเซสเซอร์มากขึ้น (และด้วยเหตุนี้แบตเตอรี่) และไม่คำนึงถึงลักษณะเฉพาะของระบบปฏิบัติการมือถือ อีกทางเลือกหนึ่งที่ได้รับความนิยมคือ Deadline scheduler ซึ่งดีพอ ๆ กับ SIO แต่ใช้เกินความสามารถ คุณสามารถดูรายการตัวกำหนดตารางเวลาที่ใช้ได้โดยใช้คำสั่งต่อไปนี้:

# cat /sys/block/*/queue/scheduler

หากต้องการเปลี่ยนแปลง ให้ใช้สิ่งนี้ (โดยที่ row คือชื่อของตัวจัดกำหนดการ):

# สำหรับฉันใน /sys/block/*/queue/scheduler; ทำ echo แถว > $1; เสร็จแล้ว

ตัวสร้างเคอร์เนลบางตัวยังใช้การเพิ่มประสิทธิภาพประเภทอื่นที่เกี่ยวข้องกับ I/O นี่คือการปิดใช้งานการเรียกระบบ fsync ซึ่งใช้เพื่อล้างเนื้อหาที่เปลี่ยนแปลงของไฟล์ที่เปิดไปยังดิสก์อย่างแรง มีความเห็นว่าหากไม่มี fsync ระบบจะเข้าถึงไดรฟ์น้อยลงและช่วยประหยัดเวลาโปรเซสเซอร์และพลังงานแบตเตอรี่ ข้อความที่ค่อนข้างขัดแย้ง: fsync ไม่ได้ใช้บ่อยนักในแอปพลิเคชันและเพียงเพื่อบันทึกข้อมูลที่สำคัญจริงๆ แต่การปิดใช้งานอาจนำไปสู่การสูญเสียข้อมูลเดียวกันในกรณีที่ระบบปฏิบัติการหยุดทำงานหรือปัญหาอื่นๆ ความสามารถในการปิดใช้งาน fsync มีอยู่ในเคอร์เนล franco.Kernel และ GLaDOS และควบคุมโดยใช้ไฟล์ /sys/module/sync/parameters/fsync_enabled ซึ่งควรเขียนเป็น 0 เพื่อปิดใช้งานหรือ 1 เพื่อเปิดใช้งาน อีกครั้งไม่แนะนำคุณลักษณะนี้

การเพิ่มคุณสมบัติใหม่ให้กับเคอร์เนล

แน่นอน นอกจากการเพิ่มประสิทธิภาพ การปรับแต่ง และระบบการจัดการฮาร์ดแวร์ขั้นสูงต่างๆ แล้ว เคอร์เนลแบบกำหนดเองยังมีฟังก์ชันการทำงานใหม่ทั้งหมดที่ไม่มีในเคอร์เนลมาตรฐาน แต่จะมีประโยชน์สำหรับผู้ใช้

โดยพื้นฐานแล้วสิ่งเหล่านี้คือไดรเวอร์และระบบไฟล์ต่างๆ ตัวอย่างเช่น เคอร์เนลบางตัวรองรับโมดูล CIFS ซึ่งช่วยให้คุณเมาต์ Windows ที่ใช้ร่วมกันได้ โมดูลดังกล่าวอยู่ในเคอร์เนล Matr1x สำหรับ Nexus S, faux123 สำหรับ Nexus 7, SiyahKernel และ GLaDOS ด้วยตัวเองมันไม่มีประโยชน์ แต่มีแอพพลิเคชั่นมากมายในตลาดที่ให้คุณใช้ความสามารถของมันได้

อีกสิ่งที่มีประโยชน์คือการรวมไดรเวอร์ ntfs-3g ไว้ในเคอร์เนล (แม่นยำยิ่งขึ้นในแพ็คเกจที่มีเคอร์เนล ไดรเวอร์เองทำงานเป็นแอปพลิเคชัน Linux) ซึ่งจำเป็นสำหรับการติดตั้งแฟลชไดรฟ์ที่ฟอร์แมตในระบบไฟล์ NTFS ไดรเวอร์นี้มีอยู่ในเมล็ด faux123 และ SiyahKernel โดยปกติมันจะเปิดใช้งานโดยอัตโนมัติ แต่ถ้าสิ่งนี้ไม่เกิดขึ้น คุณสามารถใช้แอปพลิเคชั่น StickMount จากตลาดได้

เมล็ดพืชจำนวนมากยังรองรับเทคโนโลยี zram ที่เรียกว่า ซึ่งช่วยให้คุณจอง RAM ได้ในปริมาณเล็กน้อย (โดยปกติคือ 10%) และใช้เป็นพื้นที่สว็อปที่บีบอัด เป็นผลให้มีการขยายจำนวนหน่วยความจำโดยไม่มีผลกระทบร้ายแรงต่อประสิทธิภาพ มีให้ใน Leankernel เปิดใช้งานด้วยคำสั่ง Trickster MOD หรือ zram enable

คุณสมบัติที่น่าสนใจสองประการสุดท้ายคือการชาร์จ USB ที่รวดเร็วและ Sweep2wake อย่างแรกไม่มีอะไรมากไปกว่าการบังคับให้รวมโหมด "ชาร์จเร็ว" แม้ว่าสมาร์ทโฟนจะเชื่อมต่อกับพอร์ต USB ของคอมพิวเตอร์ก็ตาม โหมดการชาร์จเร็วมีให้ใช้งานในสมาร์ทโฟนใหม่ทั้งหมดไม่มากก็น้อย อย่างไรก็ตาม เนื่องจากข้อจำกัดทางเทคนิค จึงไม่สามารถเปิดใช้งานพร้อมกันกับการเข้าถึงการ์ดหน่วยความจำได้ คุณสมบัติการชาร์จ USB แบบเร็วทำให้คุณสามารถเปิดใช้งานโหมดนี้ได้ตลอดเวลา ในขณะที่ปิดการใช้งานการเข้าถึงไดรฟ์

Sweep2wake เป็นวิธีใหม่ในการปลุกอุปกรณ์ คิดค้นโดยผู้เขียน Breaked-kernel ความหมายของมันคือการเปิดสมาร์ทโฟนโดยการปัดปุ่มนำทางที่อยู่ด้านล่างหน้าจอหรือข้ามหน้าจอเอง นี่เป็นคุณสมบัติที่มีประโยชน์จริงๆ แต่การเปิดใช้งานจะทำให้เซ็นเซอร์ทำงานแม้ในขณะที่อุปกรณ์อยู่ในโหมดสลีป ซึ่งจะทำให้แบตเตอรี่หมดอย่างเห็นได้ชัด

โอเวอร์คล็อก แรงดันไฟ และการประหยัดพลังงาน

การโอเวอร์คล็อกได้รับความนิยมไม่เพียง แต่ในหมู่เจ้าของคอมพิวเตอร์และแล็ปท็อปที่อยู่กับที่เท่านั้น แต่ยังรวมถึงผู้ที่ชื่นชอบเทคโนโลยีมือถือด้วย เช่นเดียวกับหินของสถาปัตยกรรม x86 โปรเซสเซอร์และคอร์กราฟิกของเทคโนโลยีโมบายล์ทำงานได้ดี อย่างไรก็ตาม วิธีการโอเวอร์คล็อกนั้นเองและขั้นตอนในการนำไปใช้นั้นค่อนข้างแตกต่างไปจากนี้ ความจริงก็คือไดรเวอร์มาตรฐานสำหรับ SoC ที่รับผิดชอบในการประหยัดพลังงานและเปลี่ยนความถี่ของโปรเซสเซอร์มักจะล็อคที่ความถี่มาตรฐาน ดังนั้นสำหรับการปรับแต่งอย่างละเอียด คุณต้องติดตั้งไดรเวอร์สำรองหรือเคอร์เนลที่กำหนดเอง

เคอร์เนลแบบกำหนดเองคุณภาพสูงและยอดนิยมเกือบทั้งหมดมีไดรเวอร์ที่ปลดล็อคอยู่แล้วหรือเกือบทั้งหมด ดังนั้นหลังจากติดตั้งแล้ว ความสามารถในการควบคุม "พลัง" ของโปรเซสเซอร์จึงเพิ่มขึ้นอย่างมาก โดยปกติ ตัวสร้างเคอร์เนลแบบกำหนดเองจะทำสองสิ่งที่ส่งผลต่อการเลือกความถี่ นี่เป็นส่วนขยายของช่วงความถี่ที่เกินกว่าช่วงที่ตั้งไว้เริ่มต้น - คุณสามารถตั้งค่าทั้งความถี่โปรเซสเซอร์ที่สูงขึ้นและความถี่ที่ต่ำมาก ซึ่งช่วยให้ประหยัดแบตเตอรี่และเพิ่มการไล่ระดับความถี่ ตัวอย่างเช่น แทนที่จะเป็นสามความถี่ที่เป็นไปได้ คุณมีทางเลือกหกข้อ อย่างที่สองคือการเพิ่มความสามารถในการปรับแรงดันไฟฟ้าของโปรเซสเซอร์ ซึ่งคุณสามารถลดแรงดันไฟฟ้าของโปรเซสเซอร์ที่ความถี่ต่ำเพื่อประหยัดพลังงานแบตเตอรี่และเพิ่มที่ความถี่สูงเพื่อเพิ่มความเสถียร

ทั้งหมดนี้สามารถควบคุมได้โดยใช้ยูทิลิตี้ SetCPU ที่เป็นที่รู้จักและจ่ายเงินฟรีหรือ Trickster MOD ฟรี คำแนะนำการจัดการจะเหมือนกับระบบเดสก์ท็อป เป็นการดีกว่าที่จะตั้งค่าความถี่โปรเซสเซอร์ที่ต่ำกว่าเป็นค่าต่ำสุด แต่ไม่ต่ำกว่า 200 MHz (เพื่อหลีกเลี่ยงความล่าช้า) เกณฑ์บนจะเพิ่มขึ้นทีละน้อยด้วยการทดสอบความเสถียรเมื่อตก แนะนำให้เพิ่มแรงดันไฟฟ้าเล็กน้อยสำหรับค่าที่กำหนด ความถี่. ไม่มีคำแนะนำเกี่ยวกับแรงดันไฟฟ้าเนื่องจากโปรเซสเซอร์แต่ละตัวมีเอกลักษณ์และค่าจะแตกต่างกันสำหรับทุกคน

นอกเหนือจากการเปลี่ยนความถี่แล้ว แอสเซมเบลอร์มักจะเพิ่มอัลกอริธึมควบคุมการประหยัดพลังงานใหม่ (การควบคุมความถี่โปรเซสเซอร์อัตโนมัติ) ให้กับเคอร์เนล ซึ่งในความเห็นของพวกเขา สามารถแสดงผลได้ดีกว่าอัลกอริธึมมาตรฐาน เกือบทั้งหมดใช้อัลกอริธึมเชิงโต้ตอบที่ใช้โดยค่าเริ่มต้นใน Android เวอร์ชันใหม่ สิ่งสำคัญคือต้องเพิ่มความถี่โปรเซสเซอร์ให้สูงสุดอย่างรวดเร็วในกรณีที่โหลดเพิ่มขึ้น แล้วค่อยๆ ลดให้เหลือน้อยที่สุด . โดยแทนที่อัลกอริธึม OnDemand ที่ใช้ก่อนหน้านี้ ซึ่งปรับความถี่ในทั้งสองทิศทางอย่างราบรื่นตามสัดส่วนของโหลด และช่วยให้คุณทำให้ระบบตอบสนองมากขึ้น ตัวสร้างเคอร์เนลทางเลือกเสนออัลกอริธึมต่อไปนี้เพื่อแทนที่ Interactive:

  • SmartAssV2- ทบทวนอัลกอริทึมแบบโต้ตอบโดยเน้นที่การประหยัดแบตเตอรี่ ความแตกต่างที่สำคัญคือไม่กระตุกโปรเซสเซอร์ให้มีความถี่สูงในกรณีที่โหลดสั้นซึ่งประสิทธิภาพของโปรเซสเซอร์ต่ำก็เพียงพอแล้ว ค่าดีฟอลต์ถูกใช้ในเคอร์เนล Matr1x
  • InteractiveX- อัลกอริธึมแบบโต้ตอบที่ปรับแล้ว ซึ่งเป็นคุณสมบัติหลักคือการล็อกโปรเซสเซอร์ที่ความถี่ต่ำสุดที่ผู้ใช้ระบุ และการยกเลิกการทำงานของแกนประมวลผลที่สองเมื่อปิดหน้าจอ ค่าดีฟอลต์ถูกใช้ใน Leankernel
  • LulzactiveV2- โดยพื้นฐานแล้ว OnDemand ที่คิดค้นใหม่ เมื่อโหลดโปรเซสเซอร์เกินที่กำหนด (60% โดยค่าเริ่มต้น) อัลกอริธึมจะเพิ่มความถี่ตามจำนวนดิวิชั่น (1 โดยค่าเริ่มต้น) และลดความถี่ลงเมื่อโหลดลดลง สิ่งที่น่าสนใจเป็นพิเศษคือมันช่วยให้คุณสามารถตั้งค่าพารามิเตอร์ของงานได้อย่างอิสระ ดังนั้นจึงเหมาะสำหรับผู้ที่คลั่งไคล้

โดยทั่วไปแล้ว ตัวสร้างเคอร์เนลมักจะชอบใช้อัลกอริธึมประหยัดพลังงานแบบใหม่มาก เนื่องจากความง่ายในการใช้งาน ดังนั้นคุณจึงสามารถค้นหาอัลกอริธึมอื่นๆ ได้อีกหลายสิบรายการ ส่วนใหญ่เป็นตะกรันที่สมบูรณ์และเมื่อเลือกตัวกำหนดเวลาคุณควรได้รับคำแนะนำจากกฎ: หนึ่งในสามที่อธิบายไว้ข้างต้นหรืออินเทอร์แอกทีฟมาตรฐานซึ่งดีมาก คุณสามารถเลือกได้โดยใช้ Trickster MOD เดียวกัน

อินเทอร์เฟซการจัดการ

เคอร์เนลแบบกำหนดเองที่ได้รับความนิยมส่วนใหญ่มีกลไกหลายอย่างสำหรับการควบคุมพารามิเตอร์ไดรเวอร์ต่างๆ อย่างละเอียด ซึ่งโดยทั่วไป ได้แก่ ColorControl, GammaControl, SoundControl และ TempControl

อินเทอร์เฟซสองแบบแรกมีให้ใช้งานเกือบทุกที่ รวมถึงเคอร์เนล CyanogenMod อินเทอร์เฟซสองอินเทอร์เฟซที่สองใน Leankernel และอาจมีในอินเทอร์เฟซอื่นๆ ไม่ทางใดก็ทางหนึ่ง สิ่งเหล่านี้สามารถควบคุมได้โดยใช้ Trickster MOD

นิวเคลียส

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

  • Leankernel เป็นเคอร์เนลสำหรับ Galaxy Nexus, Nexus 7 และ Galaxy S III จุดเน้นหลักในการพัฒนาคือความเรียบง่ายและความเร็วในการทำงาน อัลกอริทึมการประหยัดพลังงาน: InteractiveX V2, I/O Scheduler: ROW, อินเทอร์เฟซการควบคุมทั้งหมดข้างต้น, รองรับการชาร์จ USB ที่รวดเร็ว, Swap และ zram, การโอเวอร์คล็อก CPU และ GPU ที่ยืดหยุ่น หนึ่งในแกนที่ดีที่สุด ปรับแต่งได้ด้วย Trickster MOD
  • Matr1x (http://goo.gl/FQLBI , goo.gl/ZcyvA) - เคอร์เนลสำหรับ Nexus S และ Nexus 4 เคอร์เนลที่เรียบง่ายและไม่กระจัดกระจาย รองรับการโอเวอร์คล็อก CPU และ GPU, GammaControl, Fast USB Charge, Sweep2wake, ตัวกำหนดตารางเวลา I/O: SIO, ROW และ FIOPS ปรับแต่งประสิทธิภาพ ปรับแต่งได้ด้วย Trickster MOD
  • Bricked-Kernel (http://goo.gl/kd5F4 , goo.gl/eZkAV) - เคอร์เนลที่เรียบง่ายและไม่เกะกะสำหรับ Nexus 4 และ HTC One X การเพิ่มประสิทธิภาพสำหรับ Snapdragon S4 และ NVIDIA Tegra 3 โหมดประหยัดพลังงานที่ออกแบบใหม่สำหรับ Tegra 3 การโอเวอร์คล็อกที่เป็นไปได้ อัลกอริธึมการประหยัดพลังงาน: ปรับ OnDemand (แบบโต้ตอบก็มีให้เช่นกัน)
  • SiyahKernel เป็นเคอร์เนลสำหรับ Galaxy S II และ S III ตัวเลือกการโอเวอร์คล็อกที่ยืดหยุ่น การปรับเทียบแบตเตอรี่อัตโนมัติ ไดรเวอร์หน้าจอสัมผัสที่ได้รับการปรับปรุง อัลกอริธึมการประหยัดพลังงาน: smartassV2 และ lulzactiveV2 ตัวกำหนดเวลา I/O: noop, กำหนดเวลา, CFQ, BFQV3r2 (ค่าเริ่มต้น), V(R), SIO ไดรเวอร์ CIFS และ NTFS (ที่มีการต่อเชื่อมอัตโนมัติ) กำหนดค่าได้ด้วย ExTweaks
  • franco.Kernel - เคอร์เนลสำหรับ Nexus S, Galaxy Nexus, Nexus 4, Nexus 7, Nexus 10, Galaxy S III, Galaxy Note, Optimus One และ One X

ความสามารถของเคอร์เนลนั้นแตกต่างกันอย่างมากในแต่ละอุปกรณ์ ดังนั้นจะต้องดูรายละเอียดในทันที อย่างไรก็ตาม ด้วยการกะพริบเคอร์เนลนี้ คุณจะสามารถโอเวอร์คล็อก ปรับแต่งไดรเวอร์ได้ ประสิทธิภาพที่ยอดเยี่ยม เช่นเดียวกับการรองรับอัลกอริธึมและตัวกำหนดเวลาการประหยัดพลังงานที่หลากหลาย อันที่จริง แกนกลางประกอบด้วยการปรับแต่งเกือบทั้งหมดที่อธิบายไว้ในบทความ ถือว่าเป็นหนึ่งในเมล็ดที่ดีที่สุด มีแอพพลิเคชั่นสำหรับอัพเดต franko.Kernel Updater อัตโนมัติ คุณสามารถกำหนดค่าโดยใช้ Trickster MOD

ติดตั้งอย่างไร?

เมล็ดทั้งหมดถูกแจกจ่ายในไฟล์ ZIP มาตรฐานของ Android ซึ่งควรแฟลชผ่านคอนโซลการกู้คืนในลักษณะเดียวกับเฟิร์มแวร์ทางเลือก โดยปกติ เมล็ดพืชจะเข้ากันได้กับเฟิร์มแวร์ใดๆ ดังนั้น เมื่อเลือกเคอร์เนลที่ถูกต้อง คุณจึงสามารถติดตั้งได้อย่างปลอดภัย สิ่งเดียวที่คุณควรใส่ใจคือเวอร์ชันของ Android ที่เคอร์เนลใช้งานร่วมกันได้ มันสามารถทำงานร่วมกับ Android ทุกรุ่นที่มีให้สำหรับอุปกรณ์หรือใช้งานได้เพียงรุ่นเดียว (นักพัฒนามักจะระบุสิ่งนี้อย่างชัดเจน) ก่อนทำการแฟลช โปรดสำรองข้อมูลเฟิร์มแวร์ปัจจุบันโดยใช้คอนโซลการกู้คืนเดียวกัน หากมีอะไรผิดพลาด คุณสามารถย้อนกลับได้เสมอ

ข้อสรุป

อย่างที่คุณเห็น เคอร์เนลแบบกำหนดเองมีข้อดีมากกว่าเคอร์เนลที่ใช้ในเฟิร์มแวร์มาตรฐานหรือเฟิร์มแวร์ของบริษัทอื่น และที่สำคัญกว่านั้น คุณไม่จำเป็นต้องรู้ความซับซ้อนทั้งหมดของ Android เพื่อใช้งาน เพียงแค่ดาวน์โหลดและติดตั้งไฟล์ ZIP

เมื่อเร็ว ๆ นี้เมล็ดรุ่นใหม่ออกค่อนข้างบ่อย ทุก ๆ สองสามเดือนจะมีการเปิดตัวที่มั่นคง ผู้สมัครที่ไม่เสถียรออกมาบ่อยยิ่งขึ้น Linus Torvalds และนักพัฒนาหลายคนทั่วโลกกำลังทำงานอย่างต่อเนื่องเพื่อปรับปรุงเมล็ดใหม่และเพิ่มฟังก์ชันการทำงานให้กับพวกเขา

ในเวอร์ชันใหม่แต่ละเวอร์ชัน เคอร์เนลของ Linux จะเพิ่มการรองรับอุปกรณ์ใหม่หลายตัว เช่น โปรเซสเซอร์ การ์ดวิดีโอ หรือแม้แต่หน้าจอสัมผัสใหม่ เมื่อเร็ว ๆ นี้การรองรับฮาร์ดแวร์ใหม่ได้รับการปรับปรุงอย่างมาก นอกจากนี้ ระบบไฟล์ใหม่ยังรวมอยู่ในเคอร์เนล สแต็กเครือข่ายได้รับการปรับปรุง ข้อผิดพลาดและจุดบกพร่องได้รับการแก้ไข

หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงในเคอร์เนลเวอร์ชันใดเวอร์ชันหนึ่ง โปรดดูบันทึกการเปลี่ยนแปลงใน kernel.org และในบทความนี้ เราจะพิจารณาการอัปเดตเคอร์เนล Linux เป็นเวอร์ชันล่าสุด ฉันจะพยายามไม่ผูกคำสั่งกับเคอร์เนลรุ่นใดรุ่นหนึ่ง เมล็ดใหม่ออกค่อนข้างบ่อยและมันจะเกี่ยวข้องกับแต่ละเคอร์เนล

พิจารณาอัปเดตเคอร์เนล Ubuntu และ CentOS ก่อนอื่น มาดูวิธีอัปเดตเคอร์เนลใน Ubuntu 16.04 กัน

มาดูกันก่อนว่าคุณได้ติดตั้งเคอร์เนลใดไว้ ในการดำเนินการนี้ ให้เปิดเทอร์มินัลแล้วเรียกใช้:

ตัวอย่างเช่น ฉันกำลังใช้เวอร์ชัน 4.3 และสามารถอัปเกรดเป็นเวอร์ชันใหม่ล่าสุดได้ นักพัฒนา Ubuntu ได้ตรวจสอบให้แน่ใจแล้วว่าผู้ใช้ของพวกเขาไม่ได้สร้างเคอร์เนลด้วยมือและสร้างแพ็คเกจ deb ของเคอร์เนลเวอร์ชันใหม่ สามารถดาวน์โหลดได้จากเว็บไซต์ Canonical อย่างเป็นทางการ

ฉันสามารถให้คำสั่ง wget เพื่อดาวน์โหลดที่นี่ หากรู้จักเวอร์ชันเคอร์เนล แต่ในกรณีของเรา ควรใช้เบราว์เซอร์จะดีกว่า ไปที่ http://kernel.ubuntu.com/~kernel-ppa/mainline/ ทุกอย่างที่รวบรวมโดยทีมเคอร์เนลของ Ubuntu อยู่ที่นี่แล้ว เคอร์เนลถูกสร้างขึ้นทั้งสำหรับการแจกแจงเฉพาะโดยมีชื่อรหัสของการแจกจ่ายและชื่อทั่วไป นอกจากนี้ เมล็ดจาก Ubuntu 16.10 มักจะทำงานใน 16.04 แต่จาก 9.04 บน Ubuntu 16.04 คุณไม่ควรติดตั้งเคอร์เนล

เลื่อนไปที่ด้านล่างซึ่งเป็นตำแหน่งของเคอร์เนลเวอร์ชันใหม่กว่า:

นอกจากนี้ ที่ด้านบนสุดมีโฟลเดอร์รายวัน/ปัจจุบันซึ่งมีการสร้างเคอร์เนลล่าสุดและทุกคืน เลือกเวอร์ชันเคอร์เนลที่ต้องการและดาวน์โหลดไฟล์ linux-headers และ linux-image สองไฟล์สำหรับสถาปัตยกรรมของคุณ:

หลังจากดาวน์โหลดเสร็จสิ้น คุณสามารถดำเนินการติดตั้งต่อได้ ในการดำเนินการนี้ ให้เรียกใช้สิ่งต่อไปนี้ในเทอร์มินัล:

นำทางไปยังโฟลเดอร์ที่มีแพ็คเกจการติดตั้ง เช่น ~/Downloads:

เรียกใช้การติดตั้ง:

หากคำสั่งนี้ใช้ไม่ได้ผล คุณสามารถไปทางอื่นได้ ติดตั้งยูทิลิตี้ gdebi:

sudo apt-get ติดตั้ง gdebi

จากนั้นใช้เพื่อติดตั้งเคอร์เนล:

sudo gdebi linux-headers*.deb linux-image-*.deb

ติดตั้งเคอร์เนลแล้ว แต่ยังคงต้องอัปเดต bootloader:

sudo update-grub

ตอนนี้คุณสามารถรีสตาร์ทคอมพิวเตอร์และดูว่าเกิดอะไรขึ้น หลังจากรีบูต ตรวจสอบให้แน่ใจว่าการอัปเดตเคอร์เนล Linux เป็นเวอร์ชันล่าสุดสำเร็จแล้ว:

อย่างที่คุณเห็น เคอร์เนลได้รับการติดตั้งและรันสำเร็จแล้ว แต่อย่ารีบเร่งที่จะลบเคอร์เนลเวอร์ชันเก่าออก ขอแนะนำให้มีเคอร์เนลหลายเวอร์ชันในระบบเพื่อที่ในกรณีที่มีปัญหา คุณสามารถบูตจากเวอร์ชันที่ใช้งานได้เก่า

การอัปเดตเคอร์เนล Linux อัตโนมัติใน Ubuntu

ด้านบน เรามาดูวิธีการติดตั้งเคอร์เนลเวอร์ชันที่ต้องการด้วยตนเอง Ubuntu เคยมี PPA สำหรับการสร้างเคอร์เนลรายวัน แต่ตอนนี้ปิดแล้ว ดังนั้น คุณสามารถอัปเดตเคอร์เนลได้โดยการดาวน์โหลดแพ็คเกจ deb และติดตั้งเท่านั้น แต่ทั้งหมดนี้สามารถทำให้ง่ายขึ้นด้วยสคริปต์พิเศษ

การติดตั้งสคริปต์:

cd /tmp
$ git โคลน git://github.com/GM-Script-Writer-62850/Ubuntu-Mainline-Kernel-Updater
$ bash Ubuntu-Mainline-Kernel-Updater/install

ตรวจสอบการปรับปรุง:

KernelUpdateChecker -r yakkety

ตัวเลือก -r ช่วยให้คุณระบุสาขาการแจกจ่ายที่ต้องการค้นหาเมล็ด สำหรับ xenial เมล็ดจะไม่ถูกสร้างขึ้นอีกต่อไป แต่เมล็ดจากเวอร์ชันถัดไปจะทำงานได้ดีที่นี่ นอกจากนี้ อ็อพชัน -no-rc สามารถบอกยูทิลิตีไม่ให้ใช้ตัวเลือกการวางจำหน่าย และอ็อพชัน -v จะระบุเวอร์ชันเคอร์เนลที่แน่นอนที่จะติดตั้ง หากคุณไม่สนใจว่าเคอร์เนลนั้นมีไว้สำหรับการแจกจ่ายใด ตราบใดที่เป็นเวอร์ชันล่าสุด ให้ใช้ตัวเลือก --any-release สคริปต์จะให้ผลลัพธ์ต่อไปนี้:

ก่อนติดตั้งเคอร์เนล คุณสามารถดูรายละเอียดได้โดยเปิดไฟล์ /tmp/kernel-update:

ที่นี่เราจะเห็นว่ามีการค้นหา yakkety และเคอร์เนลเวอร์ชัน 4.7-rc6 พร้อมใช้งานแล้ว เราสามารถติดตั้ง:

sudo /tmp/kernel-update

สคริปต์จะแสดงเวอร์ชันของเคอร์เนลปัจจุบัน ตลอดจนเวอร์ชันของเคอร์เนลที่จะติดตั้ง วันที่สร้าง และรายละเอียดอื่นๆ ระบบจะถามคุณว่าจำเป็นต้องเก็บบันทึกการเปลี่ยนแปลงหรือไม่ ถัดไปมาการติดตั้ง:

เมล็ดเก่าในกรณีที่อย่าลบ (n):

เสร็จสิ้น การอัพเดตเคอร์เนลเป็นเวอร์ชันล่าสุดเสร็จสมบูรณ์ ตอนนี้ รีสตาร์ทเครื่องคอมพิวเตอร์ของคุณ (y):

ตรวจสอบว่าการอัปเดตเคอร์เนลของ Ubuntu ใช้งานได้จริงหรือไม่:

นอกจากนี้ สคริปต์ยังถูกเพิ่มในการโหลดอัตโนมัติ และตอนนี้จะตรวจสอบการอัปเดตโดยอัตโนมัติหลังจากเข้าสู่ระบบ 60 วินาที ทางลัดโหลดอัตโนมัติอยู่ในไฟล์:

vi ~/.config/autostart/KernelUpdate.desktop

คุณสามารถเปลี่ยนได้ตามต้องการหรือลบออก หากคุณต้องการลบสคริปต์ทั้งหมดออกจากระบบ ให้รัน:

rm ~/.config/autostart/KernelUpdate.desktop
$ sudo rm /usr/local/bin/KernelUpdate(ตัวตรวจสอบ, ScriptGenerator)

ไม่ได้ดาวน์โหลด

หากมีข้อผิดพลาดใดๆ เกิดขึ้นระหว่างการติดตั้งหรือเคอร์เนลได้รับการอัปเดตอย่างไม่ถูกต้อง และขณะนี้ ระบบไม่สามารถบู๊ตด้วยเคอร์เนลใหม่ได้ คุณสามารถใช้เคอร์เนลเก่าได้ นอกจากนี้ ระบบอาจไม่เริ่มทำงานหากคุณใช้ไดรเวอร์ที่เป็นกรรมสิทธิ์สำหรับการ์ดวิดีโอ NVIDIA ในกรณีนี้ อย่ารีบดาวน์โหลดเคอร์เนลเวอร์ชันใหม่ล่าสุด ใช้เฉพาะเคอร์เนลที่เสถียรเท่านั้น พวกเขามักจะเพิ่มการรองรับสำหรับโมดูลนี้อยู่แล้ว

และในการคืนค่าระบบ ให้เลือกรายการ ตัวเลือกขั้นสูงสำหรับ Ubuntuในเมนูด้วง:

และเริ่มเคอร์เนลที่ทำงานอยู่ก่อนหน้า:

หลังจากดาวน์โหลด ยังคงต้องลบเคอร์เนลที่ติดตั้งไม่ถูกต้องและอัปเดต Grub อีกครั้ง แทนที่เวอร์ชันเคอร์เนลที่ต้องการแทน 4.7:

sudo apt ลบ linux-header-4.7* linux-image-4.7*

sudo update-grub

ระบบของคุณกลับสู่สถานะเดิมแล้ว คุณสามารถลองติดตั้งเคอร์เนลเวอร์ชันเก่าหรือลองอีกครั้ง

อัปเกรดเคอร์เนล Linux เป็น 4.4 บน CentOS

และตอนนี้เรามาดูวิธีอัปเดตเคอร์เนล Linux เวอร์ชันล่าสุดใน CentOS กัน คำแนะนำได้รับการทดสอบบน CentOS 7 แล้ว แต่น่าจะใช้ได้กับ RedHat 7, Fedora และการแจกแจงแบบอื่นที่คล้ายคลึงกัน

ตามกฎแล้ว kernels ใหม่จะไม่รวมอยู่ในที่เก็บอย่างเป็นทางการของ CentOS ดังนั้นเพื่อให้ได้เวอร์ชันที่เสถียรล่าสุด เราจะต้องเพิ่มที่เก็บ ELRepo นี่คือพื้นที่เก็บข้อมูลของแพ็คเกจเชิงพาณิชย์ (แพ็คเกจ Linux สำหรับองค์กร) และได้รับการดูแลบน RedHat และ Fedora ด้วย

ในการเพิ่มที่เก็บ ให้ทำตามขั้นตอนเหล่านี้:

ก่อนอื่นคุณต้องนำเข้าคีย์:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

เพิ่มที่เก็บและส่วนประกอบที่จำเป็นใน RHEL/Scientific Linux/CentOS-7:

รอบต่อนาที -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

yum ติดตั้ง yum-plugin-fastestmirror

ใน Fedora 22 ขึ้นไป: