From owner-freebsd-questions@FreeBSD.ORG Sun Aug 31 14:19:51 2003 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id F400D16A4BF for ; Sun, 31 Aug 2003 14:19:50 -0700 (PDT) Received: from remt24.cluster1.charter.net (remt24.cluster1.charter.net [209.225.8.34]) by mx1.FreeBSD.org (Postfix) with ESMTP id 220E643F85 for ; Sun, 31 Aug 2003 14:19:50 -0700 (PDT) (envelope-from chowse@charter.net) Received: from [66.168.145.25] (HELO moe) by remt24.cluster1.charter.net (CommuniGate Pro SMTP 4.0.6) with ESMTP id 142458758; Sun, 31 Aug 2003 17:19:49 -0400 From: "Charles Howse" To: "'Kent Stewart'" , "'ODHIAMBO Washington'" Date: Sun, 31 Aug 2003 16:19:34 -0500 Message-ID: <001d01c37005$953e6eb0$04fea8c0@moe> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook, Build 10.0.2616 In-Reply-To: <200308311345.01322.kstewart@owt.com> X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 Importance: Normal cc: freebsd-questions@freebsd.org Subject: RE: scripting the buildworld/installworld process X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 31 Aug 2003 21:19:51 -0000 > > > > I'll be glad to post the scripts for review if anyone's > > > > interested. > > > > > > I'll take a look and test them for you also. > > > > OK, any input or corrections welcome. > > I definitly would be interested in more error checking and > > reporting, and I'm thinking about using \time to append the > > time it takes the long utilities to run to a file for comparison > > purposes. > > > > ------ This is the first one ------ > > #!/usr/local/bin/bash > > # > > # Update the system, run in multi-user mode > > > > echo -n "Have you read /usr/src/UPDATING? [y/n]: " > > read a > > if [ $a =3D n ] ; then > > less /usr/src/UPDATING > > exit > > fi > > echo -n "Have you merged /etc/group and /usr/src/etc/group? [y/n]: " > > read b > > if [ $b =3D n ] ; then > > diff -c /etc/group /usr/src/etc/group | less > > exit > > fi > > echo -n "Have you merged /etc/master.passwd and > > /usr/src/etc/master.passwd? [y/n]: " > > read c > > if [ $c =3D n ] ; then > > diff -c /etc/master.passwd /usr/src/etc/master.passwd > > exit > > fi > > # copy my customized make.conf > > cp /disk2/larry/etc/make.conf /etc > > # copy my customized kernel config file > > cp /disk2/larry/usr/src/sys/i386/conf/CUSTOM /usr/src/sys/i386/conf > > echo -n "Clean out /usr/obj? [y/n]: " > > read d > > if [ $d =3D y ] ; then > > cd /usr/obj > > chflags -R noschg * > > rm -rf * > > fi > > echo -n "Continue with build? [y/n]: " > > read e > > if [ $e =3D n ] ; then > > exit > > fi > > cd /usr/src > > make -j4 buildworld > > make buildkernel KERNCONF=3DGENERIC > > make installkernel KERNCONF=3DGENERIC > > cp /boot/kernel /boot/kernel.GENERIC > > make buildkernel KERNCONF=3DCUSTOM > > make installkernel KERNCONF=3DCUSTOM > > echo "Reboot to single user mode and run /disk2/larry/bin/update2" > > Exit > > > > ------ This is the second one ------ > > #!/usr/local/bin/bash > > # > > # Update the system, run in single user mode > > > > echo -n "Continue with installworld? [y/n]: " > > read a > > if [ $a =3D n ] ; then > > exit > > fi > > make installworld > > if [ -d /etc.old ] ; then > > rm -r /etc.old > > fi > > cp -Rp /etc /etc.old > > /usr/sbin/mergemaster -a > > cd /dev > > ./MAKEDEV all > > cd /usr/src/release/sysinstall > > make clean > > make all install > > echo "Finished! Do ps and top work?" > > Exit > > > > > > 2. After reading man mergemaster, I see that the -a=20 > flag will run > > > > mergemaster automatically and leave any new files in > > > > > > /var/tmp/temproot. > > > > > > > I'd like to confirm that if I opt to run mergemaster -a, > > > > > > then I should > > > > > > > check/merge any files before leaving single user mode. It > > > > > > seems like > > > > > > > the right thing to do...? > > > > > > Correct, but I'll advise you run mergemaster manually. Margemaster > > > is such a dangerous thing to run with -a on a system that has had > > > so many mods to /etc > > > > When I upgraded from 4.8-p3 to p4 recently, I ran mergemaster > > manually. The only file I had to make a decision on was (I=20 > forget the > > name) the one that prints the uname information when booting. > > Just for the sake of discussion, let's say I did opt to run > > mergemaster -a. > > All I would have to do is check every file in /var/tmp/temproot and > > be sure it didn't break anything by overwriting the older version, > > correct? > > >=20 > One area I would check is /etc/master.passwd and groups. It would be=20 > really interesting for you if your user accounts all disappeared. I=20 > also won't let mergemaster touch my hosts and printcap files. I'm not sure exactly what you mean. I'm asking whether or not to diff the master.passwd and group files ( see above ). If I run mergemaster -a, my understanding is that it doesn't make any changes, it just leaves the new files in /var/tmp/temproot to be dealt with later, so it wouldn't touch my hosts and other important custom files, right? > I would also go to the trouble of tee'ing the makes and=20 > create logs of=20 > the makes and installs. Since you are going on, you want to know what=20 > you have done. What I typically do is >=20 > make buildworld 2>&1 | tee /var/log/build/bworld-`date=20 > "+%Y%m%d-%H%M"`.log Excellent idea, if I was tight on disk space, I could even gzip them. > required minutes in order to be unique. I also log all of my cvsups. Another great idea! Thanks! I've just been working on timing the different processes, here's a snippet... Printf "Time for buildworld:\t" >> /root/build.log \time -aho /root/build.log make buildworld Printf "\n" >> /root/build.log BTW, which field do I want from the output of time? Real, user, whatever? I'll also need to do some cut'ing in order to just get the proper field from time...or I could just let it rip...? For instance... Time for buildworld: 2:34:15 real 2:35:12 user etc...