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/