diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2004-02-07 21:29:11 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2004-02-07 21:29:11 +0000 |
commit | 6e83a58bf0c5a631ed94274924f4864acbc5be55 (patch) | |
tree | e29a9e8cadb63244801d4a4e6dfd6a8f68926483 /distrib/notes/amd64/upgrade | |
parent | c8631ea501000c0d3fa288f1b3646a5922d6e84c (diff) |
initial version. 3 minute edit away from i386..
Diffstat (limited to 'distrib/notes/amd64/upgrade')
-rw-r--r-- | distrib/notes/amd64/upgrade | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/distrib/notes/amd64/upgrade b/distrib/notes/amd64/upgrade new file mode 100644 index 00000000000..48e2b2689c4 --- /dev/null +++ b/distrib/notes/amd64/upgrade @@ -0,0 +1,103 @@ +dnl $OpenBSD: upgrade,v 1.1 2004/02/07 21:29:10 deraadt Exp $ +dnl OpenBSDUpgrade({:-the CD-ROM or an installation floppy as you would do for +dnl a new installation-:}) +Due to the change from a.out to ELF binary format in OpenBSD OSREV, +upgrades can be a complex, delicate process. The best solution, whenever +possible, is to backup your data and reinstall from scratch. + +The second best solution is to remove all ports, third party programs and +libraries installed on your system; upgrade; and then add ELF versions of +the removed files. + +In all cases, once you start the upgrade you MUST complete it. If the +upgrade process fails or is abandoned before it completes you will almost +certainly be left with a non-functional system. + +Finally, you cannot use the bsd.rd kernel to upgrade the system. The +existing bootblocks on your system cannot boot the OSREV bsd.rd. + +If you must do an upgrade while preserving the functionality of any +existing a.out binary files, then the rest of this section will guide you +through that process. + +The two main hurdles in upgrading from an a.out system to an ELF OpenBSD +OSREV system while preserving the functioning of a.out binaries are: +- the a.out binary emulation, required for compatibility with a.out + binaries using shared libraries, is not enabled by default, and requires + an explicit configuration change. +- a.out shared libraries (lib*.so) need to be moved to a specific location + for proper operation of older binaries. + +Before you start the upgrade process, the a.out emulation area needs to be +set up. It needs to be put inside a /emul/a.out hierarchy. This directory can, +however, be a symbolic link, should the available space in the root partition +not be enough. + +It is recommended that the following instructions and commands are issued in +single-user mode. + +The /emul/a.out hierarchy should be populated by the a.out shared libraries. +An easy way to do it is to run the following commands as root: + + mkdir -p /emul/a.out/var/run + tar cf - /sbin/ldconfig /usr/bin/ldd /usr/libexec/ld.so | + tar -C /emul/a.out -xpf - + for lib in $(/sbin/ldconfig -r | + awk '/=>/ { print $3 }'); + do + dirname $lib; + done | sort -u > /root/a.out-libdirs + tar cf - $(find $(< /root/a.out-libdirs) -name "lib*.so.*") | + tar -C /emul/a.out -xpf - + +Then, a cache of these shared libraries must be generated with: + + cp /var/run/ld.so.hints /var/run/ld.so.hints.backup + /sbin/ldconfig -s $(/usr/bin/sed 's,^/,/emul/a.out/,' /root/a.out-libdirs) + /bin/mv /var/run/ld.so.hints /emul/a.out/var/run + /bin/mv /var/run/ld.so.hints.backups /var/run/ld.so.hints + +The last step before the upgrade is to enable the a.out emulation, in +order to be sure that /etc/rc.local or any other customization you have +made to the system will still run: + + echo "kern.emul.aout=1" >> /etc/sysctl.conf + + +ATTENTION! Several configuration files under /etc, such as /etc/login.conf, +will refer to existing a.out binaries. DO NOT UPGRADE YOUR SYSTEM UNLESS +YOU HAVE ENABLED A.OUT EMULATION FIRST! After you merge configuration files +changes and replace or remove your existing a.out binaries, it will be +possible to disable a.out emulation. + + +The upgrade is now possible. Boot from the CD-ROM or an installation +floppy, as you would do for a new installation. + +When prompted, select the (U)pgrade option rather than the (I)nstall +option at the prompt in the install process. + +The upgrade script will ask you for the existing root partition, and +will use the existing filesystems defined in /etc/fstab to install the +new system in. It will also use your existing network parameters. + +From then, the upgrade procedure is very close to the installation +procedure described earlier in this document. Note that the upgrade +procedure will not let you pick the ``etc{:--:}OSrev.tgz'' set, so as to +preserve your files in `/etc' which you are likely to have customized +since a previous installation. + +When the upgrade procedure tells you that the upgrade is complete, do not +reboot the system yet. + +However, it is strongly advised that you unpack the etc{:--:}OSrev.tgz set in +a temporary directory and merge changes by hand, since all components of +your system may not function correctly until your files in `/etc' are +updated. + +After the upgrade is completed, it is now possible to remove the old a.out +shared libraries from their initial locations: + + rm -f $(file $(find $(< /root/a.out-libdirs) -name "lib*.so.*") | + awk -F: '/demand paged/ { print $1 }') + rm -f /root/a.out-libdirs |