Maybe I should not post here. I just think people here may be familiar with binaries and could finally make it. Lina, coLinux, andLinux can do this (don't tell me commercial VMWare), but they are too heavy. I don't want a big virtual machine. I want something like Wine, light and fast, who know binaries well. And binaries should be able to run on any platform if it is based on Turing machine. Actually, even only running command line (no GUI) binaries would be highly welcome, at least for science community. Maybe we can call it "Line" :)
daxue the line project has existed and died. Now decedent http://sourceforge.net/projects/winlin/ is also now looks dead. Even one of the most advanced coders I know of had a crack at it from the Reactos project as well has had Linux emulation sub tree. And it is dead too. The differences between windows and linux are massive. Problem starts at fileformat it self. Windows is PE what is basically a coff file. Linux is a ELF. One big problem. Coff structs are older than ELF. ELF has all the functionality of Coff + extras. So wine emulating PE not hard since a kind of PE file can be made inside a ELF file. Windows emulating ELF nightmare from hell. Reactos does have part ELF compatibility. Basically as much as a NT kernel can handle. Please beware that the Reactos developer was skilled enough to alter the NT kernel if required. It was getting to major operation to make it work and most likely break compatibility with windows. He is still determined to at least get a fully working posix system on Reactos. Ok not Linux binary compatibility but it what seams achievable. colinux the core of lina and andlinux could still be improved a lot on the memory management side. To use dynamic resizing memory. dexue basically you need another OS kernel to run ELF binary fully. Because ELF binaries allow doing things that are forbin under coff like overlapping segments of the binary. Linux smallest binary is smaller than the header to define layout of ELF. Linux kernel itself is not that heavy thinking memory management and loader of it will be required to emulate ELF. Please note that reactos developer today slightly hates my guts for even suggesting the idea of Linux binaries inside a NT kernel and 4 years have past. I made the the stupid argument since it worked one way it could work the other. Basically your argument dexue.
David Gerard yes doing irix is hard. It has a really strange elf usage compared to everything else and a lot of extra syscalls. Doing Linux binaries under Windows makes doing irix under NetBSD look like a walk in the park. Ie simple. I did not go near syscalls. Another area of difference. Linux and Windows NT syscalls have almost nothing in common. Right down to using a completely different syscall interface interpert. Lucky for wine is windows NT is design that basically almost no program does syscalls directly instead uses ntdll.dll to perform syscall for them. http://en.wikipedia.org/wiki/Linux_Unified_Kernel these are still working on the idea of using windows syscalls with Linux. Notice this is a kernel mode alteration. At the start Linux Unified Kernel run into many issues with the Linux kernel that were causing them no end of problems implementing. Lot turned to be Linux kernel design flaws getting in way. But as Linux kernel itself has evolved more and more of these issues has disappeared. Big thing at the start Linux Unified Kernel could alter the linux kernel source were required so they could get somewhere. Part of the complexity doing it on windows is that the OS is closed source as well. So you cannot patch over things either. Same is true with Linux Unified Kernel and patching the Reactos Kernel. Some alterations broke the compatibility Linux had with some of its own applications with performance and so on. Turing logic never ruled out the existence of creating incompatible logic systems. Both systems may do logic may get equal results. Big advantage implementing windows in Linux is that Linux kernel is technically more advanced with a far more complete list of features compare to a Windows kernel. Sorry to say no matter how you cut it daxue running Linux stuff on windows is a uphill battle. You are going to hit walls that cannot be changed in a simple and clean way. Not supporting particular memory operations natively forces the usage of independant memory manager by colinux. Even worse of MS is they cannot legally implement lot of the features the Linux kernel has in memory management. Reason they are patented by companies like IBM and Vmware. Companies MS have double crossed in the course of doing business so not likely to give their patents way cheaply. Linux is allowed legally since it open source and it used by these companies with there products to use a lot of patents at no cost. Complete different matter for MS. There are many factor against it working. Patents are bad for everyone closed and open source alike. MS was too stupid to see this. MS presumed that open source would not be able to afford to take out patents. Big big mistake. The users of open source could afford to take out patents and some of them like IBM are highly experienced at it. Accept daxue there is no way forward on the Windows platform to run Linux stuff perfectly. There will be a way at some point to run Windows stuff perfectly on Linux. It is only time. Linux has the feature set of the kernel on it side to emulate windows.
daxue wrote:> ...Actually, even only running command line (no GUI) binaries would be highly welcome, at least for science community...If you have the source code for these non-GUI programs, they are trivial to port from one OS to another. I have done ports from obsolete mainframes, minis and micros to more modern systems.
triso Not exactly trivial. Problem is lot of Linux text mode applications are not 100 percent simple. It trivial to move old mainframe programs to linux. Its posix to posix . Problem here windows does not contain proper posix. Most Unix's and all Linux it cheep to start a new process compared to windows. It is one of the major reason why items like gcc run many times faster on Linux than windows. Starting a thread on windows takes more time than starting a process on Linux. Memory differences is a big killer. Unix and Linux applications are use to massive over allocation not causing bad things to happen. daxue is talking about the reverse to wine. Basically what he is asking is shot due to technical reasons. Science community need to simply accept windows is not up to the job. colinux can run gcc faster than running gcc natively on windows.