Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Are there restrictions on what type of computer you can use a LiveCD in? If not, how can the LiveCD know and have all the drivers for your hardware, especially if it's not connected to the internet?

share|improve this question
1  
How much different would an installation be? –  Arjan Jul 11 '10 at 11:33

4 Answers 4

up vote 0 down vote accepted

You're probably thinking about this from the perspective of a Windows user / installer / admin. In the Linux / free software world, the developers frequently have to or choose to write their own drivers. As such, there aren't restrictions on distributing them (copyright), and they've already written code to figure out if the hardware is there (as above).

So, all of the drivers are built into the kernel (or build-able into the kernel), often as modules. LiveCDs will include all of the modules they possibly can cram in, just so that they support a variety of hardware. A slimmed down OS installation might choose to recompile the kernel to just include the drivers / modules that that installation needs.

This is also why you will sometimes find hardware without drivers in Linux. If the hardware vendor hasn't subscribed to a known standard, and hasn't developed drivers for Linux, and the hardware is hard to figure out or unpopular, it may well not have a driver.

share|improve this answer

Each PCI device has both a vendor ID and a device ID. And each device driver (kernel module) contains a list of supported "vendor ID:device ID" pairs i.e. the OS can determine which driver to load by looking at these id pairs.

E.g. on Linux you can see the IDs of the system you are using in the third column of the lspci -n output (separated by a colon):

$ lspci -n | head -n 3
00:00.0 0600: 8086:7190 (rev 01)
00:01.0 0604: 8086:7191 (rev 01)
00:07.0 0601: 8086:7110 (rev 08)

Here 0x8086 is the vendor ID of Intel (it's also the name of one of their 16-bit processors on which the x86 architecture is based).

And if you take a look at

$ head -n 4 /lib/modules/<kernelversion>/modules.pcimap
# pci module         vendor     device     subvendor  subdevice  class      ...
shpchp               0xffffffff 0xffffffff 0xffffffff 0xffffffff 0x00060400 ...
matroxfb_base        0x0000102b 0x00000519 0xffffffff 0xffffffff 0x00000000 ...
matroxfb_base        0x0000102b 0x0000051b 0xffffffff 0xffffffff 0x00000000 ...

you can see the table of device driver kernel module (first column) and supported vendor and device ID (2nd and 3rd column).

The PCI device IDs are maintained in the The PCI ID Repository.

share|improve this answer

A typical Linux distribution provides drivers for most popular hardware devices. During the computer boot process, the LiveCD will analyze your specific hardware configuration and load all the required hardware drivers. In most cases it works quite good, but if you have a rare or very old hardware device there may be some problems.

share|improve this answer

Same way a normal installation does. It looks at the aliases provided by the various modules, and matches them up with the current hardware.

$ modinfo nouveau | grep ^alias:
alias:          pci:v000012D2d*sv*sd*bc03sc*i*
alias:          pci:v000010DEd*sv*sd*bc03sc*i*
$ modinfo cdc-ether | grep ^alias:
alias:          usb:v413Cp8184d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v413Cp8183d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v413Cp8147d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0930p1311d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0930p130Cd*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0930p130Bd*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp1049d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp1909d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp190Ad*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp1906d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp1905d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp1904d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp1902d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v0BDBp1900d*dc*dsc*dp*ic02isc0Aip00*
alias:          usb:v*p*d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v07B4p0F02d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v04DDp9050d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v04DDp9032d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v04DDp9031d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v04DDp8007d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v04DDp8006d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v04DDp8005d*dc*dsc*dp*ic02isc06ip00*
alias:          usb:v04DDp8004d*dc*dsc*dp*ic02isc06ip00*
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.