โครงการในส่วนของเคอร์เนลลินุกซ์ประกาศไว้ตั้งแต่ตอนออกรุ่น 3.6 ว่าจะรองรับ ARMv8 โดยใช้ชื่อในเคอร์เนลว่า AArch64 ตอนนี้รุ่น 3.7 ออกมาแล้วก็สามารถทำได้อย่างที่ประกาศไว้จริง
นอกจากการรองรับ ARMv8 แล้วในส่วนของ ARMv7 ก็เพิ่มการซัพพอร์ตแพลตฟอร์มต่างๆ ให้หลากหลายขึ้น โดยก่อนหน้านี้แม้เคอร์เนลจะรองรับชิป ARM แต่เมื่อจะติดตั้งลงชิป SoC ใดๆ ผู้ผลิตจะต้องแก้ไขค่าต่างๆ เพื่อให้เข้ากับแพลตฟอร์มต่างๆ ด้วยตัวเอง แต่นับจากนี้การซัพพอร์ตส่วนนี้จะทำภายใต้โครงการเคอร์เนล ทำให้เป็นไปได้ที่เราจะดาวน์โหลดดิสโทรต่างๆ มาติดตั้งกันเองได้
ในส่วนฟีเจอร์ทั่วไป หลักๆ มีดังนี้
แนวทางของเคอร์เนลคงชัดเจนว่าจะรองรับความหลากหลายมากขึ้นเรื่อยๆ จากเดิมที่ลินุกซ์เคยมี x86 เป็นแกนกลางการพัฒนาหลัก อนาคตเราอาจจะไม่สนใจว่าชิปที่เราใช้งานอยู่เป็นสถาปัตยกรรมอะไรแต่ใช้งานไปเลยเพราะระบบปฎิบัติการจัดการให้เราหมดแล้วอย่างที่วงการคอมพิวเตอร์ฝันมาก่อนหน้านี้นับสิบปีได้จริงๆ
ที่มา - TG Daily, Kernel Newbies
Comments
สุดยอดไปเลยครับ
ถือว่าเป็นการเปลี่ยนแปลงที่ ยิ่งใหญ่มากเลยครับในส่วนของ ARM multi-platform support ทำให้แนวทางการติดตั้งระบบในโลกของ Embedded System จะง่ายขึ้นมากจากเดิมที่ต้อง Build สำหรับ platform เท่านั้น
ต่อไปการติดตั้ง ระบบปฎิบัติการบน ARM จะไม่ยากเหมือนทุกวันนี้ และอีกไม่นานอย่างที่คุณ Lew ว่า kernel build ทีเดียวอาจจะใช้ได้ทั้ง x86 และ ARM
เป็นไปไม่ได้คับที่จะใช้ Binary เดียวกันต่าง Platform
มาแว้ว...
ดีจังครับ
โทษนะครับ หลักการมันยังไง? ถ้าเคอร์เนลออกแบบมารองรับการใช้สถาปัตยกรรมโปรเซสเซอร์อะไรก็ได้ ในอนาคตจะมีการจับรวม ARM+X86 รวมไว้ในชิพเดียวกัน? เคอร์เนลจะเป็นตัวสวิตซ์โหมดเพื่อประหยัดพลังงาน? ถ้าเราทํางานในโหมด x86 เราสามารถรันโปรแกรมฝั่ง ARM ได้ใช่ไหม เพราะไฟล์โปรแกรมต่างๆมันก็แค่เป็นตัวเก็บรหัสคําสั่งของแต่ละ CPU.
ไม่เก่ี่ยวครับ ต้องเข้าใจก่อนว่าฝั่ง ARM นั้นมีอิสระสูงมาก ผู้ผลิตสามารถเลือกใส่ "เครื่องมือ" ในชิปได้อย่างอิสระ คล้ายๆ กับฝั่ง x86 ที่มีชุคคำสั่งแปลกๆ เช่น SSE, MMX แต่ในฝั่ง ARM นั้นอิสระเยอะกว่านั้นมาก ระบบอาจจะมีจอภาพหรือไม่มีจอภาพ address ของ I/O ต่างๆ (ซึ่ง OS มองเป็นหน่วยความจำก้อนหนึ่ง) อาจจะอยู่คนละตำแหน่งกัน
ความแตกต่างแบบนี้่ทำให้แม้เคอร์เนลจะคอมไพล์เป็น ARM ได้แต่ในความเป็นจริงก็รันไม่ขึ้นเพราะคอนฟิกต่างๆ ไม่ตรง ไม่สามารถบูตได้
การที่เคอร์เนลรองรับคือค่าคอนฟิกต่างๆ พวกนนี้จะถูกดูแลโดยโครงการเคอร์เนล ผู้ผลิตชิปสามารถส่งค่าต่างๆ เข้าไปเป็นมาตรฐานกลางได้ ดิสโทรต่างๆ แม้จะไม่ได้ทำอะไรเพิ่มก็ "พอมีความเป็นไปได้" ที่จะสามารถนำไปติดตั้งบนบอร์ดพัฒนาขอชิปรุ่นต่างๆ ได้ทันที
ยังไม่มีโครงการเคอร์เนลที่รันได้ทั้ง ARM/x86 ประกาศออกมาเท่าที่ผมได้ยินข่าวครับ
lewcpe.com, @wasonliw
ไม่น่าจะใช้อย่างนั้นนะครับ แค่เขาบอกว่า มี Soc ตัวใหม่มา ก็จะ Support ให้เท่านั้นเอง (ซึ่งผู้ผลิตที่นำ Soc ไปใช้ ไม่ต้องทำ driver เอง) ซึ่งก็งงกับระยะเวลาที่กว่าจะ support ถ้ามี Soc ออกมาใหม่ ๆ ถ้าทำได้เร็ว ก็จะดีมากครับ
ความหมายของ kernel 3.7 ARM multi-platform support คืออย่างนี้ครับ
- โดยปกติเวลาเราลง Linux บนเครื่อง x86 เราจะใช้ image ตัวเดียวกันได้ใช่ไหมครับ ซึ่งก็คือ kernel มีความสามารถในการบูตในระบบที่ตั้งค่าฮาร์ดแวร์แตกต่างกันได้ โดยคุณสมบัติแบบนี้จะไม่มีบน ARM ครับที่ผ่านมา โดยปกติ ARM เนี่ยจะไปขึ้นกับการตั้งค่าจากซอร์สโค้ดใน kernel แล้ว build ออกมาจะได้ของเฉพาะตัวครับ
ทีนี้่ไอ้เจ้า kernel 3.7 เค้าก็เพิ่ม multi-platform support ไปด้วยความพยายามว่าเราสามารถที่จะสร้าง image file ครั้งเดียวแล้วก็สามารถใช้ได้เหมือนกับ x86 (ซึ่งถ้าตามอ่านดูจะพบว่าข้อจำกัดการใช้งานยังเยอะมาก) ซึ่งถือว่าเป็นการพัฒนาไปอีกด้านและจะช่วยให้ distribution linux ต่างๆ ซัพพอร์ต ARM ง่ายขึ้นเช่น Ubuntu, Debain ก็ใช้ image แค่ตัวเดียว
แต่เราก็ยังสามารถสร้างระบบแบบ single platform support ได้อยู่ซึ่งเป็นแบบที่ Embedded System ชอบทำ
ทีนี้ผมตีความที่คุณ Lew เขียนว่า "อนาคตเราอาจจะไม่สนใจว่าชิปที่เราใช้งานอยู่เป็นสถาปัตยกรรมอะไรแต่ใช้งานไปเลยเพราะระบบปฎิบัติการจัดการให้เราหมดแล้วอย่างที่วงการคอมพิวเตอร์ฝันมาก่อนหน้านี้นับสิบปีได้จริงๆ" หมายความว่าอนาคตเราจะสามารถสร้าง image ติดตั้งครั้งเดียวและนำไปลงได้ทั้ง x86 หรือ ARM ก็ได้โดยไม่ต้องสนใจว่าเราลงกับอะไรสถาปัตยกรรมแบบไหนครับ ซึ่งไม่ได้หมายความว่าการรวม CPU แน่นอนครับ
ขอบคุณมากสําหรับข้อมูลของทุกท่าน ค่อนข้างชัดเจน เป็นความรู้ที่ได้ประโยชน์อย่างมากครับ