FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > CentOS > CentOS

 
 
LinkBack Thread Tools
 
Old 12-26-2007, 05:11 PM
"William L. Maltby"
 
Default Linux vs Windows Drivers

On Wed, 2007-12-26 at 12:48 -0500, Bit wrote:
> <snip>

> Thanks to both of you for the reply. Good information, but that still
> doesn't really answer my question. I'm more interested in the technical
> side of things. What I really want to understand boils down to this:
>
> Why is it that in Windows I can install ATI drivers once and never worry
> about it again, while in Linux I may have to *reinstall* the drivers at
> a later date after a system update to get my card working with them
> again? Experience has proven to me that in Windows I can install the
> ATI drivers once, leave those same drivers on there for eternity, update
> the system over and over with Automatic Updates, and never worry about
> it breaking my video card. In Linux, every time I see a kernel update,
> I've learned to be braced for impact and just be ready with my ATI
> drivers to reinstall to get my card working again. I've never
> understood this. I'd like a technical explanation for why this is so.

If your drivers come originally from the OS repo, you should not have to
do this. If they come from elsewhere, they may get stepped on when you
do a yum update. Depends on the structure of the components
(directories, etc.).

Something that may help, is to make sure they come from some kind of
rpm. After updates, "updatedb" followed by "locate rpmsave rpmnew" may
help also. If your driver is from external source, maybe all that
happened is your (X?) config file was (not) replaced?

If the kernel API hasn't changed and your driver is from outside the
repo of the distribution you use, you shouldn't have to re-install. Just
reference it in the appropriate config file (Xorg.conf, modprobe.conf?
etc.)

There is also dkms available to automatically remake the drivers and
another pkg I can't remember. Search with google using site::centos/org
for dkms and you'll see the thread that mentions the other system too.

Oh! http://lists.centos.org/pipermail/centos/2007-October/087623.html

Knod is the preferred system.

>
> Thanks,
> bit
> <snip sig stuff>

--
Bill

_______________________________________________
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos
 
Old 12-26-2007, 05:13 PM
"Jim Perrin"
 
Default Linux vs Windows Drivers

On Dec 26, 2007 12:48 PM, Bit <bit2300@gmail.com> wrote:

> Why is it that in Windows I can install ATI drivers once and never worry
> about it again, while in Linux I may have to *reinstall* the drivers at
> a later date after a system update to get my card working with them
> again? Experience has proven to me that in Windows I can install the
> ATI drivers once, leave those same drivers on there for eternity, update
> the system over and over with Automatic Updates, and never worry about
> it breaking my video card. In Linux, every time I see a kernel update,
> I've learned to be braced for impact and just be ready with my ATI
> drivers to reinstall to get my card working again. I've never
> understood this. I'd like a technical explanation for why this is so.


In windows, you're not swapping out the kernel tree with somewhat
regular frequency. You're patching it, or applying patches to other
bits that it calls. The proprietary driver vendors (ATI/Nvidia) have
spent more time and more development resource into ensuring that the
transitions here work fine with no need to re-install. Such is not the
case with linux, which is only now gaining enough market share to
force them to notice.

In some instances, things like dkms can be used which remove the
irritation you're seeing, as the kernel module is updated/rebuilt for
each newer kernel if it's detected to not already be present. ATI and
Nvidia however do not use this packaging method. Dag and other 3rd
party packagers have taken the charge on some of this, however it's
still mostly up to the community to improve what the vendors dole out.




--
During times of universal deceit, telling the truth becomes a revolutionary act.
George Orwell
_______________________________________________
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos
 
Old 12-26-2007, 05:30 PM
Luciano Rocha
 
Default Linux vs Windows Drivers

On Wed, Dec 26, 2007 at 12:48:52PM -0500, Bit wrote:
>
> Thanks to both of you for the reply. Good information, but that still
> doesn't really answer my question. I'm more interested in the technical
> side of things. What I really want to understand boils down to this:
>
> Why is it that in Windows I can install ATI drivers once and never worry
> about it again, while in Linux I may have to *reinstall* the drivers at a
> later date after a system update to get my card working with them again?
> Experience has proven to me that in Windows I can install the ATI drivers
> once, leave those same drivers on there for eternity, update the system over
> and over with Automatic Updates, and never worry about it breaking my video
> card. In Linux, every time I see a kernel update, I've learned to be braced
> for impact and just be ready with my ATI drivers to reinstall to get my card
> working again. I've never understood this. I'd like a technical
> explanation for why this is so.
>

Linux doesn't have a stable ABI (for drivers, userland is a different
thing), but Windows does.

That means that drivers compiled for your kernel today may not install
on newer (or older) kernels. You'll have to recompile it. Also, changes
like support for more than 4GB, how the lower 4GB is split, architecture
options, gcc version, function calling convections, etc., creates
dependencies that have to be met by the binary driver.

Windows guarantees that the exposed interface doesn't change, so there's
no need to recompile things if something internal changes.

But Linux doesn't even have a stable API, so the module may not compile
on your newer kernels.

Please see Documentation/stable_api_nonsense.txt, in the kernel sources,
or online at:
<http://scienceblogs.com/gregladen/2007/12/linux_stable_api_vs_not.php>

Note that without a stable API, there is no change of a stable ABI.

--
lfr
0/0
_______________________________________________
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos
 
Old 12-26-2007, 07:47 PM
Les Mikesell
 
Default Linux vs Windows Drivers

Luciano Rocha wrote:


Please see Documentation/stable_api_nonsense.txt, in the kernel sources,
or online at:
<http://scienceblogs.com/gregladen/2007/12/linux_stable_api_vs_not.php>


And keep in mind when you read it that other popular operating systems
do manage to specify and maintain stable interfaces and cooperate with
vendors that provide working drivers. And in spite of the spin this
article applies to the deficiency in Linux you may end up needing one of
those other operating systems for some things.


--
Les Mikesell
lesmikesell@gmail.com

_______________________________________________
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos
 
Old 12-26-2007, 08:01 PM
Bit
 
Default Linux vs Windows Drivers

Luciano Rocha wrote:

On Wed, Dec 26, 2007 at 12:48:52PM -0500, Bit wrote:

Thanks to both of you for the reply. Good information, but that still
doesn't really answer my question. I'm more interested in the technical
side of things. What I really want to understand boils down to this:


Why is it that in Windows I can install ATI drivers once and never worry
about it again, while in Linux I may have to *reinstall* the drivers at a
later date after a system update to get my card working with them again?
Experience has proven to me that in Windows I can install the ATI drivers
once, leave those same drivers on there for eternity, update the system over
and over with Automatic Updates, and never worry about it breaking my video
card. In Linux, every time I see a kernel update, I've learned to be braced
for impact and just be ready with my ATI drivers to reinstall to get my card
working again. I've never understood this. I'd like a technical
explanation for why this is so.





Linux doesn't have a stable ABI (for drivers, userland is a different
thing), but Windows does.

That means that drivers compiled for your kernel today may not install
on newer (or older) kernels. You'll have to recompile it. Also, changes
like support for more than 4GB, how the lower 4GB is split, architecture
options, gcc version, function calling convections, etc., creates
dependencies that have to be met by the binary driver.

Windows guarantees that the exposed interface doesn't change, so there's
no need to recompile things if something internal changes.

But Linux doesn't even have a stable API, so the module may not compile
on your newer kernels.

Please see Documentation/stable_api_nonsense.txt, in the kernel sources,
or online at:
<http://scienceblogs.com/gregladen/2007/12/linux_stable_api_vs_not.php>

Note that without a stable API, there is no change of a stable ABI.




Luciano, thank you very much. I read your post, the link you provided,
and a few other things from that link, and I at least understood enough
to realize that it answers my question. I think I *kind of* get it now.


I think understanding the answer to my question really revolves around
understanding an API and an ABI. Would you please read the following
and let me know if I at least get the gist of what these two things are?


An API influences what your source code will look like. If they change
the Linux kernel API, then you may need to make changes to your source
code such as making "myLinuxKernelAPIFunctionCall( myparam1, myparam2 )"
look something more like "myUpdatedLinuxKernelAPIFunctionCall( myparam1
)" in order to even make your code compile.


The ABI is the interface between a compiled binary kernel module and the
kernel. It determines if an already compiled binary will properly
interface with the kernel and run. If the ABI changes and you find your
kernel module won't run properly, you just need to recompile from source
to get a kernel module that will run. Hopefully the API hasn't changed
and you won't need to change your source code to make it recompile...


BOTH kinds of changes happen with some degree of frequency in Linux.

Did I get at least this much right?
_______________________________________________
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos
 
Old 12-26-2007, 08:26 PM
Luciano Rocha
 
Default Linux vs Windows Drivers

On Wed, Dec 26, 2007 at 04:01:22PM -0500, Bit wrote:
> Luciano Rocha wrote:
> > On Wed, Dec 26, 2007 at 12:48:52PM -0500, Bit wrote:
> >
> >> Thanks to both of you for the reply. Good information, but that still
> >> doesn't really answer my question. I'm more interested in the technical
> >> side of things. What I really want to understand boils down to this:
> >>
> >> Why is it that in Windows I can install ATI drivers once and never worry
> >> about it again, while in Linux I may have to *reinstall* the drivers at a
> >> later date after a system update to get my card working with them again?
> >> Experience has proven to me that in Windows I can install the ATI drivers
> >> once, leave those same drivers on there for eternity, update the system
> >> over and over with Automatic Updates, and never worry about it breaking
> >> my video card. In Linux, every time I see a kernel update, I've learned
> >> to be braced for impact and just be ready with my ATI drivers to
> >> reinstall to get my card working again. I've never understood this. I'd
> >> like a technical explanation for why this is so.
> >>
> >>
> >
> > Linux doesn't have a stable ABI (for drivers, userland is a different
> > thing), but Windows does.
> >
> > That means that drivers compiled for your kernel today may not install
> > on newer (or older) kernels. You'll have to recompile it. Also, changes
> > like support for more than 4GB, how the lower 4GB is split, architecture
> > options, gcc version, function calling convections, etc., creates
> > dependencies that have to be met by the binary driver.
> >
> > Windows guarantees that the exposed interface doesn't change, so there's
> > no need to recompile things if something internal changes.
> >
> > But Linux doesn't even have a stable API, so the module may not compile
> > on your newer kernels.
> >
> > Please see Documentation/stable_api_nonsense.txt, in the kernel sources,
> > or online at:
> > <http://scienceblogs.com/gregladen/2007/12/linux_stable_api_vs_not.php>
> >
> > Note that without a stable API, there is no change of a stable ABI.
> >
> >
>
> Luciano, thank you very much. I read your post, the link you provided, and
> a few other things from that link, and I at least understood enough to
> realize that it answers my question. I think I *kind of* get it now.
>
> I think understanding the answer to my question really revolves around
> understanding an API and an ABI. Would you please read the following and
> let me know if I at least get the gist of what these two things are?

FYI, when in doubt about these acronyms, search for "define: ABI", for
instance, in google.

> An API influences what your source code will look like. If they change the
> Linux kernel API, then you may need to make changes to your source code such
> as making "myLinuxKernelAPIFunctionCall( myparam1, myparam2 )" look
> something more like "myUpdatedLinuxKernelAPIFunctionCall( myparam1 )" in
> order to even make your code compile.

Yes, but also more important things. Like changing the use of semaphores
to mutexes, when appropriate (they "lock" something, mutexes can have
only one accessing the something at once, while semaphores can have N
accessing); changing the way stuff is exported to userland (sysfs,
configfs, debugfs, relayfs, procfs); etc..

> The ABI is the interface between a compiled binary kernel module and the
> kernel. It determines if an already compiled binary will properly interface
> with the kernel and run. If the ABI changes and you find your kernel module
> won't run properly, you just need to recompile from source to get a kernel
> module that will run. Hopefully the API hasn't changed and you won't need
> to change your source code to make it recompile...

Yes, that's it. The compiled modules include the dependency info, so
that you won't be able to insert it in another kernel:
$ modinfo ext2.ko
filename: ext2.ko
license: GPL
description: Second Extended Filesystem
author: Remy Card and others
depends:
vermagic: 2.6.23.12lcfs1 preempt mod_unload PENTIUM4 4KSTACKS

> BOTH kinds of changes happen with some degree of frequency in Linux.

Yes. Due to the nature of the kernel (open-source, GPL), and the current
policy, changes occur *very* frequently, especially in the 2.6.x series.

> Did I get at least this much right?

I think you're doing fine. Note that this state of affairs is more due
to how the kernel people work/philosophy, than due to technical
limitations, as Les Mikesell pointed out.

Anyway, nifty things have come from this development method in the
latest Linux kernels.

Also, there are some stable apis/abis: userland driver (for simple
devices, no dma is possible, for instance), and userland access to usb
devices (mostly used for printers, scanners and non-standard usb memory
sticks/mp3 players).

--
lfr
0/0
_______________________________________________
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos
 

Thread Tools




All times are GMT. The time now is 12:14 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org