Frage zu OpenBSD - Building a Release

foxit

Well-Known Member
Hallo zusammen :)

Ich hatte jetzt mal Zeit, ein Thema anzuschauen welches ich bei OpenBSD bisher nie versucht habe. Ich möchte gerne von der aktuellen Version OpenBSD 5.3 einen eigenen Release builden mit allen Sicherheitsupdates. Leider bekomme ich immer den gleichen Fehler, egal was ich mache:
Code:
sh ../../../../conf/newvers.sh
cc  -Werror -Wall -Wstrict-prototypes -Wmissing-prototypes  -Wno-main -Wno-uninitialized -Wno-format  -Wstack-larger-than-2047 -mcmodel=kernel -mno-red-zone -mno-sse2 -mno-sse -mno-3dnow  -mno-mmx -msoft-float -fno-omit-frame-pointer -fno-builtin-printf -fno-builtin-snprintf  -fno-builtin-vsnprintf -fno-builtin-log  -fno-builtin-log2 -fno-builtin-malloc -fno-pie -fno-stack-protector -Os -pipe -nostdinc -I. -I../../../.. -I../../../../arch -DSCSITERSE -DSMALL_KERNEL -DNO_PROPOLICE -DTIMEZONE="0" -DDST="0" -DFFS -DFFS2 -DNFSCLIENT -DCD9660 -DUDF -DMSDOSFS -DINET -DINET6 -DBOOT_CONFIG -DCRYPTO -DRAMDISK_HOOKS -DMINIROOTSIZE="0x1180" -DPCIVERBOSE -DMAXUSERS=4 -D_KERNEL -MD -MP  -c vers.c
ld -Ttext 0xffffffff801001e0 -e start --warn-common -nopie -S -x -o bsd ${SYSTEM_HEAD} vers.o ${OBJS}
text    data    bss     dec     hex
4450428 2388040 531792  7370260 707614
cp /usr/src/distrib/amd64/ramdisk_cd/../../../sys/arch/amd64/compile/RAMDISK_CD/bsd bsd
*** Error 1 in /usr/src/distrib/amd64/ramdisk_cd (../common/Makefile.inc:125 'do_files')
*** Error 1 (../common/Makefile.inc:86 'rd_teardown')
*** Error 2 in /usr/src/distrib/amd64 (<bsd.subdir.mk>:48 'all')
*** Error 2 in /usr/src/distrib (<bsd.subdir.mk>:48 'all')
*** Error 2 in /usr/src/etc (Makefile:320 'distrib')

Ich schreibe hier mal den Ablauf, was ich genau mache:
1. OpenBSD 5.3 Installation in einer VM mit Virtualbox. Installation über "bsd.rd" (Bei Paketauswahl: "-ga*" "-x*")

2. Ein paar Einstellungen für "root"
Code:
export PKG_PATH=http://ftp.ch.openbsd.org/pub/$(uname -s)/$(uname -r)/packages/$(uname -p)/
3. sys.tar.gz und src.tar.gz runterladen und "/usr/src" entpacken

4. Die Sourcen updaten
Code:
cvs -d anoncvs@ftp5.eu.openbsd.org:/cvs -q up -rOPENBSD_5_3 -Pd
5. Kernel und Binaries neu bauen inkl. reboot
http://www.openbsd.org/stable.html#building
Das hier funktioniert bestens aber dann kommt der Teil, welcher nicht mehr funktioniert.

6. Release erzeugen
http://www.openbsd.org/faq/faq5.html#Release
Hier exportiere ich noch die beiden Ordner DESTDIR und RELEASEDIR. Danach die Befehle:
Code:
# cd /usr/src/etc
# make release
...und genau hier bekomme ich dann nach einiger Zeit den Fehler von oben.

Mache ich grundsätzlich etwas falsch? :ugly:

Die Einstellungen für die Ramdisk sind original von der Version 5.3. Kein Update oder sonst etwas geändert. Zu dem Fehler habe ich etwas gefunden, dass dieser auftritt, wenn "sysmerge" nicht richtig bei einem Update durchläuft aber das ist hier nicht der Fall.

Ich bin dankbar für jeden Tipp.

Gruss
 
Da gibt es keine Dateien für "make":
Code:
make: don't know how to make release
Stop in /usr/src
 
Guckst Du hier: release(8) Evtl. hilft dir das weiter.

Code:
  4. Make and validate the system release
     The system release consists of at least one generic kernel, some
     installation media, the release `tarballs', installation instructions,
     and checksum files.

     The release process requires two work areas.  They are:

     DESTDIR      This is the name of a directory which will be the root of a
                  complete OpenBSD installation, thus it must be on a disk
                  partition large enough to store the entire operating system
                  (less the X Window System and any third party `packages').
                  The directory can be removed once the release is created.
                  In any case the release process ensures the directory is
                  empty before starting.

     RELEASEDIR   This is the name of a directory where the release output
                  files are stored.  The following process will create the
                  directory if necessary.

                  Warning: DESTDIR and RELEASEDIR must not refer to any
                  directory with /mnt in its path, as /mnt is used in the
                  release generation process.  Additionally the first vnd(4)
                  device, vnd0, is also used and must not be configured.

     The release process is:

     Ensure ${DESTDIR} exists as an empty directory and ${RELEASEDIR} exists.
     ${RELEASEDIR} need not be empty.  You must be root to create a release:

           $ su
           # export DESTDIR=your-destdir; export RELEASEDIR=your-releasedir
           # test -d ${DESTDIR} && mv ${DESTDIR} ${DESTDIR}- && \
                   rm -rf ${DESTDIR}- &
           # mkdir -p ${DESTDIR} ${RELEASEDIR}

     Make the release and check that the contents of ${DESTDIR} pretty much
     match the contents of the release `tarballs':

           # cd /usr/src/etc && make release
           # cd /usr/src/distrib/sets && sh checkflist
           # unset RELEASEDIR DESTDIR

     At this point you have most of an OpenBSD release.  The only thing
     missing is the X Window System (which is covered in the next section).
 
@midnight

Das sind genau die gleichen Schritte wie ich oben schon verlinkt habe:

Code:
Make the release and check that the contents of ${DESTDIR} pretty much
     match the contents of the release `tarballs':

           # cd /usr/src/etc && make release

Genau hier gehts nicht weiter und ich bekomme den Fehler wie in meinem ersten Posting.
 
Was hast Du denn bei

Code:
export DESTDIR=your-destdir; export RELEASEDIR=your-releasedir
als DESTDIR und RELEASEDIR angegeben? Das fehlt irgendwie noch bei deiner Beschreibung oben. Ist DESTDIR auch leer und gross genug, um das ganze base-system zu beherbergen?

Das sollte in etwa so aussehen:

Code:
# mkdir /destdir
# mkdir -p /releasedir/5.3/amd64

# export DESTDIR=/destdir
# export RELEASEDIR=/releasedir/5.3/amd64

# cd /usr/src/etc
# make release

EDIT: Achja, /mnt darf auch nicht gemountet sein, da das fuer den release Prozess benoetigt wird.
 
Zuletzt bearbeitet:
Ich mache es genau nach der Anleitung:
Code:
root@XXX:/data$ echo $DESTDIR
/data/dest
Code:
root@XXX:/data$ echo $RELEASEDIR
/data/rel
Code:
root@XXX:/data$ ll rel/ dest/                                                                                                
dest/:
total 8
drwxr-xr-x  2 root  wheel  512 May 14 12:38 .
drwxr-xr-x  5 root  wheel  512 May 14 12:38 ..

rel/:
total 8
drwxr-xr-x  2 root  wheel  512 May 14 12:38 .
drwxr-xr-x  5 root  wheel  512 May 14 12:38 ..
Code:
root@XXX:/data$ df -h .
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/wd0a      8.9G    2.8G    5.6G    34%    /

Die VM hat 6 Cores und 2 GB RAM, wovon immer ca. 600MB frei sind beim kompilieren. Mhhh hier auf dieser VM ist jetzt nicht wirklich mehr sooo viel Platz aber das kann ich mal noch anschauen. Meine auf einer anderen VM habe ich da sicher ca. 20GB frei.

Er fängt auch an zu bauen und auch im $RELEASEDIR habe ich schon ein paar fertige Pakete z.B. "base53.tgz" oder "bsd.*". Ich würde sogar sagen, dass er mir ca. 3/4 des Systems fertig builded.

Langsam glaube ich echt da ist irgendwo ein Bug.
 
Heute habe ich mich nochmals an dieses Problem gemacht und ja was soll ich sagen es funktioniert!

Problem war eine Kombination von mehreren Sachen:

1. Es gab kein "/tmp"
2. Der Host hatte ein def. RAM Modul
3. Funktioniert ein "make -j8 release" nicht! Nur mit "make release" klappt es.

Der Kernel und alle Binaries lassen sich aber mit "make -j8" builden.

Ahhh was soll ich dazu sagen... PEBKAC :huth:
 
Zurück
Oben