This file documents the instructions for upgrading to Slackware 12.0, the 
packages added, removed, renamed, and/or split  during the development cycle 
from Slackware 11.0 through Slackware 12.0, and some potential "gotchas" that 
users can avoid by arming themselves with a little knowledge.


*** INSTRUCTIONS FOR UPGRADING FROM 11.0 ***

  Note: Follow these steps in this order

  1. Install a 2.6.18 or later kernel (if you are using the default 2.4 kernel 
     from Slackware 11.0) - there are kernel packages available in the A series
     that should work fine.  Note that the generic* kernels will require an
     initrd, and 11.0's mkinitrd is unable to build a suitable one, so you need
     to choose one of the huge* kernels for now.  There is a discussion later
     in this document about whether to use the SMP-enabled kernel or not.
     At this point, use "installpkg" to install the kernel rather than 
     "upgradepkg" so that you will still have a working kernel if the new one
     doesn't boot.  If you were not already running a 2.6 kernel, you will 
     need to reboot before doing anything else.  Before you reboot, you will
     need to make sure the old and new kernels have an appropriate section in
     /etc/lilo.conf, and then run /sbin/lilo.
  2. After successfully booting the new 2.6 kernel, you may now remove the
     kernel-ide and kernel-modules-2.4.* packages if they were installed, and
     you can remove any other kernels that you had installed from 11.0.
  3. Go into single user mode (runlevel 1) with "telinit 1"
  4. Upgrade the a/glibc-solibs package.
  5. Upgrade the a/pkgtools and a/sed packages.
  6. Remove all of the x/ series packages ( cd /var/log/packages ;
     removepkg x11-* fontconfig* dejavu-ttf* ttf-indic-fonts* ). 
     Also remove the xpdf package. 
  7. Upgrade the aaa_base and aaa_elflibs packages - this MUST be done before 
     the next step.
  8. Using "upgradepkg --install-new" install the new l/expat, x/libfontenc, 
     x/fontconfig, x/mkfontdir, x/mkfontscale, and x/x11-skel packages.
  9. Upgrade/install everything else using "upgradepkg --install-new" - note 
     that you can skip the KDEI series if your only language is English. 
     Even if you do need something in this series, it might be best to skip
     it for now and then install only what you need later. 
 10. Remove all of the packages listed below in the "PACKAGE REMOVALS" section.
 11. Make sure the paths in /etc/lilo.conf point to a valid kernel and run
     "/sbin/lilo" to reinstall LILO.  Note that by default, /boot/vmlinuz will
     be a symlink to the "hugesmp" kernel.  You should also remove any sections
     of lilo.conf which point to the old 2.4.x kernels.
     If you plan to use one of the generic kernels (this is recommended), you 
     will need to make an initrd.  See /boot/README.initrd for instructions. 
 12. Be sure to move your *.new config files into place and merge any custom
     changes you had made to the originals.  To find them, run:
       find /etc -name "*.new"
     You will need to leave passwd, shadow, group, and gshadow alone for the
     most part (do not copy the *.new versions over the existing ones), but 
     you will need to add any new user/group accounts in passwd.new and
     group.new to the existing files.  There have also been some changes to
     the network scripts, so pay close attention to those as well.
 13. You can either reboot or do "telinit 3" to go back to runlevel 3.

You will need to generate a new /etc/X11/xorg.conf file after upgrading, and 
  you will also need to have each user run /usr/bin/xwmconfig again to copy
  the updated xinitrc files to $HOME/.xinitrc (if using runlevel 3).  
  If you're using fluxbox, you will probably want to verify all of the paths
  defined in $HOME/.fluxbox/startup (and maybe other files there) too.

The old contents of /usr/X11R6 has been moved to a /usr/X11R6.bak directory.
  This setup should allow third party video drivers to find X in the old 
  places.  Anything you really want to keep will need to be merged back by 
  hand, although you should strongly consider recompiling anything still 
  there.

If you had any custom additions to /etc/X11/xkb (such as in ./symbols/pc/),
  the contents of the old directory will be present after upgrading at:
    /etc/X11/xkb.old.bak.$$
  If you had not made any custom additions, this directory might still be
  present - it is safe to remove.

If you have problems (especially regarding fonts) after the upgrade, run
  pkgtool and re-run the mkfontdir and fontconfig setup scripts. 

sysvinit and udev were upgraded, and the actual init scripts were split out
  into the sysvinit-scripts package.  Be sure to install it, and don't forget
  to move/merge all of the associated *.new files into place or your system
  will not boot.  If you have more than one network card and have been using
  /etc/udev/rules.d/network-devices.rules, the new syntax requires using
  ATTR{address} instead of SYSFS{address}, and the file is now called
  /etc/udev/rules.d/75-network-devices.rules.  While we're on the subject of 
  udev, all udev rules files should now have numerical prefixes, so you should 
  remove any leftover rules files that do not have numerical prefixes and 
  rename any custom rules files.

Slackware's udev implementation will automatically create rules files for your
  optical devices (/etc/udev/rules.d/75-optical-devices.rules) and network
  interfaces (/etc/udev/rules.d/75-network-devices.rules) on first boot.
  If you add/remove/replace any of this hardware, and/or you "clone" a system
  to another hard drive for deployment, you will need to either remove these
  two files (so that udev will regenerate them to reflect the new/changed 
  hardware) or edit them accordingly.  

Some of the syntax in the network initialization scripts has changed in this
  release (particularly that relating to WLAN_IWPRIV in rc.inet1.conf and IWPRIV
  in rc.wireless.conf).

The /dev/cdrom line in /etc/fstab is commented out by default, as it interferes
  with HAL.  HAL defaults to on, so if you do not wish to use it, you will need
  to chmod -x /etc/rc.d/rc.hald and uncomment the /dev/cdrom line in /etc/fstab

Note that HAL will honor settings in /etc/fstab if a device is present there,
  so you could technically have removable devices defined in /etc/fstab, but if
  the fstab settings do not allow normal users to mount them (with the "user" or
  "users" option), then HAL/dbus will not allow them to be mounted either.
  Also note that you will need to run "/etc/rc.d/rc.messagebus reload" after 
  adding any users to plugdev, power, or video groups so that it re-reads the
  /etc/group file.

It is recommended that you use one of the generic kernels (either the plain
  kernel-generic or kernel-generic-smp) for daily use.  For most systems,
  you should use the generic SMP kernel if it will run, even if your system
  is not SMP-capable.  Some newer hardware needs the local APIC enabled in
  the SMP kernel, and theoretically there should not be a performance penalty
  with using the SMP-capable kernel on a uniprocessor machine, as the SMP
  kernel tests for this and makes necessary adjustments.  Furthermore, the
  kernel sources shipped with Slackware 12.0 are configured for SMP usage,
  so you won't have to modify those to build external out-of-tree modules
  (such as NVidia or ATI proprietary drivers) if you use the SMP kernel.

If you are using one of the non-SMP kernels (huge.s or generic.s) and need
  to compile third-party modules (such as the proprietary NVidia driver),
  have a look in /extra/linux-2.6.21.5-nosmp-sdk/ for information on what
  is needed to build them.

As stated earlier, it is recommended that you use one of the generic kernels
  rather than the huge kernels; the huge kernel is primarily intended as 
  an "installer" and "emergency" kernel in case you forget to make an initrd.
  However, if you do use one of the huge kernels, you will likely encounter 
  errors like this:
    kobject_add failed for uhci_hcd with -EEXIST, don't try to register
  These occur because the respective drivers are compiled statically into the
  huge kernels but udev tries to load them anyway.  These errors should be safe
  to ignore, but if you really don't want them to appear, you can blacklist the
  modules that try to load in /etc/modprobe.d/blacklist.  However, make sure you
  remove them from the blacklist if you ever decide to use the (recommended)
  generic kernels.

The Slackware kernels now include support for the "magic SysRQ key."
  For more information about what this is and how it can be used, see 
  /usr/src/linux-2.6.21.5/Documentation/sysrq.txt
  After you've read this, if you would like to disable it, there are at
  least two ways to do so.
    1. Add the following to /etc/sysctl.conf (note that this file does not
       exist by default, so you'll have to create it):
         kernel.sysrq = 0
    2. Add the following to one of the init scripts (preferably rc.local):
         echo 0 > /proc/sys/kernel/sysrq
  The first method has the advantage of being run from rc.S when the system
  first comes up, while the second will be run only after the system is in
  multi-user mode.  It's up to you as to which is better.

All php extensions built in /usr/lib/php/extensions are activated by default;
  if you don't want any of them, comment them out in /etc/httpd/php.ini

gcc-3.4.6 has been moved to /pasture. We've upgraded to gcc-4.1.2, but gcc-3.4.6
  is being kept around because some things still aren't ready for gcc-4.

The upgrade to gcc-4.1.2 is likely to cause problems with building some software
from source.  Please complain to the upstream maintainers... :)



*** PACKAGE ADDITIONS SINCE 11.0 ***

a/aaa_terminfo: split from the pkgtools package.
a/cryptsetup: add cryptsetup package.
a/device-mapper: moved from /extra
a/dialog: split from the pkgtools package.
a/dosfstools: split from the bin package.
a/ed: split from the bin package.
a/eject: split from the bin package.
a/file: split from the bin package.
a/lha: split from the bin package.
a/lvm2: moved from /extra (replaces lvm).
a/kernel-generic: added single processor generic kernel; requires initrd.
a/kernel-huge: added single processor full featured kernel (no initrd needed).
a/kernel-modules: added modules for single processor kernels.
a/kernel-generic-smp: added generic SMP capable kernel; requires initrd.
a/kernel-huge-smp: added full featured SMP capable kernel; (no initrd needed).
a/kernel-modules-smp: added modules for SMP capable kernels.
a/mtx: added the mtx package.
a/ncompress: split from the bin package.
a/patch: split from the bin package.
a/rpm2tgz: split from the bin package.
a/sdparm: added sdparm package.
a/splitvt: split from the bin package.
a/sysvinit-functions: added Red Hat style functions.
a/sysvinit-scripts: split from the sysvinit package.
a/time: split from the bin package.
a/tree: split from the bin package.
a/unarj: split from the bin package.
a/which: split from the bin package.
a/zoo: split from the bin package.
ap/dmidecode: added the dmidecode package.
ap/ghostscript-fonts-std: added - this replaces the gnu-gs-fonts package.
ap/hplip: moved from /testing (replaces hpijs).
ap/lsscsi: added the lsscsi tool.
ap/nano: added the nano editor.
d/cmake: added the CMake package.
d/gcc-gfortran: this package replaces the gcc-g77 package.
d/gperf: added gperf package.
d/pkg-config: renamed from pkgconfig.
l/dbus: added dbus IPC library.
l/dbus-glib: added glib bindings for dbus.
l/dbus-qt3: added qt3 bindings for dbus.
l/gamin: added gamin library.
l/gmime: added gmime library - used by new pan version.
l/hal-info: added hal-info package (device information).
l/hal: added hardware abstraction layer.
l/libkarma: added libkarma - used by amarok.
l/lzo: added lzo library.
l/mcs: added mcs library.
l/poppler: added poppler library.
l/poppler-data: added poppler data.
l/svgalib_helper: this package contains the kernel helper module(s) needed by
  the svgalib package.
l/vte: added vte library used by Xfce's Terminal program.
kde/k3b: added (moved from /extra).
kde/knemo: added knemo package.
n/biff+comsat: split from old n/tcpip package.
n/bluez-firmware: added bluez-firmware.
n/bluez-hcidump: added bluez-hcidump.
n/bluez-libs: added bluez-libs.
n/bluez-utils: added bluez-utils.
n/bridge-utils: split from old n/tcpip package.
n/bsd-finger: split from old n/tcpip package.
n/dirmngr: added dirmngr.
n/ethtool: split from old n/tcpip package.
n/gnupg2: added GnuPG 2 - this is *not* a replacement for gnupg-1.4.x.
n/gnutls: added GNU TLS library.
n/gpa: added gpa.
n/gpgme: added gpgme.
n/httpd: this replaces the apache package.
n/icmpinfo: split from old n/tcpip package.
n/iputils: split from old n/tcpip package.
n/libassuan: added libassuan.
n/libgcrypt: added libgcrypt.
n/libgpg-error: added libgpg-error.
n/libksba: added libksba.
n/mcabber: added mcabber package.
n/mtr: added mtr.
n/net-snmp: added net-snmp.
n/net-tools: split from old n/tcpip package.
n/netdate: split from old n/tcpip package.
n/netkit-*: split from old n/tcpip package.
n/network-scripts: split from old n/tcpip package.
n/netwrite: split from old n/tcpip package.
n/obexftp: added obexftp.
n/openobex: added openobex.
n/openvpn: added OpenVPN.
n/pinentry: added pinentry.
n/pssh: added pssh.
n/pth: added pth.
n/tcp_wrappers: split from old n/tcpip package.
n/telnet: split from old n/tcpip package.
n/tftp-hpa: split from old n/tcpip package.
n/vlan: split from old n/tcpip package.
x/*: except for fontconfig, all packages here are new.
  They replace the old x11-* with the X.org modular release.
xap/audacious: added Audacious media player (similar to xmms).
xap/audacious-plugins: added plugins for audacious.
xap/gqview: added GQView image browser.
xap/pidgin: added (replaced old gaim package).



*** PACKAGE REMOVALS SINCE 11.0 ***

a/hotplug: removed since this is for 2.4.x kernels.
a/pcmcia-cs: removed since this is for 2.4.x kernels.
a/umsdos-progs: removed since 2.6.x kernels do not support this filesystem.
ap/gnu-gs-fonts: removed (replaced by the ghostscript-fonts-std package).
ap/hpijs: removed (replaced by hplip).
ap/lvm: moved to /pasture (replaced by a/lvm2).
ap/raidtools: moved to /pasture (use mdadm).
d/byacc: removed since pretty much everything uses bison now.
d/gcc-g77: this package was replaced by the gcc-gfortran package.
d/pkgconfig: removed - renamed to d/pkg-config.
l/alsa-driver: removed since the 2.6.x kernels include the alsa modules.
l/gdk-pixbuf: removed; no Slackware packages link to this old library.
l/glut: removed since MesaGLUT is now included with the Mesa package.
l/gnet: removed; was needed by Pan newsreader, but no Slackware packages
  link to this any more.
l/libmikmod: removed since xmms was the only thing using this.
l/mpeg_lib:removed.
n/apache: this was replaced by the new httpd package.
n/mod_ssl: removed; this is now built into httpd.
n/tcpip: removed - split into lots of small packages.
x/x11-*: removed old x/x11-* packages - replaced by new modular x11.
xap/gaim: removed (replaced by xap/pidgin).
xap/xfm: moved to /pasture - it was recompiled, so it should still work on
  12.0, but there are better file manager choices now...
xap/xmms: removed; have a look at audacious instead.
11.0/patches/mozilla-nss: removed; Pidgin now uses gnutls for ssl, so this
  is not needed any more.



*** OTHER NOTABLE CHANGES AND HINTS ***

a/aaa_base: rebuilt.  As noted above, the old contents of /usr/X11R6 will 
  be backed up to /usr/X11R6.bak.  This package needs to be upgraded 
  *before* any of the new X/ series packages are installed.
a/bin: Most of the utilities were split from this package (see the Additions
  section above).
{a,l}/glibc-*: upgraded to version 2.5 - be sure to do this upgrade in 
  runlevel 1 (according to the instructions in this file).  Also note 
  that you MUST be running a 2.6 kernel before performing this upgrade!
a/mdadm: moved from AP series.
a/mt-st: moved from AP series.
a/pkgtools: upgraded to remove several stale bits.
a/quota: moved from AP series.
ap/hplip: now depends on n/net-snmp (and some other things probably will too).
l/qca: moved from KDE series.
l/qca-tls: moved from KDE series.
l/qt: moved from KDE series.
l/svgalib_helper: if you build a custom kernel and need to use the helper 
  module for svgalib, you will need to rebuild this package to create the
  needed module for your custom kernel.
n/tcpip: this package was split up and removed (see Additions above).
kde/amarok: this is now linked with libkarma, but you'll need to get the 
  omfs kernel module for it to work.
kde/kdegraphics: this package requires the l/poppler package.
kde/koffice: this package requires the l/poppler package.
kde/*: KDE is now built with --prefix=/usr instead of /opt/kde, so it's now
  much easier to follow the freedesktop.org standards for unifying all of the
  various Linux desktop environments.
x/xaw3d: moved from L series.
xap/rdesktop: moved from N series.
extra/xf86-video-ati-6.6.3: Added an alternate ati driver for xorg due to some
  reports of the 6.6.192 driver not working on some hardware.  If the 6.6.192 
  driver does not work for you, try this one.
extra/intel-wlan-ipw3945:  Added kernel module sources, microcode, and the
  regulatory daemon for the ipw3945 chipset.  See the documentation in that
  directory for instructions.  Note that the "*.tgz" packages in there are
  NOT Slackware packages - they are simply gzipped tar archives on which
  Intel decided to put ".tgz" extensions.
extra/xcdroast: this package has been moved to unsupported (but it was 
  recompiled for this release).  http://slackware.osuosl.org/unsupported/