Απ: Free Linux driver development

Giorgos Keramidas keramida at ceid.upatras.gr
Thu Feb 1 14:07:53 EET 2007


On 2007-02-01 10:24, Nick Demou <ndemou at gmail.com> wrote:
>Την 31/1/2007, Giorgos Keramidas <keramida at ceid.upatras.gr> έγραψε:
>>> Το NDA _ΔΕΝ_ συνεπάγεται clοsed source. OK το ξέρω πως μπορεί κάλιστα
>>> να σημαίνει source εκ του οποίου το μισό δεν το καταλαβαίνει κανένας
>>> (βλ. παράδειγμα πριν 2,3 posts) αλλά αυτό είναι σίγουρα καλύτερο από
>>> το "no source and no driver baby".
>>
>> Οχι, δεν είναι καλύτερο.  Έστω ότι υπάρχει bug στη γραμμή 3 του:
>>
>>     const unsigned char table124982[] = {
>>       0x7d, 0xfa, ..., 0xbf,
>>       0x67, 0x31, 0x8f, 0x7d, 0x83, 0xa0, 0xfb, 0x6c,
>>     };
>>
>> το οποίο προκαλεί random kernel panics.  Πώς ακριβώς είναι καλύτερα τα
>> πράγματα από το να μην είχες φορτώσει ποτέ την non-free αηδία στον
>> πυρήνα του Linux; :-(
>
> _ΑΝ_ εμφανιστεί bug σε τέτοια γραμμή[1] και _αν_ ο αρχικός programmer
> (με NDA και πρόσβαση στο documentation) δεν ασχοληθεί και _αν_ κανένας
> άλλος από τους 1500 δεν έχει πρόθεση να συνεργαστεί κάτω από NDA και
> _αν_ η εταιρεία δεν έχει καμιά διάθεση να διορθώσει η ίδια το σφάλμα
> και _αν_ κανείς άλλος δεν πάρει το χατζάρι τότε ο Linus ο ίδιος θα
> σφάξει το συγκεκριμένο driver με χαρά από τις επόμενες εκδόσεις του
> kernel.

Στις 23:00 ένα Σάββατο βράδυ, που οι binary drivers της NVIDIA
αποφάσισαν να μαλακιστούν, όλα αυτά είναι θεωρητικά πιθανά αλλά δε
βοηθάνε πολύ :(

Οχι, δεν είναι υποθετικό σενάριο.  Ναι, έχει συμβεί και στ' αλήθεια.

Το θέμα δεν είναι πόσο πιθανό είναι να γίνει κάτι τέτοιο *ΚΑΙ* να βρεθεί
κάποια μακροχρόνια λύση.  Το θέμα είναι ότι αν ο driver δεν είναι 'free
software', είσαι αβοήθητος σε τέτοιες περιπτώσεις.

Το ανάποδο ακριβώς συμβαίνει με 100% free drivers.

> Κατόπιν τούτου θα μείνουν οι παλοιές που παίζουν με τον driver (και
> ότι bugs είχαν) και οι καινούργιες χωρίς εκείνα τα bugs (αυτές θα
> έχουν τα δικά τους καινούργια) και χωρίς τον driver.  Που ακριβώς
> είναι χειρότερα τα πράγματα σε αυτό το σενάριο από το σενάριο "καμία
> έκδοση kernel δεν έχει driver για την τάδε συσκευή"? Ή αν θες που
> είναι χειρότερα από την περίπτωση συσκευών που έχουν driver μόνο για
> windows 95,98,me?

Καταλαβαίνω ότι τα κριτήρια με τα οποία κάποιος μπορεί να βαφτίσει κάτι
ως «χειρότερο» ή «καλύτερο», είναι πολλές φορές εντελώς υποκειμενικά.
Για μένα, τουλάχιστον, το να μπορεί ένας binary driver να πανικοβάλλει
τον πυρήνα, χωρίς εγώ να ξέρω γιατί, πώς, πότε, και κυρίως τι να κάνω
για να αρχίσω να βρίσκω μια άκρη *δεν* είναι «καλύτερα».  Προφανώς, αυτό
δεν ισχύει για όλο τον κόσμο, αλλιώς δε θα είχε κανείς Windows :)

> Συνολικά: η κατάσταση αν αυτή η πρόταση προχωρήσει θα είναι καλύτερη
> αλλά όχι τέλεια. Να την "θάψουμε" γιατί δεν θα είναι τέλεια ή να την
> "αγκαλιάσουμε" επειδή θα είναι καλύτερη και δεν έχουμε άλλη?
> ______________
> [1] αυτό κατά την γνώμη μου[2] είναι όντως "_ΑΝ_" με κεφαλαία (δηλαδή
> η μικρότερη πιθανότητα) γιατι driver που έπαιξε έστω και σε μία kernel
> version δύσκολα θα "σπάσει" λόγω τέτοιας γραμμής. Γιατί:
>             --------------
> /------\    | Kside  Dside |       /------\
> |kernel|----|   DRIVER     |-------|device|
> \------/    \--------------/       \------/
> 
> αν μετά από κάποια αλλαγή στον kernel "σπάσει" ο driver τότε 99% είναι
> η Kside που φταίει. Οι non-free αηδίες είναι στην Dside.
> Φυσικά υπάρχει μια μικρή πιθανότητα ένα bug να ελοχεύει από την πρώτη
> μέρα στην Dside. Εξ' ού και όλα τα υπόλοιπα "_αν_"

Μου περιγράφεις το "DDI" του Solaris[1], που μπορεί να λειτουργήσει
άνετα ως ένα kernel driver interface, αρκεί να εγγυάται κάποιος ότι ο
πυρήνας θα έχει όχι μόνο API αλλά και ABI που υποστηρίζει backwards
compatibility.  Στο Linux αυτό μπορείς απλά να το ξεχάσεις.  Στο Solaris
και, σε μια περιορισμένη μορφή, στο BSD το συζητάμε :)

[1] http://docs.sun.com/app/docs/doc/816-5180




More information about the Linux-greek-users mailing list