Сборка собственного ядра в Debian

ответ тердона хорош, но я бы избегал раздувания сети,

но сначала в сторону ; pingможет занять всего 0,002 с до 8.8.8.8, поэтому, если вы хотите протестировать сеть с низкой задержкой,

$ timeout 0.1 ping -c 1 8.8.8.8

можно использовать, чтобы гарантировать 1/10 секунды времени тестирования (, поскольку время ожидания ping не составляет доли секунды ).

Теперь ответ на оптимизацию скорости и использования сети; вы должны сделать так, чтобы ваши скрипты передавали параметры;

#!/bin/bash

usage() {
    echo "Usage: $0 [OPTIONS]"
    echo " OPTIONS:"
    echo "  -h     this Help message"
    echo "  -n     do Not re-test network connectivity"
}

NO_TEST=false
while getopts "nh" OPT; do
    case "$OPT" in
        n)
            NO_TEST=true
            ;;
        h)
            usage
            exit 0
            ;;
        *)
            echo "unsupported option $OPT" >&2
            usage
            exit 1
            ;;
    esac
done
shift $((OPTIND - 1))

if ! $NO_TEST && ! ping -c 1 -w 3 8.8.8.8; then
    echo "no connection" >&2
    exit 2
fi
echo "do stuff";
1
07.08.2020, 17:20
3 ответа

Кажется, ошибки были вызваны файлами и каталогами.deb, которые make deb-pkgбыли установлены в /usr/src, я исправил это, удалив их, и теперь компилируется нормально

1
18.03.2021, 23:14

Исследуя этот ответ, я ответил на это для не -собственных пакетов, но обнаружил, что linux-signed-amd64исходный пакет (, который, вероятно, является тем, что вы собираете ), является собственным пакетом. К сожалению, это сводит на нет многое из того, что я сказал в разделе Non -Native packages , но я думаю, что это все еще полезно для всех, кто сталкивается с этим вопросом.

Нестандартные -Собственные пакеты

Обычно такая проблема возникает из-за того, что мы внесли неотслеживаемые изменения в -не родной пакет. Это применимо, когда debian/source/formatравно 3.0 (quilt). Например:

apt source <package>
cd <package>_<version>
# make changes to sources
dpkg-buildpackage

apt sourceзагружает нетронутый tar-архив основной ветки (оригинального авторского релиза, если только +dfsgне находится в версии ), распаковывает его, затем добавляет содержимое пакета debian (, найденное в каталоге debian/).

Когда мы используемdpkg-buildpackage(или debuild), первое, что делается, это то, что dpkg-sourceвызывается для проверки того, что все, что находится за пределами пакета debian/, точно соответствует первозданному исходному tarball. Это гарантирует, что никто в Debian не добавит никаких недокументированных изменений.

Любые изменения исходного содержимого необходимо применять независимо в виде исправления. quiltиспользуется для этого. Патч хранится в debian/patchesи применяется dpkg-sourceпосле проверки. Это гарантирует, что любой контент -, относящийся к дистрибутиву, будет должным образом задокументирован. Это также помогает отслеживать, какие исправления были отправлены вверх по течению (первоначальным разработчикам ), поскольку в формате исправления есть место для метаданных -содержимого (или заголовков ).


Эта проблема может возникнуть и в другом случае, если сборка происходит в -источнике (, что означает, что артефакты сборки не изолированы от каталога сборки или сценарии будут изменять исходные файлы в -месте ). Будем надеяться, что debuild -T cleanвосстановит все в исходное состояние, в противном случае это нужно делать вручную.


Собственные пакеты

В этом случае apt sourceзагрузил собственный linux-signed-amd64_*.tar.xzисходный пакет, а затем распаковал его. Когда мы используем debuildили dpkg-buildpackage, мы обычно генерируем исходный пакет и все бинарные пакеты. Поскольку исходный пакет уже существовал, debuildпропустил этот шаг, но проверил, что исходный пакет соответствует текущему исходному дереву. Вот и все провалилось. Вместо того, чтобы заменить исходный пакет, который у вас был, он решил выдать ошибку. Удаление исходного пакета (с помощьюdebuild -T clean)разрешает этот конфликт.

1
18.03.2021, 23:14

Верно, исходный код dpkg -не игнорирует некоторые из ранее собранных файлов, и вы увидите подобные ошибки.

make -j `getconf _NPROCESSORS_ONLN` deb-pkg LOCALVERSION=-custom

Это позволяет мне выполнить сборку ровно один раз после чистого клонирования. Последующая сборка всегда завершалась неудачей из-за проблем с debpkg

.

Следовательно, make bindeb -pkg может помочь в следующей сборке. Команда:

make -j `getconf _NPROCESSORS_ONLN` bindeb-pkg LOCALVERSION=-custom

Это работает нормально, и теперь сборка выполняется успешно

0
25.06.2021, 02:01

Теги

Похожие вопросы