3

Существуют ли ограничения на тип компьютера, на котором вы можете использовать LiveCD? Если нет, то как LiveCD может знать и иметь все драйверы для вашего оборудования, особенно если он не подключен к Интернету?

4 ответа4

9

Каждое устройство PCI имеет как идентификатор поставщика, так и идентификатор устройства. И каждый драйвер устройства (модуль ядра) содержит список поддерживаемых пар «идентификатор поставщика: идентификатор устройства», т.е. ОС может определить, какой драйвер загрузить, просматривая эти пары идентификаторов.

Например, в Linux вы можете увидеть идентификаторы системы, которую вы используете, в третьем столбце вывода lspci -n (через двоеточие):

$ 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)

Здесь 0x8086 - идентификатор производителя Intel (это также название одного из их 16-разрядных процессоров, на котором основана архитектура x86).

И если вы посмотрите на

$ 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 ...

Вы можете увидеть таблицу модуля ядра драйвера устройства (первый столбец) и поддерживаемого поставщика и идентификатор устройства (2-й и 3-й столбец).

Идентификаторы устройств PCI хранятся в хранилище идентификаторов PCI.

0

Вы, вероятно, думаете об этом с точки зрения пользователя / установщика / администратора Windows. В мире Linux / свободного программного обеспечения разработчики часто вынуждены или предпочитают писать свои собственные драйверы. Таким образом, нет никаких ограничений на их распространение (авторское право), и они уже написали код, чтобы выяснить, есть ли оборудование (как выше).

Итак, все драйверы встроены в ядро (или встроены в ядро), часто в виде модулей. LiveCD будут включать все модули, в которые они могут втиснуться, только для того, чтобы они поддерживали различное оборудование. При уменьшенной установке ОС может потребоваться перекомпилировать ядро, чтобы в него были включены только те драйверы / модули, которые необходимы для этой установки.

По этой же причине вы иногда можете найти аппаратное обеспечение без драйверов в Linux. Если поставщик оборудования не подписан на известный стандарт и не разработал драйверы для Linux, а оборудование сложно определить или непопулярно, у него, возможно, нет драйвера.

0

Типичный дистрибутив Linux предоставляет драйверы для большинства популярных аппаратных устройств. В процессе загрузки компьютера LiveCD проанализирует вашу конкретную конфигурацию оборудования и загрузит все необходимые драйверы оборудования. В большинстве случаев это работает довольно хорошо, но если у вас редкое или очень старое аппаратное устройство, могут возникнуть некоторые проблемы.

0

Так же, как и при обычной установке. Он просматривает псевдонимы, предоставленные различными модулями, и сопоставляет их с текущим оборудованием.

$ 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*

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .