Ядро может этим управлять. Однако ядро обычно по умолчанию не перезагружается. Либо
panic=
опцию /boot/config-*
)Параметры ядра упоминались здесь в ответах:Как настроить ядро Linux для перезагрузки при панике?
Загрузочный код GRUB теряет активный контроль, как только он передает управление Linux. нет вызовов, идущих наоборот. При перезагрузке Linux фактически передает управление прошивке (BIOS/EFI/чему угодно ).
It turns out that I can not read at the speed of light
Действительно. Если вы не можете использовать последовательную консоль , вы можете попробовать, например. boot_delay=200
, чтобы задержать каждую строку журнала ядра на 200 мс, чтобы у вас было время прочитать, сфотографировать и/или записать сообщения на видео.
Мне удалось обновить прошивку моих устройств Cardo (2 Packtalk Slim )с исходной версии (4.2 )до новейшей на сегодняшний день версии (5.7 ). Я добился этого в Debian через виртуальную машину под управлением Windows 10 Pro. Он не обновлялся из коробки, так как мне требовалось загрузить (прикрепить )и выгрузить (отсоединить )несколько XML-файлов в процессе обновления прошивки. Оглядываясь назад, прогулка в парке.
Для виртуализации в Debian подходит KVM (QEMU, libvirt ). Чтобы установить его:
sudo apt-get install qemu-system libvirt-clients libvirt-daemon-system virt-manager
virt -менеджер имеет графический интерфейс, который упрощает создание и запуск виртуальной машины. Я установил на него Windows 10 Pro.iso. После чего я смог запустить его как гостевую ОС.
Программное обеспечение Cardo Update, доступное на веб-сайте cardosystems, безупречно установлено на гостевой ОС (Win10 ).
Первое препятствие заключалось в том, чтобы заставить хост-устройство USB (устройство Cardo )распознаваться гостевой ОС. Для этого подключите его и запустите команду lsusb в консоли терминала на хост-ОС (Debian):
lsusb
Bus 001 Device 035: ID 2685:0900 Cardo Peripheral Systems LTD [Packtalk Bold Bluetooth Motorcycle Intercom]
Обратите внимание на производителя и идентификатор продукта. Здесь идентификатор поставщика — 2685 , а идентификатор продукта — 0900 .
Пришло время создать наш первый (1/3 )файл.xml для подключения к нашей виртуальной машине. Давайте назовем его «usb _устройство _cardo.xml» и поместим его в нашу домашнюю папку нашей основной ОС (Debian ). Он должен содержать следующее:
<hostdev mode="subsystem" type="usb" managed="yes">
<source>
<vendor id="0x2685"/>
<product id="0x0900"/>
</source>
<address type="usb" bus="0" port="4"/>
</hostdev>
Давайте проверим, распознается ли устройство Cardo. Во время работы гостевой ОС (win10 ),откройте консоль терминала на хост-ОС (Debian )и как root выполните следующую команду (замените «win10» на имя вашей виртуальной машины):
virsh attach-device win10 --file usb_device_cardo.xml --current
Device attached successfully
Ваше устройство Cardo станет доступным на вашей гостевой ОС (win10 ). Давайте отсоединим его перед запуском программного обеспечения Cardo Update:
virsh detach-device win10 --file usb_device_cardo.xml
Устройство успешно отсоединено
После того, как программное обеспечение Cardo Update запущено, мы можем снова подключить его, чтобы начать обновление прошивки:
virsh attach-device win10 --file usb_device_cardo.xml --current
Обновление микропрограммы начнется, но быстро остановится, и будет казаться, что USB-накопитель был извлечен из гостевой ОС (win10 ). Если вы снова запустите lsusb в терминале на хост-ОС (Debian ), вы увидите, что устройство Cardo имеет новый идентификатор продукта (0901 вместо 0900 в моем случае. )Пришло время создать второй файл (2/3 ).xml для подключения к нашей виртуальной машине. Назовем его «usb _устройство _cardo _2.xml». Он должен быть похож на предыдущий, за исключением обновленного идентификатора продукта(0x0901)и адреса порта(5 ):
.<hostdev mode="subsystem" type="usb" managed="yes">
<source>
<vendor id="0x2685"/>
<product id="0x0901"/>
</source>
<address type="usb" bus="0" port="5"/>
</hostdev>
Давайте прикрепим его до истечения срока обновления прошивки. В терминале хост-ОС (Debian )запустите:
virsh attach-device win10 --file usb_device_cardo_2.xml --current
Device attached successfully
Обновление микропрограммы будет продолжаться до тех пор, пока оно снова не остановится и не «извлечет» устройство из гостевой ОС (win10 ).
Запустите lsusb еще раз на хост-ОС (Debian ), и устройство Cardo снова будет иметь новый идентификатор продукта (0001, в моем случае ). Пришло время создать третий и последний файл.xml.'usb _устройство _cardo _3.xml' с обновленным идентификатором продукта(0x0001)и портом адреса(6):
<hostdev mode="subsystem" type="usb" managed="yes">
<source>
<vendor id="0x2685"/>
<product id="0x0001"/>
</source>
<address type="usb" bus="0" port="6"/>
</hostdev>
Снова как пользователь root в терминале хост-ОС (Debian):
virsh attach-device win10 --file usb_device_cardo_3.xml --current
Device attached successfully
Чтобы завершить обновление микропрограммы, вам, возможно, придется присоединять и отсоединять три разных XML-файла с помощью команды «virsch attach -device ». Чтобы узнать, какой из них прикрепить, просто запустите lsusb на вашей хост-ОС (Debian )и прикрепите файл xml с идентичным идентификатором продукта (0x0900, 0x901 или 0x0001 в моем случае ).
Прошивка обновлена! Дайте мне знать, если это помогло!
Вдохновленный решением Tonphai, я попытался найти его с помощью Virtualbox.
Для получения информации о подключенных USB-устройствах использовалась следующая команда. Убедитесь, что пакет Cardo включен. Вам понадобится работающая гостевая установка Windows на Virtualbox.
lsusb
Мой результат был:
Bus 002 Device 007: ID 2685:0900 Cardo Systems Inc. Cardo Device
В Virtualbox Manager перейдите в «Настройки» для этой виртуальной машины Windows и выберите «USB». Я оставил контроллер USB 3.0 включенным. Создайте новый USB-фильтр и введите осмысленный текст для имени. Я использовал «Кардо (руководство )», идентификатор поставщика будет 2685 , идентификатор продукта будет 0900 . Серийный номер я установил как 0 и порт как 4 .
Сначала казалось, что это не работает, но после перезагрузки моей Linux-машины, похоже, все в порядке.Чтобы USB-устройства распознавались, убедитесь, что ваш пользователь входит в группу vboxusers
.sudo adduser $USER vboxusers
Обязательно установите последние гостевые дополнения Virtualbox, следуя инструкциям здесь:https://www.virtualbox.org/manual/ch04.html
Установите программу обновления Cardo для Windows:https://www.cardosystems.com/download-cardo-updater/
После запуска гостевой виртуальной машины Windows перейдите в меню VB и выберите «Устройства» -USB, а затем выберите устройство Cardo, которое должно появиться в списке. Это должно заставить Cardo установить программное обеспечение, чтобы распознать ваше устройство и обновить его прошивку.
Надеюсь, вам это поможет.