Правильно ли я понимаю, что вебка должна быть обязательно usb-устройством
Не совсем. В Вашем случае я пока не понимаю как она реализована. Типовой вариант: на материнской плате есть шина USB, и на место одного из портов распаивается производителем шлейф WEB-камеры. Однако это типовой вариант для ноутбука, так сказать. Вы же имеете дело с устройством новой формации. В этом устройстве все может быть реализовано иначе. К примеру, может быть устроена классически (тогда не понятно почему ее ни
lsusb ни
usb-devices не видят), проключена через шину PCI (тогда не ясно где она в том же
lspci и
lshw), или же просто допускаю, что вся вебкамера (помимо матрицы) интегрирована в процессор (в этом случае понятно почему в Windows у нее такой странный (в моем понимании, - а понимаю я не так много, как хотелось бы) адрес, кроме того тогда понятно почему она не так-то просто подтягивается). Я бы попробовал на данном этапе поэкспериментировать с
параметрами ядра, - проверить загрузку с параметрами
acpi=force,
pci=acpi,
noapic,
nolapic,
irqpoll,
acpi_osi=Linux (причем не намертво "вшивать" их в grub2, а применять по одному параметру непосредственно при загрузке по аналогии с применением параметра
nomodeset, описанным
здесь, и смотреть на изменения в системе [на выхлоп
lshw и на выхлоп
ls /dev/ | grep video])
ro quiet splash vt.handoff=1
Вот это интересно: для чего вводился параметр
vt.handoff=1? Нигде не могу найти толкового описания. Откуда Вы его взяли, и с какой целью внедрили? Если его убрать из строки загрузки что меняется в системе? Появляются ли новые устройства?
Кстати у меня можно использовать SSD c PCI-E контроллером или только SATA?
На этот вопрос я не уверен что Вам кто-нибудь ответит из тех, кто устройство в руках не держал и не пробовал это делать. В одном уверен: я не отвечу точно
Нашёл нескомпилированный драйвер, но не понятно как его скомпилировать под ubuntu/mint
Насколько я понимаю, это не тот драйвер, что можно отдельно взять и скомпилировать. Приведенная Вами ссылка ссылается на кусок ядра версии 3.4, т.е. компиллировать надо целиком ядро, а отдельный драйвер не удастся. Как вариант, можно копирнуть себе этот текст, сохранив его в файл
mkdir -p $HOME/gc2355_driver
wget --output-document=$HOME/gc2355_driver/gc2355.c https://raw.githubusercontent.com/friendlyarm/h3_lichee/master/linux-3.4/drivers/media/video/sunxi-vfe/device/gc2355.c
Однако Вам это вряд ли что-то даст, поскольку make не найдет ни заголовка, ни makefile (как там это правильно называется), а потому попытки скомпиллировать будут оборачиваться ошибкой вида "
Не заданы цели и не найден make-файл. Останов.". Можно попробовать компилировать через gcc, выполнив:
cd $HOME/gc2355_driver
gcc gc2355.c
Но тогда пойдет ругань на отсутствие файлов, на которые ссылается найденный Вами код (а их там в заголовке масса). Первым файлом станет
linux/init.h, и далее - по нарастающей. Либо выкачивать все эти файлы с того же источника на github, и получить в последствии (с высокой долей вероятности) ядро версии 3.4 (которое с той же долей вероятности у Вас не взлетит), либо выкачивать аналогичные файлы исходников для своей версии ядра (той, что у Вас выдает
uname -r), и, к примеру, получить ядро, в которое данный драйвер интегрирован (после - попробовать с этим ядром стартовать). Я, к сожалению (хотя, возможно что и к счастью) пока с необходимостью таких манипуляций не сталкивался, - подробнее не подскажу (да и конечного успеха в случае, если Вы решите пойти по данному пути, к сожалению не могу гарантировать). К тому же нет гарантий, что данный файл не предполагает каких-либо модификаций в других исходниках ядра - возможно нужно подставлять что-то от Вашего родного системного ядра, что-то от выложенного на github ядра 3.4 (а что-то и вовсе модифицировать, притом понимая как это делать и что именно нужно делать). Плюс ко всему: у Вас более новое ядро. По идее, это должно означать, что поддержка данного устройства уже должна быть интегрирована. В заголовке найденного Вами файла фигурирует
A V4L2 driver for GC2355 cameras.
У меня в системе, к примеру, поиск по ключу v4l2 дает приличный выхлоп:
find /lib/modules -type f -iname *v4l2*
Посмотрите у себя выхлоп
lsmod | grep v4l2
Вот пример выхлопа на моей машине:
lsmod | grep v4l2
videobuf2_v4l2 24576 1 uvcvideo
videobuf2_core 40960 2 uvcvideo,videobuf2_v4l2
videodev 180224 3 uvcvideo,videobuf2_core,videobuf2_v4l2
Если он у Вас пуст, возможно достаточно будет выполнить что-то вроде:
sudo modprobe uvcvideo
sudo modprobe videobuf2_v4l2
sudo modprobe videobuf2_core
sudo modprobe videodev
sudo modprobe media
Самое страшное, что Вы можете получить - kernel panic. После перезагрузки, теоретически, все будет так, будто Вы и не вводили команд. Попробуйте этот метод. Если пойдет ругань терминала - подскажите на что именно. Если ругани не будет, проверьте выхлопы:
lsmod | grep v4l2
lsmod | grep uvcvideo
dmesg | egrep -i "(error|fail|warning)"
dmesg | tail -n10
ls /dev/ | grep video