การดำเนินการไบนารีในเคอร์เนล 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/winebinfmt_miscDocumentation/binfmt_misc.txt.gz
ทางออกหนึ่งสำหรับปัญหาของคุณคือการยกเลิกการลงทะเบียนรูปแบบไวน์ คุณจะต้องทำอย่างนั้นหลังจากสคริปต์บูตใดที่ลงทะเบียนรูปแบบไบนารี วิธีการแก้ปัญหาทางเลือกคือการหาที่ในกระบวนการบูตรูปแบบไวน์ที่มีการลงทะเบียนและข้ามส่วนนี้ ทางออกที่สามคือการหาวิธีที่จะแยกความแตกต่าง executables .NET จากปฏิบัติการ Windows อื่น ๆ และลงทะเบียนหมายเลขมายากล NET. หลังจากหมายเลขมายากล Windows ทั่วไป