Для этого также требуется systemd (, которая в наши дни довольно распространена ), ноsystemd-detect-virt
является лучшим инструментом для определения того, работает ли это на физическом или виртуальном оборудовании.
Вы можете взглянуть на логику , используемую systemd-detect-virt
, вы заметите, что она на самом деле смотрит во многих местах, чтобы обнаружить несколько различных технологий виртуализации...
Я думаю, что что-то наивное, например просмотр lscpu
вывода, может работать в некоторых случаях некоторое время, но я думаю, что это вряд ли будет работать все время. Также обратите внимание, что многие технологии позволяют (и даже )виртуальным машинам иметь более одного потока на ядро, поэтому я даже не думаю, что этой конкретной функции достаточно для надежного обнаружения.
Ахах! Благодаря подсказке М. Аллана Ноа в 2015 г. [0] я обнаружил, что сообщаемый идентификатор продукта изменяется в соответствии с положением переключателя «автоматический запуск» на задней панели сканера :
.Off - 0x165f
On - 0x1660
(необходимо переустановить -штекер после переключения выключателя)
В положении «выключено» он, таким образом, сообщает, что идентификатор SANE ожидался, и больше ничего не работает -, что «ошибка конвейера» не связана и все еще возникает.
Работает из коробки!... пока он выходит в правильном состоянии.
[0] -http://sane.10972.n7.nabble.com/cannon-p208-raspberian-tp20448p20457.html