nfsroot - zweiter Versuch

From: Marian Hettwer <mh(at)kernel32.de>
Date: Mon, 9 Jul 2007 19:39:27 +0200

Hallo alle miteinander,

nachdem mir Bernd letztes mal sagte, dass "make distribution" nur bei einer Welt die "in-sync" ist unterstützt wird, habe ich um eigene Zweifel auszuräumen ein update auf 6-STABLE gemacht.
Damit ist jetzt sicher, dass meine laufende Welt und der inhalt von /usr/src auf gleichem Stand sind.

Trotzdem scheine ich einen Bug im Makefile in /usr/src aufzusitzen.

Das Handbuch sagt zum erstellen eines nfsroot:
#!/bin/sh
export DESTDIR=/data/misc/diskless
mkdir -p ${DESTDIR}
cd /usr/src; make buildworld && make buildkernel
cd /usr/src/etc; make distribution

Gesagt getan, aber es scheitert beim make distribution:
[root(at)blowfish /usr/src/etc]# make distribution
cd /usr/src/etc; install -o root -g wheel -m 644 amd.map apmd.conf auth.conf crontab csh.cshrc csh.login csh.logout devd.conf devfs.conf dhclient.conf disktab fbtab freebsd-update.conf ftpusers gettytab group hosts hosts.allow hosts.equiv hosts.lpd inetd.conf login.access login.conf mac.conf motd netconfig network.subr networks newsyslog.conf portsnap.conf pf.conf pf.os phones profile protocols rc rc.bsdextended rc.firewall rc.firewall6 rc.initdiskless rc.sendmail rc.shutdown rc.subr remote rpc services shells snmpd.config sysctl.conf syslog.conf usbd.conf etc.i386/ttys /usr/src/etc/../gnu/usr.bin/man/manpath/manpath.config /usr/src/etc/../usr.bin/mail/misc/mail.rc /usr/src/etc/../usr.bin/locate/locate/locate.rc printcap /usr/local/nfsroot/etc; cap_mkdb -l /usr/local/nfsroot/etc/login.conf; install -o root -g wheel -m 755 netstart pccard_ether rc.suspend rc.resume /usr/local/nfsroot/etc; install -o root -g wheel -m 600 master.passwd nsmb.conf opieaccess
 /usr/local/nfsroot/etc; pwd_mkdb -L -i -p -d /usr/local/nfsroot/etc /usr/local/nfsroot/etc/master.passwd
install: wrong number or types of arguments
usage: install [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode]
               [-o owner] file1 file2
       install [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode]
               [-o owner] file1 ... fileN directory
       install -d [-v] [-g group] [-m mode] [-o owner] directory ...
*** Error code 64

Stop in /usr/src/etc.

Das Problem ist scheinbar, dass er nicht die Zielverzeichnisse anlegt:
[root(at)blowfish /usr/src/etc]# ls -l /usr/local/nfsroot/
total 0

Ein install nach /usr/local/nfsroot/etc schlägt dann natürlich fehl.
Wie würde man diesen Bug im Makefile am besten beheben?
Die spezifische Stelle wäre diese:
distribution:
.if !defined(DESTDIR)
        @echo "set DESTDIR before running \"make ${.TARGET}\""
        @false
.endif
        cd ${.CURDIR}; \
            ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 644 \
                ${BIN1} ${DESTDIR}/etc; \

Und natürlich sämtlichen darauf folgenden install Aufrufe.
Ein mkdir ${DESTDIR}/etc würde das Problem für diesen einen install Aufruf beheben, nicht jedoch für andere.

Hat jemand eine bessere Idee als statische mkdir Aufrufe im Makefile?

Beste Grüße,
Marian

PS.: Oder vielleicht doch clone_root aus /usr/share/examples/diskless updaten und FreeBSD 6 fähig machen?

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 09 Jul 2007 - 19:40:28 CEST

search this site