Update auf 8.1, make buildkernel schlägt fehl

carbuncle

Rainbow Six
Hi,

ich hab folgendes Problem. Nachdem ich neue Sourcen mit csup gezogen habe (8_STABLE) möchte ich den Kernel bauen. Ein make buildworld läuft ohne Probleme durch. Danach möchte ich ein make buildkernel machen. Das schlägt fehl. Er sagt dass er machine nicht löschen kann da es ein Verzeichnis ist. Genaue Fehlermeldung poste ich heute abend.

Wenn ich jedoch /usr/src nach /usr/src_etc umbenenne macht er ein buildworld und buildkernel ohne Probleme. Hat schon mal jemand so einen Effekt gehabt?
 
Hi,

ich glaube sowas ähnlich hatte ich auch schon mal - bei einem Wechsel von 7 nach 8: In einem Zielordner befanden sich Dateien, die er nicht löschen konnte. Soweit ich mich erinnern kann, war irgendwo im Pfad der Name des Kernels oder der Architektur und der Inhalt war Halb-Kompiliertes. Nachdem ich den Ordner gelöscht hatte, hat er ihn wieder neu erstellt und alles war ok.

Versuch mal mit Befehlen wie

find /usr/src/ -type f -ctime -1d oder
find /usr/src/ -type f -cmin -15

herauszufinden, was er da so Neues erstellen wollte. Wenn der Ordner erstmal nur umbennannt oder besser verschoben wird, müßte er sich bei Fehlalarm schnell wieder rekonstruieren lassen.
 
So hier die nachgereichte Fehlermeldung:

Code:
--------------------------------------------------------------
>>> Kernel build for GENERIC started on Fri Aug 20 18:09:46 CEST 2010
--------------------------------------------------------------
===> GENERIC
mkdir -p /usr/obj/usr/src/sys

--------------------------------------------------------------
>>> stage 1: configuring the kernel
--------------------------------------------------------------
cd /usr/src/sys/amd64/conf;  PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/obj/usr/src/tmp/usr/games:/sbin:/bin:/usr/sbin:/usr/bin  config  -d /usr/obj/usr/src/sys/GENERIC  /usr/src/sys/amd64/conf/GENERIC
Kernel build directory is /usr/obj/usr/src/sys/GENERIC
Don't forget to do ``make cleandepend && make depend''

--------------------------------------------------------------
>>> stage 2.1: cleaning up the object tree
--------------------------------------------------------------
cd /usr/obj/usr/src/sys/GENERIC; MAKEOBJDIRPREFIX=/usr/obj  MACHINE_ARCH=amd64  MACHINE=amd64  CPUTYPE=  GROFF_BIN_PATH=/usr/obj/usr/src/tmp/legacy/usr/bin  GROFF_FONT_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/groff_font  GROFF_TMAC_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/tmac  _SHLIBDIRPREFIX=/usr/obj/usr/src/tmp  VERSION="FreeBSD 8.1-PRERELEASE amd64 800108"  INSTALL="sh /usr/src/tools/install.sh"  PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/obj/usr/src/tmp/usr/games:/sbin:/bin:/usr/sbin:/usr/bin NO_CTF=1 make KERNEL=kernel cleandir
rm -f *.o *.so *.So *.ko *.s eddep errs  kernel.debug kernel kernel.symbols  linterrs makelinks tags vers.c  vnode_if.c vnode_if.h vnode_if_newproto.h vnode_if_typedef.h  agp_if.c ata_if.c eisa_if.c miibus_if.c mmcbr_if.c mmcbus_if.c card_if.c power_if.c pci_if.c pcib_if.c ppbus_if.c uart_if.c usb_if.c g_part_if.c isa_if.c bus_if.c clock_if.c cpufreq_if.c device_if.c linker_if.c serdev_if.c acpi_if.c acpi_wmi_if.c agp_if.h ata_if.h eisa_if.h miibus_if.h mmcbr_if.h mmcbus_if.h card_if.h power_if.h pci_if.h pcib_if.h ppbus_if.h uart_if.h usb_if.h g_part_if.h isa_if.h bus_if.h clock_if.h cpufreq_if.h device_if.h linker_if.h serdev_if.h acpi_if.h acpi_wmi_if.h  acpi_quirks.h aicasm* y.tab.h aic7xxx_seq.h aic7xxx_reg.h  aic7xxx_reg_print.c aic79xx_seq.h aic79xx_reg.h  aic79xx_reg_print.c miidevs.h pccarddevs.h teken_state.h  usbdevs.h usbdevs_data.h ia32_genassym.o ia32_assym.h  acpi_wakecode.o acpi_wakecode.bin acpi_wakecode.h  acpi_wakedata.h
rm -f .depend machine
rm: machine: is a directory
*** Error code 1

Stop in /usr/obj/usr/src/sys/GENERIC.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
 
Falls du wirklich cvs benutzt (nicht cvsup oder csup) dann
könnte
Code:
$ cvs update -PAd
dein Problem beheben. -> man cvs(1)
Einen Versunch ist es allemal wert.
csup und cvsup sind unkomplizierter, aber mittlerweile am leichtesten ist IMHO subversion.

OOPS. Sollte wohl vor dem Posten genauer lesen
ich neue Sourcen mit csup gezogen habe (8_STABLE) möchte ...
Sorry.
 
Zuletzt bearbeitet:
Hehe macht nix ;)

Ich hab gesehen dass er auch /usr/obj/usr verwendet. Da könnte was schiefgegangen sein. Ich habs mal umbenannt. Buildworld rennt...mal sehen.
 
Joa das lief durch. Jetzt habe ich das nächste Problem:

make installworld im Singleuser mode meint er könne nicht in /usr/share/man/en.ISO8859-1 schreiben. Da ich aber root UND im SingleUser Mode bin wundert mich das etwas.

Hat jemand sowas schon im SingleUser Mode erlebt??? Achja FS ist zfs. atime ist abgeschaltet. Gibt das ein Problem?
 
Ja nach dem singleuser hatte ich mal ein exit gemacht. Danach geht er in den Multiuser. Danach wieder mit init 1 in den Singleuser Mode. Es war nur / als readonly gemountet.

Ich hab im zfs atime auf off. Ob es daran liegt?
 
So hier ist die Fehlermeldung:

Code:
mkdir -p /tmp/install.SrYwgrHr
progs=$(for prog in [ awk cap_mkdb cat chflags chmod chown  date echo egrep find grep install-info  ln lockf make mkdir mtree mv pwd_mkdb rm sed sh sysctl  test true uname wc zic; do  if progpath=`which $prog`; then  echo $progpath;  else  echo "Required tool $prog not found in PATH." >&2;  exit 1;  fi;  done);  libs=$(ldd -f "%o %p\n" -f "%o %p\n" $progs 2>/dev/null | sort -u |  while read line; do  set -- $line;  if [ "$2 $3" != "not found" ]; then  echo $2;  else  echo "Required library $1 not found." >&2;  exit 1;  fi;  done);  cp $libs $progs /tmp/install.SrYwgrHr
cp -R ${PATH_LOCALE:-"/usr/share/locale"} /tmp/install.SrYwgrHr/locale
cd /usr/src; MAKEOBJDIRPREFIX=/usr/obj  MACHINE_ARCH=amd64  MACHINE=amd64  CPUTYPE=  GROFF_BIN_PATH=/usr/obj/usr/src/tmp/legacy/usr/bin  GROFF_FONT_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/groff_font  GROFF_TMAC_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/tmac PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/obj/usr/src/tmp/usr/games:/tmp/install.SrYwgrHr  LD_LIBRARY_PATH=/tmp/install.SrYwgrHr  PATH_LOCALE=/tmp/install.SrYwgrHr/locale make -f Makefile.inc1 __MAKE_SHELL=/tmp/install.SrYwgrHr/sh reinstall;  MAKEOBJDIRPREFIX=/usr/obj  MACHINE_ARCH=amd64  MACHINE=amd64  CPUTYPE=  GROFF_BIN_PATH=/usr/obj/usr/src/tmp/legacy/usr/bin  GROFF_FONT_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/groff_font  GROFF_TMAC_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/tmac PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/obj/usr/src/tmp/usr/games:/tmp/install.SrYwgrHr  LD_LIBRARY_PATH=/tmp/install.SrYwgrHr  PATH_LOCALE=/tmp/install.SrYwgrHr/locale rm -rf /tmp/install.SrYwgrHr
--------------------------------------------------------------
>>> Making hierarchy
--------------------------------------------------------------
cd /usr/src; make -f Makefile.inc1 hierarchy
cd /usr/src/etc;		make distrib-dirs
mtree -eU  -f /usr/src/etc/mtree/BSD.root.dist -p /
mtree -eU  -f /usr/src/etc/mtree/BSD.var.dist -p /var
mtree -eU  -f /usr/src/etc/mtree/BSD.usr.dist -p /usr
mtree -eU  -f /usr/src/etc/mtree/BSD.include.dist  -p /usr/include
mtree -deU  -f /usr/src/etc/mtree/BIND.chroot.dist  -p /var/named
mtree -deU  -f /usr/src/etc/mtree/BSD.sendmail.dist -p /
cd /; rm -f /sys; ln -s usr/src/sys sys
cd /usr/share/man/en.ISO8859-1; ln -sf ../man* .
*** Error code 1

Stop in /usr/src/etc.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.

Was mich wundert ist er geht in /usr/share/man/en.ISO8859-1. Da gibt es man1..manX Vezeichnisse. Danach will er aber ein Directory höher und das Directory unlinken. Da kann er es natürlich nicht finden. Ich frag mich als ob im Dateisystem was falsch eingehängt ist. Mein Mount sieht so aus:

Code:
/dev/ad6s1a on / (ufs, local)
devfs on /dev (devfs, local, multilabel)
tank on /tank (zfs, local, noatime)
tank/tbackup on /tank/tbackup (zfs, local, noatime)
tank/usr on /usr (zfs, local, noatime)
tank/usr/home on /usr/home (zfs, local, noatime)
tank/usr/home/tobias on /usr/home/tobias (zfs, local, noatime)
tank/usr/home/tobias/Mail on /usr/home/tobias/Mail (zfs, local, noatime)
tank/usr/home/tobias/important on /usr/home/tobias/important (zfs, local, noatime)
tank/usr/ports on /usr/ports (zfs, local, noatime)
tank/usr/ports/distfiles on /usr/ports/distfiles (zfs, local, noatime)
tank/var on /var_old (zfs, local, noatime)
procfs on /proc (procfs, local)
tank/tmp on /tmp (zfs, local, noatime)
tank/var2 on /var (zfs, local, noatime)
 
Was interessant ist:

make installworld DESTDIR=/usr/testworld

läuft klaglos durch. Irgendwie ist da doch was nicht in sync.
 
Wieso hast Du nicht freebsd-update genutzt? Lief bei mir (Update von 8.0 auf 8.1) problemlos, bis auf daß irgendwelche Fragen auftauchten und ich auf einmal irgendwelche Konfigurationsdateien mit vi editieren mußte. Mit ee wäre es einfacher gewesen...
 
@Cabriofahrer

Ja das werde ich mal ausprobieren. Ansonsten fällt mir nichts mehr ein als die Verzeichnisse händisch zu löschen und dann ein make installworld auszuführen.
 
also ein freebsd-update bringt mir das:
Code:
[tobias@tobias /etc]$ uname -a
FreeBSD tobias.universum.local 8.1-STABLE FreeBSD 8.1-STABLE #0: Fri Aug 20 22:32:49 CEST 2010     tobias@tobias.universum.local:/usr/obj/usr/src/sys/GENERIC  amd64
[tobias@tobias /etc]$ sudo freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 4 mirrors found.
Fetching public key from update3.FreeBSD.org... failed.
Fetching public key from update4.FreeBSD.org... failed.
Fetching public key from update2.FreeBSD.org... failed.
Fetching public key from update5.FreeBSD.org... failed.
No mirrors remaining, giving up.
[tobias@tobias /etc]$

Ist das nur temporär, oder gibts da ein Problem?
 
Zurück
Oben