scripting the buildworld/installworld process

Kent Stewart kstewart at owt.com
Sun Aug 31 13:45:28 PDT 2003


On Sunday 31 August 2003 01:25 pm, Charles Howse wrote:
> > > 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 = 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 = 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 = 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 = y ] ; then
>     cd /usr/obj
>     chflags -R noschg *
>     rm -rf *
> fi
> echo -n "Continue with build? [y/n]: "
> read e
> if [ $e = n ] ; then
>     exit
> fi
> cd /usr/src
> make -j4 buildworld
> make buildkernel KERNCONF=GENERIC
> make installkernel KERNCONF=GENERIC
> cp /boot/kernel /boot/kernel.GENERIC
> make buildkernel KERNCONF=CUSTOM
> make installkernel KERNCONF=CUSTOM
> 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 = 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 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 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?
>

One area I would check is /etc/master.passwd and groups. It would be 
really interesting for you if your user accounts all disappeared. I 
also won't let mergemaster touch my hosts and printcap files.

I would also go to the trouble of tee'ing the makes and create logs of 
the makes and installs. Since you are going on, you want to know what 
you have done. What I typically do is

make     buildworld 2>&1 | tee /var/log/build/bworld-`date 
"+%Y%m%d-%H%M"`.log

Sorry about the wrap but I have kmail set at col 72. I have relatively 
large /var and /tmp and just added ../build to /var/log. The date 
required minutes in order to be unique. I also log all of my cvsups.

Kent

-- 
Kent Stewart
Richland, WA

http://users.owt.com/kstewart/index.html



More information about the freebsd-questions mailing list