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/<kernel>/ 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
>>
>
>
|