Является ли `dd` универсальным способом создания загрузочной флешки для Debian или (L)Ubuntu?

Я сопровождаю Mock, поэтому должен дать вам ответ. Но я действительно не могу, потому что вы не уточнили, в чем собственно проблема.

Я могу только уточнить, как работает Mock, и разрешить некоторые из ваших недоразумений.

Когда вы вызываете mock -r fedora-27-x86_64, Mock будет делать (, пропуская некоторые скучные детали):

  1. dnf install --installroot /var/lib/mock/fedora-27-x86_64/root @buildsys-buildЭто установит минимальную систему в отдельный каталог. Далее в этом ответе я буду называть /var/lib/mock/fedora-27-x86_64/root$CHROOT.

  2. Mock извлечет ваш example.src.rpm. В частности, он поместит файл спецификации в $CHROOT/builddir/build/SPECSи tar-шар в $CHROOT/builddir/build/SOURCES.

  3. Mock проанализирует ваш файл спецификаций и установит все пакеты, перечисленные в BuildRequires, в $CHROOT. (Это делается как root ).

  4. Затем Mock выполнит chroot ()в $CHROOT и запустится там rpmbuild -ba /builddir/build/SPECS/example.spec. Это делается как непривилегированный пользователь (с UID, равным вашему UID ). Это сделано потому, что запуск rpmbuild всегда не одобрялся и может привести к серьезным проблемам.

Поэтому, если вы хотите установить какие-то дополнительные пакеты в chroot., вам не следует делать это из файла спецификации, вызывая yum/dnf install (, особенно потому, что rpm не является реентерабельным ). Но вы должны указать эти пакеты в BuildRequires и предоставить репозиторий с этими пакетами.

Вы можете предоставить репозиторий либо с помощьюmockchain -a REPOS(mockchain — это тонкий слой поверх макета ), либо с помощью:

cp /etc/mock/fedora-27-x86_64.cfg ~/my-custom-fedora-27-x86_64.cfg
#add your repository to ~/my-custom-fedora-27-x86_64.cfg
mock -r ~/my-custom-fedora-27-x86_64.cfg example.src.rpm

Если у вас есть 7 пакетов src.rpm, зависящих друг от друга, то, вероятно, лучший способ — вызвать mockchain 1.src.rpm 2.src.rpm.... 7.src.rpm, и mockchain создаст временный репозиторий для результатов и попытается собрать эти пакеты наивным способом в while at-least-one-package-build do another loop.

Если вы уточните, в чем собственно ваша проблема, то я могу дать более конкретный ответ.

0
09.04.2020, 15:16
1 ответ

В Unix/Linux устройство обрабатывается как обычный файл. Если вы размещаете данные на устройстве с помощью cp (1 ), или dd (1 ), или program > /dev/sdb, нет никакой реальной разницы. Просто это, например. У dd есть опции для записи фрагментами разного размера, которые могут быть более эффективными, если размер блока соответствует некоторому размеру, определяемому аппаратно.

2
28.04.2021, 23:18

Теги

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