เหตุใดจึงไม่สามารถติดตั้ง Windows 7 ในระบบที่ใช้หน่วยประมวลผล ARM?


12

วันนี้ฉันได้อ่านข่าว ( 1 , 2 , 3 , 4 ) เกี่ยวกับ Microsoft Windows 8 และเห็นว่าหนึ่งในคุณสมบัติใหม่คือมันสามารถทำงานบนระบบที่ใช้หน่วยประมวลผล ARM นี่ทำให้ฉันสงสัยว่าสาเหตุที่ไม่สามารถทำได้กับ Windows รุ่นปัจจุบัน (เจ็ด)

ข้อ จำกัด จริงของ Windows 7 ที่ต้องระวังในการติดตั้งบนระบบที่ใช้หน่วยประมวลผล ARM คืออะไร? มันจะต้องทำอย่างไรกับเวอร์ชั่นเคอร์เนลไดรเวอร์สถาปัตยกรรมหรือแม้แต่ส่วนผสมของปัจจัยเหล่านี้?

ก่อนที่ฉันจะรู้ฉันสามารถติดตั้ง Linux บน ARM ได้ดังนั้นฉันจึงไม่สามารถติดตั้ง Windows Seven ภายใต้ VMWare virtual machine บน ARM?


1
โปรดทราบว่า Windows 8 ได้รับการกำหนดให้ทำงานบน ARM windows8news.com/2011/01/05/…
JSB ձոգչ

1
คุณสามารถติดตั้ง Windows 7 ในเครื่องเสมือนที่ทำงานในระบบปฏิบัติการ ARM คุณเพียงแค่ต้องค้นหาโปรแกรมเครื่องเสมือนที่ทำงานบน ARM และสามารถเรียกใช้แขก x86 ได้
พัฒนา

คำตอบ:


30

เพื่อให้ไบนารีทำงานบนโปรเซสเซอร์ ARM พวกเขาจะต้องรวบรวมสำหรับโปรเซสเซอร์นั้นโดยเฉพาะหรือทำงานในโปรแกรมจำลอง

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

มีปัญหาอื่น ๆ เกี่ยวกับการย้ายไปยังระบบ ARM แต่นี่อาจเป็นปัญหาที่ใหญ่ที่สุด

เท่าที่ฉันรู้ VMware จะไม่เลียนแบบ x86 ฉันคิดว่าqemuอาจจะสามารถทำได้ แต่ฉันไม่ได้ใช้มันสำหรับ ARM จำลอง x86 มาก่อนเพียงแค่ x86 เลียนแบบ ARM จะมีการเข้าชมการทำงานที่สำคัญหากใช้งานได้

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


8
โปรดทราบว่าคุณสามารถพูดคุยประโยคแรกโดยการเอาคำว่า "ARM" และยังคงมีคำสั่งจริง - เป็นกฎไบนารีมักจะมีที่จะรวบรวมทั้งสำหรับสถาปัตยกรรมที่พวกเขากำลังทำงานอยู่บนหรืออื่น ๆ ที่มีการจำลองหรือล่ามชั้น
Shinrai

4
@ jhulst ฉันใช้ qemu เพื่อเลียนแบบ x86 บน PowerPC และใช่มันช้าอย่างไม่น่าเชื่อ
Cajunluke

VPC (ที่ MS สั่งซื้อ) ควรทำคือ x86 บน PPC อย่างเหมาะสมด้วยการคอมไพล์ใหม่ จริงอยู่ที่นี่เป็นเวลานานแล้วและฉันไม่เคยลองด้วยตัวเอง QEMU นั้นน่ากลัวนอกจากความสามารถในการพกพาของ IMO มันทำบางสิ่งได้เป็นอย่างดี (เช่นไม่ต้องการเคอร์เนล hooks) แต่ไม่มีประสิทธิภาพ
Geek

พอร์ต QEMUนี้ไปยังแพลตฟอร์มโฮสต์ ARMดูไม่สำคัญและฉันไม่สามารถหาคนอื่นได้
RedGrittyBrick

ไดรเวอร์อุปกรณ์ก็จะเป็นปัญหาโดยเฉพาะอย่างยิ่งสำหรับสิ่งที่ไม่ซ้ำกัน จำกัด ในระบบ ARM
CarlF

8

คำตอบง่ายๆคือ "MS ยังไม่ได้ออกพอร์ต" (แม้ว่า Windows 8 ควรจะถูกส่งไปยัง ARM) เพียงแค่ทำให้มันไม่สมเหตุสมผลในเวลานั้น ถ้าคุณต้องการที่จะเข้าไปถ้า MS สามารถ ...

ในอดีตที่ผ่านมาตระกูล NT นั้นใช้โปรเซสเซอร์หลากหลาย - NT ทำงานบน Alpha, PPC และ MIPS และมีพอร์ตที่วางแผนไว้สำหรับสถาปัตยกรรมClipperและ SPARC นี้เป็นไปได้เพราะ Windows NT ใจลอยฮาร์ดแวร์ชิ้นส่วนขึ้นอยู่กับรหัสนี้ ( HAL ) และการเขียนเพียงว่าส่วนและ recompiling ทุกอย่างอื่นควรทำเคล็ดลับ (แม้ว่าในทางทฤษฎี.NETซอฟแวร์ตามที่คาดคะเนฮาร์ดแวร์อิสระ)

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

สมมติว่าไมโครซอฟท์เปิดตัวพอร์ต ARM ของ Windows 7 ซอฟต์แวร์ใด ๆ ที่ไม่ได้แปลความหมายหรือทำงานบน VM ประเภทต่าง ๆ เช่น JVM, LLVM หรือ CLR จะต้องมีการคอมไพล์ใหม่หรือรันบนเลเยอร์การแปลเช่นRosettaหรือความเข้ากันได้ 68K เก่า เลเยอร์บน macs รุ่นเก่าที่ทราบรหัสเฉพาะ x86 (และเรียกใช้ในการจำลองอย่างโปร่งใส) และมีพลังประมวลผลเพียงพอสำหรับการแปล


ซอฟต์แวร์. NET สามารถรันบนสถาปัตยกรรมที่สำคัญเกือบทั้งหมดโดยใช้ Mono ซึ่งเป็นคอมไพเลอร์ Open Source / รันไทม์สำหรับโปรแกรม. NET ที่ทำงานภายใต้ระบบปฏิบัติการที่สำคัญที่สุด นี้ไม่เกี่ยวข้องโดยตรงกับคำถามเดิมแน่นอน
CarlF

ไม่เลย มันเกี่ยวข้องกับส่วนที่ 'ซอฟต์แวร์จะต้องมีการคอมไพล์ใหม่' ฉันเชื่อว่า CLR เป็นแพลตฟอร์มที่มีความเป็นอิสระและ / หรือรหัส. net ได้รับการปรับปรุง / คอมไพล์ในการติดตั้ง ฉันลืมเรื่องขาวดำอย่างสิ้นเชิงโชคไม่ดีมันเป็นหนึ่งในสิ่งเหล่านั้นที่ทำงานอย่างเงียบ ๆ ในพื้นหลัง p
Journeyman Geek

@CarlF ข้อแม้ที่คุณไม่สามารถใช้ P / Invoke เพื่อเข้าถึง win32 ไบนารีใด ๆ ช่วงเวลาที่คุณต้องทำเช่นนั้นคุณจะสูญเสียการสนับสนุนข้ามแพลตฟอร์มของคุณ นี่เป็นปัญหาที่น้อยกว่าเมื่อก่อนตามที่. Net framework ได้เติบโตขึ้น แต่ถ้าแอพของคุณจำเป็นต้องเชื่อมต่ออย่างแน่นหนากับการพึ่งพาระบบของบุคคลที่สามใด ๆ รหัสพื้นเมืองจะค่อนข้างธรรมดา
แดนเล่นซอโดย Firelight

2

คุณไม่สามารถรันไบนารีบนโปรเซสเซอร์ซึ่งเป็นสถาปัตยกรรมที่แตกต่างจากสถาปัตยกรรมไบนารีที่รวบรวม

คุณไม่สามารถเรียกใช้ AMD64 Linux บน ARM ได้เช่นเดียวกับที่คุณไม่สามารถเรียกใช้ AMD64 linux บนโปรเซสเซอร์ i386 (32 บิต) ตัวเลือกเดียวของคุณคือเลียนแบบโปรเซสเซอร์ทั้งหมด (ดูqemu ) จากนั้นลองใช้ให้ดีที่สุด

VMware / VirtualBox ไม่ใช่ตัวเลียนแบบโปรเซสเซอร์ซึ่งทำให้คุณโชคดีเช่นกัน

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