ข้อมูลเจาะลึกเกี่ยวกับส่วนประกอบภายใน

นี่เป็นกระบวนการขั้นสูงที่เราไม่แนะนำให้ผู้ใช้ Linux รายใหม่ทำ

ChromeOS รองรับการเรียกใช้โค้ดที่กำหนดเองภายใน VM นี่คือเอกสารประกอบระดับต่ำเกี่ยวกับการสนับสนุนดังกล่าว หากต้องการดูมุมมองที่เป็นมิตรกับผู้ใช้มากขึ้น โปรดดูfaq

ข้อกำหนดเบื้องต้น

ฟีเจอร์รันไทม์

คุณควรคาดหวังว่าฟีเจอร์ต่อไปนี้จะทำงานเมื่อเรียกใช้คอนเทนเนอร์ Linux

  • การเชื่อมต่อเครือข่ายขาออก (IPv4)
  • กราฟิกที่ไม่ได้เร่ง
  • กราฟิกที่เร่งความเร็ว (ผ่าน OpenGL)
  • โปรแกรม Wayland (แนะนำ ผ่าน Sommelier)
  • โปรแกรม X (ความเข้ากันได้ผ่าน Sommelier และ XWayland)
  • เอาต์พุตเสียงในรูปภาพ M74 ขึ้นไปและการจับภาพ/ไมโครโฟนเวอร์ชันทดลองในรูปภาพ R79 ขึ้นไป

ไม่มีฟีเจอร์บางอย่าง

เรากำลังพยายามปรับปรุงฟีเจอร์ต่างๆ ที่ยังไม่สมบูรณ์ ตัวอย่างที่ชัดเจนมีดังนี้

  • การถอดรหัสวิดีโอฮาร์ดแวร์
  • IME

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

ความปลอดภัย

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

ในโมเดลนี้ ระบบ ChromeOS ที่เหลือควรได้รับการปกป้องจากโค้ดที่กำหนดเอง (ที่เป็นอันตรายหรือโดยไม่ตั้งใจ) ซึ่งทำงานภายในคอนเทนเนอร์ภายใน VM

การติดต่อกับโลกภายนอกจะทำผ่าน crosvm เท่านั้น และแต่ละแชแนลจะสื่อสารกับกระบวนการแต่ละอย่าง (ซึ่งแต่ละอย่างจะอยู่ในแซนด์บ็อกซ์อย่างเข้มงวด)

ข้อมูลผู้ใช้ในคอนเทนเนอร์

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

ความต่อเนื่องของกระบวนการ

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

โค้ดที่เรียกใช้และเขียนได้

ระบบจะดาวน์โหลดอิมเมจดิสก์ VM ของ Termina ไปยังพาร์ติชันแบบมีสถานะที่เขียนได้เหมือนกับคอมโพเนนต์ Chrome อื่นๆ เราใช้ dm-verity เพื่อให้มั่นใจว่าเนื้อหาจะไม่ได้รับการแก้ไข นอกจากนี้ ยังหมายความว่าระบบจะโหลดได้เฉพาะรูปภาพที่ Google ลงนาม และรูปภาพจะเป็นแบบอ่านอย่างเดียวเสมอ

การโจมตีฮาร์ดแวร์

ช่องโหว่ Meltdown/Spectre มีผลต่อการใช้ VM อย่างปลอดภัย เราได้ใช้การแก้ไขและการลดความเสี่ยงเพื่อให้มั่นใจว่า VM จะโจมตีระบบโฮสต์หรือ VM อื่นๆ ไม่ได้ ดูรายละเอียดเพิ่มเติมได้ที่หน้าวิกิของ Chromium OS เกี่ยวกับสถานะช่องโหว่ Meltdown และ Spectre สำหรับอุปกรณ์ ChromeOS

วงจร

เมื่อเปิดใช้คอนเทนเนอร์ Linux (ซึ่งจะติดตั้งคอมโพเนนต์อื่นๆ ที่จำเป็นทั้งหมด เช่น Termina) แล้ว ระบบก็จะพร้อมใช้งาน

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

เมื่อคุณเรียกใช้แอปเทอร์มินัลหรือแอป Linux อื่นๆ ที่เริ่มคอนเทนเนอร์ และคอนเทนเนอร์หลักยังไม่ได้ทำงาน ระบบจะเริ่ม VM ของเทอร์มินัลโดยอัตโนมัติ และจะเริ่มคอนเทนเนอร์ Linux ใน ChromeOS เริ่มต้น (หรือที่เรียกว่า Crostini) ใน VM นั้น ซึ่งจะช่วยให้คุณเชื่อมต่อกับคอนเทนเนอร์ผ่าน SSH หรือ SFTP (ผ่านแอป Files) ได้

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

ความต่อเนื่องของข้อมูล

VM และคอนเทนเนอร์ทั้งหมดที่สร้างขึ้น รวมถึงข้อมูลภายในคอนเทนเนอร์เหล่านั้นจะยังคงอยู่ตลอดเซสชันของผู้ใช้ (ออกจากระบบ/เข้าสู่ระบบ) โดยจะเก็บไว้ในพื้นที่เก็บข้อมูลที่เข้ารหัสต่อผู้ใช้เดียวกับข้อมูลอื่นๆ ของเบราว์เซอร์

หากหยุดหรือปิด VM หรือคอนเทนเนอร์อย่างไม่ถูกต้อง (เช่น ไฟดับ) ข้อมูลอาจสูญหายและต้องกู้คืนเหมือนกับสิ่งอื่นๆ ในระบบ

การรองรับอุปกรณ์

แม้ว่าเราจะต้องการให้ Linux ใน ChromeOS ทำงานร่วมกับ Chromebook ทุกรุ่นได้ แต่เคอร์เนลและฟีเจอร์ฮาร์ดแวร์ที่จำเป็นจะจำกัดการใช้งาน ทีมงานมุ่งเน้นที่ความปลอดภัยและความเสถียรของระบบในขณะที่ย้อนพอร์ตฟีเจอร์ต่างๆ ในกรณีที่เหมาะสม เราจะพยายามปรับปรุงในส่วนนี้ต่อไป

รองรับแล้วในขณะนี้

โปรดดูรายชื่ออุปกรณ์ที่รองรับในปัจจุบันที่หัวข้อระบบ ChromeOS ที่รองรับ Linux

ข้อกำหนดเกี่ยวกับฮาร์ดแวร์

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

อย่างไรก็ตาม คุณจะต้องมี CPU ที่รองรับระบบฮาร์ดแวร์เสมือนจริง ในแพลตฟอร์ม x86 ฟีเจอร์นี้มีหลายชื่อ Intel เรียกฟีเจอร์นี้ว่า VT-x และ VMX AMD เรียกเทคโนโลยีนี้ว่า AMD-V และ SVM

ระบบ BayTrail

Chromebook ที่ใช้ BayTrail ของ Intel จะไม่มี VT-x แม้ว่าโดยปกติแล้ว CPU นี้จะมี VMX แต่รุ่นที่ใช้ใน Chromebook ไม่มี จึงไม่รองรับและจะไม่มีการรองรับในอนาคต

คุณสามารถค้นหาว่าบอร์ดรองรับหรือไม่โดยค้นหา BayTrail ในรายการอุปกรณ์สาธารณะของเราในคอลัมน์ Platform

เคอร์เนลเก่า

ไม่มีแผนที่จะรองรับ Linux 3.14 หรือเวอร์ชันที่เก่ากว่า ซึ่งต้องมีการย้อนพอร์ตฟีเจอร์ใหม่ๆ ที่มีขอบเขตกว้างขวางและมักจะรบกวนการทำงาน เช่น

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

CPU ARM 32 บิต

การทำให้เครื่องเสมือนทำงานภายใต้ CPU ARM 32 บิตเป็นเรื่องยาก ไม่ได้มาตรฐาน และต้องประสานงานกับเฟิร์มแวร์ ขออภัย เฟิร์มแวร์ ChromeOS มักจะไม่ได้กำหนดค่าส่วนขยาย ดังนั้น ระบบจึงไม่รองรับระบบปฏิบัติการเหล่านี้

คุณสามารถค้นหาว่าบอร์ดรองรับหรือไม่โดยค้นหา arm ในรายการอุปกรณ์สาธารณะของเราในคอลัมน์ Kernel ABI