Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 30 reacties
Bron: /home/liquidat, submitter: LuitvD

Een paar dagen geleden is de Linux-kernel voorzien van een aantal patches waarmee een stabiele userspacedriver mogelijk wordt. Hierdoor zou het leven van driverontwikkelaars een stuk eenvoudiger moeten worden.

Tux (medium)Deze nieuwe api voor stabiele userspacedrivers was een klein jaar geleden reeds aangekondigd. Sindsdien is er door verschillende kernelontwikkelaars gewerkt aan het schrijven van de benodigde code. De api die enkele dagen terug aan de kernel is toegevoegd, maakt het mogelijk om het grootste deel van een driver in userspace te laten draaien en slechts een klein deel in de kernel. Van drivers binnen kernelspace moet de broncode openbaar gemaakt zijn, maar niet alle hardwarefabrikanten willen dat doen in verband met bijvoorbeeld het gebruik van specifieke algoritmen. In plaats daarvan worden voorgecompileerde kernelmodules geleverd. Die moeten echter bij iedere kernelupdate opnieuw gecompileerd worden.

Het grote voordeel van de nieuwe api is dat drivers minder onderhoud behoeven, omdat minder hercompilaties nodig zijn. De api die vanuit de kernel beschikbaar wordt gesteld, zal stabiel zijn en niet vaak wijzigen. Dit in tegenstelling tot de kernel zelf, waar men geen api-stabiliteit wil en kan garanderen. Van de userspacedriver hoeft de broncode niet openbaar gemaakt te worden en dat kan voor sommige bedrijven reden zijn om Linux-drivers uit te brengen voor propriëtiare hardware. Het kernelspacedeel van drivers moet wel open source zijn, maar kan geïntegreerd worden in de kernel. Vanwege het ontbreken van onder meer dma-transfer tussen user- en kernelspace is de nieuwe api niet de oplossing voor alle Linux-drivers. Dit geldt specifiek voor drivers die werken met grote hoeveelheden data, videokaartdrivers bijvoorbeeld.

Moderatie-faq Wijzig weergave

Reacties (30)

idd, dit driver model zal wel vernieuwend/beter zijn dan de vorige, maar het grootste struikelblok, nl de videokaartdrivers, wordt hiermee niet verholpen.
Die videokaartdrivers blijven de komende tijd een drama, daar is weinig aan te doen. Echter dit is een forse verbetering voor veel producten die onder windows prima werken, maar onder linux nog in de problemen kwamen, zoals sommige Wifi kaarten (de oude winmodems waren ook berucht). WPA begint nu gelukkig langzaam aan te werken.
Als er dadelijk weer zo'n groep producten op de markt komen, dan kunnen de fabrikanten het nu eenvoudiger oplossen. Want soms zijn de licentieovereenkomsten heel helder, en mogen ze de softwarecode niet publiceren.

Hopelijk hebben nVidia en Ati/AMD hun lesje geleerd en gaan ze proberen meer opensource spul te krijgen, maar ik vrees dat Ati/AMD zich niet in de positie bevind om daar over na te denken. Misschien dat Intel dadelijk met de oplossing gaat komen....
Een ander struikelblok, dat veel fabrikanten gewoon geen linux driver maakten, vanwege "ingewikkeld, diep in de kernel en te duur voor zo'n kleine markt" is nu wel aangepakt. Nu maar hopen dat de hardware fabrikanten dit signaal oppakken en zelf actiever aan driver ontwikkeling gaan doen.
Hopelijk wel ja, maar de linuxgebruikers hebben echter wel een reputatie om nogal onvriendelijk naar hardwarefabrikanten te zijn en nogal rechtlijnig Open Source eisen. Ik ben zeer benieuwd hoe de Linux gebruikers op closed source drivers gaan reageren en denk dat ook veel hardwarefabrikanten voorlopig de kat uit de boom zullen kijken.

Maar goed, deze stap zat er al aan te komen en is gewoon noodzakelijk als Linux ooit een serieus desktop OS wil worden. Gelukkig begint dat inzicht nu eindelijk ook binnen de linuxgemeenschap door te dringen.
Hopelijk wel ja, maar de linuxgebruikers hebben echter wel een reputatie om nogal onvriendelijk naar hardwarefabrikanten te zijn en nogal rechtlijnig Open Source eisen. Ik ben zeer benieuwd hoe de Linux gebruikers op closed source drivers gaan reageren en denk dat ook veel hardwarefabrikanten voorlopig de kat uit de boom zullen kijken.

Maar goed, deze stap zat er al aan te komen en is gewoon noodzakelijk als Linux ooit een serieus desktop OS wil worden. Gelukkig begint dat inzicht nu eindelijk ook binnen de linuxgemeenschap door te dringen.
Linux gebruikers of kernel ontwikkelaars? Linux gebruikers kunnen inderdaad nogal drammerig zijn over Open Source, terwijl je closed source (vb. Google Earth) prima op Linux kan draaien.

Kernel ontwikkelaars daarentegen hebben goede praktische redenen om de driver open te willen hebben:
* bij wijzigingen aan een subsysteem kunnen alle drivers opgezet worden. Dat kan bijvoorbeeld nodig zijn voor een bugfix. USB ondersteuning is 3x omgezet in Linux. In Windows hebben we bij '95 en '98 moeten wachten tot een nieuwe versie voordat bepaalde kernel verbeteringen doorgevoerd konden worden.
* nieuwe functionaliteit (bijvoorbeeld powermanagement) kan later toegevoegd worden.
* er kan onderzocht worden welke functionaliteit een driver gebruikt. erg handig bij het testen van stabiliteit bij wijzigingen.
* iedereen kan doen waar hij/zij het beste in is: hardware maken of Linux drivers ontwikkelen.
* de hardware kan out-of-the box ondersteund worden, geen licentieproblematiek voor distributies.
* ondersteuning voor de ~10 andere platformen waar Linux op werkt kan toegevoegd worden.
* bugs kunnen direct opgelost worden.
* geen afhankelijkheid van de goodwill van de fabrikant; als die na 5 jaar de drivers niet meer wil ondersteunen kan deze toch nog in de kernel blijven.

Bedenk dat al deze activiteiten kosteloos voor de fabrikant zijn. Je geeft eenmalig documentatie of driver source code uit, en de kernel ontwikkelaars onderhouden en verbeteren de driver voor je. Zelfs jaren na dato wordt de driver nog onderhouden. :D

Windows lost punt 1 deels op door in de kernel een "stabielere buitenlaag" op te nemen waar drivers gebruik van maken. Zo'n laag ontwikkelen kost significant meer tijd; je goed moet uitdenken wat er in moet, en je mag het nooit meer veranderen. Zo'n soort buitenlaag wordt nu dus ook voor Linux ontwikkeld in de vorm van userspace drivers. Het zal inderdaad meer fabrikanten over de streep kunnen halen, maar ik hoop dat men de voordelen van Open Source er niet door gaat vergeten. De fabrikant kan daar namelijk zelf van protiferen!

[Reactie gewijzigd door YaPP op 24 juli 2007 17:33]

Je klinkt als iemand die al jaren Linux gebruikt :+ en ik kan me helemaal vinden in wat je zegt ;)

@ laatste alinea: Precies, en daarom hebben fabrikanten nu zo'n problemen met Vista, want daar is de kernel, en de driverspace, significant veranderd. Dáarom heeft iedereen problemen met Vista. Gewoon omdat Microsoft de fabrikanten de tijd niet heeft gegeven de drivers bij te werken vóor de release. Bij een kernelverandering van een Linux distro worden alle (open) drivers lekker compleet meegeleverd, aangepast aan de kernel.

Dat is dus ook weer een nadeel van deze api. Als er toch iets veranderd wordt, heeft iedereen daar problemen mee.
Het is inderdaad het ene of het andere. Óf de Linux-ontwikkelaars zorgen er voor dat fabrikanten binary-drivers kunnen gebruiken zodat alles kan worden ondersteund, óf de fabrikanten gaan gewoon over op Open Source, en bouwen vervolgens betere drivers dan hun gesloten concurrenten.

En voor AMD/ATi en nVidia geldt dit laatste alleen. Als één van de twee nou eens begint met een open-source project voor zijn drivers, volgt de ander gegarandeerd binnen een half jaar. En als de videokaartondersteuning in Linux dan eindelijk goed zit, hoeven we ook niet lang te wachten of game-bouwers gaan ook cross-platform ontwikkelen (zoals dat wat op de Quake of UT2k4 engine draait). Of zelfs nog een stap verder, en Linux-exclusive games bouwen... Dat zou fijn zijn...

Maar ach, verwacht niet te veel... Dit kan echt nog jaren duren... helaas
Waarom zou Linux-exclusive fijn zijn, of een stap verder? Dan ben je juist weer terug bij af; in plaats van alleen op Windows draaien games dan alleen op Linux. En dat heeft sowieso al een kleinere userbase dan Windows, dus kunnen alleen maar minder mensen het spel spelen.
Juist in de video driver hoek, waar performance erg van belang is zullen de fabrikanten nog steeds kernel-space toegang willen hebben. Maar juist daar veroorzaken ze de grootste problemen, eigen AGP/DMA drivers bijvoorbeeld. Zo grijpt die proprietare rommel (merk maakt niet uit) nog steeds via allerlei kieren in op je kernel.

En natuurlijk kan er maar één leverancier tegelijkertijd die truukjes uithalen, je kan niet twee keer dezelfde file door een eigen versie vervangen. Dan klopt er één niet meer. En un-installen is al helemaal feest.

Ik hoop echt dat ze nu de kernel zelf beter gaan verdedigen (al dan niet voor het gerechtshof). Anders kom je nooit uit die incompatibiliteits crisis.
Liever iets minder performance met een driver in user-space, dan kernel drivers die incompatible zijn en veel frustraties oproepen (vandaar deze reactie).
Waarschijnlijk zijn de lezers niet van een van de allergrootste problemen op de hoogte en dat is dat de FCC in de VS het met wetgeving onmogelijk heeft gemaakt allerlei zaken over WiFi Open source te maken.

Vorig jaar is er nog breed overleg geweest tussen fabrikanten, FCC en kernel developers over deze kwestie.

Dus geen onwil maar onmogelijkheid. De kans dat de FCC dat gaat herzien is bijzonder klein en langs deze weg kunnen we toch verder met zijn allen met WiFi support.

[Reactie gewijzigd door Roit op 24 juli 2007 16:21]

Altijd balen dat de Verenigde Staten zo'n dikke vinger in de pap hebben... :(
Lijkt dit (op hoog niveau) niet erg op wat Microsoft gedaan heeft met Vista?
Microsoft wisselt zo nu en dan.

Voor NT4 waren bv printerdrivers in user space, met NT4 zijn ze naar de kernel gegaan.

Met XP of 2000 zijn ze weer terug in user space. Audio en imaging drivers staan ook volledig in user space.

Andere drivers staan vaak in de kernel, bv. Ati heeft het grootste deel van zijn display drivers in de kernel, behalve de openGL driver, die in userspace draait (en de andere drivers aanroept).

Met Vista is een veel groter deel van de display driver naar de user space gegaan.
naar mijn weten bestaan drivers in windows altijd al buiten de kernel?

heb iig nog nooit mn windows kernel hoeven te recompilen :P
Bij windows zitten ook nog veel drivers in de kernel. Dat jij nooit je windows kernel hebt moeten compileren, is omdat microsoft WEL een stabiele API/ABI biedt voor de kernel.
Niet tussen verschillende Windows versies hoor. Hoeveel hardware werkte niet met de overgang naar Windows 2000? Of de overgang naar XP? En nu weer hetzelfde met Vista.
Ligt er een beetje aan waar je vandaan komt. Windows 95 drivers werken inderdaad niet onder het NT driver model. Daarnaast wordt er inderdaad zo nu en dan wat vernieuwd waardoor drivers ook aangepast moeten worden. Maar voor een hele hoop hardware werkt de Windows 2000 driver nog steeds.

Dus een totaal niet te vergelijken situatie met die onder Linux waar nVidia zo ongeveer voor elke kernel versie een nieuwe driver op de markt moet zetten.
@Jeldert: Ik bedoel ook gedurende de levensduur van een specifieke Windows versie. Deze duur is veel langer dan die van de typische linux kernel, welke veel interne api's elke 3 maanden breekt.
Ja dus en? :) Heeft Microsoft ook geen dingen van anderen geimiteerd/gekopieerd zoals het Alt-Tab venstertje dat je al op de MAC had? Of tabbladen zoals in menig browser? Niet te vergeten: Sudo! Of heeft Microsoft dat zelf ontworpen?
Ik snap niet waarom mensen altijd op deze manier in de verdediging schieten. Er wordt gewoon een vergelijkende vraag gesteld door PolarBear. Ik lees het in ieder geval niet als een aanval in de richting van Linux.
Linux had het sowieso al een hele tijd, maar de ondersteuning was vrij brak.
Volgens mij was dit meer bedoeld voor embedded platformen die zo makkelijk prototype drivers konden maken, maar ik kan het me niet perfect meer herinneren. Elk geval is dit niet het antwoord voor video kaart drivers en dergelijk. Normaal ontwikkel je drivers direct in de kernel, tenzij je er een goede reden voor hebt. Dit zal vermoedelijk weinig effect hebben op normale computers.
Voor veel kernel ontwerpers is een Microkernel de ideale situatie. In dat geval blijven alle drivers in userspace. Uit praktisch oogpunt is dit echter niet haalbaar en zul je ivm performance toch bepaalde drivers in de kernel moeten opnemen. Enkel bij ouderwetse kernels als de Linux kernel is het normaal dat je drivers in de kernel plaatst. Maar vanuit het oogpunt van een software architect is dit zeker niet wenselijk.
Vanwege het ontbreken van onder meer dma-transfer tussen user- en kernelspace is de nieuwe api niet de oplossing voor alle Linux-drivers. Dit geldt specifiek voor drivers die werken met grote hoeveelheden data, videokaartdrivers bijvoorbeeld.
dat laat idd vga drivers buiten de fix, en laat DAT nu net het grootste probleem zijn op dit moment, waar het overigens waarschijnlijk WEL voor zal kunnen werken is WIFI wat op dit moment ook vaak nog zeer brak ge-support wordt, nog steeds zit je met een zooi van die BIN crap, die niet geweldig wil werken, en andere pre-fab meuk, of die windows-driver loader, (hoe heet dat waardeloze ding ook al weer),

waar ik vooral benieuwd naar ben is waar dit dan nog meer voor ' kan' gelden,
ndiswrapper bedoel je.

en de vraag is of je wel DMA wil in het huidige model, wie weet moet de halve kernel omgegooid worden om dat safe te houden...
en afgezien daarvan, je graka één keer installeren (errug moeilijk, handleidingetje uitprinten en stap voor stap overtypen) en je bent er ook van af.

okay, next step: TV kaarten support aub :)
Daarvoor moet je bij de leverancier zijn ;)
Dat het bij sommige, lees hauppage, bttv, goed os gesupport is wil niet zeggen dat voor elke leverancier geldt.
Dus je kunt bekende, goed werkende TV-kaarten in je systeem bouwen of gokken dat de leverancier linux-support voor elkaar heeft.
Dus niet: nVidia drivers installeren gaat minder fout, kan gewoon in een GUI omgeving worden geinstalleerd en nooit meer blue screens van X over niet compatible kernel modules van nVidia met een ander versienummer?

Das jammer, want dat is altijd het lastigste, zeker als je handmatig installeren en niet via de grote grabbelton met software. En zelfs dan kan het soms fout gaan :o
(maar dit nadeel heeft ook een voordeel: In tegenstelling tot Windows, als je je Ubuntu eenmaal getweakt en 100% set-up hebt en alles werkt zoals je wil staat het als een huis dat je niet omkrijgt :D )

[Reactie gewijzigd door Sebazzz op 24 juli 2007 13:42]

Vervang die in tegenstelling tot door een net zoals in en je hebt helemaal gelijk :).

Over je opmerking van de nVidia-drivers: in Ubuntu en andere grote distributies is de nVidia-driver installeren kinderspel. Je kan hem gewoon apt-getten.
Je bedoelt: hij komt vanzelf binnen als je Desktop effects aanzet (via Synaptic, en ik gok dat je 'm ook gewoon via Synaptic netjes binnen kan halen).

Zodra men wat meer van sudoen en apt-getten hier en daar afstapt, en gewoon verteld dat het via Synaptic e.d. click, clack kan, schrikken wat minder mensen als ze vastlopen met Ubuntu e.d.
Synaptic is apt-get met eem GUI. Ja dus.

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True