*BSD News Article 29178


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!yeshua.marcam.com!usc!howland.reston.ans.net!EU.net!Germany.EU.net!netmbx.de!zib-berlin.de!informatik.tu-muenchen.de!lrz-muenchen.de!colin.muc.de!en.muc.de!usenet
From: rse@en.muc.de (Ralf S. Engelschall)
Newsgroups: comp.os.386bsd.questions
Subject: Re: Upgrading from FreeBSD 1.0.2 to FreeBSD-current (1.1-Beta)...
Date: 2 Apr 1994 15:37:26 +0200
Organization: Engelschall (EN) Privat, Dachau/Munich, Germany
Lines: 127
Message-ID: <2njsf8$mgc@en.muc.de>
References: <2ngfnr$665@news.u.washington.edu>
Reply-To: rse@en.muc.de
NNTP-Posting-Host: vogue.muc.de
X-Newsreader: TIN [version 1.2 PL2]

In <2ngfnr$665@news.u.washington.edu>, Mark Tamola (buckwild@u.washington.edu) wrote:
> I am very sorry if this is an FAQ, but I've looked at posts as far in the past
> as I could, but could not find one relating to this exact topic.  To do a full
> and confident upgrade to -current or -1.1-Beta, do I only have to grab the
> sources from freebsd.cdrom.com, compile, and plug in, or do I have to also
> reconfigure a number of other things as well?  If I have the former option 
> available, could I then shorten my task to just grabbing the binaries for 
> -1.1-Beta?  Thanks much for any help.

A week ago, I have successfully upgraded a test machine and after falling into
some pitfalls, I have also upgraded my main workstation. I've posted my
upgrade steps used for the test machine. There were a few more problems, so I
have fixed my step-by-step-list. Here it is the latest one:

------------------------------
I. Setup
    PITFALL 1:
    - save links inside your binary areas (I had /bin/mail ->
      /opt/bin/mail, etc.) to prevent your own binaries to be
      overwritten by the installation procedure.
    PITFALL 2:
    - add user man to your /etc/passwd to avoid failure
      while upgrading (install!):
      "man:*:9:9::0:0:Mister Man Pages:/usr/share/man:"
    PITFALL 3:
    - make sure your /usr/obj can hold up to 52 MB which 
      will arise while compiling.

II. Bootstrap to new kernel:
    - $ cd /usr/src/share/mk
      $ make depend all install
    - $ cd /usr/src/include
      $ make depend all install
    - $ cd /usr/src/usr.sbin/config
      $ make depend all install
    - $ cd /usr/src/sbin/mount_procfs
      $ make depend all install
    - /etc/fstab:
      add entry for procfs to your fstab
      "proc   /proc   procfs  rw 0 0"
    - create /proc dir
      $ mkdir /proc
    - $ cd /usr/src/gnu/usr.bin/as
      $ make depend all install
    PITFALL 4:
      yes, "as" is needed, because of code in the kernel, but
      don't recompile and install "ld" because you are running a
      old kernel at the moment which cannot execute binaries
      produced with the new ld
    - $ cd /usr/src/usr.bin/strip
      $ make depend all install
    - $ cd /sys/i386/conf
      change "wd0" to "wdc0" and "fd0" to "fdc0" in your
      kernel config file. 
    PITFALL 5:
      Please take care that you don't have a "at 0xF..." in your
      config. This will fail. I had 
      "config  "386bsd" at 0xFE100000 root on sd0 swap on sd0"
      and the kernel failed when rebooting.
      Simply remove the "at 0xF...". The kernel loads correctly,
      even with the old bootblocks.
    - $ config <SYS>
      $ cd /sys/compile/<SYS>
      change the LDFLAGS "-Z" to "-z" to avoid wrong linking, because
      you currently linking with the old "ld".
      $ make depend all
      $ mv /386bsd /386bsd.o
      $ cp 386bsd /386bsd
    - $ shutdown -r now

IV. Recompile whole System:
    PITFALL:
    - Because the "install" used in "make world" reaches itself
      in usr.bin/xinstall it will fail due to the new db code
      it is linked with and the old database.
      To avoid this and the fact that all your old 1.0.2 binaries 
      will failing disable the new PWD code until you are running
      -current _and_ all your old binaries are relinked by you.
      Change #define PW_COMPACT to #undef in
        /usr/src/lib/libc/gen/getpwent.c 
        /usr/src/usr.sbin/pwd_mkdb/pwd_mkdb.c
    - $ cd /usr/src
      $ make bootstrapld
    - $ cd /usr/src
          $ make world
      or
          $ make directories
          $ make cleandist
          $ make mk
          $ make includes
          $ make libraries
          $ make tools
          $ make mdec
          $ make depend all
          $ make install
          $ cd /usr/src/share/man; make makedb
      I use the second one because if something fails, I can
      simply restart with the last step

V. Reset to new system
    - $ cd /usr/src/etc
      $ mv /etc/rc /etc/rc.10
      $ cp rc /etc/rc
    - $ shutdown -r now

VI. Recompile new kernel under new kernel with new ld
    - $ cd /sys/i386/conf
      $ config <SYS>
      $ cd /sys/compile/<SYS>
      $ make depend all
      $ mv /386bsd /386bsd.o
      $ cp 386bsd /386bsd
    - $ shutdown -r now
    - PITFALL:
      Do not install the bootblocks of -current. They are broken.
      Use your old 1.0.2 (rev 1.3) bootblocks. They work ok.
------------------------------

Finished! Now you are running FreeBSD-current!
OK, you have to reconfigure something like PCVT or your old netstart, etc.
But at this time -current runs stable.

Good luck!

-- 
                                        Ralf S. Engelschall    
                                        rse@en.muc.de