Обсуждение статьи тематического каталога: Создание релиза FreeBSD (freebsd install make_world cvsup upgrade)Ссылка на текст статьи: https://www.opennet.ru/base/sys/freebsd_make_release.txt.html
> Итак, для минимального дистрибутива нужны пакеты perl и xorg, создаём
> их и копируем на <<будущий>> диск:
>
> # mkdir /usr/home/release/usr/ports/packages
> # cp mkindex.pl /usr/ports/packages
> # chroot /usr/home/releaseИли "# cp mkindex.pl /usr/home/release/usr/ports/packages" ?
Да, там должно быть:
# cp mkindex.pl ${CHROOTDIR}/usr/ports/packages/
Очень странно. У меня disc1 получился 840 Мб.
Это без всяких дополнительных пакетов :-/
disc1 обычно весит чуть больше 200 МБ. Покажи вывод:
# cd ${CHROOTDIR}/R/cdrom/disc1 && du -chs *
Разобраля что и почему...
поле сборки системы в ${CHROOTDIR} и при сборке уже R/cdrom/disk1, disk2 etc. он помещает в диски еще и каталоги ${CHROOTDIR}/bin, ${CHROOTDIR}/sbin, ${CHROOTDIR}/usr (все кроме ports и src). Интересно зачем? Еще так что-то и не собирается дисрибьюция crypto.ЗЫ: немного не совсем в тему. Пытался сделать себе локальный репозитарий cvs (пользовал cvs-supfile из examples). указал src-all, port-all, cvs-all. в папочку /usr/home/ncvs сожил src, ports, в итоге: он обновил только src и удалил все порты :-/ больше ничего не сделал. Сказал что finished succeful. Это как понимать?
Странно это всё, не должен копировать.
Должно быть cvsroot-all вместо cvs-all
После синхронизации в ncvs должны быть такие каталоги:
CVS
CVSROOT
CVSROOT-doc
CVSROOT-ports
CVSROOT-projects
CVSROOT-src
doc
ports
srcПопробуйте cvsup-файл из статьи..
А заем на miniinst Xfree(Xorg)? Глянул miniinst от 5.2.1 и 5.3...там только perl пакетах.
>А заем на miniinst Xfree(Xorg)? Глянул miniinst от 5.2.1 и 5.3...там только
>perl пакетах.Если честно, я никогда не смотрел miniinst диски от производителя ;)
Видел просто, что они маленькие.. по размеру примерно подходили..
ээххх уважаемый автор..
боюсь, не прочитаете, а надо бы. да еще клюнуть в темечко, чтоб думал прежде чем писать!Во первых, зачем качать все порты?
я не качаю ports-all, а сделал список потребных веток, исключив например ports-arabic обязательно должно быть ports-base (в примере я указал для краткости ports-all).дело в том что для cvs очень важен tag.
я не знаю наверняка все его значения для всего, но я лично использую примерно такое:*default release=cvs tag=RELENG_5
src-all
# однако!!!
doc-all tag=.
ports-all tag=.
cvsroot-all tag=.RELENG_5 означает что я тяну 5-stable - как мне кажется, оптимальная ветка - достаточно матерая (надежно) и не старая, что понижает шансы найти несобираемые пакеты или серьезные дырки в секюрити.
если для ports-all или doc-all указать tag=RELENG_5, оно удалит почти все папки!
или их не создаст..у меня просто слов не находится чтобы выразить возмущение, после того как мне пришлось заново тянуть порты, плюс из-за подобных мелочей уже неделю не могу собрать полноценный релиз..
А *default prefix у Вас наверняка указывает совсем не туда же где живые порты да?
>поле сборки системы в ${CHROOTDIR} и при сборке уже R/cdrom/disk1, disk2 etc.
>он помещает в диски еще и каталоги ${CHROOTDIR}/bin, ${CHROOTDIR}/sbin, ${CHROOTDIR}/usr (все
>кроме ports и src). Интересно зачем?Начал собирать 5.4-STABLE, тоже так получилось. Посмотрел изменения между в Makefile между 5.3 и 5.4.. Появилась опция SEPARATE_LIVEFS, из-за неуказания которой всё копируется в disc1.
Будет время набросаю ещё дополнение к статье с учётом нововведений + ещё напишу как собирать релиз без доступа к репозитарию во время сборки.
На самом деле для создания релиза не нужен CVSup-ится для создания CVS-репозитария (если проявить минимум сообразительности). Вывод: из всех возможных способов вы рассказали о самом сложном для новичков способе - следовательно статья методически неверна.
> Вывод: из всех возможных способов вы рассказали
>о самом сложном для новичков способе - следовательно статья методически неверна.
>Статья _методически_ верна. И описывает верную последовательность создания релиза. А то, что Вы ухитряетесь сделать релиз минуя описаные шаги говорит о Вашем умении. Напишите статью верную по Вашему мнению и новички ее опробуют. Далее будет видно какая из статей более верна. А мерить будем по количеству заданных вопросов новичками.
Мне вот тоже интересно как сделать _только_ загрузочную версию СД-РОМа. А то приходится собирать все 3 ИЗО диска.
>Мне вот тоже интересно как сделать _только_ загрузочную версию СД-РОМа. А то
>приходится собирать все 3 ИЗО диска.Ответ на ваш вопрос лежит в файле src/release/Makefile
Cоздание ISO не самая долгая процедура, какую версию системы вы собираете и какой именно диск вам нужен?
Мне необходим один только bootonly диск. То есть там есть лоадер и кернел. Более там ничего нет. Для собирания онного диска я делаю следующие телодвижения: удаляю из usr/obj/usr/src/release release.3, cdrom.1 cdrom.3 iso.1, затем запускаю компиляцию каждого в той же последовательности.
>На самом деле для создания релиза не нужен CVSup-ится для создания CVS-репозитария
>(если проявить минимум сообразительности).
>Вывод: из всех возможных способов вы рассказали
>о самом сложном для новичков способе - следовательно статья методически неверна.На мой взгляд, этот способ прощё, чем заниматься хаканьем скриптов, тем более для новичков, и более правилен с точки зрения рекомендаций, даваемых разработчиками ОС. А на счёт верности методики, не мне судить, я не педагог, но ИМХО, из статьи можно получить представление как это всё работает.
На счёт репозитария, я лично нисколько не жалею что он у меня есть, в любое время я могу получить из него любую интересующую информацию по состоянию системы, чем и довольно часто пользуюсь.
Оопс, просмотрел дисскусию...Итак, способов создания ISO без CVS rep - много, от самого простого (для него даже моей квалификации непрограммиста хватило): позаменял в release/Makefile все cvs на cp. Отключил копирование doc и ports. Для быстроты выполнения make release поубирал строки удаления ранее
созданного дерева релиза. Hу и для создания исошника пришлось установить из портов cdtools. Всё. Никаких нафиг CVS rep. Есть способы ещё более быстрые, но рискованнее и чуть сложнее: не надо ни cvs репозитория, ни пропатчивания release/Makefile с заменой вызовов cvs на cp или mount_null. Это - совершенно штатный способ, только опущена подготовка chroot с копией world и src/ports, ибо это у нас и так есть, только не в chroot. Изрядно быстрее ;-)Файлик этот создает make release в конце подготовки chroot и в нем же запускает. Но можно и просто запустить, вредных последствий не будет - проверено НЕОДНОКРАТНО ;-)
Вот пример хака:
=== Cut ===
#!/bin/sh
set -ex
_RELTARGET=${1:-doRELEASE}
export DISTRIBUTIONS="bin catpages manpages games proflibs dict info doc
compat1x compat20 compat21 compat22 compat3x compat4x crypto krb4 krb5"
export BUILDNAME=4.7-20021122-STABLE
export VNDEVICE=vn0
export OBJFORMAT=elf
export MODULES_WITH_WORLD=YES
export RELEASETAG="RELENG_4"
export NODOC=yes
export ALLLANG=yes
export AUTO_KEYBOARD_DETECT="0"
export RELNOTES_LANG=en_US.ISO8859-1
export TARGET="i386"
export TARGET_ARCH="i386"
export FIXCRYPTO="bin/ed usr.sbin/ppp usr.sbin/pppd usr.sbin/tcpdump/tcpdump \
usr.sbin/sendmail"
export RELEASEDIR=/R
export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
export MANBUILDCAT=YES
if [ ! -f /tmp/.world_done ]; then
cd /usr/src
make TARGET_ARCH=i386 TARGET=i386 -DNOCLEAN buildworld && \
touch /tmp/.world_done
fi
cd /usr/src/release
make obj
make ${_RELTARGET}
echo ">>> make release for i386 finished on `LC_ALL=C TZ=GMT date`"
=== Cut ===Если вы поймёте как это работает, то сможете не только не заниматься выкачиванием мегов ненужного CVS rep, но и ускорить сборку ISO в 2-3 раза.
>cdtools. Всё. Никаких нафиг CVS rep. Есть способы ещё более быстрые,
>но рискованнее и чуть сложнее: не надо ни cvs репозитория, ни
>пропатчивания release/Makefile с заменой вызовов cvs на cp или mount_null.Если человек в состоянии разбираться с Makefile'ами системы, то читать эту статью, в принципе, не обязательно.
А по поводу способов - да, их много, это как обычно - в юнихах всегда есть много способов, чтобы сделать что-то.
неплохая статья, я бы добавил, что в 5-, 6-, 7- ветках можно штатно собирать без репозитория из имеющихся сырцов, указав EXTSRCDIR=/usr/src. ранее приходилось ручками в Makefile править "cvs -R bla-bla" на "cp -R /usr/src bla-bla"
Доброго времени суток.
Подскажите пожалуйста, есть ли возможность собрать систему в iso'шник из-под Win32-платформы?
Хотел сначала из-под OracleVM, но возможности перенести какие либо файлы на основную машину не нашел, вот и задался этим вопросом.
Буду очень благодарен за подсказку.