Microsoft bygger in Ubuntu i Windows 10

Permalänk
Entusiast
Skrivet av krigelkorren:

...är det verkligen OK att bygga in open source tekniker i proprietära mjukvaror bara sådär?
Man får hoppas att MS vädrat sina jurister och advokater en aning kring denna implementering.
Bara för att det är open-source är det ju inte licensfritt, sedan är ju Bash inte någon Ubuntu specifik grunka heller.
Värt att påminna om är att open-source inte är synonymt med "Gratis" som många verkar tro i liknande sammanhang.

Det beror helt på licenserna men detta har ju gjorts i samarbete med Canonical så de borde ju rimligtvis ha full koll på vad de gör.

Visa signatur

Q9450, HD4850, 8 GB DDR2 800 MHz, 3x750 GB, Antec 300, Dell 2408WFP, U2410, Qnap TS-419p+ 4x2 TB Samsung F4, Asus UL30A-QX056V, Logitech Z-680, Sennheiser HD380pro, M-Audio FastTrack Pro, Ibanez sa160qm, Ibanez TB 15R, Zoom 505II, Ibanez GSR 200, Ibanez SW 35, Cort AC-15, Squier SD-3 BBL, Yamaha PSR 270, Røde NT1-A, Nikon D200, Nikkor 18-70/3,5-4,5, 70-300VR, 50/1,8, 28/2,8, Tamron 17-50/2,8, 90/2,8, Sigma 30/1,4, SB-800, SB-25, SB-24

Permalänk
Medlem
Skrivet av Yoshman:

Det är inte en direkt ersättare för SFU/SUA, vad man gör nu tar det hela betydligt lägre mot att vara en "riktig" Linux. Vet inte hur mycket detta går att förenkla, men ska försöka göra det så enkelt att alla som förstår grunderna i programmering och OS-design ser skillnaden.

Låt oss studera ett anrop till open(), ett anrop som i Linux implementeras av ett standardbibliotek vid namn glibc. Hela denna diskussion förutsätter också att vi kör på en x86_64 CPU (namn på register och exakt vad som sparas i vilket register skiljer sig mellan olika CPU arkitekturer och även mellan 32-bit och 64-bit). Det enda glibc i praktiken gör är att anropa Linux-kärnans systemanrop nummer 2 som i kärnan hanteras av sys_open() men det behöver user-land överhuvudtaget inte veta, enda den måste känna till är att första argumentet för ett systemanrop ska ligga i CPU register rdi, andra argumentet ska ligga i register rsi och numret på det systemanrop man vill göra ska ligga i rax.

Viktigt att notera kring systemanrop och något som fundamental skiljer dem från "vanliga" funktionsanrop är att man inte behöver (man kan inte heller) specificera en minnesadress dit man vill hoppa. Systemanrop är en hård barriär mot OS-kärnan där effekten av att anrop systemanropet helt dikteras av OS-kärnan.

Ta nu ett program som anropar open(), detta är skillnaden mellan hur Cygwin, SFU/SUA resp. vad man nu lagt in i Win10

  • med Cygwin har man POSIX kompatibilitet på källkodsnivå, d.v.s. anropet open() implementeras i cygwin1.dll som i sin tur kommer paketera om argumenten och anropa Win32 funktionen OpenFile(). OpenFile() är i sin tur implementerad Kernel32.dll och där kommer ett systemanrop till NT-kärnan ske (kan inte namnet/numret så där rakt av men är inte viktigt). Formatet på binären är samma som alla Windows-program, d.v.s. COFF

  • med SFU/SUA implementera detta lager själv symbolen open(), så vi har fortfarande endast kompatibilitet på källkodsnivå då binären gör att anrop till adressen där open() ligger. I detta fall kommer man direkt göra ett systemanrop till NT-kärnan från open() (eventuellt samma systemanrop som OpenFile() gör), så jämfört med Cygwin har man kapat ett steg. Binärer måste ha COFF format

  • vad man nu gör i Win10 är att Windows-kärnan exporterar (alla?) systemanrop Linux har, vilket faktiskt inte är så många Linux har runt 300 systemanrop (Windows kärnan har tusentals systemanrop, så lite lurigare att göra det omvända...). Nu när open() anropas så hamnar man i glibc, glibc gör vad det alltid gör på x86_64 i detta läge och så länge som systemanrop nummer 2 gör det som förväntas kvittar det om kärnan är Linux, FreeBSD (som också har ett liknande stöd) eller Windows. I detta läge är det samma binär. Kompatibiliteten är nu på binärnivå, inte bara på källkodsnivå, d.v.s. man kör med ELF i stället för COFF.

Notera dock att detta är inte explicit något Microsoft sagt, men förutsatt att man inte ljuger/överförenklat något i sina presentationer är detta sättet man rimligen måste ha gjort det på.

Linux + QEMU har ett ganska coolt sätt att utnyttja detta med systemanrop. Är möjligt att bygga t.ex. 32-bit ARM binärer, sedan kör man igång dessa m.h.a. av QEMU på sin x86_64 maskin. Alla systemanrop fångas av QEMU och argumenten översätts till vad x86_64 förväntar sig, slutresultatet blir alltså att man kör 32-bit ARM binärer där alla anrop mot OSet hanteras av den existerande kärnan vilket leder till att prestanda blir helt OK och man får ett trevligt sätt att debugga applikationer som i slutändan kanske ska köras på någon rikligt simpel enhet.
Exakt, det handlar om att man verkligen kör Ubuntu user-space ovanpå Windows-kärnan. Det handlar inte om någon form av emulering eller liknande, i userland är all kod man kör i denna Ubuntu-avbild samma som den man kör i "vanliga" Ubuntu. Systemgränsen dras vid systemanrop och hela poängen med systemanrop är att skapa ett API mellan user-land och kernel som totalt dikteras av kärnan. Om systemanropen fungerar på samma sätt som med en Linux-kärnan finns det helt enkelt ingen skillnad för userland om kärnan råkar vara Linux eller Windows.

Kort och gott: man kör verkligen "riktiga" Ubuntu, apt-get install emacs installerar samma binärer direkt från Ubuntus vanliga x86_64 repo som man får till sin x86_64 Ubuntu installation.

Jämförde det inte riktigt mot SFU/SUA utan föregångaren där POSIX-kompatibiliteten låg i NT-kärnan, men där du bara hade källkodskompatibilitet. Detta låter mer som när Solaris eller FreeBSD hade möjlighet att köra Linux-binärer i praktiken, då både också implementerade Linux syscalls och kör Linuxbinärer.

Finns det egentligen något som hindrar Xorg/Xserver att köra i Ubuntu-bilden? Antar att de inte är intresserade att skapa någon drivare för grafik i kerneln. Xservern kan man ju annars köra i Windows/Win32. Så det bör ju inte vara något problem.

Det jag ville peka på var att det kanske inte ersätter när man vill jobba med att portera POSIX-mjukvara till Windows (eller blanda med "vanliga" Win32-program), där passar nog MinGW bättre.

Fungerar det som Solaris Containers for Linux är det praktiskt i servermiljö också, men det krävs att det underhålls och uppdateras för att vara relevant och användbart om ett par år. Annars kanske du sitter med en Ubuntu 14.04-avbild 2018 eller så

Permalänk
Medlem

Det verkar mer som att det är delar av GNU som ska integreras snarare än Ubuntu. Ska det ens innefatta kerneln? Annars är det ganska missvisande att skriva att det är linux som ska integreras.
Eller har jag missuppfattat det hela?

Dessutom är det GPLv3+ som innefattas av en del av programmen? GNU Bash bl.a. är ett GPLv3+ program.

Permalänk

Coolt!
Verkar vara många som inte riktigt förstår vad detta är. Så: Canonical (företaget bakom Ubuntu) har alltså jobbat tillsammans med Microsoft och gjort det möjligt att köra Ubuntu bash på Windows. Det fungerar då systemanropen från detta skal (bash) översätts åt NT-kärnan så att de kan köras i Windows, istället för att de som i t.ex. Ubuntu anropar Linux kärnan. (Det finns ~350 systemanrop som alltså Microsoft jobbat/jobbar med att översätta). Detta innebär i praktiken att man får en fungerande "Ubuntu terminal" i Windows som kan köra Linux binaries och samma kommandon man är van vid att köra i Ubuntu i Windows.

För mer info rekommenderar jag Linux Command Line on Windows

Spännande tider vi lever i...

Visa signatur

• Intel® Core™ i7-4770K • ASUS Z97-A • Noctua NH-D14 • Kingston HyperX 8GB DDR3 1600MHz • Corsair AX850
• PowerColor R9 290X 4GB PCS+ • Intel® SSD 520 240GB • Cooler Master HAF X • Dell U2410 • SteelSeries H Wireless

Permalänk
Medlem
Skrivet av Ertiyed:

Det verkar mer som att det är delar av GNU som ska integreras snarare än Ubuntu. Ska det ens innefatta kerneln? Annars är det ganska missvisande att skriva att det är linux som ska integreras.
Eller har jag missuppfattat det hela?

Dessutom är det GPLv3+ som innefattas av en del av programmen? GNU Bash bl.a. är ett GPLv3+ program.

Det är ju en Ubuntu-avbild som laddas ner som vanligt i princip, som kör mot ett kompatibilitetslager implementerat i kärnan så nej det är inte Linux, men väl en distribution byggd som Linuxbinärer och körandes Linuxbinärer. User-mode är Ubuntu, kärnan är ett kompatibilitetslager i NT-kärnan som översätter anrop osv. Du kör alltså Linux-verktyg på Ubuntu på Windows. GNU tillhör user-mode/space och Ubuntu här. cmd.exe har blivit en VT100-terminal och du kör skalet genom att bara skriva bash. Det är inte till för att samverka med Windowsprogram och liknande. Det gör inte bash till ett Powershell-alternativ för Windows.

Canonical har skrivit lite om det själva – https://insights.ubuntu.com/2016/03/30/ubuntu-on-windows-the-...

Mer information kommer säkert, och det bör gå att testa via att köra senaste insider preview som bör komma när som helst. Men som vanligt så ska man inte vänta sig att det blir något produktionsredo på väldigt länge. Microsoft har själva t.ex. inte ens en färdig Skypeversion för UWP/Store utan har precis börjat testa en preview trotts att vi vid det här laget har 4 år av WinRT bakom oss, samtidigt pushar de för att spel ska lanseras till plattformen innan den är redo och innan de själva har porterat några större projekt till UWP. Men är man okej med att det är a-work-in-progress så är det bara att börja ha kul med det.

Permalänk
Medlem
Skrivet av Christley:

då hoppas jag att denna funktion läggs i enterprice delen av windows om en privatperson ändå inte kommer ha nytta av detta.

Alla utvecklare kör väl inte Windows Enterprise versioner? Det finns väl många privatpersoner som utvecklar? Var har du varit de senaste åren....

Skrivet av Christley:

vill inte att windows tar upp mer plats än de redan gör

Har du slut på lagring?

Permalänk

Dom kanske har portat user mode linux till windows?
Edit: Menade alltså http://user-mode-linux.sourceforge.net/

Permalänk
Skrivet av FattarNiInte:

Dom kanske har portat user mode linux till windows?

Det är typ exakt vad de gjort

Visa signatur

• Intel® Core™ i7-4770K • ASUS Z97-A • Noctua NH-D14 • Kingston HyperX 8GB DDR3 1600MHz • Corsair AX850
• PowerColor R9 290X 4GB PCS+ • Intel® SSD 520 240GB • Cooler Master HAF X • Dell U2410 • SteelSeries H Wireless

Permalänk
Medlem
Skrivet av magohl:

Alla utvecklare kör väl inte Windows Enterprise versioner? Det finns väl många privatpersoner som utvecklar? Var har du varit de senaste åren....

Har du slut på lagring?

på 2 av datorerna har jag ja

Visa signatur

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Permalänk
Medlem

neej fy linux, bort bort bort!

Visa signatur

Intel 9700 i7@4.7GHz | LG55G920V | Silverstone Raven RV02 | Thermaltake MAX | Asus TUF 3080 OC | g-string 32GB RAM 1833mhz | Hyper 880W Gold | Intel 9700 Pro mNVME 1TB |
Intel 2700K@4.7GHz | VIEWSONIC 4K PROJ | SILVERSTONE HTPC | Zalman 9900CCMAX | MSI GTX970 4096Mb SLi | Kingston 16Gb DDR3 1866Mhz | Windows 8 64 Bit | Hyper 880W Gold | LG BH10LS30 | Asus P8P67 Maximus IV Extreme| Samsung 840 Pro 256GB SSD | Acer

Permalänk
Medlem

@dealerovski:

Så du gillar inte Linux?
Det var då synd då du troligen använder Linux dagligen utan att veta det...

Finns i mycket av den elektronik folk använder dagligen nu förtiden i någon form eller annan.
Så som telefoner, tv apparater, bilar m.m.

Visa signatur

ASRock B450M Pro4 | Ryzen 5 5600 | Corsair LPX 2x16GB @ 3600

Permalänk
Medlem

Playstation kör inte Linux

Skrivet av Oringen:

Playstation 3 och 4'a emulatorer enklare att göra nu då de är Linux baserade?

De är inte Linuxbaserade. Playstation fyra kör FreeBSD, se intervju. Playstation tre tror jag körde någon hemmasnickrad variant baserad på NetBSD som verkar vara populärt i Japan. Men det tror jag också behandlas i intervjun som länkas ovan.

Permalänk
Medlem
Skrivet av grynnan:

@Daniel86:

Har funnits för windows ett tag. ingår i win10, för Vista-8.1 tankar man ner det från microsofts TechNet.
https://technet.microsoft.com/en-us/sysinternals/cc817881

Eller varför inte LiteStep? Det har ju funkat sedan windows 95 tiden helt perfekt för virituella desktops, nästan hack i häl på att sådana desktops kunde användas i BeOS (1993). I windows och linux jämfört med BeOS så är dock än idag dessa virituella desktops rätt begränsade medans man kunde i BeOS ha till exempel nio olika desktops, alla med olika upplösning och färgdjup för att testa olika utseendescenarion.

Visa signatur

2x Xeon E5-2699 v4, 256gb Quad Channel RAM, 2x nVIDIA 980ti
----
AMD Ryzen 5950X, 128gb Dual Channel RAM, 2x AMD 6900XT
----
Massiv amiga och 3dfx-samling.

Permalänk
Medlem
Skrivet av RX1:

@dealerovski:

Så du gillar inte Linux?
Det var då synd då du troligen använder Linux dagligen utan att veta det...

Finns i mycket av den elektronik folk använder dagligen nu förtiden i någon form eller annan.
Så som telefoner, tv apparater, bilar m.m.

jag drev lite bara. tycker däremot att det finns väldigt många linux fanboys som hela tiden trackar windowsanvändare så jag är lite anti det.

Visa signatur

Intel 9700 i7@4.7GHz | LG55G920V | Silverstone Raven RV02 | Thermaltake MAX | Asus TUF 3080 OC | g-string 32GB RAM 1833mhz | Hyper 880W Gold | Intel 9700 Pro mNVME 1TB |
Intel 2700K@4.7GHz | VIEWSONIC 4K PROJ | SILVERSTONE HTPC | Zalman 9900CCMAX | MSI GTX970 4096Mb SLi | Kingston 16Gb DDR3 1866Mhz | Windows 8 64 Bit | Hyper 880W Gold | LG BH10LS30 | Asus P8P67 Maximus IV Extreme| Samsung 840 Pro 256GB SSD | Acer

Permalänk
Medlem
Skrivet av dealerovski:

jag drev lite bara. tycker däremot att det finns väldigt många linux fanboys som hela tiden trackar windowsanvändare så jag är lite anti det.

Som jag ser det är dom bra på olika saker. Tyvärr är en del helt rabiata och lever i nån konstig bubbla (fortfarande).

Visa signatur

< :: Intel i9 9900ks@5.0Ghz/Ring@4.5Ghz | 32Gb DDR4@3600Mhz | Geforce RTX 4070 :: >

Permalänk
Medlem

@shelter: Är det något speciellt, annat än stöd för spel och diverse annan x86-mjukvara, som är bättre på Windows?
Jag kör huvudsakligen Windows 7 själv, men då jag utvecklar en del, kör egen server osv är Linux totalt överlägset. Rätt onödigt för gemene man att byta dock, men vilken Svensson som helst borde kunna köra t.ex. Ubuntu, Chrome OS etc som desktop-OS och inte märka någon större skillnad.

Permalänk
Medlem
Skrivet av jolny:

@shelter: Är det något speciellt, annat än stöd för spel och diverse annan x86-mjukvara, som är bättre på Windows?
Jag kör huvudsakligen Windows 7 själv, men då jag utvecklar en del, kör egen server osv är Linux totalt överlägset. Rätt onödigt för gemene man att byta dock, men vilken Svensson som helst borde kunna köra t.ex. Ubuntu, Chrome OS etc som desktop-OS och inte märka någon större skillnad.

Precis som du säger, sen att använda "desktop" överlag tycker jag personligen är bättre på Windows.
Har kört Linux som desktop till och från genom åren men aldrig fastnat för det, av olika anledningar. Sist var det att jag tänkte att min gamla netbook vore perfekt som Linuxdesktop men tyvärr sög (som vanligt) grafikprestandan, fanns inga drivrutiner som var något att ha, det hade funnits men dom drivrutinerna var nerlagda.

Däremot Linux som server har jag kört sen jag började med det för massor med år sedan, det skulle inte gå att köra en Windows server på samma sätt jag gör med min Linux server.

Visa signatur

< :: Intel i9 9900ks@5.0Ghz/Ring@4.5Ghz | 32Gb DDR4@3600Mhz | Geforce RTX 4070 :: >

Permalänk
Medlem
Skrivet av Yoshman:

Detta har stöts och blötts redan och är ett totalt icke-problem i detta fall. Vad man sagt är att systemanropen inte innefattar GPLs "derived work", d.v.s. saker som befinner sig på olika sidor om systemanropsbarriären är även separerade ur GPLs synvinkel. Man diskuterade detta en hel del kring Android då Android kör en Linux-kärnan som är GPLv2 medan man har ett specialdesignat userland där t.ex. libc (Bionic) har BSD-licens i Android medan det är LGPL (glibc) i typiska Linux-distron.

Google har med detta säkerställt att man inte bryter mot GPL i Android trots att man har proprietära delar i userland. I Win10 fallet har man en proprietär kärna och ett separat userland som uppfyller samma krav som "vanliga" Ubuntu.

Enda potentiella fallgropen är om Oracle lyckas vinna mot Google och själva API-definitionen kan anses vara skyddade. I det läget ligger Microsoft lite pyrt till då man implementerar Linux systemanrop. Men låt oss bedja att Oracle förlorar så det visslar om det i denna andra runda mellan GOOG och ORCL (handlar om att Google använder delar av Javas API i Android, rätten har redan fastslagit att Google inte snott något från Oracles JRE). Vinner Oracle detta kan vi som jobbar i branschen packa ihop och fundera på vad man ska göra härnäst...

Ett väldigt bra svar, tack!

Skickades från m.sweclockers.com

Visa signatur

Mjölnir: Ryzen 9 3900X | X570-I | Ballistix Sport 32GB | Powercolor RX 5500XT 4GB ITX | Kolink Sattelite
Server: Ryzen 5 1400 | X470-F | Ballistix Sport 24GB | ASUS HD 7790 2GB | Sapphire RX 470 8GB ME | NZXT Switch 810

Permalänk
Medlem
Skrivet av Christley:

för att alla mina maskiner har inte mycket ssd space. plus att jag vill inte att majoriteten av min ssd tas upp av ett system. vill kunna ha program och något spel på de också.
min flickväns dator har tex bara en 60gb ssd. och när jag använde den så var det inte ovanligt att jag behövde ta bort saker en gång i veckan för att allt windows sparar tar upp sån plats.

Jag hade 60GB Hårddisk en gång i tiden med Windows Vista installation och det var inte kul precis. Windows har sedan Vista tagit väldigt mycket plats. Tempfiler, backups, uppdateringar och uppgraderingar gör inte saken bättre precis. När jag skulle skaffa SSD väntade jag tills jag hade råd med 256GB för att inte hamna i skiten jag var i innan med ständig platsbrist och långsammare system (vet ej hur det blir med SSD, men med nära full HDD så har Windows alltid blivit långsamt för mig). I nuläget har jag ca halva min SSD upptagen och flesta spel är installerade på 2TB hårddisken så jag hade knappt klarat mig med 128GB till Windows och verkligen inte med mindre.

Till ämnet:
Jag har ingen större kunskap precis, men jag kan ana potentiella användningsområden för min del. Sen hoppas jag på att antingen Microsoft eller ett öppet projekt tar Bash funktionerna och bygger vidare för fler användningsområden. Saker behöver liksom inte alltid användas som det är tänkt och i begränsningar finns det möjligheter. Blir kul att läsa vad folk hittar på när Bash funktionen släpps. I värsta fall faller det i glömska.