Linux上でWindowsのアプリを動作させるソフトウェア
Wineに関する情報交換スレ。
前スレ
今夜も Wine で乾杯! - 23本目
https://mao.5ch.net/test/read.cgi/linux/1585198566/
Wine本家
http://www.winehq.org/
http://wiki.winehq.org/
動作報告Wikiや過去ログなど
http://www.2chlinux.org/index.php?FrontPage
ここにパッチをうpするときはgzipやbzip2で圧縮した上で
base64などでエンコードしてください。おながいします。
動作報告は>>2のテンプレ使用を推奨。
今夜も Wine で乾杯! - 24本目
1login:Penguin
2023/10/30(月) 10:16:30.83ID:ubWIq9ik2025/06/13(金) 12:00:53.52ID:doXYGwuX
macOS 28以降はRosetta 2がサポートされなくなるのでWineをMacで動かすのは無理かな
まだ2年以上猶予はあるけど
まだ2年以上猶予はあるけど
2025/06/13(金) 19:58:19.74ID:pP1lUoJg
>>396
すでにFEXがARM Windowsでのx86/x86_64エミュレータ xtajit.dllとxtajit64.dllを対応する
Wine用 libwow64fex.dllとlibarm64ecfex.dllを実装済みだから、16Kページサイズ問題を除けば、
Rosetta2がなくなってもなんとかなると思うよ
wiki.fex-emu.com/index.php/Development:ARM64EC#Windows
すでにFEXがARM Windowsでのx86/x86_64エミュレータ xtajit.dllとxtajit64.dllを対応する
Wine用 libwow64fex.dllとlibarm64ecfex.dllを実装済みだから、16Kページサイズ問題を除けば、
Rosetta2がなくなってもなんとかなると思うよ
wiki.fex-emu.com/index.php/Development:ARM64EC#Windows
2025/06/14(土) 12:53:14.36ID:OiYZOC52
>>397
Linuxはどうなってるのか知らないけど、それってMacのCocoaとかフレームワークのコードも変換できるの?
32ビット廃止なった時みたいにCodeWeaverの人たちがなんとかしてくれるのかな
Linuxはどうなってるのか知らないけど、それってMacのCocoaとかフレームワークのコードも変換できるの?
32ビット廃止なった時みたいにCodeWeaverの人たちがなんとかしてくれるのかな
2025/06/14(土) 14:37:00.33ID:2Qahm2TX
>>398
レイヤーが違うからCocoaが64bitでしか動かなくても問題ない
ややこしいんだけど、32bit アプリを64bit OSで動かす仕組みと、64bit x86_64バイナリを64bit ARM CPUで
動かす仕組みは別なので、分けて考えないとダメ
超長文になるんだけど、32bit アプリを64bit OSで動かす仕組みを説明するね
LinuxもmacOSも32bit互換機能はカーネルレベル(システムコールレベル)で対応しており、LinuxでもmacOSでも
既存の32bitバイナリがそのまま動作するようになっている(いた)
一方、Windowsは64bit Itaniumで32bit x86を動かす仕組みとしてWOW64を導入した
Itaniumはx86との互換性が元々低いうえに途中から互換機能が削除されたので、x86バイナリを動かすのには
x86エミュレータが必要な上、システムコールレベルで互換性を保つようカーネルレベルで対応するのは
難しいので、上位のWin32 APIレベルでの互換性を保つようにした
WOW64では32bit アプリからのWin32 API呼び出しに対応する32bit版 kernel32.dll、gdi32.dll、user32.dllを
書き換えて、wow64.dllとwow64win.dll経由で64bit版 kernel32.dll、gdi32.dll、user32.dllを呼び出すようにした
さらにx86エミュレータのIA32Exec.binとWOW64をつなぐwowia32x.dllを利用してItaniumでx86を実行できるようにした
x86_64のWOW64でも基本的な仕組みは同じで、32bit版 kernel32.dllがwow64.dll経由で64bit版 kernel32.dllへの
呼び出し等を行うが、x86_64 CPUにはx86互換モードがあるので、64bitモードと32bitモードを切り替える
wow64cpu.dllを利用して、x86_64でx86を実行している
64bit ARM Windowsでも同じで、32bit版 kernel32.dllを書き換える等は同じで、64bit ARM AArch64 CPUの32bit
AArch32互換機能をwowarmhw.dllを利用してAArch64でAArch32を実行し、32bit x86バイナリはx86エミュレータの
xtajit.dllを利用してAArch64でx86を実行している
レイヤーが違うからCocoaが64bitでしか動かなくても問題ない
ややこしいんだけど、32bit アプリを64bit OSで動かす仕組みと、64bit x86_64バイナリを64bit ARM CPUで
動かす仕組みは別なので、分けて考えないとダメ
超長文になるんだけど、32bit アプリを64bit OSで動かす仕組みを説明するね
LinuxもmacOSも32bit互換機能はカーネルレベル(システムコールレベル)で対応しており、LinuxでもmacOSでも
既存の32bitバイナリがそのまま動作するようになっている(いた)
一方、Windowsは64bit Itaniumで32bit x86を動かす仕組みとしてWOW64を導入した
Itaniumはx86との互換性が元々低いうえに途中から互換機能が削除されたので、x86バイナリを動かすのには
x86エミュレータが必要な上、システムコールレベルで互換性を保つようカーネルレベルで対応するのは
難しいので、上位のWin32 APIレベルでの互換性を保つようにした
WOW64では32bit アプリからのWin32 API呼び出しに対応する32bit版 kernel32.dll、gdi32.dll、user32.dllを
書き換えて、wow64.dllとwow64win.dll経由で64bit版 kernel32.dll、gdi32.dll、user32.dllを呼び出すようにした
さらにx86エミュレータのIA32Exec.binとWOW64をつなぐwowia32x.dllを利用してItaniumでx86を実行できるようにした
x86_64のWOW64でも基本的な仕組みは同じで、32bit版 kernel32.dllがwow64.dll経由で64bit版 kernel32.dllへの
呼び出し等を行うが、x86_64 CPUにはx86互換モードがあるので、64bitモードと32bitモードを切り替える
wow64cpu.dllを利用して、x86_64でx86を実行している
64bit ARM Windowsでも同じで、32bit版 kernel32.dllを書き換える等は同じで、64bit ARM AArch64 CPUの32bit
AArch32互換機能をwowarmhw.dllを利用してAArch64でAArch32を実行し、32bit x86バイナリはx86エミュレータの
xtajit.dllを利用してAArch64でx86を実行している
2025/06/14(土) 14:42:28.40ID:2Qahm2TX
Wine 9.0以前でx86_64 Linuxで32bit Windowsバイナリを動かす場合やCatalinaより前のmacOSで動かす場合、
32bit版Wineを利用してLinuxやmacOS側の32bit互換機能を使って32bit Windowsバイナリを動かしていた
macOSではCatalina以降OS側の32bit互換機能を削除し、そのままでは32bit版Wineが動かなくなったので、
CodeWeaverはCatalina以降に実装されたLDTを変更するAPIを利用して、自前で64bit版Wineで
32bit Windowsバイナリを動かせるようにした
メモリ空間サイズの違いがあるから1つのプロセス内で32bitと64bitを切り替えるのは困難だけど
CodeWeaverは自前のコンパイラで気合で対応していた(64bitプロセスだけど4GB以下しか使わないよう
スタック等の扱いを変更)
Wine 9.0で導入された新しいWOW64実装を利用する場合、LinuxやmacOSの32bit互換機能ではなく、
WindowsのWOW64と同様の仕組みで32bit Windowsバイナリを動かす
x86_64でx86を動かす場合、LDTを変更するAPI(Linuxではmodify_ldt)を利用してWine側で実装したwow64cpu.dllを
使って、32bitモードと64bitモードの切り替えを行っている
同様に64bit ARM OSでFEXを利用してx86を動かす場合、libwow64fex.dllを利用してx86を64bit AArchで実行する
Win32 APIの実装に関して、Wineで動作するWindowsアプリとWineによるWin32 API実装の実態である
wineserverとの分離がWine 9.0で完了したので、Windowsアプリとwineserverは隔離された別プロセスとなり、
Wine上のWindowsアプリによるWin32 API呼び出しはwineserverへのプロセス間通信で行われる
要するに、Windowsバイナリが32bitか64bitかということがwineserverから切り離されたので、wineserverは
通常の64bit LinuxアプリやmacOSアプリであり、wineserverが利用するCocoaが32bit非対応であっても問題ない
一部のディストリビューションでmultiarch等32bit互換機能を削除しようという話が出ているのもこの関連
もうWineぐらいしかLinuxの32bit互換機能を利用していないのだから、Wineの側で32bit互換機能を提供し
WineがLinuxの32bit互換機能を利用しないのなら、Linuxの32bit互換機能は用無しだということ
32bit版Wineを利用してLinuxやmacOS側の32bit互換機能を使って32bit Windowsバイナリを動かしていた
macOSではCatalina以降OS側の32bit互換機能を削除し、そのままでは32bit版Wineが動かなくなったので、
CodeWeaverはCatalina以降に実装されたLDTを変更するAPIを利用して、自前で64bit版Wineで
32bit Windowsバイナリを動かせるようにした
メモリ空間サイズの違いがあるから1つのプロセス内で32bitと64bitを切り替えるのは困難だけど
CodeWeaverは自前のコンパイラで気合で対応していた(64bitプロセスだけど4GB以下しか使わないよう
スタック等の扱いを変更)
Wine 9.0で導入された新しいWOW64実装を利用する場合、LinuxやmacOSの32bit互換機能ではなく、
WindowsのWOW64と同様の仕組みで32bit Windowsバイナリを動かす
x86_64でx86を動かす場合、LDTを変更するAPI(Linuxではmodify_ldt)を利用してWine側で実装したwow64cpu.dllを
使って、32bitモードと64bitモードの切り替えを行っている
同様に64bit ARM OSでFEXを利用してx86を動かす場合、libwow64fex.dllを利用してx86を64bit AArchで実行する
Win32 APIの実装に関して、Wineで動作するWindowsアプリとWineによるWin32 API実装の実態である
wineserverとの分離がWine 9.0で完了したので、Windowsアプリとwineserverは隔離された別プロセスとなり、
Wine上のWindowsアプリによるWin32 API呼び出しはwineserverへのプロセス間通信で行われる
要するに、Windowsバイナリが32bitか64bitかということがwineserverから切り離されたので、wineserverは
通常の64bit LinuxアプリやmacOSアプリであり、wineserverが利用するCocoaが32bit非対応であっても問題ない
一部のディストリビューションでmultiarch等32bit互換機能を削除しようという話が出ているのもこの関連
もうWineぐらいしかLinuxの32bit互換機能を利用していないのだから、Wineの側で32bit互換機能を提供し
WineがLinuxの32bit互換機能を利用しないのなら、Linuxの32bit互換機能は用無しだということ
2025/06/14(土) 14:46:24.38ID:2Qahm2TX
64bit x86_64バイナリを64bit ARM CPUで動かす仕組みはこの辺参照
- ARM Windowsのx86/x64エミュレーションの日本語での解説(32bit x86エミュレーターのxtajit.dllも含む)
www.ffri.jp/assets/files/research/research_papers/Koh_Nakagawa_Appearances_are_deceiving_Japanese.pdf
- Wine側でのARM64ECの実装
gitlab.winehq.org/wine/wine/-/wikis/ARM64EC-Toolchain
- ARM Windowsのx86/x64エミュレーションの日本語での解説(32bit x86エミュレーターのxtajit.dllも含む)
www.ffri.jp/assets/files/research/research_papers/Koh_Nakagawa_Appearances_are_deceiving_Japanese.pdf
- Wine側でのARM64ECの実装
gitlab.winehq.org/wine/wine/-/wikis/ARM64EC-Toolchain
2025/06/14(土) 14:51:47.58ID:2Qahm2TX
この辺ろくな資料がなく自分の独自の考察なので、どこか間違っていたらツッコミお願いしまつ
レスを投稿する
ニュース
- 👧「子どもいるんですけど。ほかの席じゃだめですか?」予約した窓側の指定席に座る親子 [パンナ・コッタ★]
- 【フリーアナ】50歳・山本モナ、「NEWS23」降板から20年 雰囲気ガラリ 近影に驚きの声「わ~」「昔のお顔忘れた」 [少考さん★]
- 「年収500万円でもゼロ」若者がブルーカラーを敬遠する理由…AI時代に求められる“かっこよさ”とキャリアの転換 ★4 [首都圏の虎★]
- 【自民】林芳正氏が閣外追放で反撃始動、若手と“決起集会”へ…2027年総裁選に向け「高市VS反高市」本格化か [煮卵★]
- 佐藤二朗「うんこ」Xに投稿 [Ailuropoda melanoleuca★]
- 米、ICC本体へ制裁か 圧力強化、機能不全恐れ [蚤の市★]
- 白浜町、結局パンダ無しで観光客増加!今年に入っても絶好調!町長「数字は嘘をつきません」👈こいつひょっとして有能なんか [996534393]
- 【実況】博衣こよりのえちえち空の軌跡1st最終回🧪★3
- わいもとうすこ🏡たててええか?😖
- 【祝🎉】安倍晋三が72歳の誕生日を迎える [748563222]
- 【実況】博衣こよりのえちえち空の軌跡2st最終回🧪★2
- 【朗報】日本、来年改憲へwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww [595118796]