Как создать пакет Debian для вневременного модуля, который работает с apt upgrade, когда включена безопасная загрузка - PullRequest
1 голос
/ 06 мая 2020

Мы создали собственный драйвер 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, поскольку большинство решений в Интернете указывает на, поскольку мы должны подписать этот драйвер, чтобы он работал в режиме безопасной загрузки, и мы должны иметь возможность обновить версию ядра.

1 Ответ

2 голосов
/ 06 мая 2020

В Debian это был бы метапакет . Это просто пустой пакет, который зависит от текущей версии вашего драйвера. Каждый раз, когда вы обновляете драйвер, вы также устанавливаете зависимости метапакета для вашего нового пакета. Хорошо известный пример: linux -image-amd64 . Этот пакет указывает на последнюю версию ядра вашего репозитория. В настоящее время используется linux -image-5.5.0-0.bpo.2-amd64, а через несколько дней - go до linux -image-5.4.0-0.bpo.4-amd64.

...