Comments 5
Проверялось ли это на реальном железе?
В частности интересно будет посмотреть на результаты систем без PCI-шины, к примеру на Z68 или H67 чипсетах.
Конечно, PCIe имеет обратную программную совместимость с PCI, но всё же занятно было бы взглянуть на корректность и полноту полученного перечня.
В частности интересно будет посмотреть на результаты систем без PCI-шины, к примеру на Z68 или H67 чипсетах.
Конечно, PCIe имеет обратную программную совместимость с PCI, но всё же занятно было бы взглянуть на корректность и полноту полученного перечня.
CFLAGS = -Wall -nostdlib -fno-builtin -nostartfiles -nodefaultlibs
-nostdlib, -nostartfiles и -nodefaultlibs тут не нужны, вы же линкуете не gcc, а вот -nostdinc не помешал бы, чтобы не получить прототипы из системных заголовков.
qemu /dev/sdb
QEMU, кстати, умеет загружать multiboot-ядра опцией -kernel: qemu -kernel kernel.bin
Для установки GRUB-а на флешку используется expect-скрипт в файле grub_install.exp
А можно было бы проще:
cat <<EOF | grub --batch
root (hd1,0)
setup (hd1)
quit
EOF
А чего это вы так Windows выделили? Все операционки находят драйвер по PCI IDs (VID/PID). В линуксе в каждом драйвере указан набор ID устройств, которые он может обслужить.
Если хочется «принудительно» попытаться завести драйвер с новым устройством, можно его IDs отправить в файлик new_id соответствующего драйвера в sysfs, примерно так:
echo «8086 0700» >> /sys/bus/pci/drivers/.../new_id
После этого, если устройство не было ассоциировано с каким-то другим драйвером, подхватится этим — потому, что этому драйверу сказали «обслуживай устройства с такими-то ID».
Был случай, когда я так заводил RAID-контроллер на какой-то матери Supermicro — они зачем-то для известного FusionMPT (драйвер mptsas) указали те ID, которых в старом ядре не было. (В новом уже были, кто-то позаботился.)
Что интересно, rev в линуксе не используется для выбора драйвера, только самими драйверами.
Если хочется «принудительно» попытаться завести драйвер с новым устройством, можно его IDs отправить в файлик new_id соответствующего драйвера в sysfs, примерно так:
echo «8086 0700» >> /sys/bus/pci/drivers/.../new_id
После этого, если устройство не было ассоциировано с каким-то другим драйвером, подхватится этим — потому, что этому драйверу сказали «обслуживай устройства с такими-то ID».
Был случай, когда я так заводил RAID-контроллер на какой-то матери Supermicro — они зачем-то для известного FusionMPT (драйвер mptsas) указали те ID, которых в старом ядре не было. (В новом уже были, кто-то позаботился.)
Что интересно, rev в линуксе не используется для выбора драйвера, только самими драйверами.
Sign up to leave a comment.
Как найти PCI устройства без операционной системы