Portál AbcLinuxu, 5. května 2025 10:40
"So maybe something like a Linux emulator?" Now you're getting warmer! A team of sharp developers at Microsoft has been hard at work adapting some Microsoft research technology to basically perform real time translation of Linux syscalls into Windows OS syscalls. Linux geeks can think of it sort of the inverse of "wine"... and then you win.
+100
Někdo uzme linux, udělá z něj záhadné komerční cosi na pomezí adware a spyware příčící se snad všem zásadám, a pak se objeví nějakej Dvorak a moralizujeTo je řeč o Googlim Androidu?
Což ovšem není chyba copyleftu, ale autorů necopyleftového kódu, kteří tím proprietární software a poškozování koncových uživatelů vědomě či nevědomě podporují.
Pokud si ten necopyleftový kód vyvíjí firma sama, aspoň nese náklady a ví, že zotročování uživatelů není zadarmo. Což je i motivace: být fér k uživatelům a snížit si náklady použitím existujícího copyleftového kódu.
fork()
daný tím, že Win32 API prostě nic takového nemělo (a muselo se to emulovat pomocí něčeho na způsob vfork()+exec()
jako součást POSIX subsystému) a navíc jsou windowsovské procesy relativně "těžkotonážní" ve srovnání s těmi unixovými. Docela by mně zajímalo, jestli na tom u novějších verzi něco změnilo ...
že Win32 API prostě nic takového neměloWindows má a měl nezdokumentovanou funkci
NtCreateProcess
, pomocí níž jde fork implementovat. Viz diskuze NtCreateProcess redux. Potíž je ovšem v tom, že pak o nově vzniklém procesu musí Cygwin informovat csrss.exe – zřejmě pomocí CsrClientCallServer
.
I know that folks have looked before into NtCreateProcess as a way of doing a real fork() in cygwin, but it's very unclear from the various list archives why it's still a bad idea today, other than its being undocumented.It's a bad idea because it doesn't work. You can certainly create a forked child with NtCreateProcess, but without being able to connect it to csrss and the rest of the win32 subsystem, this new process is useless. NtCreateProcess-fork works for Interix because it has its own NT subsystem, but Cygwin has to live within win32, and I don't think creating a new subsystem is feasible for anyone without access to the NT source.
You can certainly create a forked child with NtCreateProcess, but without being able to connect it to csrss and the rest of the win32 subsystem, this new process is useless.To ale u lxss, narozdíl od Cygwinu, zřejmě nevadí, ne?
A v čem je to lepší než jakýkoli GNU/Linux? Že pod tím běží proprietární shitware je dost zásadní nevýhoda.
a druhak diky tomu, ze vse je souborHm, to tak úplně neplatí. To bys musel jet na Plan9
Z C programu je adresář \Devices přístupný standardními službami CreateFile [*1], ReadFile, WriteFile, DeviceIoControl, CloseHandle atd. Alias má právě to \\.\
Třeba pro náš WDM driver je volání pro získání handle
CreateFile("\\\\.\\UL_DRV",GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, attr, 0)
Není to úplně správně, protože místo registrace L"\\Device\\ul_drv" a L"\\DosDevices\\ul_drv" přes IoCreateDevice a IoCreateSymbolicLink m2li v jádře správně používat pro registraci jen instanci ClassGUID a z userspace překlad na něj používat služby konfiguračního a device manageru.
Obecně je pak možné přes celý prostor iterovat pomocí NtOpenDirectoryObject a NtQueryDirectoryObject.
O mapování na device přístupné přes CreateFile něco více zde.
http://stackoverflow.com/questions/21703592/open-device-name-using-createfileV ReactOSu je možné i přímo v průzkumníku z My Computer přejít na "složku" NT Objects Namespace. Pro Windows si lze takového průzkumníka stáhnout od WinInternals/SystemInternals nyní Microsoftu
https://technet.microsoft.com/en-us/sysinternals/winobj.aspxCelý prostor je přístupný přes
NtOpenDirectoryObject a NtQueryDirectoryObject
což je nativní API NT (ne obálka Win32) a je potřebné ho načíst přes
HMODULE _hModule = LoadLibrary(_T("ntdll.dll"));
Více viz
https://randomsourcecode.wordpress.com/2015/03/14/enumerating-deviceobjects-from-user-mode/a
http://www.drdobbs.com/using-nts-undocumented-object-manager-in/184416468Obecně jako mnoho jiných záležitostí na Windows NT+, celkem solidní a logická implementace v jádře s obdivuhodně dlouhodobě udržitelným API a totálně nepovedené vrstvy v aplikacím dostupném Win API, kde si ve Windows userspace připadám jak se zlomenýma oběma rukama v sádře no a nakonec kromě ReactOSu již ani vlastně naštěstí nevím jak ta Windows, na kterých i naši zákazníci naše drivery a aplikace používají, vypadají.
[*1] CreateFile je ekvivalent Unix open(), pozor open() ve Win32 je bastl snažící se o logiku fd začínajících od nuly a využívající limitované tabulky, ovšem CreateFile vrací handle a ty nejsou zorganizované od nuly. Z pohledu problémů popsaných v The Scalable Commutativity Rule: Designing Scalable Software for Multicore Processors by Austin T. Clemets je vlastně deklarování, že se na nějaký pattern vracených hodnot nedá spoléhat vlastě lepší než unixový přístup. Ale kvůli dup a dup2 se Microsoft v CRT zase snaží zpátky naimplementovat chování Unixu.
Je to pro lidi, kteří doteď používali ten Cygwin (vývojáři zvyklí na Linuxové nástroje)
Já jsem vývojář zvyklý na gnu-linuxové nástroje. Ale fakt nevím, proč bych pod nimi měl mít MS Windows resp. proprietární software.
Pokud se snaží udělat něco jako Wine pro ELF binárky, tak se obávám, že vůbec nepochopili jeho smysl. K Windowovým exáčům typicky nejsou zdrojáky a i kdyby náhodou byly, je to tak nestandardní a platformě závislé, že to těžko půjde přeložit pro jiný OS – proto je potřeba Wine, které umožňuje vyřešit situaci, kdy chceš používat svobodný OS, ale ještě (dočasně) potřebuješ nějaké „legacy“ aplikace určené původně pro Windows. Zatímco k těm ELF binárkám typicky zdrojáky existují, na standardy a přenositelnost se hodně dbá a už samotní autoři často vydávají binárky pro různé OS.
Přínos Wine spočívá v tom, že můžeš přejít na svobodný operační systém už v době, kdy jsi ještě závislý na nějakých aplikacích pro Windows. Dělat totéž ale opačným směrem nedává smysl (resp. má to smysl jen pro Microsoft a jeho snahy zatáhnout uživatele zpět do bahna proprietárního softwaru).
naše nástrojeKoho? Ty máš pocit, že ti něco patří?
Obcas mi tu opravdu chybi funkce ve stylu "libi se" :)
+1
Predpokladam ze treba coreutils na androidu budou.Nejsou
Proc by mel?
Souhlas, na to nemá žádné právo. Android i Linux je distribuován jako celek i s jádrem, u Microsoftu bych se divil kdyby to distribuoval v prodejném celku, zkrátka je to blbost*, takže myšlenému vtipu jsem se ani nemohl zasmát.
*Předpokládám, že Microsoft soudní spory nevzrušují.
chocolatey
Mam pocit z Microsoft inovuje rychleji Windows(i svuj cely ekosystem) nez jsou schopni lide to (a to i admini).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.