determining the appropriate sata driver
How does a system determine the appropriate sata driver? Specifically, how does anaconda figure out to write alias scsi_hostadapter ata_piix in my modprobe.conf and to bind it into my initrd image? I took apart boot.iso but didnt find anything "readable" that indicated how this was determined. Thanks! Ken
Re: determining the appropriate sata driver
I believe most of anaconda's "magic" comes from probing the PCI and USB bus for vendor and device IDs. If you dig into a driver (for example, e1000e), you will find a pcitable listing all of the IDs the driver supports. If you look in /lib/modules// you will find a modules.pcimap and modules.usbmap among other bus types. Hope that helps. Cheers, Mark Ken Teh wrote: How does a system determine the appropriate sata driver? Specifically, how does anaconda figure out to write alias scsi_hostadapter ata_piix in my modprobe.conf and to bind it into my initrd image? I took apart boot.iso but didnt find anything "readable" that indicated how this was determined. Thanks! Ken -- Mr. Mark V. Stodola Digital Systems Engineer National Electrostatics Corp. P.O. Box 620310 Middleton, WI 53562-0310 USA Phone: (608) 831-7600 Fax: (608) 831-9591
Re: determining the appropriate sata driver
Mark Stodola wrote: I believe most of anaconda's "magic" comes from probing the PCI and USB bus for vendor and device IDs. If you dig into a driver (for example, e1000e), you will find a pcitable listing all of the IDs the driver supports. If you look in /lib/modules// you will find a modules.pcimap and modules.usbmap among other bus types. Hope that helps. Cheers, Mark Ken Teh wrote: How does a system determine the appropriate sata driver? Specifically, how does anaconda figure out to write alias scsi_hostadapter ata_piix in my modprobe.conf and to bind it into my initrd image? I took apart boot.iso but didnt find anything "readable" that indicated how this was determined. Thanks! Ken Hi Ken, On SL 5, alot of that data comes from hwdata, which is in the /usr/share/hwdata directory. The main ones people and programs look at is pci.ids and usb.ids But there are other files in there. Troy -- __ Troy Dawson daw...@fnal.gov (630)840-6468 Fermilab ComputingDivision/LCSI/CSI LMSS Group __
Re: determining the appropriate sata driver
Hi Troy, I'm looking for something more basic. I'm trying to craft an init script for an initrd image to load appropriate drivers. Nothing fancy. Just the basics. Like what sort of hard drives are on the system. SATA or IDE? The SATA issue confuses me since there is a plethora of SATA drivers. Does the init script have to try each one to see if it finds a match or is there something in /proc or /sys that provides some identification? The only tool I have in my initrd image is busybox and it doesnt have an lspci equivalent. The /proc system contains a subdirectory that lists all devices on PCI but as bus.device files. I tried cat'ing the files but they are not ascii. I'm guessing it's possible to walk these files to extract the information I need. I can dig deeper but to save time, I'd ask if someone already knows the answer. Ken Troy Dawson wrote: Mark Stodola wrote: I believe most of anaconda's "magic" comes from probing the PCI and USB bus for vendor and device IDs. If you dig into a driver (for example, e1000e), you will find a pcitable listing all of the IDs the driver supports. If you look in /lib/modules// you will find a modules.pcimap and modules.usbmap among other bus types. Hope that helps. Cheers, Mark Ken Teh wrote: How does a system determine the appropriate sata driver? Specifically, how does anaconda figure out to write alias scsi_hostadapter ata_piix in my modprobe.conf and to bind it into my initrd image? I took apart boot.iso but didnt find anything "readable" that indicated how this was determined. Thanks! Ken Hi Ken, On SL 5, alot of that data comes from hwdata, which is in the /usr/share/hwdata directory. The main ones people and programs look at is pci.ids and usb.ids But there are other files in there. Troy
Re: determining the appropriate sata driver
Ken, /proc/pci contains much of the info provided by lspci. For an initrd script, you might want to consider looking at the linux-live scripts used to build many of the livecds you find online (include the SL flavor made by Urs). I believe if you look at Urs's livecd-trunk, you will find linux-live.sl/initrd/liblinuxlive. This file has procedures for probing all common modules for a certain type of support (e.g. modprobe_usb_sata_modules). Brute force seems the standard way to go. I've made livecds in several ways, and have not run into a situation where I had to manually identify and probe modules for a specific IDE or SATA controller. Are you doing something drastically different from the norm? Cheers, Mark Ken Teh wrote: Hi Troy, I'm looking for something more basic. I'm trying to craft an init script for an initrd image to load appropriate drivers. Nothing fancy. Just the basics. Like what sort of hard drives are on the system. SATA or IDE? The SATA issue confuses me since there is a plethora of SATA drivers. Does the init script have to try each one to see if it finds a match or is there something in /proc or /sys that provides some identification? The only tool I have in my initrd image is busybox and it doesnt have an lspci equivalent. The /proc system contains a subdirectory that lists all devices on PCI but as bus.device files. I tried cat'ing the files but they are not ascii. I'm guessing it's possible to walk these files to extract the information I need. I can dig deeper but to save time, I'd ask if someone already knows the answer. Ken Troy Dawson wrote: Mark Stodola wrote: I believe most of anaconda's "magic" comes from probing the PCI and USB bus for vendor and device IDs. If you dig into a driver (for example, e1000e), you will find a pcitable listing all of the IDs the driver supports. If you look in /lib/modules// you will find a modules.pcimap and modules.usbmap among other bus types. Hope that helps. Cheers, Mark Ken Teh wrote: How does a system determine the appropriate sata driver? Specifically, how does anaconda figure out to write alias scsi_hostadapter ata_piix in my modprobe.conf and to bind it into my initrd image? I took apart boot.iso but didnt find anything "readable" that indicated how this was determined. Thanks! Ken Hi Ken, On SL 5, alot of that data comes from hwdata, which is in the /usr/share/hwdata directory. The main ones people and programs look at is pci.ids and usb.ids But there are other files in there. Troy -- Mr. Mark V. Stodola Digital Systems Engineer National Electrostatics Corp. P.O. Box 620310 Middleton, WI 53562-0310 USA Phone: (608) 831-7600 Fax: (608) 831-9591
Re: determining the appropriate sata driver
On 10/03/2009, Ken Teh wrote: > How does a system determine the appropriate sata driver? Specifically, how > does anaconda figure out to write > > alias scsi_hostadapter ata_piix > > in my modprobe.conf and to bind it into my initrd image? > > I took apart boot.iso but didnt find anything "readable" that indicated how > this was determined. Ken, I wonder if the "helper script", get-driver.sh, referenced on p61 of "Linux Kernel in a Nutshell" by Greg Kroah-Hartman and available to download from the publisher's web-site [1] will be any use to you? Regards, Alan. [1] http://examples.oreilly.com/9780596100797/examples.tar.gz
Re: determining the appropriate sata driver
Hi Ken, In the LiveCD initrd I probe for modules needed to access CD/DVD ROMS (IDE, SATA), USB disks/sticks and network cards (in case of a diskless client). https://svn.iac.ethz.ch/pub/livecd/trunk/linux-live.sl/initrd/linuxrc https://svn.iac.ethz.ch/pub/livecd/trunk/linux-live.sl/initrd/liblinuxlive The SATA part is very simple, I just load libata, ata_piix, ahci, sata_nv, sata_svw, sg, ... This seems to be good enough for most DVD/CD ROMS connected over SATA. Of course I would be interested in a more "intelligent" way to load the sata modules. Concerning the detection of the network card. I did it on older LiveCDs with a statically compiled lspci (running under busybox) and some grep commands looking in the file pcitable for the correct module. The static lspci is still available in https://svn.iac.ethz.ch/pub/livecd/trunk/linux-live.sl/initrd/static-binaries/ However, pcitable was always out of date and the modules could support more cards than listed in pcitable. Therefore I decided to do it with brute force. Now, I load a network module, check if I see an active link. If not, I unload the module again and load the next network module ... and so on. This is fast and works nicely. Cheers, Urs Mark Stodola wrote: > Ken, > > /proc/pci contains much of the info provided by lspci. For an initrd > script, you might want to consider looking at the linux-live scripts > used to build many of the livecds you find online (include the SL > flavor made by Urs). I believe if you look at Urs's livecd-trunk, you > will find linux-live.sl/initrd/liblinuxlive. This file has procedures > for probing all common modules for a certain type of support (e.g. > modprobe_usb_sata_modules). Brute force seems the standard way to > go. I've made livecds in several ways, and have not run into a > situation where I had to manually identify and probe modules for a > specific IDE or SATA controller. > > Are you doing something drastically different from the norm? > > Cheers, > Mark > > Ken Teh wrote: >> Hi Troy, >> >> I'm looking for something more basic. I'm trying to craft an init >> script for an initrd image to load appropriate drivers. Nothing >> fancy. Just the basics. Like what sort of hard drives are on the >> system. SATA or IDE? The SATA issue confuses me since there is a >> plethora of SATA drivers. Does the init script have to try each one >> to see if it finds a match or is there something in /proc or /sys >> that provides some identification? >> >> The only tool I have in my initrd image is busybox and it doesnt have >> an lspci equivalent. The /proc system contains a subdirectory that >> lists all devices on PCI but as bus.device files. I tried cat'ing >> the files but they are not ascii. I'm guessing it's possible to walk >> these files to extract the information I need. I can dig deeper but >> to save time, I'd ask if someone already knows the answer. >> >> Ken >> >> >> >> >> Troy Dawson wrote: >>> Mark Stodola wrote: I believe most of anaconda's "magic" comes from probing the PCI and USB bus for vendor and device IDs. If you dig into a driver (for example, e1000e), you will find a pcitable listing all of the IDs the driver supports. If you look in /lib/modules// you will find a modules.pcimap and modules.usbmap among other bus types. Hope that helps. Cheers, Mark Ken Teh wrote: > How does a system determine the appropriate sata driver? > Specifically, how does anaconda figure out to write > > alias scsi_hostadapter ata_piix > > in my modprobe.conf and to bind it into my initrd image? > > I took apart boot.iso but didnt find anything "readable" that > indicated how this was determined. > > Thanks! > > Ken > >>> >>> Hi Ken, >>> On SL 5, alot of that data comes from hwdata, which is in the >>> /usr/share/hwdata directory. >>> The main ones people and programs look at is >>> pci.ids and usb.ids >>> But there are other files in there. >>> Troy >> > >