การดำเนินการไบนารีในเคอร์เนล Linux ถูกควบคุมผ่านbinfmt_misc
โมดูล (ย่อมาจาก "รูปแบบไบนารีจิปาถะ") วิธีการทำงานของมันคือเคอร์เนลตรวจสอบสองสามไบต์แรกของไฟล์และดูว่ามี“ หมายเลขวิเศษ ” ที่กำหนดรูปแบบไฟล์ที่รู้จักหรือไม่ ความคิดคือว่าถ้าเคอร์เนลเห็นจำนวนความมหัศจรรย์ของปฏิบัติการ .NET มันเรียกmono
; หากเห็นหมายเลขมายากลของ jar (ไบนารีเครื่องเสมือน Java) จะเรียก JRE; เป็นต้น
ปัญหาของ Mono และ Wine คือเลขเวทย์มนตร์นั้นเหมือนกัน -. NET executable เป็นแบบปฏิบัติการแบบ Windows หากทั้งสองรูปแบบมีการลงทะเบียนด้วยbinfmt_misc
สิ่งที่ลงทะเบียนล่าสุดชนะ อุ่ย
บนระบบที่ได้รับ Debian หมายเลขเวทย์มนตร์สำหรับโปรแกรมปฏิบัติการ Windows ไม่ได้เรียกไวน์หรือโมโนโดยตรง: มันต้องผ่านสคริปต์ที่ดำเนินการทดสอบเพิ่มเติมเพื่อตัดสินใจว่าจะใช้สภาพแวดล้อมแบบใด สคริปต์เริ่มต้นที่เป็นปัญหาถูกเขียนขึ้นสำหรับ Debian มันอาจถูกใช้โดยดิสทริบิวชันอื่น ๆ (เช่น Ubuntu ได้เก็บไว้)
เห็นได้ชัดว่าการกระจายของคุณ (อันไหนที่คุณไม่พูด!) ไม่ได้ใช้ สิ่งแรกที่ต้องตรวจสอบคือหากมีการอัปเดตที่คุณยังไม่ได้ใช้มีบางสิ่งที่คล้ายกัน หากคุณต้องการพอร์ตกลไกนี่คือที่ที่จะหาบิต; มันเป็นงานเขียนโปรแกรมขนาดเล็ก สคริปต์อยู่/usr/share/binfmt-support/run-detectors
ในแพ็คเกจ binfmt-support (คุณต้องการไลบรารี่/usr/share/perl5/Binfmt
ด้วย) สำหรับ mono ตัวตรวจจับอยู่/usr/lib/cli/binfmt-detector-cli
ในแพ็คเกจmono-commonหรือmono-runtime
หากการแจกจ่ายของคุณไม่มีการสนับสนุนเป็นพิเศษและคุณไม่สนใจเกี่ยวกับไบนารีของไวน์เส้นทางแบบแมนนวลมากขึ้นจะง่ายขึ้น binfmt_misc
โมดูลจะถูกควบคุมผ่าน/proc/sys/fs/binfmt_misc
ไดเรกทอรี คุณสามารถลงทะเบียนรูปแบบโดยเขียนถึง/proc/sys/fs/binfmt_misc/register
; แต่ละไฟล์ในไดเรกทอรีนี้นอกเหนือจากregister
และstatus
แสดงถึงรูปแบบที่ลงทะเบียน ระวังเมื่อเขียนถึงregister
: หากคุณบังเอิญลงทะเบียนหมายเลขเวทย์มนตร์ที่ตรงกับ Linux native executables (ELF) คุณมีโอกาสที่จะใช้ระบบของคุณโดยไม่มีวิธีการรักษาอื่นใดนอกจากการรีบูท หากต้องการยกเลิกการลงทะเบียนwine
รูปแบบสะท้อนไป-1
โมดูลการบันทึกไว้ในในเอกสารลินุกซ์/proc/sys/fs/binfmt_misc/wine
binfmt_misc
Documentation/binfmt_misc.txt.gz
ทางออกหนึ่งสำหรับปัญหาของคุณคือการยกเลิกการลงทะเบียนรูปแบบไวน์ คุณจะต้องทำอย่างนั้นหลังจากสคริปต์บูตใดที่ลงทะเบียนรูปแบบไบนารี วิธีการแก้ปัญหาทางเลือกคือการหาที่ในกระบวนการบูตรูปแบบไวน์ที่มีการลงทะเบียนและข้ามส่วนนี้ ทางออกที่สามคือการหาวิธีที่จะแยกความแตกต่าง executables .NET จากปฏิบัติการ Windows อื่น ๆ และลงทะเบียนหมายเลขมายากล NET. หลังจากหมายเลขมายากล Windows ทั่วไป