Мы создали собственный драйвер fpga для целевого устройства с ядром Ubuntu 18.04 HWE, работающим с включенной безопасной загрузкой . Этот драйвер подписывается и помещается в пакет Debian, например fpga-driver-5.3.0-42-generic_1.1_amd64.deb , а затем мы загружаем этот драйвер на наш собственный сервер пакетов Ubuntu. На нашей цели у нас есть ссылка на наш сервер пакетов в папке /etc/apt/source.list.d/, и мы можем установить драйвер с помощью
sudo apt install fpga-driver-5.3.0-42-generic
Если мы обновите наш драйвер до fpga-driver-5.3.0-42-generic_1.2_amd64.deb , теперь мы можем запустить apt upgrade , и все в порядке, если версия ядра такая же .
Время от времени ядро HWE активизируется, и мы перестраиваем драйвер и создаем новый пакет Debian, например fpga-driver-5.3.0-51-generic_1.2_amd64.deb . Если мы сейчас запустим apt upgrade на цели, все остальное будет обновлено, кроме нашего драйвера. Мы должны вручную установить его снова, чтобы он заработал, но это не лучшее решение для конечного пользователя.
Итак, вопрос в том, как нам это сделать, чтобы сделать это «по-Debian»?
Я знаю, что с точки зрения apt имена пакетов разные (fpga-driver-5.3.0-42-generi c vs fpga-driver-5.3.0-51-generi c ) поэтому он не понимает, что он должен обновить этот пакет, но мы должны поддерживать более одного ядра.
Мы не можем использовать dkms, поскольку большинство решений в Интернете указывает на, поскольку мы должны подписать этот драйвер, чтобы он работал в режиме безопасной загрузки, и мы должны иметь возможность обновить версию ядра.