<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>SlackWiki - User contributions [en]</title>
		<link>https://www.slackwiki.com/Special:Contributions/Merge-delete</link>
		<description>User contributions</description>
		<language>en</language>
		<generator>MediaWiki 1.40.0</generator>
		<lastBuildDate>Thu, 09 Apr 2026 18:30:25 GMT</lastBuildDate>
		<item>
			<title>NVIDIA-Prompted-Kernel-Compile</title>
			<link>https://www.slackwiki.com/index.php?title=NVIDIA-Prompted-Kernel-Compile&amp;diff=562</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=NVIDIA-Prompted-Kernel-Compile&amp;diff=562</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
&lt;br /&gt;
=== nVidia Graphics Driver Installation &amp;amp; Kernel Recompile in Slackware 12.0  ===&lt;br /&gt;
&lt;br /&gt;
====Warning!====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
:Please do all this at your own risk.  If you change your kernel and c&lt;br /&gt;
ause any damage to your system, you and only you are responsible for it.  By providing this tutorial I do not take any responsibility for any damages or losses to your system.  This is a disclaimer!&lt;br /&gt;
&lt;br /&gt;
==== Background Info &amp;amp; Rationale for Kernel Recompile ====&lt;br /&gt;
----&lt;br /&gt;
:I recently bought a used ''Geforce N6200'' video card (nvidia chipset) to replace the ''ATI Radeon 9200SE'' that suddenly died on me.  I ran Xorg configuration utility ''xorgconfig'' to set the new card up.  Slackware 12.0 ships with a generic ''nv'' driver for nvidia cards, but it does not support graphics acceleration and/or direct rendering.  That means no games and no graphic heavy websites.  Fortunately, nvidia provides a Linux binary driver for your video card that will do direct rendering and 3D acceleration just fine, although the driver is closed-source.  But hey, at least it works.&lt;br /&gt;
&lt;br /&gt;
:Assuming that you're running Slackware 12.0 and using huge generic kernel 2.6.21.5 or newer or the smp version of it, you are going to face some problems compiling the nvidia driver against that kernel.  The nvidia installer utility compiles the binary driver to suit your kernel.  In Slackware 12.0 the support for Riva framebuffer is enabled by default in the huge-2.6.21.5 and huge-2.6.21.5-smp kernels and it is a problem for the nvidia installer utility.  As soon as it notes the riva support enabled in the kernel header files, it quits and the driver module compilation fails.  Most people will experience this problem in Slackware 12.0.  The solution is to disable riva framebuffer support from the kernel and recompile it.&lt;br /&gt;
&lt;br /&gt;
:At the end of this tutorial you will have a fresh kernel compiled for your system, the nvidia driver compiled against this kernel and installed as kernel module and 3D graphics acceleration as well as direct rendering enabled.  So let's begin taking one thing at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Back Up Current Kernel &amp;amp; Kernel Modules ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
:It is important that you have a backup of your currently working kernel modules so if the new kernel fails, you would still be able to use the old kernel to boot the system.  Let's play safe.  Important: All steps in this tutorials are done as superuser.&lt;br /&gt;
&lt;br /&gt;
 cd /lib/modules&lt;br /&gt;
 ls&lt;br /&gt;
 2.6.21.5  2.6.21.5-smp&lt;br /&gt;
&lt;br /&gt;
:Above currently installed kernels on your system are listed.  Rename the kernel you're using to something like ''kernel-name''.backup.  If you do not know which kernel you're using, do the following.  The output of it should list the kernel you're using.  Once you find it out, rename it as follows.&lt;br /&gt;
&lt;br /&gt;
 uname -a&lt;br /&gt;
 Linux 2.6.21.5 #1 Sun Mar 16 14:46:57 CDT 2008 i686 AMD Athlon(tm) AuthenticAMD GNU/Linux&lt;br /&gt;
&lt;br /&gt;
 mv 2.6.21.5 2.6.21.5-backup&lt;br /&gt;
 ls&lt;br /&gt;
 2.6.21.5-smp 2.6.21.5-backup&lt;br /&gt;
&lt;br /&gt;
==== Kernel Configuration and Recompile ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
:Now that we have a backup of our current kernel and its modules, its time to proceed with configuration and recompiling the kernel.  Change to the kernel source directory and copy the current kernel config file to the kernel source directory&lt;br /&gt;
&lt;br /&gt;
 cd /usr/src/linux&lt;br /&gt;
 cp /boot/config .config  #Note that config in /boot has no dot before it, but when we copy it, we include a dot prefix.&lt;br /&gt;
&lt;br /&gt;
This step will copy your current configuration so we can use it as a reference for further steps.  Now let's begin kernel configuration&lt;br /&gt;
&lt;br /&gt;
 make menuconfig&lt;br /&gt;
&lt;br /&gt;
This should give you a nice ''ncurses'' style detailed graphical menu of kernel configuration. &lt;br /&gt;
&lt;br /&gt;
 Select Device Drivers &amp;gt; Graphics Support &amp;gt; &lt;br /&gt;
&lt;br /&gt;
:Scroll down to ''Riva Framebuffer Support'' (not ''nvidia Riva Support'') and press space bar twice.  First space bar press will change the &amp;lt;M&amp;gt; to &amp;lt;*&amp;gt; and second will change &amp;lt;*&amp;gt; to &amp;lt; &amp;gt; (blank).  Now press ''exit'' three times.  The menuconfig will ask you if you want to save the changes.  Select ''Yes'' and quit.  We have now removed Riva Framebuffer Support from kernel configuration, the culprit for failing nvidia driver module compilation.&lt;br /&gt;
&lt;br /&gt;
:It's time to compile the kernel.  Do the following:&lt;br /&gt;
 &lt;br /&gt;
 make bzImage&lt;br /&gt;
&lt;br /&gt;
:This is a good time to take a break for any of these:  Coffee / Tea / Cigarette / Quick run to the grocery store.  In short, depending upon how fast your procesor is, this step will take anywhere between 15 minutes to an hour.  If everything goes fine, it will compile a new kernel and install newly compiled modules in /lib/modules/.  If you get errors, something went wrong and you'll need to get some help from kernel documentation or ask in ##slackware on IRC host ''freenode.net''&lt;br /&gt;
&lt;br /&gt;
:Now that we have a kernel compiled, its time to compile and install kernel modules&lt;br /&gt;
&lt;br /&gt;
 make modules &amp;amp;&amp;amp; make modules_install&lt;br /&gt;
&lt;br /&gt;
:Again, this step will take some time.  But it will be worth the wait.  In the basic kernel, there is close to 1000 modules that need to be compiled.  Once this step is finished and you did not get any errors, its time to make sure the kernel bzImage was created and the modules were installed to the appropriate location.&lt;br /&gt;
&lt;br /&gt;
 pwd&lt;br /&gt;
 /usr/src/linux&lt;br /&gt;
 cd arch/i386/boot&lt;br /&gt;
 pwd&lt;br /&gt;
 /usr/src/linux/arch/i386/boot&lt;br /&gt;
 ls&lt;br /&gt;
 Makefile  bootsect.S  '''bzImage'''     edd.S  mtools.conf.in  setup.S  tools    vmlinux.bin&lt;br /&gt;
 bootsect  bootsect.o  compressed  install.sh  setup  setup.o  video.S&lt;br /&gt;
&lt;br /&gt;
:bzImage is your newly compiled kernel without Riva framebuffer support.&lt;br /&gt;
&lt;br /&gt;
 cd /lib/modules&lt;br /&gt;
 ls&lt;br /&gt;
 2.6.21.5  2.6.21.5-smp  2.6.21.5-backup&lt;br /&gt;
&lt;br /&gt;
The first entry above is the location of your newly installed kernel modules.&lt;br /&gt;
&lt;br /&gt;
==== Install New Kernel And Update lilo.conf ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
:Time to install the new kernel and notify your boot loader of its existence.&lt;br /&gt;
&lt;br /&gt;
 cd /usr/src/linux/arch/i386/boot&lt;br /&gt;
 cp bzImage /boot&lt;br /&gt;
 &lt;br /&gt;
:Open your favorite text editor and add following lines to your boot loader (typically /etc/lilo.conf)&lt;br /&gt;
&lt;br /&gt;
 cd /etc&lt;br /&gt;
 emacs -nw lilo.conf&lt;br /&gt;
&lt;br /&gt;
 #Linux bootable partition config begins&lt;br /&gt;
  image = /boot/bzImage&lt;br /&gt;
  root = /dev/hda2 #or whatever partition your / is located on &lt;br /&gt;
  label = New-Kernel #You can name it whatever you want. Just don't name it the same as the old kernel&lt;br /&gt;
 #Linux bootable partition config ends&lt;br /&gt;
&lt;br /&gt;
:Save file, close it and run lilo so the new changes take effect.&lt;br /&gt;
&lt;br /&gt;
 lilo&lt;br /&gt;
 Added *Linux&lt;br /&gt;
 Added *New-Kernel&lt;br /&gt;
&lt;br /&gt;
:Excellent!  It's time to test the new kernel.  When you reboot, lilo will now present you with two choices for kernel, use the New-Kernel and boot.  If somehow it fails, you can always go back to the old kernel.  Just rename the /lib/modules/2.6.21.5-backup as 2.6.21.5 and rename the new kernel modules as something else.  You see how important it was for us to backup the kernel as well as kernel modules in the beginning?&lt;br /&gt;
&lt;br /&gt;
:Assuming that your new kernel booted just fine and you had a fully functional system back up, its time to get the nVidia graphics driver from nvidia.com and install it.  The current incarnation of nVidia driver is version # 169.12.  Either use your favorite browser to download the driver from http://www.nvidia.com/Download/index.aspx?lang=en-us  or do the following:&lt;br /&gt;
&lt;br /&gt;
 cd /tmp&lt;br /&gt;
 wget http://us.download.nvidia.com/XFree86/Linux-x86/169.12/NVIDIA-Linux-x86-169.12-pkg1.run&lt;br /&gt;
&lt;br /&gt;
Make the installer utility executable and execute it&lt;br /&gt;
&lt;br /&gt;
 chmod 755 NVIDIA-Linux-x86-169.12-pkg1.run&lt;br /&gt;
 ls -la&lt;br /&gt;
 -rwxr-xr-x  1 user groupname 17636559 2008-03-17 13:06 NVIDIA-Linux-x86-169.12-pkg1.run&lt;br /&gt;
&lt;br /&gt;
Before we execute it, we need to exit the X server.  &lt;br /&gt;
&lt;br /&gt;
 telinit 3    #This changes runlevel to 3, shuts down the X server and drops you off at the terminal &lt;br /&gt;
 sh ./NVIDIA-Linux-x86-169.12-pkg1.run&lt;br /&gt;
&lt;br /&gt;
:This installer utility first tries to find a pre-compiled driver for your kernel which it would not find, then it tries to download it via ftp from nvidia servers which fails too, and finally it proceeds to compile the driver kernel module against your newly installed bzImage kernel.  This time, there is no riva framebuffer in the kernel header files and so this step should not fail.  Should it fail, ask for help in your local LUG or the highly knowledgeable folks at ##slackware in irc channel freenode.net&lt;br /&gt;
&lt;br /&gt;
==== Updating X.Org Configuration File ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
:After the installer utility finishes compiling and installing kernel module for the nvidia driver, it will ask you if you want it to make appropriate changes to your /etc/X11/xorg.conf.  I personally chose not to, because I did not want my already customized xorg.conf to be messed with by a third party software.  I simply changed the driver name from '''nv''' to '''nvidia''' in the &amp;lt;device&amp;gt; section of /etc/X11/xorg.conf&lt;br /&gt;
&lt;br /&gt;
:That's it folks.  You now have a new kernel, new kernel modules and nvidia driver with 3D acceleration and direct rendering.  Check direct rendering as follows:&lt;br /&gt;
&lt;br /&gt;
 glxinfo | grep dri&lt;br /&gt;
&lt;br /&gt;
:Third line of the output should tell you that Direct Rendering has been enabled.  Now its time to fire up X server and check your new driver.&lt;br /&gt;
&lt;br /&gt;
 telinit 4&lt;br /&gt;
&lt;br /&gt;
:This should launch X server, you should be seeing a flash of nvidia screen and then back to your favorite window manager.  If everything went fine, you should go ahead and check video performance with some game, or a graphics intensive website or such.&lt;br /&gt;
&lt;br /&gt;
==== Acknowledgements ====&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
:This article benefited substantially by input from ##slackware (irc.freenode.net) user  '''InspectorCluseau'''&lt;br /&gt;
&lt;br /&gt;
:If you have any questions or if you find a mistake in this tutorial, please contact me at [mailto:crypticlineage@gmail.com]&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:35:06 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:NVIDIA-Prompted-Kernel-Compile</comments>
		</item>
		<item>
			<title>Kernel-packaging</title>
			<link>https://www.slackwiki.com/index.php?title=Kernel-packaging&amp;diff=561</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Kernel-packaging&amp;diff=561</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Creating a Custom Package of Kernel and Modules =&lt;br /&gt;
&lt;br /&gt;
*Note: This tutorial assumes that you know how to compile a kernel already. It only looks at a way of creating a package and doesn't aim to show kernel config options.&lt;br /&gt;
&lt;br /&gt;
For info on compiling pleae look at these pages:&lt;br /&gt;
&lt;br /&gt;
[http://slackwiki.org/Kernel_Compilation Kernel_Compilation]&lt;br /&gt;
&lt;br /&gt;
[http://slackwiki.org/Kernel26Compilation Kernel26Compilation]&lt;br /&gt;
&lt;br /&gt;
[http://slackwiki.org/Kernel_Checklist Kernel_Checklist]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kernel Output Target Option ==&lt;br /&gt;
&lt;br /&gt;
The usual way to make any sort of package is via the '''$DESTDIR''' variable. The kernel doesn't use this however, but it does have an '''O''' switch which does almost the same thing, although the output might not be exactly what you expect. I will not be using that option here, but see the discussion page about that.&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy your .config into the source directory and do &lt;br /&gt;
   &lt;br /&gt;
   make menuconfig&lt;br /&gt;
&lt;br /&gt;
(or whichever method you prefer.)&lt;br /&gt;
&lt;br /&gt;
You '''may''' need to do 'make mrproper' first, and perhaps 'make oldconfig'.&lt;br /&gt;
&lt;br /&gt;
   make&lt;br /&gt;
&lt;br /&gt;
*Note: Do not use 'make install' or 'make modules_install', even with '''O''' switch, as this *will* install to /boot and /lib/modules.&lt;br /&gt;
&lt;br /&gt;
At this point everything we need is in the source directory. The file '''modules.order''' lists the modules to be installed and that we can use to help us make a package.&lt;br /&gt;
&lt;br /&gt;
== Installing Modules and Kernel to our Package Directory ==&lt;br /&gt;
&lt;br /&gt;
Ok let's use '''/tmp/kernel-package''' for our package directory. Also let's assume a '''2.6.29.6''' kernel with '''jabberwok''' as local name. A little bash will copy our modules to it:&lt;br /&gt;
   &lt;br /&gt;
   for i in $(sed &amp;quot;s#^kernel/##&amp;quot; modules.order)&lt;br /&gt;
   do&lt;br /&gt;
     mkdir -p /tmp/kernel-package/lib/modules/2.6.29.6-jabberwok/$(dirname $i)&lt;br /&gt;
     install -m 644 -v $i /tmp/kernel-package/lib/modules/2.6.29.6-jabberwok/$(dirname $i)&lt;br /&gt;
   done&lt;br /&gt;
&lt;br /&gt;
Now we need the kernel and associated files.&lt;br /&gt;
&lt;br /&gt;
   mkdir /tmp/kernel-package/boot&lt;br /&gt;
   cp arch/x86/boot/bzImage /tmp/kernel-package/boot/vmlinuz-2.6.29.6-jabberwok&lt;br /&gt;
   cp System.map /tmp/kernel-package/boot/System.map-2.6.29.6-jabberwok&lt;br /&gt;
   cp .config /tmp/kernel-package/boot/config-2.6.29.6-jabberwok&lt;br /&gt;
&lt;br /&gt;
And then the doinst.sh and slack-desc.&lt;br /&gt;
&lt;br /&gt;
   mkdir /tmp/kernel-package/install&lt;br /&gt;
&lt;br /&gt;
doinst.sh:&lt;br /&gt;
&lt;br /&gt;
   ## Taken from stock modules package&lt;br /&gt;
   if [ -x sbin/depmod ]; then&lt;br /&gt;
   chroot . /sbin/depmod -a 2.6.29.6-jabberwok &amp;gt; /dev/null 2&amp;gt; /dev/null&lt;br /&gt;
   fi&lt;br /&gt;
   &lt;br /&gt;
   ( cd lib/modules/2.6.29.6-jabberwok ; rm -rf build )&lt;br /&gt;
   ( cd lib/modules/2.6.29.6-jabberwok ; ln -sf /usr/src/linux-2.6.29.6-jabberwok build )&lt;br /&gt;
   ( cd lib/modules/2.6.29.6-jabberwok ; rm -rf source )&lt;br /&gt;
   ( cd lib/modules/2.6.29.6-jabberwok ; ln -sf /usr/src/linux-2.6.29.6-jabberwok source )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I'll leave you to figure out the slack-desc. It should be copied into the install/ directory and appname ought to be (going by this example) '''kernel-jabberwok'''.&lt;br /&gt;
&lt;br /&gt;
== Making the Package ==&lt;br /&gt;
&lt;br /&gt;
   cd /tmp/kernel-package&lt;br /&gt;
   /sbin/makepkg -l y -c n /tmp/kernel-jabberwok-2.6.29.6-i686-1_tag.txz&lt;br /&gt;
&lt;br /&gt;
Change '_tag' to your usual moniker. Hopefully we now have a package in /tmp. Copy it to a temporary directory somewhere, '''explodepkg''' it and check the contents. We don't want to install something with messed up paths etc. If all is well we can installpkg it.&lt;br /&gt;
&lt;br /&gt;
As usual, edit your /etc/lilo.conf and add an option for the new kernel, keeping the old kernel entry in place for safety, then run lilo.&lt;br /&gt;
&lt;br /&gt;
== A Little Automation ==&lt;br /&gt;
&lt;br /&gt;
Of course this would be easier to control with a script rather than typing in these commands manually and trying not to make typos. Here is the script that I've been using (run make menuconfig first):&lt;br /&gt;
&lt;br /&gt;
    #!/bin/sh&lt;br /&gt;
    # Slackware build script for kernel and modules&lt;br /&gt;
    #&lt;br /&gt;
    # Copyright 2009-2010  David Woodfall &amp;lt;dave@dawoodfall.net&amp;gt;&lt;br /&gt;
    # All rights reserved.&lt;br /&gt;
    #&lt;br /&gt;
    # Redistribution and use of this script, with or without modification, is&lt;br /&gt;
    # permitted provided that the following conditions are met:&lt;br /&gt;
    #&lt;br /&gt;
    # 1. Redistributions of this script must retain the above copyright&lt;br /&gt;
    #    notice, this list of conditions and the following disclaimer.&lt;br /&gt;
    #&lt;br /&gt;
    # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED&lt;br /&gt;
    # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF&lt;br /&gt;
    # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO&lt;br /&gt;
    # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&lt;br /&gt;
    # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
    # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;&lt;br /&gt;
    # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,&lt;br /&gt;
    # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR&lt;br /&gt;
    # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF&lt;br /&gt;
    # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
    # &lt;br /&gt;
    # Notes: &lt;br /&gt;
    # You should have a /usr/src/linux-$VERSION-$LOCALNAME of source or you will &lt;br /&gt;
    # have problems.&lt;br /&gt;
    # Do not omit setting localname in .config.&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    source ./.config&lt;br /&gt;
    LOCALNAME=${LOCALNAME:-${CONFIG_LOCALVERSION/-/}}&lt;br /&gt;
    if [ -z &amp;quot;$ARCH&amp;quot; ]; then&lt;br /&gt;
      case &amp;quot;$( uname -m )&amp;quot; in&lt;br /&gt;
        i?86) ARCH=i486 ;;                      &lt;br /&gt;
        arm*) ARCH=arm ;;                       &lt;br /&gt;
           *) ARCH=$( uname -m ) ;;&lt;br /&gt;
      esac&lt;br /&gt;
    fi&lt;br /&gt;
    KARCH=$ARCH&lt;br /&gt;
    ARCH=x86&lt;br /&gt;
    MODULELIST=modules.order&lt;br /&gt;
    PRGNAM=kernel&lt;br /&gt;
    VERSION=${VERSION:-2.6.29.6}&lt;br /&gt;
    BUILD=${BUILD:-1}&lt;br /&gt;
    TAG=${TAG:-_daw}&lt;br /&gt;
    OUTPUT=${TMP:-/tmp}&lt;br /&gt;
    PKG=$OUTPUT/$PRGNAM-$LOCALNAME-$VERSION&lt;br /&gt;
    MODDIR=$PKG/lib/modules/$VERSION-$LOCALNAME&lt;br /&gt;
    &lt;br /&gt;
    set -e&lt;br /&gt;
    &lt;br /&gt;
    rm -rf $PKG &lt;br /&gt;
    &lt;br /&gt;
    make&lt;br /&gt;
    &lt;br /&gt;
    for i in $(sed &amp;quot;s#^kernel/##&amp;quot; $MODULELIST)&lt;br /&gt;
    do&lt;br /&gt;
        mkdir -p $MODDIR/$(dirname $i)&lt;br /&gt;
        install -m 644 -v $i $MODDIR/$(dirname $i)&lt;br /&gt;
        let nummods=$nummods+1&lt;br /&gt;
    done&lt;br /&gt;
    &lt;br /&gt;
    mkdir -p $PKG/install&lt;br /&gt;
    &lt;br /&gt;
    cat &amp;lt;&amp;lt; EOF &amp;gt; $PKG/install/doinst.sh&lt;br /&gt;
    ## Taken from stock modules package&lt;br /&gt;
    if [ -x sbin/depmod ]; then&lt;br /&gt;
    chroot . /sbin/depmod -a $VERSION-$LOCALNAME &amp;gt; /dev/null 2&amp;gt; /dev/null&lt;br /&gt;
    fi&lt;br /&gt;
    &lt;br /&gt;
    ( cd lib/modules/$VERSION-$LOCALNAME ; rm -rf build )&lt;br /&gt;
    ( cd lib/modules/$VERSION-$LOCALNAME ; ln -sf /usr/src/linux-$VERSION-$LOCALNAME build )&lt;br /&gt;
    ( cd lib/modules/$VERSION-$LOCALNAME ; rm -rf source )&lt;br /&gt;
    ( cd lib/modules/$VERSION-$LOCALNAME ; ln -sf /usr/src/linux-$VERSION-$LOCALNAME source )&lt;br /&gt;
    EOF&lt;br /&gt;
    &lt;br /&gt;
    cat &amp;lt;&amp;lt; EOF &amp;gt; $PKG/install/slack-desc&lt;br /&gt;
    # HOW TO EDIT THIS FILE:&lt;br /&gt;
    # The &amp;quot;handy ruler&amp;quot; below makes it easier to edit a package description.  Line&lt;br /&gt;
    # up the first '|' above the ':' following the base package name, and the '|'&lt;br /&gt;
    # on the right side marks the last column you can put a character in.  You must&lt;br /&gt;
    # make exactly 11 lines for the formatting to be correct.  It's also&lt;br /&gt;
    # customary to leave one space after the ':'.&lt;br /&gt;
    &lt;br /&gt;
    $PRGNAM-$LOCALNAME|-----handy-ruler------------------------------------------------------|&lt;br /&gt;
    $PRGNAM-$LOCALNAME: kernel and modules for $LOCALNAME-$VERSION&lt;br /&gt;
    $PRGNAM-$LOCALNAME:&lt;br /&gt;
    $PRGNAM-$LOCALNAME: Jabberwokky type kernel!&lt;br /&gt;
    $PRGNAM-$LOCALNAME:&lt;br /&gt;
    $PRGNAM-$LOCALNAME:&lt;br /&gt;
    $PRGNAM-$LOCALNAME:&lt;br /&gt;
    $PRGNAM-$LOCALNAME:&lt;br /&gt;
    $PRGNAM-$LOCALNAME:&lt;br /&gt;
    $PRGNAM-$LOCALNAME:&lt;br /&gt;
    $PRGNAM-$LOCALNAME:&lt;br /&gt;
    $PRGNAM-$LOCALNAME:&lt;br /&gt;
    EOF&lt;br /&gt;
    &lt;br /&gt;
    mkdir -p $PKG/boot&lt;br /&gt;
    &lt;br /&gt;
    cp arch/x86/boot/bzImage $PKG/boot/vmlinuz-$VERSION-$LOCALNAME&lt;br /&gt;
    cp System.map $PKG/boot/System.map-$VERSION-$LOCALNAME&lt;br /&gt;
    cp .config $PKG/boot/config-$VERSION-$LOCALNAME&lt;br /&gt;
    &lt;br /&gt;
    ksize=$(ls -l arch/x86/boot/bzImage | awk '{print $5}')&lt;br /&gt;
    &lt;br /&gt;
    cd $PKG&lt;br /&gt;
    &lt;br /&gt;
    PACKAGE=$OUTPUT/$PRGNAM-$LOCALNAME-$VERSION-$KARCH-$BUILD-$TAG.${PKGTYPE:-tgz}&lt;br /&gt;
    &lt;br /&gt;
    /sbin/makepkg -l y -c n $PACKAGE&lt;br /&gt;
    &lt;br /&gt;
    echo -ne '\e[01;34m'&lt;br /&gt;
    printf &amp;quot;$nummods Modules Built\n&amp;quot;&lt;br /&gt;
    printf &amp;quot;Kernel Size: $ksize\n&amp;quot;&lt;br /&gt;
    printf &amp;quot;Package Size: $(ls -l $PACKAGE | awk '{print $5}')\n\n&amp;quot;&lt;br /&gt;
    echo -ne '\e[m\017'&lt;br /&gt;
&lt;br /&gt;
Downloadable version: http://www.dawoodfall.net/slackbuilds/noversion/kernel/&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
The aim for doing this was to be able to build a kernel for my old T42 on my desktop box using the T42's .config. It could be possible to split up kernel and modules into separate packages but I'll let you figure out the details.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, this helped me to compile a kernel without my laptop getting even warm, which was the point of the project.&lt;br /&gt;
&lt;br /&gt;
--[[User:Dive|Dive]] 04:31, 11 March 2010 (UTC)&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:34:52 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Kernel-packaging</comments>
		</item>
		<item>
			<title>Apache-cgi</title>
			<link>https://www.slackwiki.com/index.php?title=Apache-cgi&amp;diff=560</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Apache-cgi&amp;diff=560</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tips]]&lt;br /&gt;
&lt;br /&gt;
==To enable a cgi directory for each user==&lt;br /&gt;
In order to give each user their own cgi-bin directory, edit the:&lt;br /&gt;
&lt;br /&gt;
:Apache1 (Slackware pre-12.0): &amp;lt;code&amp;gt;/etc/httpd/httpd.conf&amp;lt;/code&amp;gt; file&amp;lt;br&amp;gt;&lt;br /&gt;
:Apache2 (Slackware 12.0+): &amp;lt;code&amp;gt;/etc/httpd/extra/httpd-users.conf&amp;lt;/code&amp;gt; file&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::...and add:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;Directory /home/*/public_html/cgi-bin/&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Options ExecCGI&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;SetHandler cgi-script&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;/Directory&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, presuming that UserDir is set to public_html, a cgi program example.cgi could be loaded from that directory as:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt;http&amp;amp;#58;//example.com/~rbowen/cgi-bin/example.cgi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==To enable a cgi directory for each virtual host==&lt;br /&gt;
&lt;br /&gt;
In the Virtual Host section of your apache config file (&amp;lt;code&amp;gt;/etc/apache/httpd.conf&amp;lt;/code&amp;gt;) add the &amp;lt;code&amp;gt;ScriptAlias&amp;lt;/code&amp;gt; line below.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;VirtualHost *:80&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:::&amp;lt;code&amp;gt;ServerName www.''MyDomain''.org&amp;lt;/code&amp;gt;&lt;br /&gt;
:::&amp;lt;code&amp;gt;DocumentRoot /home/''MyDomain''/public_html&amp;lt;/code&amp;gt;&lt;br /&gt;
:::&amp;lt;code&amp;gt;ErrorLog /var/log/''MyDomain''/error.log&amp;lt;/code&amp;gt;&lt;br /&gt;
:::&amp;lt;code&amp;gt;&amp;lt;b&amp;gt;ScriptAlias /cgi-bin/ &amp;quot;/home/''MyDomain''/public_html/cgi-bin/&amp;quot;&amp;lt;/b&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;/VirtualHost&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:34:48 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Apache-cgi</comments>
		</item>
		<item>
			<title>Log Correlation</title>
			<link>https://www.slackwiki.com/index.php?title=Log_Correlation&amp;diff=559</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Log_Correlation&amp;diff=559</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
&lt;br /&gt;
'''Log Correlation'''&lt;br /&gt;
I thought I'd talk about the importance of log correlation. For instance, you've found that someone is continually pinging your server. You want to see if your box is responding to the pings. Usually, you'll know right off, since most people know if their firewall was configured to block pings...I'm just using pings as a quick example, though. Log correlation usually consists of checking, for instance, web server logs against firewall logs, or Snort logs against firewall and web server logs. This helps you understand what suspicious activity is actually doing and if your server/workstation responded (and how it responded, if it did).&lt;br /&gt;
&lt;br /&gt;
I run Snort on a server, along with a web server, which is firewalled with IPTables. I have Snort report what it sees to a MySQL database, although it does record captures to a PCAP file locally. I also run Modsecurity, an application firewall that is designed to sniff and possibly block traffic going to/from web servers, mainly Apache. So, I've a ton of logs that I can correlate: Snort, Apache, IPTables, and Modsecurity logs.&lt;br /&gt;
&lt;br /&gt;
We'll pick something easy. In fact, I'll fabricate some logs by generating some false alerts. I'll use 'wget', to visit my website. Keep in mind that what you see below gives you the advantage...you know what you're doing and looking for when we soon check the logs. This won't be the case when some stranger or worm hits your firewall or web server (or any other application server).&lt;br /&gt;
&lt;br /&gt;
    -bash-2.05b$ wget wigglit.ath.cx/root.exe&lt;br /&gt;
    --23:24:05-- http://wigglit.ath.cx/root.exe&lt;br /&gt;
    =&amp;gt; `root.exe'&lt;br /&gt;
    Resolving wigglit.ath.cx... 66.160.141.30&lt;br /&gt;
    Connecting to wigglit.ath.cx|66.160.141.30|:80... connected.&lt;br /&gt;
    HTTP request sent, awaiting response... 404 Not Found&lt;br /&gt;
    23:24:06 ERROR 404: Not Found.&lt;br /&gt;
&lt;br /&gt;
    -bash-2.05b$ &lt;br /&gt;
&lt;br /&gt;
I used root.exe because there is an old vulnerability was was used to exploit flaws in IIS...the CodeRed worm of old. Now, let's check the web server's logs. I've tail'd my logs:&lt;br /&gt;
&lt;br /&gt;
    root@starchild:/var/log/apache# tail -f -n 100 access_log&lt;br /&gt;
    12.123.12.123 - - [15/Sep/2007:23:34:35 -0400] &amp;quot;GET /root.exe HTTP/1.0&amp;quot; 404 202&lt;br /&gt;
    12.123.12.123 - - [15/Sep/2007:23:34:35 -0400] &amp;quot;GET /root.exe HTTP/1.0&amp;quot; 404 202 &amp;quot;-&amp;quot; &amp;quot;Wget/1.10.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You see that the communcation was accepted.  A 404 code, which means 'page not found', was generated. This is usually a good indication, as the server didn't respond favorably to the attack.&lt;br /&gt;
&lt;br /&gt;
Now, let us check the firewall logs. We already know that the firewall allowed the traffic, since the web server responded with a 404...if the traffic was being blocked, there would be no record of the attack in the logs, because the firewall would have intercepted the traffic before it reached the web server. We're checking the firewall logs just to be sure this guy hasn't done anything else that the web server didn't see:&lt;br /&gt;
&lt;br /&gt;
    Sep 12 17:28:34 starchild kernel: Connection attempt (UNPRIV): IN=eth0 OUT= MAC=fe:fd:40:3e:e7:dc:00:0c:db:f5:90:00:08:00 SRC=12.123.12.123 DST=66.160.141.30 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=34557 DF PROTO=TCP SPT=46656 DPT=10083 WINDOW=5840 RES=0x00 SYN URGP=0&lt;br /&gt;
    Sep 12 17:28:44 starchild kernel: Connection attempt (PRIV): IN=eth0 OUT= MAC=fe:fd:40:3e:e7:dc:00:0c:db:f5:90:00:08:00 SRC=12.123.12.123 DST=66.160.141.30 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=18168 DF PROTO=TCP SPT=40091 DPT=449 WINDOW=5840 RES=0x00 SYN URGP=0&lt;br /&gt;
    Sep 12 17:28:44 starchild kernel: Connection attempt (UNPRIV): IN=eth0 OUT= MAC=fe:fd:40:3e:e7:dc:00:0c:db:f5:90:00:08:00 SRC=12.123.12.123 DST=66.160.141.30 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=27053 DF PROTO=TCP SPT=36295 DPT=5060 WINDOW=5840 RES=0x00 SYN URGP=0&lt;br /&gt;
    Sep 12 17:28:54 starchild kernel: Connection attempt (PRIV): IN=eth0 OUT= MAC=fe:fd:40:3e:e7:dc:00:0c:db:f5:90:00:08:00 SRC=12.123.12.123 DST=66.160.141.30 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=29291 DF PROTO=TCP SPT=47590 DPT=342 WINDOW=5840 RES=0x00 SYN URGP=0&lt;br /&gt;
    Sep 12 17:28:54 starchild kernel: Connection attempt (UNPRIV): IN=eth0 OUT= MAC=fe:fd:40:3e:e7:dc:00:0c:db:f5:90:00:08:00 SRC=12.123.12.123 DST=66.160.141.30 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=11788 DF PROTO=TCP SPT=43604 DPT=1519 WINDOW=5840 RES=0x00 SYN URGP=0&lt;br /&gt;
    Sep 12 17:29:04 starchild kernel: Connection attempt (PRIV): IN=eth0 OUT= MAC=fe:fd:40:3e:e7:dc:00:0c:db:f5:90:00:08:00 SRC=12.123.12.123 DST=66.160.141.30 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=17600 DF PROTO=TCP SPT=32783 DPT=577 WINDOW=5840 RES=0x00 SYN URGP=0&lt;br /&gt;
    Sep 12 17:29:04 starchild kernel: Connection attempt (UNPRIV): IN=eth0 OUT= MAC=fe:fd:40:3e:e7:dc:00:0c:db:f5:90:00:08:00 SRC=12.123.12.123 DST=66.160.141.30 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=51338 DF PROTO=TCP SPT=47879 DPT=18187 WINDOW=5840 RES=0x00 SYN URGP=0&lt;br /&gt;
    Sep 12 17:29:14 starchild kernel: Connection attempt (PRIV): IN=eth0 OUT= MAC=fe:fd:40:3e:e7:dc:00:0c:db:f5:90:00:08:00 SRC=12.123.12.123 DST=66.160.141.30 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=58520 DF PROTO=TCP SPT=41983 DPT=517 WINDOW=5840 RES=0x00 SYN URGP=0&lt;br /&gt;
    Sep 12 17:29:14 starchild kernel: Connection attempt (UNPRIV): IN=eth0 OUT= MAC=fe:fd:40:3e:e7:dc:00:0c:db:f5:90:00:08:00 SRC=12.123.12.123 DST=66.160.141.30 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=20255 DF PROTO=TCP SPT=53355 DPT=1986 WINDOW=5840 RES=0x00 SYN URGP=0&lt;br /&gt;
    Sep 12 17:29:24 starchild kernel: Connection attempt (PRIV): IN=eth0 OUT= MAC=fe:fd:40:3e:e7:dc:00:0c:db:f5:90:00:08:00 SRC=12.123.12.123 DST=66.160.141.30 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=28213 DF PROTO=TCP SPT=38543 DPT=978 WINDOW=5840 RES=0x00 SYN URGP=0&lt;br /&gt;
    Sep 12 17:29:24 starchild kernel: Connection attempt (UNPRIV): IN=eth0 OUT= MAC=fe:fd:40:3e:e7:dc:00:0c:db:f5:90:00:08:00 SRC=12.123.12.123 DST=66.160.141.30 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=10244 DF PROTO=TCP SPT=45624 DPT=11371 WINDOW=5840 RES=0x00 SYN URGP=0&lt;br /&gt;
    Sep 12 17:29:37 starchild kernel: ICMP-request: IN=eth0 OUT= MAC=fe:fd:40:3e:e7:dc:00:0c:db:f5:90:00:08:00 SRC=12.123.12.123 DST=66.160.141.30 LEN=28 TOS=0x00 PREC=0x00 TTL=42 ID=53002 PROTO=ICMP TYPE=8 CODE=0 ID=10683 SEQ=16615&lt;br /&gt;
    Sep 15 23:21:08 starchild kernel: ICMP-request: IN=eth0 OUT= MAC=fe:fd:40:3e:e7:dc:00:0c:db:f5:90:00:08:00 SRC=12.123.12.123 DST=66.160.141.30 LEN=84 TOS=0x00 PREC=0x00 TTL=55 ID=40988 PROTO=ICMP TYPE=8 CODE=0 ID=614 SEQ=0&lt;br /&gt;
&lt;br /&gt;
Quite a bit of stuff, huh? This looks to be a port scan! This is something that we didn't see in the Apache logs! Good thing we checked! Looks like this IP needs to be blocked with IPTables (which we won't do in this exercise).&lt;br /&gt;
&lt;br /&gt;
Sadly, nothing shows in the Modsecurity logs, but we've enough information already. What about Snort? Because I've PCAP files, the search becomes a bit more involved. I'll spare the intimate details, but this is what we see:&lt;br /&gt;
&lt;br /&gt;
    [**] [1:1256:9] WEB-IIS CodeRed v2 root.exe access [**]&lt;br /&gt;
    [Classification: Web Application Attack] [Priority: 1]&lt;br /&gt;
    09/15-23:34:35.708546 0:C:DB:F5:90:0 -&amp;gt; FE:FD:40:3E:E7:DC type:0x800 len:0xB0&lt;br /&gt;
    12.123.12.123:52753 -&amp;gt; 66.160.141.30:80 TCP TTL:56 TOS:0x0 ID:51589 IpLen:20 DgmLen:162 DF&lt;br /&gt;
    ***AP*** Seq: 0xAF32BB68 Ack: 0x3F319F7A Win: 0xFFFF TcpLen: 32&lt;br /&gt;
    TCP Options (3) =&amp;gt; NOP NOP TS: 288652007 1521931210&lt;br /&gt;
    [Xref =&amp;gt; http://www.cert.org/advisories/CA-2001-19.html]&lt;br /&gt;
&lt;br /&gt;
    23:34:35.708546 00:0c:db:f5:90:00 &amp;gt; fe:fd:40:3e:e7:dc, ethertype IPv4 (0x0800), length 176: IP (tos 0x0, ttl 56, id 51589, offset 0, flags [DF], length: 162) 12.123.12.123.52753 &amp;gt; 66.160.141.30.80: P [tcp sum ok] 2939337576:2939337686(110) ack 1060216698 win 65535&lt;br /&gt;
    0x0000: fefd 403e e7dc 000c dbf5 9000 0800 4500 ..@&amp;gt;..........E.&lt;br /&gt;
    0x0010: 00a2 c985 4000 3806 56c0 47b2 0aa0 42a0 ....@.8.V.G...B.&lt;br /&gt;
    0x0020: 8d1e ce11 0050 af32 bb68 3f31 9f7a 8018 .....P.2.h?1.z..&lt;br /&gt;
    0x0030: ffff e9c5 0000 0101 080a 1134 7ae7 5ab6 ...........4z.Z.&lt;br /&gt;
    0x0040: d3ca 4745 5420 2f72 6f6f 742e 6578 6520 ..GET./root.exe.&lt;br /&gt;
    0x0050: 4854 5450 2f31 2e30 0d0a 5573 6572 2d41 HTTP/1.0..User-A&lt;br /&gt;
    0x0060: 6765 6e74 3a20 5767 6574 2f31 2e31 302e gent:.Wget/1.10.&lt;br /&gt;
    0x0070: 320d 0a41 6363 6570 743a 202a 2f2a 0d0a 2..Accept:.*/*..&lt;br /&gt;
    0x0080: 486f 7374 3a20 7769 6767 6c69 742e 6174 Host:.wigglit.at&lt;br /&gt;
    0x0090: 682e 6378 0d0a 436f 6e6e 6563 7469 6f6e h.cx..Connection&lt;br /&gt;
    0x00a0: 3a20 4b65 6570 2d41 6c69 7665 0d0a 0d0a :.Keep-Alive....&lt;br /&gt;
&lt;br /&gt;
The first is the Snort alert file...this is a fast alert, with minimal detail (no packet capture). The second section is the full alert, including packet capture. It is also garbled (due to the hex code and the fact that this blog has issues with formatting) Note that my logs show no response. Apparently, my Snort install doesn't have a 404 signature. Again, the fact that we can correlate helps me when my Snort install lacks the data that I may have needed. I was able to look at the Apache logs to see the 404 when my Snort logs didn't show the return traffic.&lt;br /&gt;
&lt;br /&gt;
Well, this concludes our chat about correlating existing logs. Note that any log files can be correlated. Correlation can also assist in tracking down network issues or issues with, for instance, a faulty Snort install (ahem). Although this discussion focused more on security, hopefully this helps someone understand their network or software architecture also.&lt;br /&gt;
&lt;br /&gt;
This page is also linked at [http://slackfiles.blogspot.com/2007/09/log-correlation.html my blog]&lt;br /&gt;
&lt;br /&gt;
--[[User:Unixfool|Ron]] 00:35, 16 September 2007 (EDT)&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:34:43 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Log_Correlation</comments>
		</item>
		<item>
			<title>Mount Count</title>
			<link>https://www.slackwiki.com/index.php?title=Mount_Count&amp;diff=558</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Mount_Count&amp;diff=558</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Information]]&lt;br /&gt;
A count of how many times a filesystem has been mounted.  Used to determine whether a [[Forced Fuck]] should be executed.&lt;br /&gt;
&lt;br /&gt;
After a successful fsck (filesystem check), the mount count is reset to zero.  When the mount count reaches (or exceeds) the [[Maximum Mount Count]], a Forced Fsck is executed during boot.&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:33:27 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Mount_Count</comments>
		</item>
		<item>
			<title>Packages</title>
			<link>https://www.slackwiki.com/index.php?title=Packages&amp;diff=557</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Packages&amp;diff=557</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slackware's package management system utilizes .tgz/.txz tarballs as its standard package format. These tarballs are  tar.gz/tar.xz archives which contain Slackware built binaries, support files, a description file and installation script. Although they can be unzipped and untarred like a normal archive, they are (usually) binary-only packages intended to be installed through Slackware's provided package management tools.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Information about a package is stored in two ways, in the filename of the package and a description file inside that package.&lt;br /&gt;
&lt;br /&gt;
==Package Tools==&lt;br /&gt;
See the respective manual pages for more information on each of the following commands.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pkgtool&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;installpkg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;removepkg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;explodepkg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;makepkg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;upgradepkg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Slackware Package Layout==&lt;br /&gt;
A typical Slackware package is laid out as such:&lt;br /&gt;
 ./&lt;br /&gt;
 ./install/doinst.sh&lt;br /&gt;
 ./install/slack-desc&lt;br /&gt;
 [./usr/bin]&lt;br /&gt;
 [./usr/lib]&lt;br /&gt;
 [...]&lt;br /&gt;
&lt;br /&gt;
The install directory as well as the files within it will be deleted after the installation of the package to the root install directory (usually '/'). The install directory is not necessarily required for the most basic packages but allows additional functionality: [[slack-desc]] contains the package description, and [[doinst.sh]] contains post-installation instructions such as creating symbolic links.&lt;br /&gt;
&lt;br /&gt;
Every other file within the package is simply untarred (extracted) to the root directory. Most of these files are in standard locations. &lt;br /&gt;
&lt;br /&gt;
There are other special files within packages: &lt;br /&gt;
&lt;br /&gt;
'''usr/doc/&amp;lt;appname&amp;gt;&amp;lt;version&amp;gt;'''&lt;br /&gt;
All documentation included with the package (such as README, INSTALL, ChangeLog, docs/, etcetera) should be placed in this directory. Some of the files in this directory should be manually copied from the source archive, since Makefiles usually don't copy these documentation files to the package build tree.&lt;br /&gt;
&lt;br /&gt;
==Making Slackware Packages==&lt;br /&gt;
See [[Building A Package]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Information]]&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:33:23 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Packages</comments>
		</item>
		<item>
			<title>Writing A SlackBuild Script</title>
			<link>https://www.slackwiki.com/index.php?title=Writing_A_SlackBuild_Script&amp;diff=556</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Writing_A_SlackBuild_Script&amp;diff=556</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
 Originally written by Florian Mueller jjdm@jjdm.org&lt;br /&gt;
 Substantial cleanup and enhancement by Robby Workman (rworkman)&lt;br /&gt;
&lt;br /&gt;
If you use slackware as your main operating system, you have probably wanted to install quite a few applications which are not available in the official slackware.com or even third-party repositories like linuxpackages.net, or perhaps you just don't like using third-party packages.  In this situation, you have several options on how to instll the application:&lt;br /&gt;
&lt;br /&gt;
 * ./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;br /&gt;
 * use checkinstall&lt;br /&gt;
 * use installwatch&lt;br /&gt;
 * compile and use makepkg by hand&lt;br /&gt;
 * write a SlackBuild script&lt;br /&gt;
&lt;br /&gt;
I will go through the last option: writing [[SlackBuild Scripts]] (which combines the best qualities of all the other aforementioned methods). With a SlackBuild script, you have the build process automated, which will allow you to easily do later upgrades or patches to the package. SlackBuild scripts are also the method by which Patrick Volkerding builds all of the official packages for Slackware. If you look at the various scripts from different sources, you will notice that there is generally an application-independent portion of a script and an application-specific portion of the script.&lt;br /&gt;
&lt;br /&gt;
I cannot teach you how to build the &amp;quot;perfect&amp;quot; package, as reaching that goal requires fairly in-depth knowledge of the Slackware operating system.  You must consider the interactions of your proposed package with all of the other packages within the distribution; they must be integrated seamlessly.  What I can teach you is how to build a package that works and which stays true to the &amp;quot;Slackware Way.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;But it takes so much time!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
It will take approximately thirty minutes to go through this tutorial and about fifteen minutes to create each package (actual compile process not included), but the time you save in the future (you want to create a newer version of the package) makes the initial time expenditure worth it.&lt;br /&gt;
&lt;br /&gt;
= The Slackware package structure =&lt;br /&gt;
&lt;br /&gt;
See [[Packages#Slackware Package Layout]]&lt;br /&gt;
&lt;br /&gt;
= Setting up your build environment =&lt;br /&gt;
&lt;br /&gt;
See [[Build_Environment]] for examples of how various users do this.&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
&lt;br /&gt;
Hopefully, everything is now clear about Slackware package structure, and you have set up a clean build environment, so we'll begin the process of building a package with a SlackBuild script.&lt;br /&gt;
&lt;br /&gt;
For this example, we'll create a package of latex2html - I made my homepage with that tool.&lt;br /&gt;
&lt;br /&gt;
First, you have to create a directory named &amp;lt;build_environment&amp;gt;/latex2html/. Get the most recent source code release of latex2html place it in this directory.  Note that use of wget below to obtain the most recent source code is optional - you can just as well use your favorite web browser to download it, and then move it into the correct directory.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;build_environment&amp;gt;&lt;br /&gt;
 $ mkdir latex2html&lt;br /&gt;
 $ cd latex2html&lt;br /&gt;
 $ wget http://saftsack.fs.uni-bayreuth.de/~latex2ht/current/latex2html-2002-2-1.tar.gz # 05.02.2005&lt;br /&gt;
&lt;br /&gt;
Next, we'll create some other needed files with touch.  If you're not familiar with touch, see:&lt;br /&gt;
 man touch&lt;br /&gt;
Note that the *.SlackBuild file will always contain the name of the application for which it's written; for example, gaim would have gaim.SlackBuild.&lt;br /&gt;
&lt;br /&gt;
 $ touch latex2html.SlackBuild&lt;br /&gt;
 $ touch slack-desc&lt;br /&gt;
&lt;br /&gt;
Extract the source code of the application, because we'll need to look at the configure script later on to determine what options we need to pass to it.&lt;br /&gt;
&lt;br /&gt;
 $ tar -xzf latex2html-2002-2-1.tar.gz || exit 1&lt;br /&gt;
&lt;br /&gt;
= Writing the slack-desc file =&lt;br /&gt;
&lt;br /&gt;
See this [[Slack-desc]] page on SlackWiki.org for instructions on how to write a proper slack-desc file.&lt;br /&gt;
&lt;br /&gt;
= Writing the SlackBuild script =&lt;br /&gt;
&lt;br /&gt;
This is the section which takes the most time, and I'll go through it with you step by step.  When you build more packages, you'll probably be able to just copy an existing SlackBuild script and customize it. First, you need to understand that you can write your SlackBuild script in any manner you choose so long as it creates a working package; the method described here is more or less the way Pat Volkerding [[http://slackware.com/~volkerdi]] does it, but even Pat has several different styles for writing the official SlackBuild scripts.  Therefore, if you see something you would do a different way, feel free to do it that way - it's okay.&lt;br /&gt;
&lt;br /&gt;
===Initial Setup===&lt;br /&gt;
&lt;br /&gt;
Open the file latex2html.SlackBuild with your favourite editor.  What follows below is a piece by piece walk-through of a working SlackBuild script.  You may certainly paste the exact contents of those pieces, but in the author's opinion, you have a better chance of understanding it if you write everything yourself.&lt;br /&gt;
&lt;br /&gt;
First, you'll need to set your shell interpreter.  This should be /bin/sh, as *every* Slackware system is guaranteed to have this shell installed, and you want maximum portability.  For this same reason, be careful not to use any extensions and/or syntax that is customized for your particular shell (bash, zsh, or whatever), as it won't be interpreted correctly.  The '-e' flag tells the shell to exit on any error; this helps with both debugging your script as well as ensuring your script does not proceed in an unknown state.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh -e&lt;br /&gt;
&lt;br /&gt;
You might want to include a license of some sort with your SlackBuild script (preferably a GPL or BSD-style license), but at a minimum, you'll want something like this:&lt;br /&gt;
&lt;br /&gt;
 #&amp;lt;your name&amp;gt; revision date yyyy/mm/dd&lt;br /&gt;
&lt;br /&gt;
With the next few lines, we set some variables that will be used throughout the script. First is the &amp;quot;CWD&amp;quot; variable; in our case, CWD will be &amp;lt;build_environment&amp;gt;/latex2html/. We also test if the TMP variable is set, and if not, we set it to /tmp.&lt;br /&gt;
&lt;br /&gt;
 #Set initial variables:	&lt;br /&gt;
 &lt;br /&gt;
 CWD=$(pwd)&lt;br /&gt;
 if [ &amp;quot;$TMP&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
   TMP=/tmp&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
Some people like to build in a subdirectory of /tmp (such as /tmp/build), but that's up to you.&lt;br /&gt;
 &lt;br /&gt;
 # The version which appears in the application's filename&lt;br /&gt;
 VERSION=2002-2-1 	&lt;br /&gt;
 &lt;br /&gt;
 # If the version conflicts with the Slackware package standard&lt;br /&gt;
 # The dash character (&amp;quot;-&amp;quot;) is not allowed in the VERSION string&lt;br /&gt;
 # You can set the PKG_VERSION to something else than VERSION&lt;br /&gt;
 PKG_VERSION=2002.2.1 # the version which appears in the package name. &lt;br /&gt;
 &lt;br /&gt;
 ARCH=${ARCH:-i486} # the architecture on which you want to build your package	&lt;br /&gt;
 &lt;br /&gt;
 # First digit is the build number, which specifies how many times it has been built.	&lt;br /&gt;
 # Second string is the short form of the authors name, typical three initials:w&lt;br /&gt;
 BUILD=${BUILD:-1_rlw}&lt;br /&gt;
 &lt;br /&gt;
 # The application's name&lt;br /&gt;
 APP=latex2html&lt;br /&gt;
 &lt;br /&gt;
 # The installation directory of the package (where its actual directory&lt;br /&gt;
 # structure will be created) &lt;br /&gt;
 PKG=$TMP/package-$APP&lt;br /&gt;
&lt;br /&gt;
Set SLKCFLAGS (which will be used for both CFLAGS and CXXFLAGS).  If you are building on a system with an earlier version of gcc than 3.4.x, then you'll need to use &amp;quot;-mcpu&amp;quot; instead of &amp;quot;-mtune&amp;quot; below.&lt;br /&gt;
&lt;br /&gt;
 if [ &amp;quot;$ARCH&amp;quot; = &amp;quot;i486&amp;quot; ]; then&lt;br /&gt;
   SLKCFLAGS=&amp;quot;-O2 -march=i486 -mtune=i686&amp;quot;&lt;br /&gt;
  elif [ &amp;quot;$ARCH&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then&lt;br /&gt;
   SLKCFLAGS=&amp;quot;-O2 -fPIC&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
The section just finished sets up a few application-specific variables. When you want to create a package of some other application, you can usually just change the variables, and most of the further steps will work automatically.&lt;br /&gt;
&lt;br /&gt;
=== Extract Sources ===&lt;br /&gt;
&lt;br /&gt;
 # Delete the leftover directories if they exist (due to a previous build)&lt;br /&gt;
 # and (re)create the packaging directory&lt;br /&gt;
 rm -rf $PKG &lt;br /&gt;
 mkdir -p $TMP $PKG&lt;br /&gt;
 rm -rf $TMP/$APP-$VERSION&lt;br /&gt;
 &lt;br /&gt;
 # Change to the TMP directory&lt;br /&gt;
 cd $TMP || exit 1&lt;br /&gt;
  &lt;br /&gt;
 # Extract the application source in TMP&lt;br /&gt;
 # Note: if your application comes as a tar.bz2, you need tar -jxvf&lt;br /&gt;
 tar -zxvf $CWD/$APP-$VERSION.tar.gz || exit 1&lt;br /&gt;
 &lt;br /&gt;
 # Change to the application source directory&lt;br /&gt;
 cd $APP-$VERSION || exit 1&lt;br /&gt;
  &lt;br /&gt;
 # Change ownership and permissions if necessary&lt;br /&gt;
 # This may not be needed in some source tarballs, but it never hurts&lt;br /&gt;
 chown -R root:root .&lt;br /&gt;
 chmod -R u+w,go+r-w,a-s .&lt;br /&gt;
&lt;br /&gt;
===Configure and Compile Sources===&lt;br /&gt;
&lt;br /&gt;
 # Set configure options&lt;br /&gt;
 # If your app is written in C++, you'll also need to add a line for CXXFLAGS&lt;br /&gt;
 CFLAGS=&amp;quot;$SLKCFLAGS&amp;quot; \&lt;br /&gt;
   ./configure \&lt;br /&gt;
   --prefix=/usr \&lt;br /&gt;
   --sysconfdir=/etc \&lt;br /&gt;
   --localstatedir=/var \&lt;br /&gt;
   --with-perl=/usr/bin/perl \&lt;br /&gt;
   --enable-eps \&lt;br /&gt;
   --enable-gif \&lt;br /&gt;
   --enable-png \&lt;br /&gt;
   --build=$ARCH-slackware-linux \&lt;br /&gt;
   --host=$ARCH-slackware-linux &lt;br /&gt;
 &lt;br /&gt;
 # compile the source, but exit if anything goes wrong&lt;br /&gt;
 make || exit&lt;br /&gt;
  &lt;br /&gt;
 # Install everything into the package directory, but exit if anything goes wrong&lt;br /&gt;
 make install DESTDIR=$PKG || exit&lt;br /&gt;
&lt;br /&gt;
There are three configure options I always set:&lt;br /&gt;
&lt;br /&gt;
* --prefix=/usr&lt;br /&gt;
* --sysconfdir=/etc&lt;br /&gt;
* --localstatedir=/var&lt;br /&gt;
&lt;br /&gt;
This makes configuration files go to /etc, state files (such as log files) go to /var, and the rest goes to /usr. That's the usual Slackware way, but it's your system, so you can certainly install everything in /usr/local or some other location.  See the Unix Filesystem Hierarchy Standard [[http://www.pathname.com/fhs/]] for more information on &amp;quot;correct&amp;quot; locations of various filetypes.&lt;br /&gt;
&lt;br /&gt;
You notice that there were several other options passed to the configure script, and for each application you compile, you have to figure those out for yourself - that's why you were told to extract the sources earlier in this process.  You simply cd into the source directory and run:&lt;br /&gt;
 ./configure --help&lt;br /&gt;
This will produce a page or two (sometimes more, though) of information about various options that are specific to the application.  Read through this information and figure out what you need (I like to pipe that command through lpr to get a printed copy, but you can certainly use some sort of pager as well:&lt;br /&gt;
 ./configure --help | lpr&lt;br /&gt;
 ./configure --help | less&lt;br /&gt;
&lt;br /&gt;
The DESTDIR variable is very important in this script because it specifies the directory in which the files should be installed.  This should always be our package directory ($PKG).  Unfortunately, some applications' Makefiles will not support the DESTDIR variable, so you can't use it for those apps.  A simple line like this:&lt;br /&gt;
 grep DESTDIR Makefile*&lt;br /&gt;
while inside the source directory should tell you whether it supports DESTDIR or not.  If you get some lines of output with $DESTDIR in them, you're in good shape.  If the command returns no output, then the Makefile does not support the DESTDIR variable.&lt;br /&gt;
&lt;br /&gt;
Here's a piece of advice: ALWAYS go through the ./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install DESTDIR=/somedir process manually and as a NORMAL USER account BEFORE you run your SlackBuild script.  There are quite a few applications out there which try to do &amp;quot;funny stuff&amp;quot; during the installation phase.&lt;br /&gt;
 For example, apcupsd will attempt to patch your /etc/rc.d/rc.6 init script&lt;br /&gt;
 Yes, it's possible to avoid this with a configure option, but it's not obvious that you would need&lt;br /&gt;
 to do so until you look at all of the Makefiles for apcupsd (or watch the install process)&lt;br /&gt;
Anyway, if you go through the process as a normal user, you will get &amp;quot;Permission Denied&amp;quot; errors and such if the install process tries to write anywhere it's not allowed to do so.&lt;br /&gt;
&lt;br /&gt;
=== Install Documentation ===&lt;br /&gt;
&lt;br /&gt;
 # Create a directory for documentation&lt;br /&gt;
 mkdir -p $PKG/usr/doc/$APP-$VERSION&lt;br /&gt;
 &lt;br /&gt;
 # Copy documentation to the docs directory and fix permissions&lt;br /&gt;
 cp -a BUGS Changes FAQ INSTALL LICENSE MANIFEST README TODO docs/ $PKG/usr/doc/$APP-$VERSION&lt;br /&gt;
 find $PKG/usr/doc/$APP-$VERSION -type f -exec chmod 644 {} \;&lt;br /&gt;
&lt;br /&gt;
I (rworkman) also like to place a copy of my SlackBuild script in this directory&lt;br /&gt;
 cat $CWD/$APP.SlackBuild &amp;gt; $PKG/usr/doc/$APP-$VERSION/$APP.SlackBuild&lt;br /&gt;
&lt;br /&gt;
Make sure you look inside the actual source archive of the application, because some applications won't have all of the documentation files specified above, and some applications will have additional files.  In other words, don't just copy/paste what you see above into your SlackBuild script - you *must* customize this section for each individual application.&lt;br /&gt;
&lt;br /&gt;
=== Final Touches ===&lt;br /&gt;
&lt;br /&gt;
 # Create the ./install directory and copy the slack-desc into it&lt;br /&gt;
 mkdir -p $PKG/install&lt;br /&gt;
 cat $CWD/slack-desc &amp;gt; $PKG/install/slack-desc&lt;br /&gt;
&lt;br /&gt;
NOTE: In some cases, you will have some sort of command or setup that&lt;br /&gt;
needs to run after the package contents are installed - for this, you&lt;br /&gt;
would add a file to $CWD called &amp;quot;doinst.sh&amp;quot; which contains the needed&lt;br /&gt;
commands, and then compress that file with gzip.  The SlackBuild script&lt;br /&gt;
will zcat (which means to gunzip and cat its contents) that file and &lt;br /&gt;
write the output to a doinst.sh file in the $PKG/install directory.&lt;br /&gt;
&lt;br /&gt;
 # Add doinst.sh to package (if it exists)&lt;br /&gt;
 if [ -e $CWD/doinst.sh.gz ]; then&lt;br /&gt;
   zcat $CWD/doinst.sh.gz &amp;gt; $PKG/install/doinst.sh&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
Let's conserve space if we can; strip libraries and binaries and compress man pages with gzip&lt;br /&gt;
Note that you might be able to use &amp;quot;make install-strip&amp;quot; instead of &amp;quot;make install&amp;quot; above instead to accomplish the same purpose&lt;br /&gt;
&lt;br /&gt;
 # Strip some libraries and binaries&lt;br /&gt;
 ( cd $PKG&lt;br /&gt;
    find . | xargs file | grep &amp;quot;executable&amp;quot; | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2&amp;gt; /dev/null&lt;br /&gt;
    find . | xargs file | grep &amp;quot;shared object&amp;quot; | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2&amp;gt; /dev/null&lt;br /&gt;
 )&lt;br /&gt;
 &lt;br /&gt;
 # Compress man pages if they exist&lt;br /&gt;
 if [ -d $PKG/usr/man ]; then&lt;br /&gt;
   ( cd $PKG/usr/man&lt;br /&gt;
   find . -type f -exec gzip -9 {} \;&lt;br /&gt;
   for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done&lt;br /&gt;
   ) &lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # Compress info pages if they exist (and remove the dir file)&lt;br /&gt;
 if [ -d $PKG/usr/info ]; then&lt;br /&gt;
   gzip -9 $PKG/usr/info/*.info&lt;br /&gt;
   rm -f $PKG/usr/info/dir&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
=== Build the Package ===&lt;br /&gt;
&lt;br /&gt;
 # Build the package&lt;br /&gt;
 cd $PKG&lt;br /&gt;
 /sbin/makepkg -l y -c n $TMP/$APP-$PKG_VERSION-$ARCH-$BUILD.tgz&lt;br /&gt;
&lt;br /&gt;
= Other Concerns =&lt;br /&gt;
&lt;br /&gt;
=== DESTDIR Option Not Available ===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, there are quite a few applications whose Makefiles do not support the DESTDIR option for make install.  On some applications the DESTDIR Makefile variable has another name.  For example, some Qt &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://buyphentermine.herbalweightlossaid.com/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;Phen375&amp;lt;/span&amp;gt;] applications use the variable INSTALL_ROOT for the same purpose.  If you can understand Makefiles, it is probably worth your time to take a look at its contents and try to find out which actions are performed in the install rule.  Sometimes there will be no DESTDIR equivalent at all.  The &amp;lt;strong&amp;gt;best&amp;lt;/strong&amp;gt; thing you can do in this situation is write a patch for the Makefile.in or equivalent, and submit it to the &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.performer5pills.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;performer 5&amp;lt;/span&amp;gt;] developer(s) for inclusion in the source, but I realize that everyone doesn't have the ability to do that.  The second best thing you can do it write to the developer(s) and ask them to include that functionality in future releases.  In the meantime, here are some thoughts on the subject...&lt;br /&gt;
&lt;br /&gt;
==== Example 1: ====&lt;br /&gt;
Configure the build with:&lt;br /&gt;
 ./configure --prefix=$PKG/usr&lt;br /&gt;
along with your other configure options.  This will install *all* of the package contents in that directory.  If the package creates $PKG/usr/etc and $PKG/usr/var directories (or any other directories that should be elsewhere), you can probably just move &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://weightlossproductreviews.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;slimming reviews&amp;lt;/span&amp;gt;] them to their correct location within the package directory &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.hghadvancedreview.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;HGH Advanced&amp;lt;/span&amp;gt;] tree and everything will be fine.  You might also try this along with your other configure options.&lt;br /&gt;
 ./configure --prefix=$PKG/usr \&lt;br /&gt;
    --sysconfdir=$PKG/etc \&lt;br /&gt;
    --localstatedir=$PKG/var &lt;br /&gt;
There are some applications, however, which &amp;quot;hard-code&amp;quot; configuration files based on configure/Makefile parameters.  In those cases, you'll have to figure out a way to patch the config file prior to packaging it, or in worst-case scenario, include &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.clearskinmaxreview.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;clear skin max&amp;lt;/span&amp;gt;] instructions for the end user on how to make the necessary changes.&lt;br /&gt;
&lt;br /&gt;
==== Example 2: ====&lt;br /&gt;
This example makes use of the ability to override any Makefile variable, which is called a '''macro''' in the Makefile terminology, on the command line and not have to worry about patching the Makefile to include a '''DESTDIR''' macro in the Makefile.  This approach makes it a bit &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.hoodiapill.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;unique hoodia&amp;lt;/span&amp;gt;] easier for those not familiar with Makefiles.&lt;br /&gt;
&lt;br /&gt;
If the Makefile does not honor '''DESTDIR''' for the 'make install' command, you can change the prefix macro, instead:&lt;br /&gt;
 make prefix=$PKG/usr install&lt;br /&gt;
This will override the $(prefix) variable inside the Makefile and install to the location you supplied on the &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://weightlossproductreviews.info/?page_id=268 &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;slim weight patch&amp;lt;/span&amp;gt;] command line.  Therefore, you can configure with the standard ''./configure --prefix=/usr'' (or ''./configure --prefix=/usr/local'') syntax, yet install to a different location as if you supplied a ''DESTDIR=$PKG/usr'' for the 'make install' command.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT NOTE: Macro names are case-sensitive (at least for GNU make).  Some Makefiles may use a &amp;quot;'''PREFIX ='''&amp;quot; macro instead of the usual &amp;quot;'''prefix ='''&amp;quot;, so the 'make install' command would look like this:&lt;br /&gt;
 make PREFIX=$PKG/usr install&lt;br /&gt;
Therefore, it's necessary to look inside the Makefile to be sure which form was used for the prefix.  For large, complex makefiles, the easiest way is to 'grep' the Makefile, like so:&lt;br /&gt;
 grep -i '^prefix \?=' Makefile{,.in}&lt;br /&gt;
The ''-i'' option makes the search case-insensitive and the ''{,.in}'' part at the end will search &amp;quot;Makefile&amp;quot; or &amp;quot;Makefile.in&amp;quot; files, the second one &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.teethwhitenerguide.com/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;teeth whitener reviews&amp;lt;/span&amp;gt;] being a template for the &amp;quot;configure&amp;quot; script.  Grep's search term is a basic regular expression, so the escaped question mark after the space (\?) means there may or may not be a space in between when searching.&lt;br /&gt;
&lt;br /&gt;
Once in a while, there may be a &amp;quot;'''PREFIX ='''&amp;quot; in a Makefile that is not defined which you are to edit and supply the location. Use the usual ''/usr'' (or ''/usr/local''), in this case, and then use 'make PREFIX=$PKG/usr install' to install to the &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.phen375reviewed.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;phen375 fat burner&amp;lt;/span&amp;gt;] package's build location.&lt;br /&gt;
&lt;br /&gt;
=== Patching the Sources ===&lt;br /&gt;
&lt;br /&gt;
Sooner or later, there will be some reason to patch the source code prior to building a package, and you'll want to be able to do this automatically.  &lt;br /&gt;
&lt;br /&gt;
===== Obtaining the Patch =====&lt;br /&gt;
&lt;br /&gt;
In most cases, the patch will be provided by the author of the source code, so we're not going to discuss patch *creation* here.  Download the patch and place it in the same directory as the SlackBuild script, slack-desc file, and other related files (in $CWD from above).&lt;br /&gt;
 $ wget http://someapplication.org/files/patches/bigsecuritypatch.diff&lt;br /&gt;
It's not necessary to do the next step, but because &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.herbalweightlossaid.com/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;slimming pills&amp;lt;/span&amp;gt;] developers generally want to conserve space if possible, it's conventional to do this:&lt;br /&gt;
 $ gzip -9 bigsecuritypatch.diff&lt;br /&gt;
This will result in a new file called bigsecuritypatch.diff.gz -- we'll use that in the SlackBuild script in just a moment.&lt;br /&gt;
&lt;br /&gt;
===== Applying the Patch =====&lt;br /&gt;
&lt;br /&gt;
You will now need to edit your &amp;lt;application&amp;gt;.SlackBuild script so that it applies the patch before it runs configure, make, and make install.  To do this, you'll want something like this to run before the configure &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.capsiplexreview.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;capsiplex&amp;lt;/span&amp;gt;] script, but after extracting the sources:&lt;br /&gt;
 zcat $CWD/bigsecuritypatch.diff.gz | patch -p1 || exit&lt;br /&gt;
Depending on how the patch was created, you might use a different patchlevel on that line, as in:&lt;br /&gt;
 zcat $CWD/bigsecuritypatch.diff.gz | patch -p0 || exit&lt;br /&gt;
It's a bit beyond the &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://proactolpluspills.com/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;proactol plus&amp;lt;/span&amp;gt;] scope of this HOWTO, but essentially, the -p# specifies the number of trailing directories to skip when looking for the file to patch.  You'll often need to skip the top-level directory, but not always (hence the -p0).&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
* [[SlackBuild_Scripts]]&lt;br /&gt;
* [[Different_Approach_To_Buildscripts]]&lt;br /&gt;
* [[Building_A_Package]]&lt;br /&gt;
* [[Slack-desc]]&lt;br /&gt;
* [[Checkinstall]]&lt;br /&gt;
* [[Compiling]]&lt;br /&gt;
&lt;br /&gt;
= SlackBuild Script Repositories =&lt;br /&gt;
&lt;br /&gt;
;* http://slackbuilds.org&lt;br /&gt;
;* http://www.slackware.com/~alien/slackbuilds/&lt;br /&gt;
;* http://slackbuilds.slackadelic.com/&lt;br /&gt;
;* http://slackbuilds.rlworkman.net/&lt;br /&gt;
;* http://www.slackbuilds.net/slackbuilds/&lt;br /&gt;
;* http://slackbuild.strangeworlds.co.uk/&lt;br /&gt;
;* http://www2.linuxpackages.net/packages/SlackBuilds/&lt;br /&gt;
;* http://www.selkfoster.com.ar/downloads/slackbuilds/&lt;br /&gt;
;* http://slack.sarava.org/slackbuilds/&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:32:00 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Writing_A_SlackBuild_Script</comments>
		</item>
		<item>
			<title>Writing A SlackBuild Script</title>
			<link>https://www.slackwiki.com/index.php?title=Writing_A_SlackBuild_Script&amp;diff=553</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Writing_A_SlackBuild_Script&amp;diff=553</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
 Originally written by Florian Mueller jjdm@jjdm.org&lt;br /&gt;
 Substantial cleanup and enhancement by Robby Workman (rworkman)&lt;br /&gt;
&lt;br /&gt;
If you use slackware as your main operating system, you have probably wanted to install quite a few applications which are not available in the official slackware.com or even third-party repositories like linuxpackages.net, or perhaps you just don't like using third-party packages.  In this situation, you have several options on how to instll the application:&lt;br /&gt;
&lt;br /&gt;
 * ./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;br /&gt;
 * use checkinstall&lt;br /&gt;
 * use installwatch&lt;br /&gt;
 * compile and use makepkg by hand&lt;br /&gt;
 * write a SlackBuild script&lt;br /&gt;
&lt;br /&gt;
I will go through the last option: writing [[SlackBuild Scripts]] (which combines the best qualities of all the other aforementioned methods). With a SlackBuild script, you have the build process automated, which will allow you to easily do later upgrades or patches to the package. SlackBuild scripts are also the method by which Patrick Volkerding builds all of the official packages for Slackware. If you look at the various scripts from different sources, you will notice that there is generally an application-independent portion of a script and an application-specific portion of the script.&lt;br /&gt;
&lt;br /&gt;
I cannot teach you how to build the &amp;quot;perfect&amp;quot; package, as reaching that goal requires fairly in-depth knowledge of the Slackware operating system.  You must consider the interactions of your proposed package with all of the other packages within the distribution; they must be integrated seamlessly.  What I can teach you is how to build a package that works and which stays true to the &amp;quot;Slackware Way.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;But it takes so much time!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
It will take approximately thirty minutes to go through this tutorial and about fifteen minutes to create each package (actual compile process not included), but the time you save in the future (you want to create a newer version of the package) makes the initial time expenditure worth it.&lt;br /&gt;
&lt;br /&gt;
= The Slackware package structure =&lt;br /&gt;
&lt;br /&gt;
See [[Packages#Slackware Package Layout]]&lt;br /&gt;
&lt;br /&gt;
= Setting up your build environment =&lt;br /&gt;
&lt;br /&gt;
See [[Build_Environment]] for examples of how various users do this.&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
&lt;br /&gt;
Hopefully, everything is now clear about Slackware package structure, and you have set up a clean build environment, so we'll begin the process of building a package with a SlackBuild script.&lt;br /&gt;
&lt;br /&gt;
For this example, we'll create a package of latex2html - I made my homepage with that tool.&lt;br /&gt;
&lt;br /&gt;
First, you have to create a directory named &amp;lt;build_environment&amp;gt;/latex2html/. Get the most recent source code release of latex2html place it in this directory.  Note that use of wget below to obtain the most recent source code is optional - you can just as well use your favorite web browser to download it, and then move it into the correct directory.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;build_environment&amp;gt;&lt;br /&gt;
 $ mkdir latex2html&lt;br /&gt;
 $ cd latex2html&lt;br /&gt;
 $ wget http://saftsack.fs.uni-bayreuth.de/~latex2ht/current/latex2html-2002-2-1.tar.gz # 05.02.2005&lt;br /&gt;
&lt;br /&gt;
Next, we'll create some other needed files with touch.  If you're not familiar with touch, see:&lt;br /&gt;
 man touch&lt;br /&gt;
Note that the *.SlackBuild file will always contain the name of the application for which it's written; for example, gaim would have gaim.SlackBuild.&lt;br /&gt;
&lt;br /&gt;
 $ touch latex2html.SlackBuild&lt;br /&gt;
 $ touch slack-desc&lt;br /&gt;
&lt;br /&gt;
Extract the source code of the application, because we'll need to look at the configure script later on to determine what options we need to pass to it.&lt;br /&gt;
&lt;br /&gt;
 $ tar -xzf latex2html-2002-2-1.tar.gz || exit 1&lt;br /&gt;
&lt;br /&gt;
= Writing the slack-desc file =&lt;br /&gt;
&lt;br /&gt;
See this [[Slack-desc]] page on SlackWiki.org for instructions on how to write a proper slack-desc file.&lt;br /&gt;
&lt;br /&gt;
= Writing the SlackBuild script =&lt;br /&gt;
&lt;br /&gt;
This is the section which takes the most time, and I'll go through it with you step by step.  When you build more packages, you'll probably be able to just copy an existing SlackBuild script and customize it. First, you need to understand that you can write your SlackBuild script in any manner you choose so long as it creates a working package; the method described here is more or less the way Pat Volkerding [[http://slackware.com/~volkerdi]] does it, but even Pat has several different styles for writing the official SlackBuild scripts.  Therefore, if you see something you would do a different way, feel free to do it that way - it's okay.&lt;br /&gt;
&lt;br /&gt;
===Initial Setup===&lt;br /&gt;
&lt;br /&gt;
Open the file latex2html.SlackBuild with your favourite editor.  What follows below is a piece by piece walk-through of a working SlackBuild script.  You may certainly paste the exact contents of those pieces, but in the author's opinion, you have a better chance of understanding it if you write everything yourself.&lt;br /&gt;
&lt;br /&gt;
First, you'll need to set your shell interpreter.  This should be /bin/sh, as *every* Slackware system is guaranteed to have this shell installed, and you want maximum portability.  For this same reason, be careful not to use any extensions and/or syntax that is customized for your particular shell (bash, zsh, or whatever), as it won't be interpreted correctly.  The '-e' flag tells the shell to exit on any error; this helps with both debugging your script as well as ensuring your script does not proceed in an unknown state.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh -e&lt;br /&gt;
&lt;br /&gt;
You might want to include a license of some sort with your SlackBuild script (preferably a GPL or BSD-style license), but at a minimum, you'll want something like this:&lt;br /&gt;
&lt;br /&gt;
 #&amp;lt;your name&amp;gt; revision date yyyy/mm/dd&lt;br /&gt;
&lt;br /&gt;
With the next few lines, we set some variables that will be used throughout the script. First is the &amp;quot;CWD&amp;quot; variable; in our case, CWD will be &amp;lt;build_environment&amp;gt;/latex2html/. We also test if the TMP variable is set, and if not, we set it to /tmp.&lt;br /&gt;
&lt;br /&gt;
 #Set initial variables:	&lt;br /&gt;
 &lt;br /&gt;
 CWD=$(pwd)&lt;br /&gt;
 if [ &amp;quot;$TMP&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
   TMP=/tmp&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
Some people like to build in a subdirectory of /tmp (such as /tmp/build), but that's up to you.&lt;br /&gt;
 &lt;br /&gt;
 # The version which appears in the application's filename&lt;br /&gt;
 VERSION=2002-2-1 	&lt;br /&gt;
 &lt;br /&gt;
 # If the version conflicts with the Slackware package standard&lt;br /&gt;
 # The dash character (&amp;quot;-&amp;quot;) is not allowed in the VERSION string&lt;br /&gt;
 # You can set the PKG_VERSION to something else than VERSION&lt;br /&gt;
 PKG_VERSION=2002.2.1 # the version which appears in the package name. &lt;br /&gt;
 &lt;br /&gt;
 ARCH=${ARCH:-i486} # the architecture on which you want to build your package	&lt;br /&gt;
 &lt;br /&gt;
 # First digit is the build number, which specifies how many times it has been built.	&lt;br /&gt;
 # Second string is the short form of the authors name, typical three initials:w&lt;br /&gt;
 BUILD=${BUILD:-1_rlw}&lt;br /&gt;
 &lt;br /&gt;
 # The application's name&lt;br /&gt;
 APP=latex2html&lt;br /&gt;
 &lt;br /&gt;
 # The installation directory of the package (where its actual directory&lt;br /&gt;
 # structure will be created) &lt;br /&gt;
 PKG=$TMP/package-$APP&lt;br /&gt;
&lt;br /&gt;
Set SLKCFLAGS (which will be used for both CFLAGS and CXXFLAGS).  If you are building on a system with an earlier version of gcc than 3.4.x, then you'll need to use &amp;quot;-mcpu&amp;quot; instead of &amp;quot;-mtune&amp;quot; below.&lt;br /&gt;
&lt;br /&gt;
 if [ &amp;quot;$ARCH&amp;quot; = &amp;quot;i486&amp;quot; ]; then&lt;br /&gt;
   SLKCFLAGS=&amp;quot;-O2 -march=i486 -mtune=i686&amp;quot;&lt;br /&gt;
  elif [ &amp;quot;$ARCH&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then&lt;br /&gt;
   SLKCFLAGS=&amp;quot;-O2 -fPIC&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
The section just finished sets up a few application-specific variables. When you want to create a package of some other application, you can usually just change the variables, and most of the further steps will work automatically.&lt;br /&gt;
&lt;br /&gt;
=== Extract Sources ===&lt;br /&gt;
&lt;br /&gt;
 # Delete the leftover directories if they exist (due to a previous build)&lt;br /&gt;
 # and (re)create the packaging directory&lt;br /&gt;
 rm -rf $PKG &lt;br /&gt;
 mkdir -p $TMP $PKG&lt;br /&gt;
 rm -rf $TMP/$APP-$VERSION&lt;br /&gt;
 &lt;br /&gt;
 # Change to the TMP directory&lt;br /&gt;
 cd $TMP || exit 1&lt;br /&gt;
  &lt;br /&gt;
 # Extract the application source in TMP&lt;br /&gt;
 # Note: if your application comes as a tar.bz2, you need tar -jxvf&lt;br /&gt;
 tar -zxvf $CWD/$APP-$VERSION.tar.gz || exit 1&lt;br /&gt;
 &lt;br /&gt;
 # Change to the application source directory&lt;br /&gt;
 cd $APP-$VERSION || exit 1&lt;br /&gt;
  &lt;br /&gt;
 # Change ownership and permissions if necessary&lt;br /&gt;
 # This may not be needed in some source tarballs, but it never hurts&lt;br /&gt;
 chown -R root:root .&lt;br /&gt;
 chmod -R u+w,go+r-w,a-s .&lt;br /&gt;
&lt;br /&gt;
===Configure and Compile Sources===&lt;br /&gt;
&lt;br /&gt;
 # Set configure options&lt;br /&gt;
 # If your app is written in C++, you'll also need to add a line for CXXFLAGS&lt;br /&gt;
 CFLAGS=&amp;quot;$SLKCFLAGS&amp;quot; \&lt;br /&gt;
   ./configure \&lt;br /&gt;
   --prefix=/usr \&lt;br /&gt;
   --sysconfdir=/etc \&lt;br /&gt;
   --localstatedir=/var \&lt;br /&gt;
   --with-perl=/usr/bin/perl \&lt;br /&gt;
   --enable-eps \&lt;br /&gt;
   --enable-gif \&lt;br /&gt;
   --enable-png \&lt;br /&gt;
   --build=$ARCH-slackware-linux \&lt;br /&gt;
   --host=$ARCH-slackware-linux &lt;br /&gt;
 &lt;br /&gt;
 # compile the source, but exit if anything goes wrong&lt;br /&gt;
 make || exit&lt;br /&gt;
  &lt;br /&gt;
 # Install everything into the package directory, but exit if anything goes wrong&lt;br /&gt;
 make install DESTDIR=$PKG || exit&lt;br /&gt;
&lt;br /&gt;
There are three configure options I always set:&lt;br /&gt;
&lt;br /&gt;
* --prefix=/usr&lt;br /&gt;
* --sysconfdir=/etc&lt;br /&gt;
* --localstatedir=/var&lt;br /&gt;
&lt;br /&gt;
This makes configuration files go to /etc, state files (such as log files) go to /var, and the rest goes to /usr. That's the usual Slackware way, but it's your system, so you can certainly install everything in /usr/local or some other location.  See the Unix Filesystem Hierarchy Standard [[http://www.pathname.com/fhs/]] for more information on &amp;quot;correct&amp;quot; locations of various filetypes.&lt;br /&gt;
&lt;br /&gt;
You notice that there were several other options passed to the configure script, and for each application you compile, you have to figure those out for yourself - that's why you were told to extract the sources earlier in this process.  You simply cd into the source directory and run:&lt;br /&gt;
 ./configure --help&lt;br /&gt;
This will produce a page or two (sometimes more, though) of information about various options that are specific to the application.  Read through this information and figure out what you need (I like to pipe that command through lpr to get a printed copy, but you can certainly use some sort of pager as well:&lt;br /&gt;
 ./configure --help | lpr&lt;br /&gt;
 ./configure --help | less&lt;br /&gt;
&lt;br /&gt;
The DESTDIR variable is very important in this script because it specifies the directory in which the files should be installed.  This should always be our package directory ($PKG).  Unfortunately, some applications' Makefiles will not support the DESTDIR variable, so you can't use it for those apps.  A simple line like this:&lt;br /&gt;
 grep DESTDIR Makefile*&lt;br /&gt;
while inside the source directory should tell you whether it supports DESTDIR or not.  If you get some lines of output with $DESTDIR in them, you're in good shape.  If the command returns no output, then the Makefile does not support the DESTDIR variable.&lt;br /&gt;
&lt;br /&gt;
Here's a piece of advice: ALWAYS go through the ./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install DESTDIR=/somedir process manually and as a NORMAL USER account BEFORE you run your SlackBuild script.  There are quite a few applications out there which try to do &amp;quot;funny stuff&amp;quot; during the installation phase.&lt;br /&gt;
 For example, apcupsd will attempt to patch your /etc/rc.d/rc.6 init script&lt;br /&gt;
 Yes, it's possible to avoid this with a configure option, but it's not obvious that you would need&lt;br /&gt;
 to do so until you look at all of the Makefiles for apcupsd (or watch the install process)&lt;br /&gt;
Anyway, if you go through the process as a normal user, you will get &amp;quot;Permission Denied&amp;quot; errors and such if the install process tries to write anywhere it's not allowed to do so.&lt;br /&gt;
&lt;br /&gt;
=== Install Documentation ===&lt;br /&gt;
&lt;br /&gt;
 # Create a directory for documentation&lt;br /&gt;
 mkdir -p $PKG/usr/doc/$APP-$VERSION&lt;br /&gt;
 &lt;br /&gt;
 # Copy documentation to the docs directory and fix permissions&lt;br /&gt;
 cp -a BUGS Changes FAQ INSTALL LICENSE MANIFEST README TODO docs/ $PKG/usr/doc/$APP-$VERSION&lt;br /&gt;
 find $PKG/usr/doc/$APP-$VERSION -type f -exec chmod 644 {} \;&lt;br /&gt;
&lt;br /&gt;
I (rworkman) also like to place a copy of my SlackBuild script in this directory&lt;br /&gt;
 cat $CWD/$APP.SlackBuild &amp;gt; $PKG/usr/doc/$APP-$VERSION/$APP.SlackBuild&lt;br /&gt;
&lt;br /&gt;
Make sure you look inside the actual source archive of the application, because some applications won't have all of the documentation files specified above, and some applications will have additional files.  In other words, don't just copy/paste what you see above into your SlackBuild script - you *must* customize this section for each individual application.&lt;br /&gt;
&lt;br /&gt;
=== Final Touches ===&lt;br /&gt;
&lt;br /&gt;
 # Create the ./install directory and copy the slack-desc into it&lt;br /&gt;
 mkdir -p $PKG/install&lt;br /&gt;
 cat $CWD/slack-desc &amp;gt; $PKG/install/slack-desc&lt;br /&gt;
&lt;br /&gt;
NOTE: In some cases, you will have some sort of command or setup that&lt;br /&gt;
needs to run after the package contents are installed - for this, you&lt;br /&gt;
would add a file to $CWD called &amp;quot;doinst.sh&amp;quot; which contains the needed&lt;br /&gt;
commands, and then compress that file with gzip.  The SlackBuild script&lt;br /&gt;
will zcat (which means to gunzip and cat its contents) that file and &lt;br /&gt;
write the output to a doinst.sh file in the $PKG/install directory.&lt;br /&gt;
&lt;br /&gt;
 # Add doinst.sh to package (if it exists)&lt;br /&gt;
 if [ -e $CWD/doinst.sh.gz ]; then&lt;br /&gt;
   zcat $CWD/doinst.sh.gz &amp;gt; $PKG/install/doinst.sh&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
Let's conserve space if we can; strip libraries and binaries and compress man pages with gzip&lt;br /&gt;
Note that you might be able to use &amp;quot;make install-strip&amp;quot; instead of &amp;quot;make install&amp;quot; above instead to accomplish the same purpose&lt;br /&gt;
&lt;br /&gt;
 # Strip some libraries and binaries&lt;br /&gt;
 ( cd $PKG&lt;br /&gt;
    find . | xargs file | grep &amp;quot;executable&amp;quot; | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2&amp;gt; /dev/null&lt;br /&gt;
    find . | xargs file | grep &amp;quot;shared object&amp;quot; | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2&amp;gt; /dev/null&lt;br /&gt;
 )&lt;br /&gt;
 &lt;br /&gt;
 # Compress man pages if they exist&lt;br /&gt;
 if [ -d $PKG/usr/man ]; then&lt;br /&gt;
   ( cd $PKG/usr/man&lt;br /&gt;
   find . -type f -exec gzip -9 {} \;&lt;br /&gt;
   for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done&lt;br /&gt;
   ) &lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # Compress info pages if they exist (and remove the dir file)&lt;br /&gt;
 if [ -d $PKG/usr/info ]; then&lt;br /&gt;
   gzip -9 $PKG/usr/info/*.info&lt;br /&gt;
   rm -f $PKG/usr/info/dir&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
=== Build the Package ===&lt;br /&gt;
&lt;br /&gt;
 # Build the package&lt;br /&gt;
 cd $PKG&lt;br /&gt;
 /sbin/makepkg -l y -c n $TMP/$APP-$PKG_VERSION-$ARCH-$BUILD.tgz&lt;br /&gt;
&lt;br /&gt;
= Other Concerns =&lt;br /&gt;
&lt;br /&gt;
=== DESTDIR Option Not Available ===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, there are quite a few applications whose Makefiles do not support the DESTDIR option for make install.  On some applications the DESTDIR Makefile variable has another name.  For example, some Qt &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://buyphentermine.herbalweightlossaid.com/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;Phen375&amp;lt;/span&amp;gt;] applications use the variable INSTALL_ROOT for the same purpose.  If you can understand Makefiles, it is probably worth your time to take a look at its contents and try to find out which actions are performed in the install rule.  Sometimes there will be no DESTDIR equivalent at all.  The &amp;lt;strong&amp;gt;best&amp;lt;/strong&amp;gt; thing you can do in this situation is write a patch for the Makefile.in or equivalent, and submit it to the &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.performer5pills.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;performer 5&amp;lt;/span&amp;gt;] developer(s) for inclusion in the source, but I realize that everyone doesn't have the ability to do that.  The second best thing you can do it write to the developer(s) and ask them to include that functionality in future releases.  In the meantime, here are some thoughts on the subject...&lt;br /&gt;
&lt;br /&gt;
==== Example 1: ====&lt;br /&gt;
Configure the build with:&lt;br /&gt;
 ./configure --prefix=$PKG/usr&lt;br /&gt;
along with your other configure options.  This will install *all* of the package contents in that directory.  If the package creates $PKG/usr/etc and $PKG/usr/var directories (or any other directories that should be elsewhere), you can probably just move &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://weightlossproductreviews.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;slimming reviews&amp;lt;/span&amp;gt;] them to their correct location within the package directory &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.hghadvancedreview.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;HGH Advanced&amp;lt;/span&amp;gt;] tree and everything will be fine.  You might also try this along with your other configure options.&lt;br /&gt;
 ./configure --prefix=$PKG/usr \&lt;br /&gt;
    --sysconfdir=$PKG/etc \&lt;br /&gt;
    --localstatedir=$PKG/var &lt;br /&gt;
There are some applications, however, which &amp;quot;hard-code&amp;quot; configuration files based on configure/Makefile parameters.  In those cases, you'll have to figure out a way to patch the config file prior to packaging it, or in worst-case scenario, include &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.clearskinmaxreview.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;clear skin max&amp;lt;/span&amp;gt;] instructions for the end user on how to make the necessary changes.&lt;br /&gt;
&lt;br /&gt;
==== Example 2: ====&lt;br /&gt;
This example makes use of the ability to override any Makefile variable, which is called a '''macro''' in the Makefile terminology, on the command line and not have to worry about patching the Makefile to include a '''DESTDIR''' macro in the Makefile.  This approach makes it a bit &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.hoodiapill.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;unique hoodia&amp;lt;/span&amp;gt;] easier for those not familiar with Makefiles.&lt;br /&gt;
&lt;br /&gt;
If the Makefile does not honor '''DESTDIR''' for the 'make install' command, you can change the prefix macro, instead:&lt;br /&gt;
 make prefix=$PKG/usr install&lt;br /&gt;
This will override the $(prefix) variable inside the Makefile and install to the location you supplied on the &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://weightlossproductreviews.info/?page_id=268 &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;slim weight patch&amp;lt;/span&amp;gt;] command line.  Therefore, you can configure with the standard ''./configure --prefix=/usr'' (or ''./configure --prefix=/usr/local'') syntax, yet install to a different location as if you supplied a ''DESTDIR=$PKG/usr'' for the 'make install' command.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT NOTE: Macro names are case-sensitive (at least for GNU make).  Some Makefiles may use a &amp;quot;'''PREFIX ='''&amp;quot; macro instead of the usual &amp;quot;'''prefix ='''&amp;quot;, so the 'make install' command would look like this:&lt;br /&gt;
 make PREFIX=$PKG/usr install&lt;br /&gt;
Therefore, it's necessary to look inside the Makefile to be sure which form was used for the prefix.  For large, complex makefiles, the easiest way is to 'grep' the Makefile, like so:&lt;br /&gt;
 grep -i '^prefix \?=' Makefile{,.in}&lt;br /&gt;
The ''-i'' option makes the search case-insensitive and the ''{,.in}'' part at the end will search &amp;quot;Makefile&amp;quot; or &amp;quot;Makefile.in&amp;quot; files, the second one &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.teethwhitenerguide.com/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;teeth whitener reviews&amp;lt;/span&amp;gt;] being a template for the &amp;quot;configure&amp;quot; script.  Grep's search term is a basic regular expression, so the escaped question mark after the space (\?) means there may or may not be a space in between when searching.&lt;br /&gt;
&lt;br /&gt;
Once in a while, there may be a &amp;quot;'''PREFIX ='''&amp;quot; in a Makefile that is not defined which you are to edit and supply the location. Use the usual ''/usr'' (or ''/usr/local''), in this case, and then use 'make PREFIX=$PKG/usr install' to install to the &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.phen375reviewed.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;phen375 fat burner&amp;lt;/span&amp;gt;] package's build location.&lt;br /&gt;
&lt;br /&gt;
=== Patching the Sources ===&lt;br /&gt;
&lt;br /&gt;
Sooner or later, there will be some reason to patch the source code prior to building a package, and you'll want to be able to do this automatically.  &lt;br /&gt;
&lt;br /&gt;
===== Obtaining the Patch =====&lt;br /&gt;
&lt;br /&gt;
In most cases, the patch will be provided by the author of the source code, so we're not going to discuss patch *creation* here.  Download the patch and place it in the same directory as the SlackBuild script, slack-desc file, and other related files (in $CWD from above).&lt;br /&gt;
 $ wget http://someapplication.org/files/patches/bigsecuritypatch.diff&lt;br /&gt;
It's not necessary to do the next step, but because &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.herbalweightlossaid.com/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;slimming pills&amp;lt;/span&amp;gt;] developers generally want to conserve space if possible, it's conventional to do this:&lt;br /&gt;
 $ gzip -9 bigsecuritypatch.diff&lt;br /&gt;
This will result in a new file called bigsecuritypatch.diff.gz -- we'll use that in the SlackBuild script in just a moment.&lt;br /&gt;
&lt;br /&gt;
===== Applying the Patch =====&lt;br /&gt;
&lt;br /&gt;
You will now need to edit your &amp;lt;application&amp;gt;.SlackBuild script so that it applies the patch before it runs configure, make, and make install.  To do this, you'll want something like this to run before the configure &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.capsiplexreview.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;capsiplex&amp;lt;/span&amp;gt;] script, but after extracting the sources:&lt;br /&gt;
 zcat $CWD/bigsecuritypatch.diff.gz | patch -p1 || exit&lt;br /&gt;
Depending on how the patch was created, you might use a different patchlevel on that line, as in:&lt;br /&gt;
 zcat $CWD/bigsecuritypatch.diff.gz | patch -p0 || exit&lt;br /&gt;
It's a bit beyond the &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://proactolpluspills.com/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;proactol plus&amp;lt;/span&amp;gt;] scope of this HOWTO, but essentially, the -p# specifies the number of trailing directories to skip when looking for the file to patch.  You'll often need to skip the top-level directory, but not always (hence the -p0).&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
* [[SlackBuild_Scripts]]&lt;br /&gt;
* [[Different_Approach_To_Buildscripts]]&lt;br /&gt;
* [[Building_A_Package]]&lt;br /&gt;
* [[Slack-desc]]&lt;br /&gt;
* [[Checkinstall]]&lt;br /&gt;
* [[Compiling]]&lt;br /&gt;
&lt;br /&gt;
= SlackBuild Script Repositories =&lt;br /&gt;
&lt;br /&gt;
;* http://slackbuilds.org&lt;br /&gt;
;* http://www.slackware.com/~alien/slackbuilds/&lt;br /&gt;
;* http://slackbuilds.slackadelic.com/&lt;br /&gt;
;* http://slackbuilds.rlworkman.net/&lt;br /&gt;
;* http://www.slackbuilds.net/slackbuilds/&lt;br /&gt;
;* http://slackbuild.strangeworlds.co.uk/&lt;br /&gt;
;* http://www2.linuxpackages.net/packages/SlackBuilds/&lt;br /&gt;
;* http://www.selkfoster.com.ar/downloads/slackbuilds/&lt;br /&gt;
;* http://slack.sarava.org/slackbuilds/&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:31:03 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Writing_A_SlackBuild_Script</comments>
		</item>
		<item>
			<title>Kernel26Compilation</title>
			<link>https://www.slackwiki.com/index.php?title=Kernel26Compilation&amp;diff=552</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Kernel26Compilation&amp;diff=552</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to build a 2.6.x Kernel on Slackware&lt;br /&gt;
&lt;br /&gt;
== Using SlackBuild Scripts ==&lt;br /&gt;
In this example I'm going to use the [http://www.pidgin.im Pidgin] slackbuild. First you find on the mirror in the source directory and download the whole directory of Pidgin:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;mkdir pidgin&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;cd pidgin&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;wget --passive-ftp &amp;lt;nowiki&amp;gt;ftp://slackware.at/slackware-12.1/source/xap/pidgin/*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Note: Maybe this replaces the 2.6 part of the kernel compile tutorial already here.&lt;br /&gt;
&lt;br /&gt;
==Warning!==&lt;br /&gt;
If you work on your kernel and do something wrong you may destroy your system in a way you have to reinstall it. All actions on your own risk! Noone assures that all actions described here are 100% right and work in any case. We are not responsible for damages caused by following this tutorial!&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
* Get the kernel sources you want from ftp://ftp.de.kernel.org or from a mirror (http://www.kernel.org/mirrors/).&lt;br /&gt;
* Make sure you are able toboot your Slackware original kernel after kernel update (You have to install 2.6.13 from &amp;quot;testing&amp;quot; to do this-slack12 uses 2.6.21.5 by default, no need to install it)&lt;br /&gt;
&lt;br /&gt;
image = /boot/vmlinuz-generic-2.6.13&amp;lt;br&amp;gt;&lt;br /&gt;
root = /dev/ #Your root partition. Get this from another kernel entry or from original /etc/lilo.conf&lt;br /&gt;
label = Backup&lt;br /&gt;
read-only&lt;br /&gt;
&lt;br /&gt;
Now run &amp;quot;lilo&amp;quot; once as root&lt;br /&gt;
* If you want to play safe you may now reboot and try if the kernel boots without errors.&lt;br /&gt;
* Uncompress your kernel sources below /usr/src&lt;br /&gt;
* The symlink /usr/src/linux has to point to the directory of the new kernel. For example: /usr/src/linux -&amp;gt; /usr/src/linux-2.6.14.4&lt;br /&gt;
&lt;br /&gt;
==Configure the kernel==&lt;br /&gt;
&lt;br /&gt;
* Change to the kernel directory.&lt;br /&gt;
cd /usr/src/linux&lt;br /&gt;
&lt;br /&gt;
* Configure your kernel:&lt;br /&gt;
** From scratch, then you may choose from&lt;br /&gt;
&lt;br /&gt;
make config (You get prompted for all possible options)&lt;br /&gt;
make menuconfig (You get a nice menu where you may navigate with cursor keys. Needs curses-5.x)&lt;br /&gt;
make xconfig (You may configure in X, of course needs working X installation)&lt;br /&gt;
make gconfig&lt;br /&gt;
make qtconfig&lt;br /&gt;
&lt;br /&gt;
:* From old configuration:&lt;br /&gt;
Copy the config file of the old kernel to ./.config. If you want to come from orignal Slackware kernel, then:&lt;br /&gt;
&lt;br /&gt;
cp /boot/config .config&lt;br /&gt;
&lt;br /&gt;
After that &amp;quot;make oldconfig&amp;quot; to configure new features (you may acceppt all questions with &amp;quot;Enter&amp;quot; to use the default values) and use &amp;quot;make menuconfig&amp;quot; (or any other of the above list) to change things if you like.&lt;br /&gt;
&lt;br /&gt;
Important! Be sure to compile the alsa modules (or you won't have sound). You have also to do this if you used &amp;quot;make oldconfig&amp;quot; (for example using &amp;quot;make menuconfig&amp;quot;) as the original kernel is compiled without alsa.&lt;br /&gt;
&lt;br /&gt;
==Compile and install kernel==&lt;br /&gt;
&lt;br /&gt;
* The real compiling can start:&lt;br /&gt;
&lt;br /&gt;
make (Now, depending on your computer, you may go drinking some coffee, watch a movie or go on your balcony to smoke one ;-) )&lt;br /&gt;
&lt;br /&gt;
If this finished without errors (we assume this) then your kernel and your kernel modules should be compiled.&lt;br /&gt;
&lt;br /&gt;
* Remove symlinks. If you still run your original slackware kernel, then &amp;quot;vmlinuz&amp;quot; and &amp;quot;System.map&amp;quot; are Symlinks to the kernel files. To get sure that we don't override this files, we delete the symlinks&lt;br /&gt;
&lt;br /&gt;
rm /boot/vmlinuz /boot/System.map&lt;br /&gt;
&lt;br /&gt;
* Install the kernel&lt;br /&gt;
&lt;br /&gt;
Install the kernel modules with:&amp;lt;br&amp;gt;&lt;br /&gt;
make modules_install&lt;br /&gt;
&lt;br /&gt;
and the kernel with:&amp;lt;br&amp;gt;&lt;br /&gt;
make install&lt;br /&gt;
&lt;br /&gt;
* If all steps have been done successful you may now use your new (self-made) kernel.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
* Help, the kernel doesn't work!&lt;br /&gt;
&lt;br /&gt;
Choose your backup kernel on lilo, check your kernel configuration and recompile.&lt;br /&gt;
&lt;br /&gt;
* Choose your backup kernel sounds easy, but...&lt;br /&gt;
&lt;br /&gt;
Now you know why you should keep a running kernel before you install a new one. Either your system is as usable as you are able to check the kernel configuration or you may boot from your slackware setup CD, mount your root partition to /mnt, chroot /mnt and recompile your kernel from there or install slackware packages of a running kernel.&lt;br /&gt;
&lt;br /&gt;
[http://www.slackforum.de/wiki/Kernel26Kompilieren german version]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:29:51 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Kernel26Compilation</comments>
		</item>
		<item>
			<title>Windows Partitions</title>
			<link>https://www.slackwiki.com/index.php?title=Windows_Partitions&amp;diff=551</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Windows_Partitions&amp;diff=551</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One of the frequent questions on ##slackware is something along the lines of &amp;quot;How can I allow normal users to access my Windows partition?&amp;quot;  There are *at least* two different ways of doing this.&lt;br /&gt;
&lt;br /&gt;
== Using SlackBuild Scripts ==&lt;br /&gt;
In this example I'm going to use the [http://www.pidgin.im Pidgin] slackbuild. First you find on the mirror in the source directory and download the whole directory of Pidgin:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;mkdir pidgin&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;cd pidgin&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;wget --passive-ftp &amp;lt;nowiki&amp;gt;ftp://slackware.at/slackware-12.1/source/xap/pidgin/*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a FAT partition, you *could* add umask=0000 to /etc/fstab's options, but I personally don't recommend doing that.  It's *your* computer, so you make the call, but I would do something along these lines:&lt;br /&gt;
&lt;br /&gt;
1. If you want *every* user to be able to read and write to the partition, then you can add dmask=0000 and fmask=0111 to /etc/fstab's options and be done with it - problem solved.&lt;br /&gt;
&lt;br /&gt;
 /dev/hda1     /mnt/win98     vfat     rw,dmask=0000,fmask=0111     0   0&lt;br /&gt;
&lt;br /&gt;
The reason for dmask/fmask as opposed to umask is quite obvious (though I hadn't thought about it until elohim on ##slackware pointed it out):  The FAT and NTFS file systems don't &amp;quot;understand&amp;quot; the executable (-x) bit, so it's automatically present on every file in such a filesystem.  There's no need for normal files to be executable (and it can indeed be a security risk), so we use fmask to turn off those permissions.&lt;br /&gt;
&lt;br /&gt;
2. If you only want some users to be able to read and write to the partition, but you want *every* user to have read access, then you'll want something along these lines.  First, create a special group called &amp;quot;windows&amp;quot; (change the name if you wish) by adding it to /etc/group using your favorite editor and add to this group the users you want to have write access.  &lt;br /&gt;
&lt;br /&gt;
 nogroup:x:99:&lt;br /&gt;
 users:x:100:&lt;br /&gt;
 console:x:101:&lt;br /&gt;
 windows:x:102:user1,user2,user3&lt;br /&gt;
&lt;br /&gt;
Next, edit your /etc/fstab line for that partition and specify that it be mounted with group ownership of the &amp;quot;windows&amp;quot; group, and that write access be removed from others.&lt;br /&gt;
&lt;br /&gt;
 /dev/hda1     /mnt/win98     vfat     rw,gid=102,dmask=0002,fmask=0113     0   0&lt;br /&gt;
&lt;br /&gt;
An NTFS partition will be mounted read-only, so you won't have write access for anyone, but the central idea is the same.&lt;br /&gt;
&lt;br /&gt;
If you don't want everyone else to even have read access to the partition, you can easily do that with the above fstab line modified a bit:&lt;br /&gt;
&lt;br /&gt;
 /dev/hda1     /mnt/winXP     ntfs     ro,gid=102,dmask=0227,fmask=0337     0   0&lt;br /&gt;
&lt;br /&gt;
If you prefer write access to the partition, then you can use ntfs-3g instead and something like this:&lt;br /&gt;
All users can read the partition; only members of gid 102 can write:&lt;br /&gt;
 /dev/hda1     /mnt/win98     ntfs-3g     rw,gid=102,dmask=0002,fmask=0113     0   0&lt;br /&gt;
Users of gid can read and write; nobody else can do anything:&lt;br /&gt;
 /dev/hda1     /mnt/winXP     ntfs-3g     rw,gid=102,dmask=0007,fmask=0117     0   0&lt;br /&gt;
&lt;br /&gt;
For more information, see the [[Permissions and Umasks]] and [[Fstab]] pages.&lt;br /&gt;
&lt;br /&gt;
--rworkman (thanks to Erik for the pointers about dmask and fmask)&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:29:35 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Windows_Partitions</comments>
		</item>
		<item>
			<title>SlackBuild Scripts</title>
			<link>https://www.slackwiki.com/index.php?title=SlackBuild_Scripts&amp;diff=550</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=SlackBuild_Scripts&amp;diff=550</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SlackBuild scripts are simple shell scripts which can automate the compiling and packaging of a program from source. &lt;br /&gt;
&lt;br /&gt;
== Using SlackBuild Scripts ==&lt;br /&gt;
In this example I'm going to use the [http://www.pidgin.im Pidgin] slackbuild. First you find on the mirror in the source directory and download the whole directory of Pidgin:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;mkdir pidgin&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;cd pidgin&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;wget --passive-ftp &amp;lt;nowiki&amp;gt;ftp://slackware.at/slackware-12.1/source/xap/pidgin/*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While not necessary to compile and create packages on Slackware, SlackBuilds serve as tools for scripting the compiling and packaging processes, which are often repetitive. Just as importantly, SlackBuilds also act as documentation of compile-time options and configurations for that particular package. For that reason, official Slackware packages come with SlackBuilds bundled with the source code, and the inclusion of a SlackBuild is desirable in third-party packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using SlackBuild Scripts ==&lt;br /&gt;
In this example I'm going to use the [http://www.pidgin.im Pidgin] slackbuild. First you find on the mirror in the source directory and download the whole directory of Pidgin:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;mkdir pidgin&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;cd pidgin&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;wget --passive-ftp &amp;lt;nowiki&amp;gt;ftp://slackware.at/slackware-12.1/source/xap/pidgin/*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This downloads the files needed for Slackware scripts.  The same idea applies for SlackBuild scripts from other&lt;br /&gt;
sources - you generally need to download all of the files in the directory that contains the build script.  For example, in the pidgin source directory, you would need the following files:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;pidgin-2.4.1.tar.bz2  pidgin-encryption-3.0.tar.gz  pidgin.SlackBuild*  slack-desc &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There will sometimes be other files, such as doinst.sh, diff.gz patch files, and rc.* scripts in this directory.&lt;br /&gt;
&lt;br /&gt;
Now, say you want to get the newest version of pidgin? Well, you download the tar.bz2 file (in Pidgin, the script uses tar.bz2). Now you open up pidgin.Slackbuild:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;VERSION=2.4.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the line we are looking at. Now we can change this to&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;VERSION=2.4.2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can edit the compile flags and other cool things not covered here. Now that we have downloaded and edited the SlackBuild script, let's make it executable:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;chmod +x pidgin.SlackBuild&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now this is executable, and we want to run as root for permissions and other reasons so we want to become root:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we start the script, and this will compile Pidgin and make a Slackware package.  Depending on how the &lt;br /&gt;
script is written, the resulting package will be in /tmp, some directory of /tmp, or perhaps some&lt;br /&gt;
other location - have a look at the SlackBuild script for some hints if you can't find the package that&lt;br /&gt;
was built.  &lt;br /&gt;
&lt;br /&gt;
Once you find the package, you simply use 'installpkg' to install it normally (and you probably want to&lt;br /&gt;
move it somewhere else on your system for safekeeping).&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;./pidgin.SlackBuild&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=SlackBuild Archives=&lt;br /&gt;
;* http://www.slackbuilds.org&lt;br /&gt;
;* http://repository.slacky.eu&lt;br /&gt;
;* http://www.slackware.com/~alien/slackbuilds/&lt;br /&gt;
;* http://www.slackbuilds.net/slackbuilds/&lt;br /&gt;
;* http://slackbuild.strangeworlds.co.uk/&lt;br /&gt;
&lt;br /&gt;
=Other Resources=&lt;br /&gt;
For a bit more detailed tutorial, see this entry: [[Writing A SlackBuild Script]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:29:16 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:SlackBuild_Scripts</comments>
		</item>
		<item>
			<title>Building A Package</title>
			<link>https://www.slackwiki.com/index.php?title=Building_A_Package&amp;diff=549</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Building_A_Package&amp;diff=549</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
&lt;br /&gt;
= Intro =&lt;br /&gt;
&lt;br /&gt;
This is a rough outline for building Slackware packages. Some steps may not be neccessary, some steps might be missing. Use the discussion page for side-notes such as using slacktrack (when DESTDIR fails) and other utilities like checkinstall.&lt;br /&gt;
&lt;br /&gt;
== The good and decent way ==&lt;br /&gt;
&lt;br /&gt;
Configure and compile the source as you usually do:&lt;br /&gt;
 ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Make a temporary destination directory available:&lt;br /&gt;
 mkdir /tmp/build&lt;br /&gt;
&lt;br /&gt;
Install into the temporary directory:&lt;br /&gt;
 make install DESTDIR=/tmp/build&lt;br /&gt;
&lt;br /&gt;
Now strip libs/bins within the temporary directory:&lt;br /&gt;
 strip -s /tmp/build/usr/lib/* /tmp/build/usr/bin/*&lt;br /&gt;
&lt;br /&gt;
You also want to make sure that anything in &amp;lt;tt&amp;gt;/usr/man&amp;lt;/tt&amp;gt; is gzipped before you make the package:&lt;br /&gt;
 gzip -9 /tmp/build/usr/man/man?/*.?&lt;br /&gt;
&lt;br /&gt;
Create the &amp;lt;tt&amp;gt;install&amp;lt;/tt&amp;gt; directory, this is where the description and install script will be stored:&lt;br /&gt;
 cd /tmp/build&lt;br /&gt;
 mkdir install&lt;br /&gt;
 cd install&lt;br /&gt;
&lt;br /&gt;
Using a text editor (or a [http://slack-desc.sourceforge.net/ tool]]), create a file called [[slack-desc]] and fill it with the following contents:&lt;br /&gt;
&lt;br /&gt;
    |-----handy-ruler------------------------------------------------------|&lt;br /&gt;
 app: Application Name&lt;br /&gt;
 (Short/Brief description)&lt;br /&gt;
 app:&lt;br /&gt;
 app: Enter a description of the package you are building.&lt;br /&gt;
 app: All 11 &amp;quot;app:&amp;quot; lines must be present&lt;br /&gt;
 app: &amp;quot;app&amp;quot; needs to be your application name.&lt;br /&gt;
 app: The handy-ruler is there to help you, these lines should not exceed&lt;br /&gt;
 app: 79 characters.&lt;br /&gt;
 app:&lt;br /&gt;
 app:&lt;br /&gt;
 app:&lt;br /&gt;
 app:&lt;br /&gt;
&lt;br /&gt;
Create the actual package:&lt;br /&gt;
 cd /tmp/build&lt;br /&gt;
 makepkg ../app-version-arch-tag.tgz&lt;br /&gt;
&lt;br /&gt;
''(The dashes should appear as above, so if the version has a subversion like say &amp;quot;1.0 RC2&amp;quot; make sure you use 1.0_RC2 not 1.0-RC2. The arch should be something like &amp;quot;i486&amp;quot; for example. The tag should consist of the build number and your initals, e.g. 1zb for Zaphod Beeblebrox's first build, 2zb for his second build, etc.  Official slackware packages have only numbers as tags.)''&lt;br /&gt;
&lt;br /&gt;
When prompted to recreate symbolic links, say &amp;lt;tt&amp;gt;yes&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
When prompted to reset permissions, say &amp;lt;tt&amp;gt;no&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Note: Using '''makepkg -l y -c n''' will give you the same behaviour as answering yes to the symlinks question, and no to the permissions question.''&lt;br /&gt;
&lt;br /&gt;
If all went well, you can now install the package.&lt;br /&gt;
 cd ..&lt;br /&gt;
 installpkg app-version-arch-tag.tgz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # HOW TO EDIT THIS FILE:&lt;br /&gt;
 # The &amp;quot;handy ruler&amp;quot; below makes it easier to edit a package description.  Line&lt;br /&gt;
 # up the first '|' above the ':' following the base package name, and the '|' on&lt;br /&gt;
 # the right side marks the last column you can put a character in.  You must make&lt;br /&gt;
 # exactly 11 lines for the formatting to be correct.  It's &lt;br /&gt;
also customary to&lt;br /&gt;
 # leave one space after the ':'.&lt;br /&gt;
== The &amp;quot;i don't have time&amp;quot; way ==&lt;br /&gt;
&lt;br /&gt;
Fortunately, Slackware are pretty flexible too. If you don't mind much about what is the source (beware!) that you're compiling you can burn some stages and do something like this: &lt;br /&gt;
 ./configure --prefix=/usr&lt;br /&gt;
 make install DESTDIR=$(pwd)/PACKAGE&lt;br /&gt;
 cd $(pwd)/PACKAGE&lt;br /&gt;
 makepkg -l y -c n ../app-version-arch-tag.tgz&lt;br /&gt;
 installpkg ../app-version-arch-tag.tgz&lt;br /&gt;
&lt;br /&gt;
Of course, you will have a package without description, (probably) uncompressed man pages and unstripped binaries.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
For more information, also see the pages on [[SlackBuild_Scripts]] and [[Different_Approach_To_Buildscripts]].&lt;br /&gt;
----&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:29:03 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Building_A_Package</comments>
		</item>
		<item>
			<title>Slack-desc</title>
			<link>https://www.slackwiki.com/index.php?title=Slack-desc&amp;diff=548</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Slack-desc&amp;diff=548</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
A proper slack-desc file should be written as follows:&lt;br /&gt;
&lt;br /&gt;
 # HOW TO EDIT THIS FILE:&lt;br /&gt;
 # The &amp;quot;handy ruler&amp;quot; below makes it easier to edit a package description.  Line&lt;br /&gt;
 # up the first '|' above the ':' following the base package name, and the '|' on&lt;br /&gt;
 # the right side marks the last column you can put a character in.  You must make&lt;br /&gt;
 # exactly 11 lines for the formatting to be correct.  It's &lt;br /&gt;
also customary to&lt;br /&gt;
 # leave one space after the ':'.&lt;br /&gt;
 &lt;br /&gt;
 # HOW TO EDIT THIS FILE:&lt;br /&gt;
 # The &amp;quot;handy ruler&amp;quot; below makes it easier to edit a package description.  Line&lt;br /&gt;
 # up the first '|' above the ':' following the base package name, and the '|' on&lt;br /&gt;
 # the right side marks the last column you can put a character in.  You must make&lt;br /&gt;
 # exactly 11 lines for the formatting to be correct.  It's &lt;br /&gt;
also customary to&lt;br /&gt;
 # leave one space after the ':'.&lt;br /&gt;
        |-----handy-ruler------------------------------------------------------|&lt;br /&gt;
 appname: appname (Short description of the application)&lt;br /&gt;
 appname:      &amp;lt;this line is generally left blank&amp;gt;&lt;br /&gt;
 appname: Description of application  -  this description should be fairly&lt;br /&gt;
 appname: in-depth; in other words, make it clear what the package does (and &lt;br /&gt;
 appname: maybe include relevant links and/or instructions if there's room),&lt;br /&gt;
 appname: but don't get too verbose.  &lt;br /&gt;
 appname: This file can have a maximum of eleven (11) lines of text preceded by&lt;br /&gt;
 appname: the &amp;quot;appname: &amp;quot; designation.  &lt;br /&gt;
 appname:&lt;br /&gt;
 appname: It's a good idea to include a link to the application's homepage too.&lt;br /&gt;
 appname:&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;appname&amp;quot; string must *exactly* match the application name portion of the &lt;br /&gt;
Slackware package (for example, a package titled &amp;quot;gaim-1.5-i486-1.tgz&amp;quot; must have &lt;br /&gt;
a slack-desc file with the &amp;lt;appname&amp;gt; string of &amp;quot;gaim: &amp;quot; rather than &amp;quot;Gaim: &amp;quot; or &lt;br /&gt;
&amp;quot;GAIM: &amp;quot; or something else.&lt;br /&gt;
&lt;br /&gt;
The first line ''must'' show the application name followed by a short&lt;br /&gt;
description (enclosed in parentheses).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;handy ruler&amp;quot; is meant to stop you at 79 characters, because the standard&lt;br /&gt;
console is 80x25 and if you go beyond this the words will wrap.&lt;br /&gt;
&lt;br /&gt;
The space after the : is needed only when there is text after the :&lt;br /&gt;
In the above example lines 9 &amp;amp; 11 should not have a space after the :&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
1. There is a command-line tool that automates the creation of slack-desc files and helps you generate legal slack-desc files with minimal effort:&lt;br /&gt;
http://slack-desc.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
2. A web-based tool is also available at: http://www.linuxpackages.net/slackcreator.php&lt;br /&gt;
=See Also=&lt;br /&gt;
 man makepkg&lt;br /&gt;
 man pkgtool&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:28:05 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Slack-desc</comments>
		</item>
		<item>
			<title>Slack-desc</title>
			<link>https://www.slackwiki.com/index.php?title=Slack-desc&amp;diff=547</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Slack-desc&amp;diff=547</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
A proper slack-desc file should be written as follows:&lt;br /&gt;
&lt;br /&gt;
 # HOW TO EDIT THIS FILE:&lt;br /&gt;
 # The &amp;quot;handy ruler&amp;quot; below makes it easier to edit a package description.  Line&lt;br /&gt;
 # up the first '|' above the ':' following the base package name, and the '|' on&lt;br /&gt;
 # the right side marks the last column you can put a character in.  You must make&lt;br /&gt;
 # exactly 11 lines for the formatting to be correct.  It's &lt;br /&gt;
also customary to&lt;br /&gt;
 # leave one space after the ':'.&lt;br /&gt;
 &lt;br /&gt;
        |-----handy-ruler------------------------------------------------------|&lt;br /&gt;
 appname: appname (Short description of the application)&lt;br /&gt;
 appname:      &amp;lt;this line is generally left blank&amp;gt;&lt;br /&gt;
 appname: Description of application  -  this description should be fairly&lt;br /&gt;
 appname: in-depth; in other words, make it clear what the package does (and &lt;br /&gt;
 appname: maybe include relevant links and/or instructions if there's room),&lt;br /&gt;
 appname: but don't get too verbose.  &lt;br /&gt;
 appname: This file can have a maximum of eleven (11) lines of text preceded by&lt;br /&gt;
 appname: the &amp;quot;appname: &amp;quot; designation.  &lt;br /&gt;
 appname:&lt;br /&gt;
 appname: It's a good idea to include a link to the application's homepage too.&lt;br /&gt;
 appname:&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;appname&amp;quot; string must *exactly* match the application name portion of the &lt;br /&gt;
Slackware package (for example, a package titled &amp;quot;gaim-1.5-i486-1.tgz&amp;quot; must have &lt;br /&gt;
a slack-desc file with the &amp;lt;appname&amp;gt; string of &amp;quot;gaim: &amp;quot; rather than &amp;quot;Gaim: &amp;quot; or &lt;br /&gt;
&amp;quot;GAIM: &amp;quot; or something else.&lt;br /&gt;
&lt;br /&gt;
The first line ''must'' show the application name followed by a short&lt;br /&gt;
description (enclosed in parentheses).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;handy ruler&amp;quot; is meant to stop you at 79 characters, because the standard&lt;br /&gt;
console is 80x25 and if you go beyond this the words will wrap.&lt;br /&gt;
&lt;br /&gt;
The space after the : is needed only when there is text after the :&lt;br /&gt;
In the above example lines 9 &amp;amp; 11 should not have a space after the :&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
1. There is a command-line tool that automates the creation of slack-desc files and helps you generate legal slack-desc files with minimal effort:&lt;br /&gt;
http://slack-desc.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
2. A web-based tool is also available at: http://www.linuxpackages.net/slackcreator.php&lt;br /&gt;
=See Also=&lt;br /&gt;
 man makepkg&lt;br /&gt;
 man pkgtool&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:26:34 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Slack-desc</comments>
		</item>
		<item>
			<title>Building A Package</title>
			<link>https://www.slackwiki.com/index.php?title=Building_A_Package&amp;diff=546</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Building_A_Package&amp;diff=546</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
&lt;br /&gt;
= Intro =&lt;br /&gt;
&lt;br /&gt;
This is a rough outline for building Slackware packages. Some steps may not be neccessary, some steps might be missing. Use the discussion page for side-notes such as using slacktrack (when DESTDIR fails) and other utilities like checkinstall.&lt;br /&gt;
&lt;br /&gt;
== The good and decent way ==&lt;br /&gt;
&lt;br /&gt;
Configure and compile the source as you usually do:&lt;br /&gt;
 ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Make a temporary destination directory available:&lt;br /&gt;
 mkdir /tmp/build&lt;br /&gt;
&lt;br /&gt;
Install into the temporary directory:&lt;br /&gt;
 make install DESTDIR=/tmp/build&lt;br /&gt;
&lt;br /&gt;
Now strip libs/bins within the temporary directory:&lt;br /&gt;
 strip -s /tmp/build/usr/lib/* /tmp/build/usr/bin/*&lt;br /&gt;
&lt;br /&gt;
You also want to make sure that anything in &amp;lt;tt&amp;gt;/usr/man&amp;lt;/tt&amp;gt; is gzipped before you make the package:&lt;br /&gt;
 gzip -9 /tmp/build/usr/man/man?/*.?&lt;br /&gt;
&lt;br /&gt;
Create the &amp;lt;tt&amp;gt;install&amp;lt;/tt&amp;gt; directory, this is where the description and install script will be stored:&lt;br /&gt;
 cd /tmp/build&lt;br /&gt;
 mkdir install&lt;br /&gt;
 cd install&lt;br /&gt;
&lt;br /&gt;
Using a text editor (or a [http://slack-desc.sourceforge.net/ tool]]), create a file called [[slack-desc]] and fill it with the following contents:&lt;br /&gt;
&lt;br /&gt;
    |-----handy-ruler------------------------------------------------------|&lt;br /&gt;
 app: Application Name&lt;br /&gt;
 (Short/Brief description)&lt;br /&gt;
 app:&lt;br /&gt;
 app: Enter a description of the package you are building.&lt;br /&gt;
 app: All 11 &amp;quot;app:&amp;quot; lines must be present&lt;br /&gt;
 app: &amp;quot;app&amp;quot; needs to be your application name.&lt;br /&gt;
 app: The handy-ruler is there to help you, these lines should not exceed&lt;br /&gt;
 app: 79 characters.&lt;br /&gt;
 app:&lt;br /&gt;
 app:&lt;br /&gt;
 app:&lt;br /&gt;
 app:&lt;br /&gt;
&lt;br /&gt;
Create the actual package:&lt;br /&gt;
 cd /tmp/build&lt;br /&gt;
 makepkg ../app-version-arch-tag.tgz&lt;br /&gt;
&lt;br /&gt;
''(The dashes should appear as above, so if the version has a subversion like say &amp;quot;1.0 RC2&amp;quot; make sure you use 1.0_RC2 not 1.0-RC2. The arch should be something like &amp;quot;i486&amp;quot; for example. The tag should consist of the build number and your initals, e.g. 1zb for Zaphod Beeblebrox's first build, 2zb for his second build, etc.  Official slackware packages have only numbers as tags.)''&lt;br /&gt;
&lt;br /&gt;
When prompted to recreate symbolic links, say &amp;lt;tt&amp;gt;yes&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
When prompted to reset permissions, say &amp;lt;tt&amp;gt;no&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Note: Using '''makepkg -l y -c n''' will give you the same behaviour as answering yes to the symlinks question, and no to the permissions question.''&lt;br /&gt;
&lt;br /&gt;
If all went well, you can now install the package.&lt;br /&gt;
 cd ..&lt;br /&gt;
 installpkg app-version-arch-tag.tgz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The &amp;quot;i don't have time&amp;quot; way ==&lt;br /&gt;
&lt;br /&gt;
Fortunately, Slackware are pretty flexible too. If you don't mind much about what is the source (beware!) that you're compiling you can burn some stages and do something like this: &lt;br /&gt;
 ./configure --prefix=/usr&lt;br /&gt;
 make install DESTDIR=$(pwd)/PACKAGE&lt;br /&gt;
 cd $(pwd)/PACKAGE&lt;br /&gt;
 makepkg -l y -c n ../app-version-arch-tag.tgz&lt;br /&gt;
 installpkg ../app-version-arch-tag.tgz&lt;br /&gt;
&lt;br /&gt;
Of course, you will have a package without description, (probably) uncompressed man pages and unstripped binaries.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
For more information, also see the pages on [[SlackBuild_Scripts]] and [[Different_Approach_To_Buildscripts]].&lt;br /&gt;
----&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:26:22 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Building_A_Package</comments>
		</item>
		<item>
			<title>SlackBuild Scripts</title>
			<link>https://www.slackwiki.com/index.php?title=SlackBuild_Scripts&amp;diff=545</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=SlackBuild_Scripts&amp;diff=545</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SlackBuild scripts are simple shell scripts which can automate the compiling and packaging of a program from source. &lt;br /&gt;
&lt;br /&gt;
While not necessary to compile and create packages on Slackware, SlackBuilds serve as tools for scripting the compiling and packaging processes, which are often repetitive. Just as importantly, SlackBuilds also act as documentation of compile-time options and configurations for that particular package. For that reason, official Slackware packages come with SlackBuilds bundled with the source code, and the inclusion of a SlackBuild is desirable in third-party packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using SlackBuild Scripts ==&lt;br /&gt;
In this example I'm going to use the [http://www.pidgin.im Pidgin] slackbuild. First you find on the mirror in the source directory and download the whole directory of Pidgin:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;mkdir pidgin&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;cd pidgin&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;wget --passive-ftp &amp;lt;nowiki&amp;gt;ftp://slackware.at/slackware-12.1/source/xap/pidgin/*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This downloads the files needed for Slackware scripts.  The same idea applies for SlackBuild scripts from other&lt;br /&gt;
sources - you generally need to download all of the files in the directory that contains the build script.  For example, in the pidgin source directory, you would need the following files:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;pidgin-2.4.1.tar.bz2  pidgin-encryption-3.0.tar.gz  pidgin.SlackBuild*  slack-desc &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There will sometimes be other files, such as doinst.sh, diff.gz patch files, and rc.* scripts in this directory.&lt;br /&gt;
&lt;br /&gt;
Now, say you want to get the newest version of pidgin? Well, you download the tar.bz2 file (in Pidgin, the script uses tar.bz2). Now you open up pidgin.Slackbuild:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;VERSION=2.4.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the line we are looking at. Now we can change this to&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;VERSION=2.4.2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can edit the compile flags and other cool things not covered here. Now that we have downloaded and edited the SlackBuild script, let's make it executable:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;chmod +x pidgin.SlackBuild&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now this is executable, and we want to run as root for permissions and other reasons so we want to become root:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we start the script, and this will compile Pidgin and make a Slackware package.  Depending on how the &lt;br /&gt;
script is written, the resulting package will be in /tmp, some directory of /tmp, or perhaps some&lt;br /&gt;
other location - have a look at the SlackBuild script for some hints if you can't find the package that&lt;br /&gt;
was built.  &lt;br /&gt;
&lt;br /&gt;
Once you find the package, you simply use 'installpkg' to install it normally (and you probably want to&lt;br /&gt;
move it somewhere else on your system for safekeeping).&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;./pidgin.SlackBuild&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=SlackBuild Archives=&lt;br /&gt;
;* http://www.slackbuilds.org&lt;br /&gt;
;* http://repository.slacky.eu&lt;br /&gt;
;* http://www.slackware.com/~alien/slackbuilds/&lt;br /&gt;
;* http://www.slackbuilds.net/slackbuilds/&lt;br /&gt;
;* http://slackbuild.strangeworlds.co.uk/&lt;br /&gt;
&lt;br /&gt;
=Other Resources=&lt;br /&gt;
For a bit more detailed tutorial, see this entry: [[Writing A SlackBuild Script]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:26:18 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:SlackBuild_Scripts</comments>
		</item>
		<item>
			<title>Windows Partitions</title>
			<link>https://www.slackwiki.com/index.php?title=Windows_Partitions&amp;diff=544</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Windows_Partitions&amp;diff=544</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One of the frequent questions on ##slackware is something along the lines of &amp;quot;How can I allow normal users to access my Windows partition?&amp;quot;  There are *at least* two different ways of doing this.&lt;br /&gt;
&lt;br /&gt;
For a FAT partition, you *could* add umask=0000 to /etc/fstab's options, but I personally don't recommend doing that.  It's *your* computer, so you make the call, but I would do something along these lines:&lt;br /&gt;
&lt;br /&gt;
1. If you want *every* user to be able to read and write to the partition, then you can add dmask=0000 and fmask=0111 to /etc/fstab's options and be done with it - problem solved.&lt;br /&gt;
&lt;br /&gt;
 /dev/hda1     /mnt/win98     vfat     rw,dmask=0000,fmask=0111     0   0&lt;br /&gt;
&lt;br /&gt;
The reason for dmask/fmask as opposed to umask is quite obvious (though I hadn't thought about it until elohim on ##slackware pointed it out):  The FAT and NTFS file systems don't &amp;quot;understand&amp;quot; the executable (-x) bit, so it's automatically present on every file in such a filesystem.  There's no need for normal files to be executable (and it can indeed be a security risk), so we use fmask to turn off those permissions.&lt;br /&gt;
&lt;br /&gt;
2. If you only want some users to be able to read and write to the partition, but you want *every* user to have read access, then you'll want something along these lines.  First, create a special group called &amp;quot;windows&amp;quot; (change the name if you wish) by adding it to /etc/group using your favorite editor and add to this group the users you want to have write access.  &lt;br /&gt;
&lt;br /&gt;
 nogroup:x:99:&lt;br /&gt;
 users:x:100:&lt;br /&gt;
 console:x:101:&lt;br /&gt;
 windows:x:102:user1,user2,user3&lt;br /&gt;
&lt;br /&gt;
Next, edit your /etc/fstab line for that partition and specify that it be mounted with group ownership of the &amp;quot;windows&amp;quot; group, and that write access be removed from others.&lt;br /&gt;
&lt;br /&gt;
 /dev/hda1     /mnt/win98     vfat     rw,gid=102,dmask=0002,fmask=0113     0   0&lt;br /&gt;
&lt;br /&gt;
An NTFS partition will be mounted read-only, so you won't have write access for anyone, but the central idea is the same.&lt;br /&gt;
&lt;br /&gt;
If you don't want everyone else to even have read access to the partition, you can easily do that with the above fstab line modified a bit:&lt;br /&gt;
&lt;br /&gt;
 /dev/hda1     /mnt/winXP     ntfs     ro,gid=102,dmask=0227,fmask=0337     0   0&lt;br /&gt;
&lt;br /&gt;
If you prefer write access to the partition, then you can use ntfs-3g instead and something like this:&lt;br /&gt;
All users can read the partition; only members of gid 102 can write:&lt;br /&gt;
 /dev/hda1     /mnt/win98     ntfs-3g     rw,gid=102,dmask=0002,fmask=0113     0   0&lt;br /&gt;
Users of gid can read and write; nobody else can do anything:&lt;br /&gt;
 /dev/hda1     /mnt/winXP     ntfs-3g     rw,gid=102,dmask=0007,fmask=0117     0   0&lt;br /&gt;
&lt;br /&gt;
For more information, see the [[Permissions and Umasks]] and [[Fstab]] pages.&lt;br /&gt;
&lt;br /&gt;
--rworkman (thanks to Erik for the pointers about dmask and fmask)&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:25:36 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Windows_Partitions</comments>
		</item>
		<item>
			<title>Writing A SlackBuild Script</title>
			<link>https://www.slackwiki.com/index.php?title=Writing_A_SlackBuild_Script&amp;diff=543</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Writing_A_SlackBuild_Script&amp;diff=543</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
 Originally written by Florian Mueller jjdm@jjdm.org&lt;br /&gt;
 Substantial cleanup and enhancement by Robby Workman (rworkman)&lt;br /&gt;
&lt;br /&gt;
If you use slackware as your main operating system, you have probably wanted to install quite a few applications which are not available in the official slackware.com or even third-party repositories like linuxpackages.net, or perhaps you just don't like using third-party packages.  In this situation, you have several options on how to install the application:&lt;br /&gt;
&lt;br /&gt;
 * ./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;br /&gt;
 * use checkinstall&lt;br /&gt;
 * use installwatch&lt;br /&gt;
 * compile and use makepkg by hand&lt;br /&gt;
 * write a SlackBuild script&lt;br /&gt;
&lt;br /&gt;
I will go through the last option: writing [[SlackBuild Scripts]] (which combines the best qualities of all the other aforementioned methods). With a SlackBuild script, you have the build process automated, which will allow you to easily do later upgrades or patches to the package. SlackBuild scripts are also the method by which Patrick Volkerding builds all of the official packages for Slackware. If you look at the various scripts from different sources, you will notice that there is generally an application-independent portion of a script and an application-specific portion of the script.&lt;br /&gt;
&lt;br /&gt;
I cannot teach you how to build the &amp;quot;perfect&amp;quot; package, as reaching that goal requires fairly in-depth knowledge of the Slackware operating system.  You must consider the interactions of your proposed package with all of the other packages within the distribution; they must be integrated seamlessly.  What I can teach you is how to build a package that works and which stays true to the &amp;quot;Slackware Way.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;But it takes so much time!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
It will take approximately thirty minutes to go through this tutorial and about fifteen minutes to create each package (actual compile process not included), but the time you save in the future (you want to create a newer version of the package) makes the initial time expenditure worth it.&lt;br /&gt;
&lt;br /&gt;
= The Slackware package structure =&lt;br /&gt;
&lt;br /&gt;
See [[Packages#Slackware Package Layout]]&lt;br /&gt;
&lt;br /&gt;
= Setting up your build environment =&lt;br /&gt;
&lt;br /&gt;
See [[Build_Environment]] for examples of how various users do this.&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
&lt;br /&gt;
Hopefully, everything is now clear about Slackware package structure, and you have set up a clean build environment, so we'll begin the process of building a package with a SlackBuild script.&lt;br /&gt;
&lt;br /&gt;
For this example, we'll create a package of latex2html - I made my homepage with that tool.&lt;br /&gt;
&lt;br /&gt;
First, you have to create a directory named &amp;lt;build_environment&amp;gt;/latex2html/. Get the most recent source code release of latex2html place it in this directory.  Note that use of wget below to obtain the most recent source code is optional - you can just as well use your favorite web browser to download it, and then move it into the correct directory.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;build_environment&amp;gt;&lt;br /&gt;
 $ mkdir latex2html&lt;br /&gt;
 $ cd latex2html&lt;br /&gt;
 $ wget http://saftsack.fs.uni-bayreuth.de/~latex2ht/current/latex2html-2002-2-1.tar.gz # 05.02.2005&lt;br /&gt;
&lt;br /&gt;
Next, we'll create some other needed files with touch.  If you're not familiar with touch, see:&lt;br /&gt;
 man touch&lt;br /&gt;
Note that the *.SlackBuild file will always contain the name of the application for which it's written; for example, gaim would have gaim.SlackBuild.&lt;br /&gt;
&lt;br /&gt;
 $ touch latex2html.SlackBuild&lt;br /&gt;
 $ touch slack-desc&lt;br /&gt;
&lt;br /&gt;
Extract the source code of the application, because we'll need to look at the configure script later on to determine what options we need to pass to it.&lt;br /&gt;
&lt;br /&gt;
 $ tar -xzf latex2html-2002-2-1.tar.gz || exit 1&lt;br /&gt;
&lt;br /&gt;
= Writing the slack-desc file =&lt;br /&gt;
&lt;br /&gt;
See this [[Slack-desc]] page on SlackWiki.org for instructions on how to write a proper slack-desc file.&lt;br /&gt;
&lt;br /&gt;
= Writing the SlackBuild script =&lt;br /&gt;
&lt;br /&gt;
This is the section which takes the most time, and I'll go through it with you step by step.  When you build more packages, you'll probably be able to just copy an existing SlackBuild script and customize it. First, you need to understand that you can write your SlackBuild script in any manner you choose so long as it creates a working package; the method described here is more or less the way Pat Volkerding [[http://slackware.com/~volkerdi]] does it, but even Pat has several different styles for writing the official SlackBuild scripts.  Therefore, if you see something you would do a different way, feel free to do it that way - it's okay.&lt;br /&gt;
&lt;br /&gt;
===Initial Setup===&lt;br /&gt;
&lt;br /&gt;
Open the file latex2html.SlackBuild with your favourite editor.  What follows below is a piece by piece walk-through of a working SlackBuild script.  You may certainly paste the exact contents of those pieces, but in the author's opinion, you have a better chance of understanding it if you write everything yourself.&lt;br /&gt;
&lt;br /&gt;
First, you'll need to set your shell interpreter.  This should be /bin/sh, as *every* Slackware system is guaranteed to have this shell installed, and you want maximum portability.  For this same reason, be careful not to use any extensions and/or syntax that is customized for your particular shell (bash, zsh, or whatever), as it won't be interpreted correctly.  The '-e' flag tells the shell to exit on any error; this helps with both debugging your script as well as ensuring your script does not proceed in an unknown state.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh -e&lt;br /&gt;
&lt;br /&gt;
You might want to include a license of some sort with your SlackBuild script (preferably a GPL or BSD-style license), but at a minimum, you'll want something like this:&lt;br /&gt;
&lt;br /&gt;
 #&amp;lt;your name&amp;gt; revision date yyyy/mm/dd&lt;br /&gt;
&lt;br /&gt;
With the next few lines, we set some variables that will be used throughout the script. First is the &amp;quot;CWD&amp;quot; variable; in our case, CWD will be &amp;lt;build_environment&amp;gt;/latex2html/. We also test if the TMP variable is set, and if not, we set it to /tmp.&lt;br /&gt;
&lt;br /&gt;
 #Set initial variables:	&lt;br /&gt;
 &lt;br /&gt;
 CWD=$(pwd)&lt;br /&gt;
 if [ &amp;quot;$TMP&amp;quot; = &amp;quot;&amp;quot; ]; then&lt;br /&gt;
   TMP=/tmp&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
Some people like to build in a subdirectory of /tmp (such as /tmp/build), but that's up to you.&lt;br /&gt;
 &lt;br /&gt;
 # The version which appears in the application's filename&lt;br /&gt;
 VERSION=2002-2-1 	&lt;br /&gt;
 &lt;br /&gt;
 # If the version conflicts with the Slackware package standard&lt;br /&gt;
 # The dash character (&amp;quot;-&amp;quot;) is not allowed in the VERSION string&lt;br /&gt;
 # You can set the PKG_VERSION to something else than VERSION&lt;br /&gt;
 PKG_VERSION=2002.2.1 # the version which appears in the package name. &lt;br /&gt;
 &lt;br /&gt;
 ARCH=${ARCH:-i486} # the architecture on which you want to build your package	&lt;br /&gt;
 &lt;br /&gt;
 # First digit is the build number, which specifies how many times it has been built.	&lt;br /&gt;
 # Second string is the short form of the authors name, typical three initials:w&lt;br /&gt;
 BUILD=${BUILD:-1_rlw}&lt;br /&gt;
 &lt;br /&gt;
 # The application's name&lt;br /&gt;
 APP=latex2html&lt;br /&gt;
 &lt;br /&gt;
 # The installation directory of the package (where its actual directory&lt;br /&gt;
 # structure will be created) &lt;br /&gt;
 PKG=$TMP/package-$APP&lt;br /&gt;
&lt;br /&gt;
Set SLKCFLAGS (which will be used for both CFLAGS and CXXFLAGS).  If you are building on a system with an earlier version of gcc than 3.4.x, then you'll need to use &amp;quot;-mcpu&amp;quot; instead of &amp;quot;-mtune&amp;quot; below.&lt;br /&gt;
&lt;br /&gt;
 if [ &amp;quot;$ARCH&amp;quot; = &amp;quot;i486&amp;quot; ]; then&lt;br /&gt;
   SLKCFLAGS=&amp;quot;-O2 -march=i486 -mtune=i686&amp;quot;&lt;br /&gt;
  elif [ &amp;quot;$ARCH&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then&lt;br /&gt;
   SLKCFLAGS=&amp;quot;-O2 -fPIC&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
The section just finished sets up a few application-specific variables. When you want to create a package of some other application, you can usually just change the variables, and most of the further steps will work automatically.&lt;br /&gt;
&lt;br /&gt;
=== Extract Sources ===&lt;br /&gt;
&lt;br /&gt;
 # Delete the leftover directories if they exist (due to a previous build)&lt;br /&gt;
 # and (re)create the packaging directory&lt;br /&gt;
 rm -rf $PKG &lt;br /&gt;
 mkdir -p $TMP $PKG&lt;br /&gt;
 rm -rf $TMP/$APP-$VERSION&lt;br /&gt;
 &lt;br /&gt;
 # Change to the TMP directory&lt;br /&gt;
 cd $TMP || exit 1&lt;br /&gt;
  &lt;br /&gt;
 # Extract the application source in TMP&lt;br /&gt;
 # Note: if your application comes as a tar.bz2, you need tar -jxvf&lt;br /&gt;
 tar -zxvf $CWD/$APP-$VERSION.tar.gz || exit 1&lt;br /&gt;
 &lt;br /&gt;
 # Change to the application source directory&lt;br /&gt;
 cd $APP-$VERSION || exit 1&lt;br /&gt;
  &lt;br /&gt;
 # Change ownership and permissions if necessary&lt;br /&gt;
 # This may not be needed in some source tarballs, but it never hurts&lt;br /&gt;
 chown -R root:root .&lt;br /&gt;
 chmod -R u+w,go+r-w,a-s .&lt;br /&gt;
&lt;br /&gt;
===Configure and Compile Sources===&lt;br /&gt;
&lt;br /&gt;
 # Set configure options&lt;br /&gt;
 # If your app is written in C++, you'll also need to add a line for CXXFLAGS&lt;br /&gt;
 CFLAGS=&amp;quot;$SLKCFLAGS&amp;quot; \&lt;br /&gt;
   ./configure \&lt;br /&gt;
   --prefix=/usr \&lt;br /&gt;
   --sysconfdir=/etc \&lt;br /&gt;
   --localstatedir=/var \&lt;br /&gt;
   --with-perl=/usr/bin/perl \&lt;br /&gt;
   --enable-eps \&lt;br /&gt;
   --enable-gif \&lt;br /&gt;
   --enable-png \&lt;br /&gt;
   --build=$ARCH-slackware-linux \&lt;br /&gt;
   --host=$ARCH-slackware-linux &lt;br /&gt;
 &lt;br /&gt;
 # compile the source, but exit if anything goes wrong&lt;br /&gt;
 make || exit&lt;br /&gt;
  &lt;br /&gt;
 # Install everything into the package directory, but exit if anything goes wrong&lt;br /&gt;
 make install DESTDIR=$PKG || exit&lt;br /&gt;
&lt;br /&gt;
There are three configure options I always set:&lt;br /&gt;
&lt;br /&gt;
* --prefix=/usr&lt;br /&gt;
* --sysconfdir=/etc&lt;br /&gt;
* --localstatedir=/var&lt;br /&gt;
&lt;br /&gt;
This makes configuration files go to /etc, state files (such as log files) go to /var, and the rest goes to /usr. That's the usual Slackware way, but it's your system, so you can certainly install everything in /usr/local or some other location.  See the Unix Filesystem Hierarchy Standard [[http://www.pathname.com/fhs/]] for more information on &amp;quot;correct&amp;quot; locations of various filetypes.&lt;br /&gt;
&lt;br /&gt;
You notice that there were several other options passed to the configure script, and for each application you compile, you have to figure those out for yourself - that's why you were told to extract the sources earlier in this process.  You simply cd into the source directory and run:&lt;br /&gt;
 ./configure --help&lt;br /&gt;
This will produce a page or two (sometimes more, though) of information about various options that are specific to the application.  Read through this information and figure out what you need (I like to pipe that command through lpr to get a printed copy, but you can certainly use some sort of pager as well:&lt;br /&gt;
 ./configure --help | lpr&lt;br /&gt;
 ./configure --help | less&lt;br /&gt;
&lt;br /&gt;
The DESTDIR variable is very important in this script because it specifies the directory in which the files should be installed.  This should always be our package directory ($PKG).  Unfortunately, some applications' Makefiles will not support the DESTDIR variable, so you can't use it for those apps.  A simple line like this:&lt;br /&gt;
 grep DESTDIR Makefile*&lt;br /&gt;
while inside the source directory should tell you whether it supports DESTDIR or not.  If you get some lines of output with $DESTDIR in them, you're in good shape.  If the command returns no output, then the Makefile does not support the DESTDIR variable.&lt;br /&gt;
&lt;br /&gt;
Here's a piece of advice: ALWAYS go through the ./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install DESTDIR=/somedir process manually and as a NORMAL USER account BEFORE you run your SlackBuild script.  There are quite a few applications out there which try to do &amp;quot;funny stuff&amp;quot; during the installation phase.&lt;br /&gt;
 For example, apcupsd will attempt to patch your /etc/rc.d/rc.6 init script&lt;br /&gt;
 Yes, it's possible to avoid this with a configure option, but it's not obvious that you would need&lt;br /&gt;
 to do so until you look at all of the Makefiles for apcupsd (or watch the install process)&lt;br /&gt;
Anyway, if you go through the process as a normal user, you will get &amp;quot;Permission Denied&amp;quot; errors and such if the install process tries to write anywhere it's not allowed to do so.&lt;br /&gt;
&lt;br /&gt;
=== Install Documentation ===&lt;br /&gt;
&lt;br /&gt;
 # Create a directory for documentation&lt;br /&gt;
 mkdir -p $PKG/usr/doc/$APP-$VERSION&lt;br /&gt;
 &lt;br /&gt;
 # Copy documentation to the docs directory and fix permissions&lt;br /&gt;
 cp -a BUGS Changes FAQ INSTALL LICENSE MANIFEST README TODO docs/ $PKG/usr/doc/$APP-$VERSION&lt;br /&gt;
 find $PKG/usr/doc/$APP-$VERSION -type f -exec chmod 644 {} \;&lt;br /&gt;
&lt;br /&gt;
I (rworkman) also like to place a copy of my SlackBuild script in this directory&lt;br /&gt;
 cat $CWD/$APP.SlackBuild &amp;gt; $PKG/usr/doc/$APP-$VERSION/$APP.SlackBuild&lt;br /&gt;
&lt;br /&gt;
Make sure you look inside the actual source archive of the application, because some applications won't have all of the documentation files specified above, and some applications will have additional files.  In other words, don't just copy/paste what you see above into your SlackBuild script - you *must* customize this section for each individual application.&lt;br /&gt;
&lt;br /&gt;
=== Final Touches ===&lt;br /&gt;
&lt;br /&gt;
 # Create the ./install directory and copy the slack-desc into it&lt;br /&gt;
 mkdir -p $PKG/install&lt;br /&gt;
 cat $CWD/slack-desc &amp;gt; $PKG/install/slack-desc&lt;br /&gt;
&lt;br /&gt;
NOTE: In some cases, you will have some sort of command or setup that&lt;br /&gt;
needs to run after the package contents are installed - for this, you&lt;br /&gt;
would add a file to $CWD called &amp;quot;doinst.sh&amp;quot; which contains the needed&lt;br /&gt;
commands, and then compress that file with gzip.  The SlackBuild script&lt;br /&gt;
will zcat (which means to gunzip and cat its contents) that file and &lt;br /&gt;
write the output to a doinst.sh file in the $PKG/install directory.&lt;br /&gt;
&lt;br /&gt;
 # Add doinst.sh to package (if it exists)&lt;br /&gt;
 if [ -e $CWD/doinst.sh.gz ]; then&lt;br /&gt;
   zcat $CWD/doinst.sh.gz &amp;gt; $PKG/install/doinst.sh&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
Let's conserve space if we can; strip libraries and binaries and compress man pages with gzip&lt;br /&gt;
Note that you might be able to use &amp;quot;make install-strip&amp;quot; instead of &amp;quot;make install&amp;quot; above instead to accomplish the same purpose&lt;br /&gt;
&lt;br /&gt;
 # Strip some libraries and binaries&lt;br /&gt;
 ( cd $PKG&lt;br /&gt;
    find . | xargs file | grep &amp;quot;executable&amp;quot; | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2&amp;gt; /dev/null&lt;br /&gt;
    find . | xargs file | grep &amp;quot;shared object&amp;quot; | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2&amp;gt; /dev/null&lt;br /&gt;
 )&lt;br /&gt;
 &lt;br /&gt;
 # Compress man pages if they exist&lt;br /&gt;
 if [ -d $PKG/usr/man ]; then&lt;br /&gt;
   ( cd $PKG/usr/man&lt;br /&gt;
   find . -type f -exec gzip -9 {} \;&lt;br /&gt;
   for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done&lt;br /&gt;
   ) &lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # Compress info pages if they exist (and remove the dir file)&lt;br /&gt;
 if [ -d $PKG/usr/info ]; then&lt;br /&gt;
   gzip -9 $PKG/usr/info/*.info&lt;br /&gt;
   rm -f $PKG/usr/info/dir&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
=== Build the Package ===&lt;br /&gt;
&lt;br /&gt;
 # Build the package&lt;br /&gt;
 cd $PKG&lt;br /&gt;
 /sbin/makepkg -l y -c n $TMP/$APP-$PKG_VERSION-$ARCH-$BUILD.tgz&lt;br /&gt;
&lt;br /&gt;
= Other Concerns =&lt;br /&gt;
&lt;br /&gt;
=== DESTDIR Option Not Available ===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, there are quite a few applications whose Makefiles do not support the DESTDIR option for make install.  On some applications the DESTDIR Makefile variable has another name.  For example, some Qt &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://buyphentermine.herbalweightlossaid.com/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;Phen375&amp;lt;/span&amp;gt;] applications use the variable INSTALL_ROOT for the same purpose.  If you can understand Makefiles, it is probably worth your time to take a look at its contents and try to find out which actions are performed in the install rule.  Sometimes there will be no DESTDIR equivalent at all.  The &amp;lt;strong&amp;gt;best&amp;lt;/strong&amp;gt; thing you can do in this situation is write a patch for the Makefile.in or equivalent, and submit it to the &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.performer5pills.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;performer 5&amp;lt;/span&amp;gt;] developer(s) for inclusion in the source, but I realize that everyone doesn't have the ability to do that.  The second best thing you can do it write to the developer(s) and ask them to include that functionality in future releases.  In the meantime, here are some thoughts on the subject...&lt;br /&gt;
&lt;br /&gt;
==== Example 1: ====&lt;br /&gt;
Configure the build with:&lt;br /&gt;
 ./configure --prefix=$PKG/usr&lt;br /&gt;
along with your other configure options.  This will install *all* of the package contents in that directory.  If the package creates $PKG/usr/etc and $PKG/usr/var directories (or any other directories that should be elsewhere), you can probably just move &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://weightlossproductreviews.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;slimming reviews&amp;lt;/span&amp;gt;] them to their correct location within the package directory &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.hghadvancedreview.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;HGH Advanced&amp;lt;/span&amp;gt;] tree and everything will be fine.  You might also try this along with your other configure options.&lt;br /&gt;
 ./configure --prefix=$PKG/usr \&lt;br /&gt;
    --sysconfdir=$PKG/etc \&lt;br /&gt;
    --localstatedir=$PKG/var &lt;br /&gt;
There are some applications, however, which &amp;quot;hard-code&amp;quot; configuration files based on configure/Makefile parameters.  In those cases, you'll have to figure out a way to patch the config file prior to packaging it, or in worst-case scenario, include &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.clearskinmaxreview.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;clear skin max&amp;lt;/span&amp;gt;] instructions for the end user on how to make the necessary changes.&lt;br /&gt;
&lt;br /&gt;
==== Example 2: ====&lt;br /&gt;
This example makes use of the ability to override any Makefile variable, which is called a '''macro''' in the Makefile terminology, on the command line and not have to worry about patching the Makefile to include a '''DESTDIR''' macro in the Makefile.  This approach makes it a bit &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.hoodiapill.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;unique hoodia&amp;lt;/span&amp;gt;] easier for those not familiar with Makefiles.&lt;br /&gt;
&lt;br /&gt;
If the Makefile does not honor '''DESTDIR''' for the 'make install' command, you can change the prefix macro, instead:&lt;br /&gt;
 make prefix=$PKG/usr install&lt;br /&gt;
This will override the $(prefix) variable inside the Makefile and install to the location you supplied on the &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://weightlossproductreviews.info/?page_id=268 &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;slim weight patch&amp;lt;/span&amp;gt;] command line.  Therefore, you can configure with the standard ''./configure --prefix=/usr'' (or ''./configure --prefix=/usr/local'') syntax, yet install to a different location as if you supplied a ''DESTDIR=$PKG/usr'' for the 'make install' command.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT NOTE: Macro names are case-sensitive (at least for GNU make).  Some Makefiles may use a &amp;quot;'''PREFIX ='''&amp;quot; macro instead of the usual &amp;quot;'''prefix ='''&amp;quot;, so the 'make install' command would look like this:&lt;br /&gt;
 make PREFIX=$PKG/usr install&lt;br /&gt;
Therefore, it's necessary to look inside the Makefile to be sure which form was used for the prefix.  For large, complex makefiles, the easiest way is to 'grep' the Makefile, like so:&lt;br /&gt;
 grep -i '^prefix \?=' Makefile{,.in}&lt;br /&gt;
The ''-i'' option makes the search case-insensitive and the ''{,.in}'' part at the end will search &amp;quot;Makefile&amp;quot; or &amp;quot;Makefile.in&amp;quot; files, the second one &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.teethwhitenerguide.com/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;teeth whitener reviews&amp;lt;/span&amp;gt;] being a template for the &amp;quot;configure&amp;quot; script.  Grep's search term is a basic regular expression, so the escaped question mark after the space (\?) means there may or may not be a space in between when searching.&lt;br /&gt;
&lt;br /&gt;
Once in a while, there may be a &amp;quot;'''PREFIX ='''&amp;quot; in a Makefile that is not defined which you are to edit and supply the location. Use the usual ''/usr'' (or ''/usr/local''), in this case, and then use 'make PREFIX=$PKG/usr install' to install to the &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.phen375reviewed.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;phen375 fat burner&amp;lt;/span&amp;gt;] package's build location.&lt;br /&gt;
&lt;br /&gt;
=== Patching the Sources ===&lt;br /&gt;
&lt;br /&gt;
Sooner or later, there will be some reason to patch the source code prior to building a package, and you'll want to be able to do this automatically.  &lt;br /&gt;
&lt;br /&gt;
===== Obtaining the Patch =====&lt;br /&gt;
&lt;br /&gt;
In most cases, the patch will be provided by the author of the source code, so we're not going to discuss patch *creation* here.  Download the patch and place it in the same directory as the SlackBuild script, slack-desc file, and other related files (in $CWD from above).&lt;br /&gt;
 $ wget http://someapplication.org/files/patches/bigsecuritypatch.diff&lt;br /&gt;
It's not necessary to do the next step, but because &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.herbalweightlossaid.com/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;slimming pills&amp;lt;/span&amp;gt;] developers generally want to conserve space if possible, it's conventional to do this:&lt;br /&gt;
 $ gzip -9 bigsecuritypatch.diff&lt;br /&gt;
This will result in a new file called bigsecuritypatch.diff.gz -- we'll use that in the SlackBuild script in just a moment.&lt;br /&gt;
&lt;br /&gt;
===== Applying the Patch =====&lt;br /&gt;
&lt;br /&gt;
You will now need to edit your &amp;lt;application&amp;gt;.SlackBuild script so that it applies the patch before it runs configure, make, and make install.  To do this, you'll want something like this to run before the configure &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.capsiplexreview.info/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;capsiplex&amp;lt;/span&amp;gt;] script, but after extracting the sources:&lt;br /&gt;
 zcat $CWD/bigsecuritypatch.diff.gz | patch -p1 || exit&lt;br /&gt;
Depending on how the patch was created, you might use a different patchlevel on that line, as in:&lt;br /&gt;
 zcat $CWD/bigsecuritypatch.diff.gz | patch -p0 || exit&lt;br /&gt;
It's a bit beyond the &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://proactolpluspills.com/ &amp;lt;span style=&amp;quot;color:#000000;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;proactol plus&amp;lt;/span&amp;gt;] scope of this HOWTO, but essentially, the -p# specifies the number of trailing directories to skip when looking for the file to patch.  You'll often need to skip the top-level directory, but not always (hence the -p0).&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
* [[SlackBuild_Scripts]]&lt;br /&gt;
* [[Different_Approach_To_Buildscripts]]&lt;br /&gt;
* [[Building_A_Package]]&lt;br /&gt;
* [[Slack-desc]]&lt;br /&gt;
* [[Checkinstall]]&lt;br /&gt;
* [[Compiling]]&lt;br /&gt;
&lt;br /&gt;
= SlackBuild Script Repositories =&lt;br /&gt;
&lt;br /&gt;
;* http://slackbuilds.org&lt;br /&gt;
;* http://www.slackware.com/~alien/slackbuilds/&lt;br /&gt;
;* http://slackbuilds.slackadelic.com/&lt;br /&gt;
;* http://slackbuilds.rlworkman.net/&lt;br /&gt;
;* http://www.slackbuilds.net/slackbuilds/&lt;br /&gt;
;* http://slackbuild.strangeworlds.co.uk/&lt;br /&gt;
;* http://www2.linuxpackages.net/packages/SlackBuilds/&lt;br /&gt;
;* http://www.selkfoster.com.ar/downloads/slackbuilds/&lt;br /&gt;
;* http://slack.sarava.org/slackbuilds/&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:24:32 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Writing_A_SlackBuild_Script</comments>
		</item>
		<item>
			<title>Kernel26Compilation</title>
			<link>https://www.slackwiki.com/index.php?title=Kernel26Compilation&amp;diff=542</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Kernel26Compilation&amp;diff=542</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to build a 2.6.x Kernel on Slackware&lt;br /&gt;
&lt;br /&gt;
Note: Maybe this replaces the 2.6 part of the kernel compile tutorial already here.&lt;br /&gt;
&lt;br /&gt;
==Warning!==&lt;br /&gt;
If you work on your kernel and do something wrong you may destroy your system in a way you have to reinstall it. All actions on your own risk! Noone assures that all actions described here are 100% right and work in any case. We are not responsible for damages caused by following this tutorial!&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
* Get the kernel sources you want from ftp://ftp.de.kernel.org or from a mirror (http://www.kernel.org/mirrors/).&lt;br /&gt;
* Make sure you are able toboot your Slackware original kernel after kernel update (You have to install 2.6.13 from &amp;quot;testing&amp;quot; to do this-slack12 uses 2.6.21.5 by default, no need to install it)&lt;br /&gt;
&lt;br /&gt;
image = /boot/vmlinuz-generic-2.6.13&amp;lt;br&amp;gt;&lt;br /&gt;
root = /dev/ #Your root partition. Get this from another kernel entry or from original /etc/lilo.conf&lt;br /&gt;
label = Backup&lt;br /&gt;
read-only&lt;br /&gt;
&lt;br /&gt;
Now run &amp;quot;lilo&amp;quot; once as root&lt;br /&gt;
* If you want to play safe you may now reboot and try if the kernel boots without errors.&lt;br /&gt;
* Uncompress your kernel sources below /usr/src&lt;br /&gt;
* The symlink /usr/src/linux has to point to the directory of the new kernel. For example: /usr/src/linux -&amp;gt; /usr/src/linux-2.6.14.4&lt;br /&gt;
&lt;br /&gt;
==Configure the kernel==&lt;br /&gt;
&lt;br /&gt;
* Change to the kernel directory.&lt;br /&gt;
cd /usr/src/linux&lt;br /&gt;
&lt;br /&gt;
* Configure your kernel:&lt;br /&gt;
** From scratch, then you may choose from&lt;br /&gt;
&lt;br /&gt;
make config (You get prompted for all possible options)&lt;br /&gt;
make menuconfig (You get a nice menu where you may navigate with cursor keys. Needs curses-5.x)&lt;br /&gt;
make xconfig (You may configure in X, of course needs working X installation)&lt;br /&gt;
make gconfig&lt;br /&gt;
make qtconfig&lt;br /&gt;
&lt;br /&gt;
:* From old configuration:&lt;br /&gt;
Copy the config file of the old kernel to ./.config. If you want to come from orignal Slackware kernel, then:&lt;br /&gt;
&lt;br /&gt;
cp /boot/config .config&lt;br /&gt;
&lt;br /&gt;
After that &amp;quot;make oldconfig&amp;quot; to configure new features (you may acceppt all questions with &amp;quot;Enter&amp;quot; to use the default values) and use &amp;quot;make menuconfig&amp;quot; (or any other of the above list) to change things if you like.&lt;br /&gt;
&lt;br /&gt;
Important! Be sure to compile the alsa modules (or you won't have sound). You have also to do this if you used &amp;quot;make oldconfig&amp;quot; (for example using &amp;quot;make menuconfig&amp;quot;) as the original kernel is compiled without alsa.&lt;br /&gt;
&lt;br /&gt;
==Compile and install kernel==&lt;br /&gt;
&lt;br /&gt;
* The real compiling can start:&lt;br /&gt;
&lt;br /&gt;
make (Now, depending on your computer, you may go drinking some coffee, watch a movie or go on your balcony to smoke one ;-) )&lt;br /&gt;
&lt;br /&gt;
If this finished without errors (we assume this) then your kernel and your kernel modules should be compiled.&lt;br /&gt;
&lt;br /&gt;
* Remove symlinks. If you still run your original slackware kernel, then &amp;quot;vmlinuz&amp;quot; and &amp;quot;System.map&amp;quot; are Symlinks to the kernel files. To get sure that we don't override this files, we delete the symlinks&lt;br /&gt;
&lt;br /&gt;
rm /boot/vmlinuz /boot/System.map&lt;br /&gt;
&lt;br /&gt;
* Install the kernel&lt;br /&gt;
&lt;br /&gt;
Install the kernel modules with:&amp;lt;br&amp;gt;&lt;br /&gt;
make modules_install&lt;br /&gt;
&lt;br /&gt;
and the kernel with:&amp;lt;br&amp;gt;&lt;br /&gt;
make install&lt;br /&gt;
&lt;br /&gt;
* If all steps have been done successful you may now use your new (self-made) kernel.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
* Help, the kernel doesn't work!&lt;br /&gt;
&lt;br /&gt;
Choose your backup kernel on lilo, check your kernel configuration and recompile.&lt;br /&gt;
&lt;br /&gt;
* Choose your backup kernel sounds easy, but...&lt;br /&gt;
&lt;br /&gt;
Now you know why you should keep a running kernel before you install a new one. Either your system is as usable as you are able to check the kernel configuration or you may boot from your slackware setup CD, mount your root partition to /mnt, chroot /mnt and recompile your kernel from there or install slackware packages of a running kernel.&lt;br /&gt;
&lt;br /&gt;
[http://www.slackforum.de/wiki/Kernel26Kompilieren german version]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:20:18 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Kernel26Compilation</comments>
		</item>
		<item>
			<title>Permissions and Umasks</title>
			<link>https://www.slackwiki.com/index.php?title=Permissions_and_Umasks&amp;diff=541</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Permissions_and_Umasks&amp;diff=541</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Normal Permissions==&lt;br /&gt;
&lt;br /&gt;
On *nix-like systems, traditionally eery file has an owner, an assigned group, and a list of permissions (although POSIX Access Control Lists are getting more popular).&lt;br /&gt;
&lt;br /&gt;
You can change the owner of a file with the &amp;quot;chown&amp;quot; command:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;fred@linux:~&amp;gt; chown someUser foo&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can change the group of a file with the &amp;quot;chgrp&amp;quot; command:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;fred@linux:~&amp;gt; chgrp someGroup foo&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can do both at once:&lt;br /&gt;
&lt;br /&gt;
: fred@linux:~&amp;gt; &amp;lt;code&amp;gt;chown someUser.someGroup foo&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or:&lt;br /&gt;
&lt;br /&gt;
: fred@linux:~&amp;gt; &amp;lt;code&amp;gt;chown someUser:someGroup foo&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For every file, you can set the following for the User, Group, and Others: r - can read w - can write x - can execute&lt;br /&gt;
&lt;br /&gt;
These are set with the &amp;quot;chmod&amp;quot; command:&lt;br /&gt;
&lt;br /&gt;
: fred@linux:~&amp;gt; &amp;lt;code&amp;gt;chmod u=rwx,g=rx,o=r foo&amp;lt;/code&amp;gt;&lt;br /&gt;
: fred@linux:~&amp;gt; &amp;lt;code&amp;gt;ls -l foo&amp;lt;/code&amp;gt;&lt;br /&gt;
: -rwxr-xr--  1 fred users 0 2004-10-26 11:38 foo&lt;br /&gt;
&lt;br /&gt;
You don't need to set all the permissions - you can just modify them, for example, to make a file executable:&lt;br /&gt;
&lt;br /&gt;
: fred@linux:~&amp;gt; &amp;lt;code&amp;gt;chmod +x foo&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also change the permissions just for either the User, Group, or Others:&lt;br /&gt;
&lt;br /&gt;
: fred@linux:~&amp;gt; &amp;lt;code&amp;gt;chmod o-x foo&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Octal Permissions==&lt;br /&gt;
&lt;br /&gt;
You can also specify permissions with a number. To find out which numbers, add up the numbers from this table:&lt;br /&gt;
&lt;br /&gt;
 r w x&lt;br /&gt;
 4 2 1&lt;br /&gt;
&lt;br /&gt;
For example, rwxr-xr-- would be:&lt;br /&gt;
&lt;br /&gt;
 U  G  O&lt;br /&gt;
 4  4  4&lt;br /&gt;
 +2 +0 +0&lt;br /&gt;
 +1 +1 +0&lt;br /&gt;
 =7 =5 =4&lt;br /&gt;
&lt;br /&gt;
So to give a file rwxr-xr-- permissions:&lt;br /&gt;
&lt;br /&gt;
: fred@linux:~&amp;gt; &amp;lt;code&amp;gt;chmod 754 foo&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Umasks==&lt;br /&gt;
&lt;br /&gt;
umasks define which permissions can not be set (in octal). For example, the default umask on slackware is 0022:&lt;br /&gt;
&lt;br /&gt;
: fred@laptop:~$ &amp;lt;code&amp;gt;umask&amp;lt;/code&amp;gt;&lt;br /&gt;
: 0022&lt;br /&gt;
&lt;br /&gt;
Ignoring the first digit, this means that the owner can do anything, but group and others are unable to write (2 == w). A more secure umask (possibly more suitable for your ~/) is 0077, meaning that group and others have no access to your files.&lt;br /&gt;
&lt;br /&gt;
==More Umask==&lt;br /&gt;
&lt;br /&gt;
The following is based on [[User:Sandman1|Sandman1]]'s Umask tutorial.&lt;br /&gt;
&lt;br /&gt;
Well first this is a pretty boring topic to write about, So im going to get right to the point. When you set a umask you set what permission NOT to set. So when you create a file it uses the umask to set the file permissions. All of this might not make sense now but it will later. Now type:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;umask&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now on slackware you will get &amp;quot;0022&amp;quot;, First ignore the first 0. Now we have 022. The first 0 makes sure the owner has ALL the permissions of a file. You can tell that becuase you have no permissions you want to turn off. Now the next two numbers you have a 2 for. The 2 indicates that you NEVER want to set write permissions.&lt;br /&gt;
&lt;br /&gt;
Now that method above of trying to find a umask is a bit confusing. All you do is set the number what you DON'T want the user to have. Now there is an easier way of finding out a umask. You can subtract the permission from 777. Example:&lt;br /&gt;
&lt;br /&gt;
 777 - 750 = 027&lt;br /&gt;
&lt;br /&gt;
That is the umask of the 750 permission. Now you may be asking yourself what is this usefull for. Well you can set the umask by typing &amp;quot;umask 027&amp;quot; in bash and when you create a file/directory it goes by umask 027 instead of the 0022.&lt;br /&gt;
&lt;br /&gt;
Now another reason for setting a umask is becuase you want to access a filesystem such as NTFS,VFAT,Samba,etc as a regular user. You can set the umask and allow regular users to write to the filesytem. It is really easy, in the fstab all you add is &amp;quot;umask=027&amp;quot; and remount the filesystem.&lt;br /&gt;
See [[Windows_Partitions]] for more information (and a potentially better option than setting umask options).&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:19:48 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Permissions_and_Umasks</comments>
		</item>
		<item>
			<title>Different Approach To Buildscripts</title>
			<link>https://www.slackwiki.com/index.php?title=Different_Approach_To_Buildscripts&amp;diff=540</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Different_Approach_To_Buildscripts&amp;diff=540</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
Pretty much everyone can hanve their own way of writing Slackware buildscripts. I also have mine, which just makes it easier for me to package software.&lt;br /&gt;
&lt;br /&gt;
In here, I'm going to explain mine. To start, let's look at one I wrote this morning while drinking coffee cup #1:&lt;br /&gt;
&lt;br /&gt;
    #!/bin/bash&lt;br /&gt;
    &lt;br /&gt;
    #############################################################################&lt;br /&gt;
    ## Name: jpilot                                                            ##&lt;br /&gt;
    ## Version: 0.99.8                                                         ##&lt;br /&gt;
    ## Packager: Martin Lefebvre (dadexter@gmail.com)                          ##&lt;br /&gt;
    ## Homepage: http://www.jpilot.org                                         ##&lt;br /&gt;
    #############################################################################&lt;br /&gt;
    &lt;br /&gt;
    PKGNAME=jpilot&lt;br /&gt;
    VERSION=0.99.8&lt;br /&gt;
    LOC=&amp;quot;http://jpilot.org/$PKGNAME-$VERSION.tar.gz&amp;quot;&lt;br /&gt;
    ARCH=`uname -m`&lt;br /&gt;
    &lt;br /&gt;
    START=`pwd`&lt;br /&gt;
    PKG=$START/pkg&lt;br /&gt;
    SRC=$START/work&lt;br /&gt;
    &lt;br /&gt;
    build() {&lt;br /&gt;
            mkdir -p $PKG $SRC&lt;br /&gt;
            cd $SRC&lt;br /&gt;
            wget $LOC&lt;br /&gt;
            tar -zxvf $PKGNAME-$VERSION.tar.gz&lt;br /&gt;
            cd $PKGNAME-$VERSION&lt;br /&gt;
            ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \&lt;br /&gt;
            --enable-gtk2 --enable-prometheon&lt;br /&gt;
            &lt;br /&gt;
            patch -p0 &amp;lt; patch.0.99.8-memory&lt;br /&gt;
            patch -p0 &amp;lt; patch.jpilot-sync&lt;br /&gt;
            make&lt;br /&gt;
            make DESTDIR=$PKG install&lt;br /&gt;
            mkdir -p $PKG/usr/doc/$PKGNAME-$VERSION&lt;br /&gt;
            cp -r ABOUT-NLS AUTHORS BUGS COPYING ChangeLog ChangeLog.cvs INSTALL \&lt;br /&gt;
            NEWS README TODO UPGRADING docs $PKG/usr/doc/$PKGNAME-$VERSION&lt;br /&gt;
            &lt;br /&gt;
            cp KeyRing/README.txt $PKG/usr/doc/$PKGNAME-$VERSION/README.keyring&lt;br /&gt;
            cp dialer/README $PKG/usr/doc/$PKGNAME-$VERSION/README.dialer&lt;br /&gt;
            cp icons/README $PKG/usr/doc/$PKGNAME-$VERSION/README.icons&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    package() {&lt;br /&gt;
            cd $PKG&lt;br /&gt;
            find . | xargs file | grep &amp;quot;executable&amp;quot; | grep ELF | cut -f 1 -d : \&lt;br /&gt;
            | xargs strip --strip-unneeded 2&amp;gt; /dev/null&lt;br /&gt;
            find . | xargs file | grep &amp;quot;shared object&amp;quot; | grep ELF | cut -f 1 -d : \&lt;br /&gt;
            | xargs strip --strip-unneeded 2&amp;gt; /dev/null&lt;br /&gt;
            find . | xargs file | grep &amp;quot;current ar archive&amp;quot; | cut -f 1 -d : | \&lt;br /&gt;
            xargs strip --strip-debug 2&amp;gt; /dev/null&lt;br /&gt;
            chown -R root:root usr/bin&lt;br /&gt;
            gzip -p $PKG/usr/man/man*/*&lt;br /&gt;
            mkdir $PKG/install&lt;br /&gt;
            cp $START/slack-desc $PKG/install/slack-desc&lt;br /&gt;
            cd $PKG&lt;br /&gt;
            makepkg -l y -c n $START/$PKGNAME-$VERSION-$ARCH-1.tgz&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    build&lt;br /&gt;
    package&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The top section is just comments identifying the piece of software we're going to build, and the name of the script's author. Then we have the following lines:&lt;br /&gt;
&lt;br /&gt;
    PKGNAME=jpilot&lt;br /&gt;
    VERSION=0.99.8&lt;br /&gt;
    LOC=&amp;quot;http://jpilot.org/$PKGNAME-$VERSION.tar.gz&amp;quot;&lt;br /&gt;
    ARCH=`uname -m`&lt;br /&gt;
    &lt;br /&gt;
    START=`pwd`&lt;br /&gt;
    PKG=$START/pkg&lt;br /&gt;
    SRC=$START/work&lt;br /&gt;
&lt;br /&gt;
They set the program's name, version, download URL, build and package directories. Since I usually don't specify anything related to the cpu or architecture, it auto detects the architecture. So, the $ARCH variable *should be* accurate.&lt;br /&gt;
&lt;br /&gt;
    build() {&lt;br /&gt;
            mkdir -p $PKG $SRC&lt;br /&gt;
            cd $SRC&lt;br /&gt;
            wget $LOC&lt;br /&gt;
            tar -zxvf $PKGNAME-$VERSION.tar.gz&lt;br /&gt;
            cd $PKGNAME-$VERSION&lt;br /&gt;
            ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \&lt;br /&gt;
            --enable-gtk2 --enable-prometheon&lt;br /&gt;
            &lt;br /&gt;
            patch -p0 &amp;lt; patch.0.99.8-memory&lt;br /&gt;
            patch -p0 &amp;lt; patch.jpilot-sync&lt;br /&gt;
            make&lt;br /&gt;
            make DESTDIR=$PKG install&lt;br /&gt;
            mkdir -p $PKG/usr/doc/$PKGNAME-$VERSION&lt;br /&gt;
            cp -r ABOUT-NLS AUTHORS BUGS COPYING ChangeLog ChangeLog.cvs INSTALL \&lt;br /&gt;
            NEWS README TODO UPGRADING docs $PKG/usr/doc/$PKGNAME-$VERSION&lt;br /&gt;
            &lt;br /&gt;
            cp KeyRing/README.txt $PKG/usr/doc/$PKGNAME-$VERSION/README.keyring&lt;br /&gt;
            cp dialer/README $PKG/usr/doc/$PKGNAME-$VERSION/README.dialer&lt;br /&gt;
            cp icons/README $PKG/usr/doc/$PKGNAME-$VERSION/README.icons&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
The is the main build function. This contains the code required to build the software. First, we create the build and package directories. The next 3 lines change to the building diirectory, uses wget to fetch the source file and extracts it.&lt;br /&gt;
&lt;br /&gt;
The lines after that are what you would normally type at your command line to build the software:&lt;br /&gt;
&lt;br /&gt;
* Change to the source directory.&lt;br /&gt;
* Run ./configure with all the options you want.&lt;br /&gt;
* Apply two patches required (in this case) to fix bugs with the software.&lt;br /&gt;
* Run make&lt;br /&gt;
* Install the software in the package directory defined by $PKG&lt;br /&gt;
* Create the standard Slackware Software Documentation directory in the package&lt;br /&gt;
* Copy the standard documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next section is the packaging part:&lt;br /&gt;
&lt;br /&gt;
    package() {&lt;br /&gt;
            cd $PKG&lt;br /&gt;
            find . | xargs file | grep &amp;quot;executable&amp;quot; | grep ELF | cut -f 1 -d : \&lt;br /&gt;
            | xargs strip --strip-unneeded 2&amp;gt; /dev/null&lt;br /&gt;
            find . | xargs file | grep &amp;quot;shared object&amp;quot; | grep ELF | cut -f 1 -d : \&lt;br /&gt;
            | xargs strip --strip-unneeded 2&amp;gt; /dev/null&lt;br /&gt;
            find . | xargs file | grep &amp;quot;current ar archive&amp;quot; | cut -f 1 -d : | \&lt;br /&gt;
            xargs strip --strip-debug 2&amp;gt; /dev/null&lt;br /&gt;
            chown -R root:root usr/bin&lt;br /&gt;
            gzip -p $PKG/usr/man/man*/*&lt;br /&gt;
            mkdir $PKG/install&lt;br /&gt;
            cp $START/slack-desc $PKG/install/slack-desc&lt;br /&gt;
            cd $PKG&lt;br /&gt;
            makepkg -l y -c n $START/$PKGNAME-$VERSION-$ARCH-1.tgz&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
* We change to the package directory&lt;br /&gt;
* Strip executables and libraries in order to decrease size.&lt;br /&gt;
* As a Slackware standard, we change the ownership of the executables to root:root (to be done for every bin/ and sbin/ directory)&lt;br /&gt;
* We compress the manpages&lt;br /&gt;
* Create install/ and copy the slack-desc file from the start directory&lt;br /&gt;
* Finally, change back to the package folder and create the package tarball.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this example, the slack-desc and some patch files are distributed with the SlackBuild. This also makes it easier to ship the build script with patches that might be required for the software to work on Slackware (patch to remove PAM stuff).&lt;br /&gt;
&lt;br /&gt;
The slack-desc file format is described here: [http://www.linuxpackages.net/howto.php?page=slack-desc&amp;amp;title=Slackware+Desc+Files LinuxPackages.net]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional files:&lt;br /&gt;
&lt;br /&gt;
Some people use slapt-get (like me). slapt-get supports additional features such as&lt;br /&gt;
* Dependencies&lt;br /&gt;
* Conflicts&lt;br /&gt;
* Suggestions&lt;br /&gt;
&lt;br /&gt;
Not everyone wants those features, so building a package with those files will not interfere with the normal pkgtools process. For more info on these optional files, go here: [http://www.linuxpackages.net/howto.php?page=perfect-package&amp;amp;title=Perfect+Package#Optional LinuxPackages.net]&lt;br /&gt;
&lt;br /&gt;
If you decide to use those files, you will then have to repeat these lines:&lt;br /&gt;
&lt;br /&gt;
    cp $START/slack-desc $PKG/install/slack-desc&lt;br /&gt;
&lt;br /&gt;
for slack-required, slack-conflicts, and slack-suggests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
See also [[SlackBuild_Scripts]] and [[Writing A SlackBuild Script]]&lt;br /&gt;
----&lt;/div&gt;</description>
			<pubDate>Fri, 09 Dec 2011 10:18:39 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Different_Approach_To_Buildscripts</comments>
		</item>
		<item>
			<title>User talk:Merge-delete</title>
			<link>https://www.slackwiki.com/index.php?title=User_talk:Merge-delete&amp;diff=539</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=User_talk:Merge-delete&amp;diff=539</guid>
			<description>&lt;p&gt;Merge-delete: Planning a trip to lonavala?Visit our site for more information on hotels in lonavala.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Boutique Hotels In India&lt;br /&gt;
&lt;br /&gt;
Indulge yourself in sheer luxury throughout your remain in boutique hotels in India.[http://hotelslonavala.net/ hotels in lonavala] These are the places where one can live like rajas and maharajas. They're simply unique within their architecture and hang up where one can get highly personalized services inside a distinctive manner. They are heritage hotels that supply you with a unique connection with living existence.[http://hotelslonavala.net/ hotels in lonavala] Just opposite to western style hotels, these places permit you to know and have the wealthy culture and history of India.&lt;br /&gt;
&lt;br /&gt;
 On a trip from the beaten tracks in India, you might find several boutique hotels where one can unwind yourself and also have home-cooked food. With enchanting folk music, amazing architecture, peace and exceptional hospitality, these hotels can bring alive the times of rajas and maharajas of older occasions. Their architecture, gardens, food and luxuries echo from the glorious past of India. Although you will find several hotels in India but when youre searching for best hotels, then certainly Rajasthan may be the condition that you need to visit whenever you arrived at India.&lt;br /&gt;
&lt;br /&gt;
 You will find several havelis-converted-hotels in Rajasthan where you can unwind yourself and dip your senses in luxury. Remaining during these hotels is definitely an entirely different experience. Youll feel like you aren't nowadays. For experience a completely different lifestyle, you have to visit these hotels and spend your trip. Trust, youll possess a lifetime experience. The deserted great thing about Rajasthan and wealthy tradition enables you to definitely go through the luxury in simplicity. You no more have to pretend as possible be genuine and do what youve always loved.&lt;br /&gt;
&lt;br /&gt;
 The best hotels in Rajasthan are Rawla Narlai, Raas Hotel, The Serai, Udai Kothi, Bhainsrorgarh and Devigarh. From the sights of those hotels, regal inside and grass to authentic antiques, lodging and fooding may be worth admiring. You seem like wandering within the deserts, going through the wonder, studying wealthy tradition, listening folk music and gorging on local meals. Several companies offer vacation packages to Rajasthan. Whenever you arrived at India, you just cant manage to miss these places. They feature glorious past of India.&lt;/div&gt;</description>
			<pubDate>Sun, 27 Nov 2011 13:14:08 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/User_talk:Merge-delete</comments>
		</item>
		<item>
			<title>Hibernate</title>
			<link>https://www.slackwiki.com/index.php?title=Hibernate&amp;diff=525</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Hibernate&amp;diff=525</guid>
			<description>&lt;p&gt;Merge-delete: /* Generic kernel + initrd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Slackware, hibernation works out-of-the-box and can be easily done from KDE's menu. Resuming from hibernation, however, is not set up, so when you turn on your computer again, it starts as normal. That is, if your hardware supports it and if you've set up a swap space larger than your RAM.&lt;br /&gt;
&lt;br /&gt;
== Huge kernel ==&lt;br /&gt;
&lt;br /&gt;
To tell your kernel where to resume from, you need to write the info to ''lilo.conf'':&lt;br /&gt;
&lt;br /&gt;
 append=&amp;quot; resume=/dev/sda6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Replace ''/dev/sda6'' with your actual swap space. Swap partitions are perfect, I think swap files should work too. If you don't know where your swap lies, look at ''/proc/swaps''.&lt;br /&gt;
&lt;br /&gt;
== Generic kernel + initrd ==&lt;br /&gt;
&lt;br /&gt;
If you're using generic or your own kernel, you need to adjust initrd image as well. Append &lt;br /&gt;
&lt;br /&gt;
  -h /dev/sdx&lt;br /&gt;
&lt;br /&gt;
to mkinitrd command so it may look like this:&lt;br /&gt;
 &lt;br /&gt;
  mkinitrd -c -k &amp;lt;kernel-version&amp;gt; -f &amp;lt;fs_type&amp;gt; -m &amp;lt;fs_type&amp;gt; -r /dev/sdx -h /dev/sdy&lt;br /&gt;
&lt;br /&gt;
Replace ''/dev/sdx'' with your actual root partition and ''/dev/sdy'' with your actual swap space.&lt;br /&gt;
&lt;br /&gt;
If you're using LVM, don't forget to append '''-L''' to mkinitrd command&lt;br /&gt;
&lt;br /&gt;
  mkinitrd -c -k &amp;lt;kernel-version&amp;gt; -f &amp;lt;fs_type&amp;gt; -m &amp;lt;fs_type&amp;gt; -r /dev/sdx -h /dev/volumegroup/swap -L&lt;br /&gt;
&lt;br /&gt;
Afterwards, run lilo.&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.linuxquestions.org/linux/answers/Hardware/Mini_HOW_TO_Hibernate_and_resume_0 Mini_HOW_TO_Hibernate_and_resume_0]&lt;br /&gt;
* Hibernate to encrypted swap - [http://slackware.osuosl.org/slackware-13.1/README_CRYPT.TXT REAME_CRYPT.TXT]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Tue, 18 Oct 2011 13:12:49 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Hibernate</comments>
		</item>
		<item>
			<title>Acer Aspire 502x(WLMi)</title>
			<link>https://www.slackwiki.com/index.php?title=Acer_Aspire_502x(WLMi)&amp;diff=524</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Acer_Aspire_502x(WLMi)&amp;diff=524</guid>
			<description>&lt;p&gt;Merge-delete: Remove out of date information and some of the references to pre-historic kernels&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Hardware]]&lt;br /&gt;
==Slackware on an Acer Aspire 5020 series==&lt;br /&gt;
&lt;br /&gt;
This article is based on an Aspire 5021WLMi. The 5021WLMi is an an AMD Turion 64 based laptop - it mainly differs from other laptops of the 5020 series only in the specific processor model and some other models come with built in bluetooth - the 5021 has an ML-28 and no bluetooth, I believe the 5024 uses an ML-34 and does have built in bluetooth, so most of this should apply to the 502x series as well. (This is a work in progress, and therefore far from finished).&lt;br /&gt;
&lt;br /&gt;
I have installed my own bluetooth module into the 5021 - this is not very difficult to do (just rather fiddly), but the instructions for operating the bluetooth apply to any 5020 series laptop with bluetooth installed.&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Output of lspci:&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 Host bridge: ATI Technologies Inc RS480 Host Bridge (rev 01)&lt;br /&gt;
00:02.0 PCI bridge: ATI Technologies Inc RS480 PCI-X Root Port&lt;br /&gt;
00:07.0 PCI bridge: ATI Technologies Inc RS480 PCI Bridge&lt;br /&gt;
00:13.0 USB Controller: ATI Technologies Inc IXP SB400 USB Host Controller&lt;br /&gt;
00:13.1 USB Controller: ATI Technologies Inc IXP SB400 USB Host Controller&lt;br /&gt;
00:13.2 USB Controller: ATI Technologies Inc IXP SB400 USB2 Host Controller&lt;br /&gt;
00:14.0 SMBus: ATI Technologies Inc IXP SB400 SMBus Controller (rev 11)&lt;br /&gt;
00:14.1 IDE interface: ATI Technologies Inc Standard Dual Channel PCI IDE Controller ATI&lt;br /&gt;
00:14.3 ISA bridge: ATI Technologies Inc IXP SB400 PCI-ISA Bridge&lt;br /&gt;
00:14.4 PCI bridge: ATI Technologies Inc IXP SB400 PCI-PCI Bridge&lt;br /&gt;
00:14.5 Multimedia audio controller: ATI Technologies Inc IXP SB400 AC'97 Audio Controller (rev 02)&lt;br /&gt;
00:14.6 Modem: ATI Technologies Inc ATI SB400 - AC'97 Modem Controller (rev 02)&lt;br /&gt;
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration&lt;br /&gt;
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map&lt;br /&gt;
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller&lt;br /&gt;
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control&lt;br /&gt;
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility X700 (PCIE)&lt;br /&gt;
06:05.0 Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02)&lt;br /&gt;
06:06.0 CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller&lt;br /&gt;
06:06.2 FireWire (IEEE 1394): Texas Instruments OHCI Compliant IEEE 1394 Host Controller&lt;br /&gt;
06:06.3 Mass storage controller: Texas Instruments PCIxx21 Integrated FlashMedia Controller&lt;br /&gt;
06:06.4 Class 0805: Texas Instruments PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller&lt;br /&gt;
06:07.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet (rev 10)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
&lt;br /&gt;
* AMD Turion 64 ML-28 at 1.6 GHz with 128 KB L1 cache and 512 KB L2 cache&lt;br /&gt;
* 512 MB of DDR333 memory&lt;br /&gt;
* 15.4&amp;quot; Samsung LTN154X3-L01 WXGA LCD panel (1280 x 800)&lt;br /&gt;
* ATi Mobility Radeon X700 (128MB dedicated memory)&lt;br /&gt;
* 80GB (4200 RPM) (P)ATA Hard Drive ([http://www.seagate.com/cda/products/discsales/marketing/detail/0,1081,638,00.html Seagate Momentus 4200.2 - ST9808210A])&lt;br /&gt;
* Slot DVD Writer (DVD-R/RW, DVD+R/RW, DVD+R Dual Layer)&lt;br /&gt;
* Texas Instruments (TI7421) 6-in-1 card reader&lt;br /&gt;
* Gigabit Ethernet (Realtek RTL-8169 chipset?)&lt;br /&gt;
* 802.11 b/g Wireless LAN (Broadcom AirForce One 54g (BCM4318))&lt;br /&gt;
* ATi SB400 AC'97 Soundcard + Modem&lt;br /&gt;
* 1 x IR port&lt;br /&gt;
* 1 x IEEE-1394 (Firewire) port&lt;br /&gt;
* 4 x USB ports&lt;br /&gt;
* 1 x S-Video port&lt;br /&gt;
* 1 x VGA port&lt;br /&gt;
* 1 x PCMCIA slot&lt;br /&gt;
&lt;br /&gt;
===Working===&lt;br /&gt;
&lt;br /&gt;
* Video Card: ATI Mobility X700 (1280x800 - fglrx and radeon &amp;amp; r300)&lt;br /&gt;
* Broadcom Wireless LAN Card (acer_acpi + ndiswrapper with bcmwl564.sys driver, available as 80211g.zip from Acer driver download area. Slamd64 - need Windows XP 64 driver).&lt;br /&gt;
* Soundcard (snd-atiixp as of alsa-driver-1.0.9b or kernel)&lt;br /&gt;
* Function/Hot Keys (have not tried all though; extra configuration required for 'multimedia' keys)&lt;br /&gt;
* Touchpad (Doesn't need a driver for basic functions)&lt;br /&gt;
* USB&lt;br /&gt;
* CD/RW, DVD+/-RW&lt;br /&gt;
* Ethernet card (works with Realtek 8169 driver)&lt;br /&gt;
* Battery Status&lt;br /&gt;
* PCMCIA&lt;br /&gt;
* 6-in-1 card reader (SD/ MMC &amp;amp; MemoryStick/ Pro only at the moment - [http://tifmxx.berlios.de/ driver in progress])&lt;br /&gt;
* Bluetooth&lt;br /&gt;
&lt;br /&gt;
===Not Tested, but probably works===&lt;br /&gt;
&lt;br /&gt;
* Firewire&lt;br /&gt;
* Infra Red&lt;br /&gt;
* VGA out&lt;br /&gt;
&lt;br /&gt;
==Kernel Configuration==&lt;br /&gt;
&lt;br /&gt;
You will need to use a 2.6.19 or newer kernel to get this laptop to work properly in Linux without any extra kernel patching (see Troubleshooting for more information).&lt;br /&gt;
&lt;br /&gt;
I would *strongly* recommend you always use the latest stable 2.6.x kernel with this laptop, since there are a lot of fixes going in that relate to this laptop (ATI chipset, apic, yenta socket, wireless drivers (b43), etc).&lt;br /&gt;
&lt;br /&gt;
This should be very similar to any other AMD64 laptop with an ATi chipset (like the Acer Ferrari 4000 series- enable anything with 'ATI IXP', plus the relevant ACPI options. I'll put up more here about any necessary specific options later. However, I have *disabled* the framebuffer, as it doesn't play well with the X video drivers.&lt;br /&gt;
&lt;br /&gt;
When building a new kernel make sure that you use the following options, if you want to use the ATI/fglrx driver:&amp;lt;br&amp;gt;&lt;br /&gt;
use '/dev/agpgart' as module&amp;lt;br&amp;gt;&lt;br /&gt;
turn off, the 'Direct Render Manager'&amp;lt;br&amp;gt;&lt;br /&gt;
(so you dont select 'radeon'..)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware Package and Software Dependencies==&lt;br /&gt;
===Graphics===&lt;br /&gt;
&lt;br /&gt;
Follow the instructions here [http://slackwiki.org/ATI_Graphics] to install and set up your video driver, using the radeon &amp;amp; r300 Mesa drivers. fglrx is no longer supported on this hardware.&lt;br /&gt;
&lt;br /&gt;
===Mouse===&lt;br /&gt;
&lt;br /&gt;
To get advanced features, you will need to install the [http://web.telia.com/~u89404340/touchpad/ Synaptics Mousepad driver for X] and change your mouse driver in xorg.conf to use 'synaptics'. (I use the Synaptics driver mostly to disable 'Tap-to-Click')&lt;br /&gt;
&lt;br /&gt;
To ensure the touchpad always has the same device name, create /etc/udev/rules.d/local.rules (if it doesn't exist) and add the following:&lt;br /&gt;
&lt;br /&gt;
 BUS==&amp;quot;serio&amp;quot;, SYSFS{description}==&amp;quot;i8042 Aux-3 Port&amp;quot;, KERNEL==&amp;quot;mouse*&amp;quot;, NAME=&amp;quot;input/%k&amp;quot;,SYMLINK+=&amp;quot;input/touchpad&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You can now point xorg.conf towards /dev/input/touchpad for the touchpad (/dev/input/touchpad will always be a symlink to whichever device the touchpad is - this can vary depending on whether you plug another mouse into the system before or after booting).&lt;br /&gt;
&lt;br /&gt;
===Modem===&lt;br /&gt;
          &lt;br /&gt;
This is a Conexant HSF modem - it is incompatible with slmodemd (you therefore do _not_ need snd-atiixp-modem). The only drivers available for this modem are from [http://www.linuxant.com Linuxant] (the free-of-charge drivers are limited to 14.4K, you will need to pay if you want full 56.6K speeds and fax).&lt;br /&gt;
&lt;br /&gt;
===Wireless===&lt;br /&gt;
&lt;br /&gt;
To use the built in wireless, you need to firstly switch on the wireless, then load the b43 driver. You will also need to obtain the firmware for this card - see [http://linuxwireless.org/en/users/Drivers/b43#devicefirmware Linux Wireless] on where to get it from.&lt;br /&gt;
&lt;br /&gt;
1. Enable Wireless&lt;br /&gt;
&lt;br /&gt;
'''2.6.24:'''&lt;br /&gt;
&lt;br /&gt;
* Download, build and install [http://code.google.com/p/aceracpi acer_acpi]&lt;br /&gt;
* Load acer_acpi: modprobe acer_acpi wireless=1&lt;br /&gt;
&lt;br /&gt;
'''2.6.25 or newer:'''&lt;br /&gt;
&lt;br /&gt;
* echo 1 &amp;gt; /sys/devices/platform/acer-wmi/wireless&lt;br /&gt;
* Or create /etc/modprobe.d/acer-wmi and add &amp;quot;options acer-wmi wireless=1&amp;quot; to do this at boot time&lt;br /&gt;
&lt;br /&gt;
2. Install b43 firmware&lt;br /&gt;
&lt;br /&gt;
* Download, build and install b43-fwcutter - use the [http://www.slackbuilds.org SlackBuilds.org] Slackbuild for thos&lt;br /&gt;
* Follow the instructions on [http://linuxwireless.org/en/users/Drivers/b43#devicefirmware Linux Wireless] for your kernel version to extract the firmware and install it to /lib/firmware&lt;br /&gt;
&lt;br /&gt;
(The orange light for the wireless at the front should turn on now)&lt;br /&gt;
&lt;br /&gt;
3. Configure the wireless in /etc/rc.d/rc.inet1.conf&lt;br /&gt;
&lt;br /&gt;
Note: I deleted rc.wireless.conf as it is unecessary and keeps trying to override rc.inet1.conf (besides, configuring wireless in rc.inet1.conf is the future).&lt;br /&gt;
&lt;br /&gt;
===Bluetooth===&lt;br /&gt;
&lt;br /&gt;
The bluetooth is an internal USB dongle. To turn it on:&lt;br /&gt;
&lt;br /&gt;
* echo 1 &amp;gt; /sys/devices/platform/acer-wmi/bluetooth&lt;br /&gt;
* Or create /etc/modprobe.d/acer-wmi and add &amp;quot;options acer-wmi bluetooth=1&amp;quot; to do this at boot time&lt;br /&gt;
&lt;br /&gt;
The bluetooth device can now be seen with lsusb (it is not visible when bluetooth if you don't enable it through acer_acpi/ acer-wmi).&lt;br /&gt;
&lt;br /&gt;
===Special Keys===&lt;br /&gt;
&lt;br /&gt;
There is a keymap for the special keys available [http://www.fwconsult.com/acer-install/index.html here].&lt;br /&gt;
&lt;br /&gt;
However, I have had problems with it on my UK layout keyboard so would not recommend using it at the moment.&lt;br /&gt;
&lt;br /&gt;
===Special Keys with X===&lt;br /&gt;
&lt;br /&gt;
====HAL====&lt;br /&gt;
&lt;br /&gt;
You will need, at a minimum, HAL 0.5.10 and hal-info 20070725. The Aspire 5020 has been submitted to HAL as part of their keyboard quirk project, so the extra keys which generated dmesg messages, will now generate proper keycodes.&lt;br /&gt;
&lt;br /&gt;
====X====&lt;br /&gt;
&lt;br /&gt;
There is now a generic acer_laptop keyboard layout in upstream xkeyboard-config (which works in tandem with HAL to map the extra keys). This will be in the next xkeyboard-config release after 1.0 (it is therefore unlikely to make the next X.Org release).&lt;br /&gt;
&lt;br /&gt;
You can also use the evdev layout instead.&lt;br /&gt;
&lt;br /&gt;
===Hardware Monitoring===&lt;br /&gt;
&lt;br /&gt;
Unfortunately, the extent of 'hardware monitoring' on this system comes through 3 thermal zones provided by ACPI.&lt;br /&gt;
&lt;br /&gt;
You can play around with using I2C to access the SMBus, but the hardware on the other end of it appears to be a National Semiconductors chip of sorts that is not supported under Linux (and based on comments on the lm_sensors mailing list, due to various problems, is not very likely to be either).&lt;br /&gt;
&lt;br /&gt;
===Suspend===&lt;br /&gt;
&lt;br /&gt;
Suspend does work on this laptop (assuming you don't have any funny PCMCIA, USB or Firewire devices attached that will break it).&lt;br /&gt;
&lt;br /&gt;
'''In a terminal'''&lt;br /&gt;
&lt;br /&gt;
You will need either vbetool or a 2.6.17-rc (or newer) kernel with s2ram (found in [http://suspend.sourceforge.net suspend]).&lt;br /&gt;
&lt;br /&gt;
Using s2ram:&lt;br /&gt;
 s2ram -f -p&lt;br /&gt;
&lt;br /&gt;
Using swusp (run this command after resuming):&lt;br /&gt;
  vbetool post&lt;br /&gt;
&lt;br /&gt;
'''In X'''&lt;br /&gt;
&lt;br /&gt;
Works with either radeon or fglrx (you don't need to run s2ram if you suspend from X).&lt;br /&gt;
&lt;br /&gt;
===Card Reader===&lt;br /&gt;
&lt;br /&gt;
This card reader is not fully supported in Linux yet. There is an in development driver, [http://tifmxx.berlios.de tifmxx], that currently supports MMC/ SD, and Memory Stick/ Pro. If you want to help out the project, hardware donations are welcome for unsupported hardware (be aware that the developer's card reader can not physically support SmartMedia cards).&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===HPET===&lt;br /&gt;
&lt;br /&gt;
Not available on this laptop - locks hard with hpet=force (I suspect HPET's are only available on the newer SB480 chipsets).&lt;br /&gt;
&lt;br /&gt;
===DVDs will not play back===&lt;br /&gt;
&lt;br /&gt;
You need to set the DVD region before you can play any DVDs. The 'regionset' tool for Linux will let you do this (otherwise you will have lots of strange error messages in dmesg).&lt;br /&gt;
&lt;br /&gt;
===Suspend/ Resume does not work===&lt;br /&gt;
&lt;br /&gt;
Please be aware that kernel updates can break this. If that's the case, I will try and update this page to reflect that.&lt;br /&gt;
&lt;br /&gt;
Otherwise, go back and make sure you have applied the necessary patch specified earlier in &amp;quot;Suspend&amp;quot; to your kernel. Also, try unplugging any devices attached to the laptop, rebooting (some drivers can be a bit funny otherwise) and then try suspend/ resume. If it now works, then one of your devices or a driver somewhere is breaking suspend - in which case, you should report the bug to the relevant person/ place.&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
&lt;br /&gt;
*[http://slackwiki.org/User:Ccorbacho Carlos Corbacho (aka cathectic)]&lt;br /&gt;
*[http://slackwiki.org/User:Funmain Funmain]&lt;br /&gt;
&lt;br /&gt;
==External Links/ References==&lt;br /&gt;
* [http://forums.slamd64.com/viewtopic.php?t=27 fglrx on Slamd64]&lt;br /&gt;
* [http://www.fwconsult.com/acer-install/index.html Installing Gentoo (2005.0) on an Acer 5021NWLCi]&lt;br /&gt;
* [http://gentoo-wiki.com/HARDWARE_Gentoo_Acer_Ferrari_4005WLMi_Manual Gentoo Acer Ferrari 4005WLMi Manual]&lt;br /&gt;
* [http://website.lineone.net/~bryanrpoole/atiixp-modem.html ATI-IXP MC97 Modem Development / Configuration Information]&lt;br /&gt;
* [http://bugzilla.kernel.org/show_bug.cgi?id=3927 Kernel Bugzilla entry for AMD64/ ATi timer running fast problem]&lt;br /&gt;
* [http://doube.net/3023wlmi.html Linux and Windows on an Acer Aspire 3023WLMi]&lt;/div&gt;</description>
			<pubDate>Sun, 16 Oct 2011 11:19:00 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Acer_Aspire_502x(WLMi)</comments>
		</item>
		<item>
			<title>Upgrade Using Slapt-get</title>
			<link>https://www.slackwiki.com/index.php?title=Upgrade_Using_Slapt-get&amp;diff=501</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Upgrade_Using_Slapt-get&amp;diff=501</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
See the [[Slapt-get]] page for an introduction to slapt-get and its functionality.&lt;br /&gt;
&lt;br /&gt;
Prior to using slapt-get, you should really be familiar with proper usage of the native Slackware package management tools:&lt;br /&gt;
 man pkgtool&lt;br /&gt;
 man installpkg&lt;br /&gt;
 man upgradepkg&lt;br /&gt;
 man removepkg&lt;br /&gt;
As indicated in the link above, slapt-get is *not* a replacement for those utilities - it *uses* those utilities.  As such, any inherent &amp;quot;limitations&amp;quot; (yes, I use that term loosely) in the pkgtool suite will also apply to slapt-get.&lt;br /&gt;
&lt;br /&gt;
= Installation and Configuration =&lt;br /&gt;
&lt;br /&gt;
Get the [[slapt-get]] package for your version of Slackware.&lt;br /&gt;
&lt;br /&gt;
Once it's installed, configure it to point to your favourite&lt;br /&gt;
mirror (edit '''/etc/slapt-get/slaptgetrc''')&lt;br /&gt;
&lt;br /&gt;
    # See /usr/doc/slapt-get-0.10.1/example.slapt-getrc &lt;br /&gt;
    # for example source entries and configuration hints.&lt;br /&gt;
    WORKINGDIR=/var/slapt-get&lt;br /&gt;
    EXCLUDE=^kernel-.*,^alsa-.*,^glibc.*,.*-[0-9]dl$,^devs$,^udev$,aaa_elflibs,x86_64&lt;br /&gt;
    SOURCE=http://slackware.osuosl.org/slackware-12.2/:OFFICIAL&lt;br /&gt;
    SOURCE=http://software.jaos.org/slackpacks/12.2/:OFFICIAL&lt;br /&gt;
&lt;br /&gt;
= Usage Hints =&lt;br /&gt;
&lt;br /&gt;
Depending upon your individual goals of using slapt-get, the usage hints will vary.  An individual wishing to upgrade  from one release of Slackware to another will have more issues with which to contend than another individual who simply wants to keep up-to-date with official security/stability patches.&lt;br /&gt;
&lt;br /&gt;
The biggest piece of advice I can give to *anyone* regardless of how/why you're using slapt-get is this: READ THE CHANGELOG!  The pertinent portions of the changelog are also viewable for each package using --show option.  You'll be okay most of the time if you ignore this advice, but don't come crying to ##slackware if you do... :)  &lt;br /&gt;
&lt;br /&gt;
From '''man slapt-get''':&lt;br /&gt;
 UPGRADE.TXT and ChangeLog.txt is still required reading, the latter is especially true  when running -current.&lt;br /&gt;
&lt;br /&gt;
By the way, don't even consider trying to follow the Slackware -current development using slapt-get; that's just *asking* for a problem (for reasons which will hopefully be clear later).  &lt;br /&gt;
 Official ChangeLog is at ftp://ftp.slackware.com/pub/slackware/slackware-12.2/ChangeLog.txt&lt;br /&gt;
 Replace the &amp;quot;12.2&amp;quot; with the release version you're using.&lt;br /&gt;
Rather than using the official ChangeLog (and Slackware.com bandwidth), it's better to use one of the official Slackware mirrors (you'll notice faster connections with the mirrors):&lt;br /&gt;
 &amp;lt;SlackwareMirror&amp;gt;/slackware-&amp;lt;version&amp;gt;/ChangeLog.txt&lt;br /&gt;
See the Slackware site [[http://slackware.com/getslack/]] to find an official mirror site.&lt;br /&gt;
&lt;br /&gt;
== Usage Hint #1: Security and Stability Patches ==&lt;br /&gt;
&lt;br /&gt;
If your only goal is to stay up-to-date with official security and stability patches for your version of Slackware, then the default configuration of slapt-get should work fine for you.  While I'm not the author of slapt-get (Jason, feel free to jump in here), it seems to me that this was the original intent of slapt-get (and it works *extremely* well for that task, might I add).&lt;br /&gt;
&lt;br /&gt;
The only exception of which I can think is kernel upgrades; thankfully, those haven't happened *too* often in official releases in recent memory, but they do occur frequently enough to be worth considering.  The default configuration of slapt-get will ignore kernel upgrades, so the only way you'll know about those is by reading the official ChangeLog.  Anyway, every time you upgrade your kernel, you'll need to make sure the paths in '''/etc/lilo.conf''' point to a valid kernel, and then run '''/sbin/lilo''' to reinstall LILO.  If you use some other boot loader, then I'm going to assume you know enough about its usage to perform the corresponding operation (if required) after upgrading your kernel.&lt;br /&gt;
&lt;br /&gt;
I would recommend that you keep your old kernel around when installing a new one; it's always good to have a known-good kernel lying around just in case the new one doesn't boot.  However, you'll notice that by default, running this command: &lt;br /&gt;
 slapt-get --install kernel-$VERSION&lt;br /&gt;
will *upgrade* the kernel; in other words, it will *remove* the old kernel package and *install* the new one.  This is not desirable if you wanted to keep your old kernel, so you can run this command instead:&lt;br /&gt;
 slapt-get --install --no-upgrade kernel-$VERSION&lt;br /&gt;
From '''man slapt-get''':&lt;br /&gt;
  --no-upgrade&lt;br /&gt;
         Install the package rather than  attempting  to  detect  if  a  previous  version  is&lt;br /&gt;
         installed  and  upgrading  it.   This is useful for installing kernel packages.  This&lt;br /&gt;
         option is only valid for --install targets.&lt;br /&gt;
You might also find this option useful for installing multiple versions of the alsa-* packages; if you're running both 2.4.x and 2.6.x kernels, you'll need the alsa-driver packages for both kernels, so an *upgrade* of the 2.4.x version to 2.6.x will remove the 2.4.x version.&lt;br /&gt;
&lt;br /&gt;
== Usage Hint #2: Upgrade From One Release To Another ==&lt;br /&gt;
&lt;br /&gt;
Every Slackware release includes a file named UPGRADE.TXT - it was included for a reason, so READ IT!  Once you are familiar with its contents, the rationale behind the information below will make more sense.  &lt;br /&gt;
&lt;br /&gt;
=== Step 1: Edit your /etc/slapt-get/slaptgetrc ===&lt;br /&gt;
&lt;br /&gt;
Edit your '''/etc/slapt-get/slaptgetrc''' file to reflect the new Slackware version&lt;br /&gt;
&lt;br /&gt;
This:&lt;br /&gt;
    SOURCE=http://slackware.osuosl.org/slackware-12.1/&lt;br /&gt;
    SOURCE=http://software.jaos.org/slackpacks/12.1/&lt;br /&gt;
becomes this:&lt;br /&gt;
    SOURCE=http://slackware.osuosl.org/slackware-12.2/:OFFICIAL&lt;br /&gt;
    SOURCE=http://software.jaos.org/slackpacks/12.2/:OFFICIAL&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Download all updated packages === &lt;br /&gt;
&lt;br /&gt;
Download all updated packages to slapt-get's working directory; by default, this is '''/var/slapt-get'''&lt;br /&gt;
 slapt-get --dist-upgrade --ignore-excludes --download-only&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Put your machine in single-user mode ===&lt;br /&gt;
&lt;br /&gt;
Make sure you have already performed step 2, because the network will not be available in runlevel 1.&lt;br /&gt;
 telinit 1&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Upgrade main packages ===&lt;br /&gt;
&lt;br /&gt;
Versions &amp;gt;= 0.9.11 upgrade glibc-solibs, pkgtools, and sed first , and then upgrade the remainder of the packages.  If you have read the UPGRADE.TXT file, you already know why this is needed. (hint, hint)&lt;br /&gt;
&lt;br /&gt;
* '''Step 4a:''' If you are using slapt-get version earlier than 0.9.11, do:&lt;br /&gt;
 slapt-get --install kernel --no-upgrade&lt;br /&gt;
 slapt-get --install glibc-solibs pkgtools sed&lt;br /&gt;
 slapt-get --dist-upgrade&lt;br /&gt;
&lt;br /&gt;
* '''Step 4b:''' If you are using slapt-get version 0.9.11 or later, do:&lt;br /&gt;
 slapt-get --install kernel --no-upgrade&lt;br /&gt;
 slapt-get --dist-upgrade --ignore-excludes&lt;br /&gt;
&lt;br /&gt;
The '''--dist-upgrade''' option will prompt you to install all *new* packages in the ./a series, and you should say &amp;quot;yes&amp;quot; to ensure that you have a working system after the upgrade.  See step 8 below for more information on installing new packages.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Update LILO and config files ===&lt;br /&gt;
* Make sure the paths in '''/etc/lilo.conf''' point to a valid kernel image, and then run '''/sbin/lilo'''&lt;br /&gt;
* Fix your config files in '''/etc'''; the new ones are named with a *.new suffix.  You should be able to use '''diff -u file file.new''' to show the differences between file and file.new.  You'll have to decide whether to completely replace the old files with the new ones or merge your changes into the new ones first, but you *must* use the new files.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Go back to multi-user mode ===&lt;br /&gt;
&lt;br /&gt;
Sometimes the screen stays blank when you return to runlevel 3, and you might be worried that something went wrong.  Before you panic, type '''clear''' and press Enter - you'll probably get your root prompt back :)&lt;br /&gt;
 telinit 3&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Remove obsolete packages ===&lt;br /&gt;
&lt;br /&gt;
There is an option to do this automatically with slapt-get:&lt;br /&gt;
 slapt-get [--remove|--dist-upgrade] --remove-obsolete&lt;br /&gt;
From '''man slapt-get'''&lt;br /&gt;
   --remove-obsolete&lt;br /&gt;
         Remove  installed packages that are no longer available.  This works for dist-upgrade&lt;br /&gt;
         only.  This removes packages that are no longer available from  any  current  package&lt;br /&gt;
         sources,  but  are  currently  installed.  Be careful as this will also remove custom&lt;br /&gt;
         built packages.&lt;br /&gt;
As you see, this option will be fine ''if you don't have any custom-compiled packages'' installed (such as with [[checkinstall]] or using [[SlackBuild_Scripts]]).  Read through the official ChangeLog to find all packages that were removed from Slackware during the development phase; you might be able use something like this to make the process go a bit more quickly:&lt;br /&gt;
 grep -i removed ChangeLog.txt  OR  grep Removed ChangeLog.txt&lt;br /&gt;
&lt;br /&gt;
=== Step 8: Add new packages ===&lt;br /&gt;
&lt;br /&gt;
Similar to removing obsolete packages, there is an option to do this automatically with slapt-get using the '''--install-set''' option:&lt;br /&gt;
 slapt-get --upgrade --install-set a ap d f k kde l n t tcl x xap y&lt;br /&gt;
&lt;br /&gt;
From '''man slapt-get''':&lt;br /&gt;
   --install-set [disk set(s)]&lt;br /&gt;
          Install specified disk set(s).  example: --install-set xap n l&lt;br /&gt;
&lt;br /&gt;
This option will upgrade (or install, if not already installed) every package in every disk set.  For reasons already detailed (kernel/alsa versions), this may not be desirable; additionally, if you don't have a full installation of Slackware for whatever reason, this will not be desirable. &lt;br /&gt;
&lt;br /&gt;
The safest option is to read through the official ChangeLog.txt, make a note of new packages added during the release cycle, and install them now with this command:&lt;br /&gt;
 slapt-get --install &amp;lt;newpackage1&amp;gt; &amp;lt;newpackage2&amp;gt; &amp;lt;...&amp;gt;&lt;br /&gt;
You might be able to use something like this to make the process go a bit more quickly, but it will return quite a few extraneous results.&lt;br /&gt;
 grep -i added ChangeLog.txt&lt;br /&gt;
&lt;br /&gt;
=== Step 9: Admire the Results :) ===&lt;br /&gt;
At this point, you should be running the latest version of Slackware.  &lt;br /&gt;
&lt;br /&gt;
== Usage Hint #3: Keep Up With Slackware -current Development ==&lt;br /&gt;
&lt;br /&gt;
After modifying your &amp;lt;code&amp;gt;/etc/slapt-get/slaptgetrc&amp;lt;/code&amp;gt; file to reflect -current sources, the most important advice you should hear is: &amp;lt;b&amp;gt;READ THE CHANGELOG&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seriously, always read the ChangeLog.txt file associated with the -current tree; so long as you read it prior to running the &amp;lt;code&amp;gt;slapt-get --upgrade&amp;lt;/code&amp;gt; command, you should be familiar with any issues that might be encountered.&lt;br /&gt;
&lt;br /&gt;
One idea you might consider is to use slapt-get as a &amp;quot;double checking&amp;quot; tool to ensure you haven't accidentally overlooked any packages.  While the concerns detailed earlier in this article apply here (you won't be informed of any new packages added to -current), you can use the following lines to see if you missed anything that needed to be upgraded:&lt;br /&gt;
&lt;br /&gt;
 slapt-get --update&lt;br /&gt;
 slapt-get --upgrade --simulate&lt;br /&gt;
&lt;br /&gt;
= Related Links =&lt;br /&gt;
&lt;br /&gt;
* [[Release_Changes|Changes in Slackware Release Versions]]&lt;/div&gt;</description>
			<pubDate>Sun, 26 Jun 2011 10:37:24 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Upgrade_Using_Slapt-get</comments>
		</item>
		<item>
			<title>Slapt-get</title>
			<link>https://www.slackwiki.com/index.php?title=Slapt-get&amp;diff=500</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Slapt-get&amp;diff=500</guid>
			<description>&lt;p&gt;Merge-delete: /* Distributions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''slapt-get''' is an [[APT]]-like system for [http://en.wikipedia.org/wiki/Slackware Slackware] [[package management]].&lt;br /&gt;
&lt;br /&gt;
It tries to emulate the features of [[Debian]]'s [[apt-get]] as closely as possible.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
&lt;br /&gt;
* uses native [http://en.wikipedia.org/wiki/Slackware Slackware] tools (installpkg, upgradepkg, and removepkg)&lt;br /&gt;
* supports multiple package sources (including http://linuxpackages.net)&lt;br /&gt;
* cache data concerning packages and updates from package sources&lt;br /&gt;
* supports sources from ftp, ftps, http, https, file:/// and more (libcurl)&lt;br /&gt;
* resumes broken downloads and will verify package integrity with [http://en.wikipedia.org/wiki/Md5 MD5] checksum&lt;br /&gt;
* show packages that are available (from cached data) and installed&lt;br /&gt;
* search package listing using [http://en.wikipedia.org/wiki/POSIX POSIX] and extended [http://en.wikipedia.org/wiki/Regular_expressions regular expressions] by package name, location, and description&lt;br /&gt;
* retrieve, install, and remove packages by name or by specific version&lt;br /&gt;
* retrieve and apply updates&lt;br /&gt;
* upgrade from one Slackware release to another in a few simple steps - see [[Upgrade_Using_Slapt-get]]&lt;br /&gt;
* show description of packages, including mirror location, version, size, dependencies (where available, see [http://software.jaos.org/BUILD/slapt-get/FAQ.html#slgFAQ10 FAQ]), conflicts (where available, see [http://software.jaos.org/BUILD/slapt-get/FAQ.html#slgFAQ31 FAQ]), suggestions (where available, see [http://software.jaos.org/BUILD/slapt-get/FAQ.html#slgFAQ44 FAQ]), description, and installation status&lt;br /&gt;
* exclude (hold) packages from upgrades, by name or by regular expression&lt;br /&gt;
* transaction engine for install, remove, and upgrades, reporting concise information on what is to be done, ensuring each step happens correctly&lt;br /&gt;
* &amp;quot;compare package version&amp;quot; algorithm to prevent downgrades&lt;br /&gt;
* recursive dependency resolution using slack-required meta-data ([http://software.jaos.org/BUILD/slapt-get/FAQ.html#slgFAQ10 see FAQ]) supporting hard, soft, and conditional dependencies&lt;br /&gt;
* package conflict resolution using slack-conflicts meta-data ([http://software.jaos.org/BUILD/slapt-get/FAQ.html#slgFAQ31 see FAQ])&lt;br /&gt;
* package suggestion support for complimentary packages ([http://software.jaos.org/BUILD/slapt-get/FAQ.html#slgFAQ44 see FAQ])&lt;br /&gt;
* Package data download robustness, only writing changes if all sources download successfully as well as only downloading those sources that have changed since the last download&lt;br /&gt;
* [http://en.wikipedia.org/wiki/I18n i18n] support via [http://en.wikipedia.org/wiki/GNU GNU] gettext with over 20 language translations&lt;br /&gt;
* extremely fast and easy to script with&lt;br /&gt;
&lt;br /&gt;
==Dependencies==&lt;br /&gt;
&lt;br /&gt;
slapt-get does not provide dependency resolution for packages included within the Slackware distribution. It does, however, provide a framework for dependency resolution in Slackware compatible packages similar in fashion to the hand-tuned method [http://en.wikipedia.org/wiki/Advanced_Packaging_Tool Advanced Packaging Tool|APT] utilizes. Several package sources and Slackware based distributions take advantage of this functionality.&lt;br /&gt;
&lt;br /&gt;
Adding dependency information requires no modification to the packages themselves.  Rather, the package listing file, PACKAGES.TXT, is used to specify these relationships.  This file is provided by  [http://en.wikipedia.org/wiki/Patrick_Volkerding Patrick Volkerding] and is similar to the Packages.gz file in use by [http://en.wikipedia.org/wiki/Debian Debian].  Several scripts are available to generate the PACKAGES.TXT file from a group of packages (See [http://software.jaos.org/BUILD/slapt-get/FAQ.html#slgFAQ17 FAQ #17]).  The file format used by  [http://en.wikipedia.org/wiki/Patrick_Volkerding Patrick Volkerding] is extended by adding a few extra lines per package.  slapt-get then parses this file during source downloads.  Typically, third party packages store the dependency information within the package itself for later extraction into the PACKAGES.TXT ([http://software.jaos.org/BUILD/slapt-get/FAQ.html#slgFAQ19 See FAQ #19]).  The inclusion of this information within the Slackware package format does not inhibit the ability for Slackware pkgtools to install these packages.  This information is silently ignored and discarded after the package is installed.&lt;br /&gt;
&lt;br /&gt;
[http://www.stabellini.net/depslack.html Other methods] exist for adding dependency information for official Slackware packages without altering the packages themselves.&lt;br /&gt;
&lt;br /&gt;
==Package Sources==&lt;br /&gt;
&lt;br /&gt;
slapt-get works with official Slackware mirrors and third party package repositories.  slapt-get looks for support files, PACKAGES.TXT and CHECKSUMS.md5, in the repository for package information.  These files provide package names, versions, sizes (both compressed and uncompressed), checksums, as well as a package description.  These files can be extended, as discussed in the previous section, to add dependency listings, conflict information, and package suggestions.  These files can also proxy for other remote sources by specifying a MIRROR declaration for each package.  &lt;br /&gt;
&lt;br /&gt;
==libslapt==&lt;br /&gt;
&lt;br /&gt;
slapt-get exports a [http://en.wikipedia.org/wiki/C_programming_language C] [http://en.wikipedia.org/wiki/Library_(computer_science) library] that is used by [http://en.wikipedia.org/wiki/gslapt gslapt] to provide similar functionality through a [http://en.wikipedia.org/wiki/GTK+ GTK+] frontend. &lt;br /&gt;
&lt;br /&gt;
==Distributions==&lt;br /&gt;
&lt;br /&gt;
Besides Slackware, slapt-get may be used with or included by the following distributions:&lt;br /&gt;
&lt;br /&gt;
 * [http://www.vectorlinux.com Vector Linux]&lt;br /&gt;
 * [http://www.mutagenix.org Mutagenix]&lt;br /&gt;
 * [http://slax.linux-live.org SLAX]&lt;br /&gt;
 * [http://www.slamd64.com/ Slamd64]&lt;br /&gt;
 * [http://gsb.sourceforge.net/ Freerock GNOME]&lt;br /&gt;
 * [http://www.gware.org/ GWARE GNOME]&lt;br /&gt;
 * [http://slampp.abangadek.com/ SLAMPP]&lt;br /&gt;
 * [http://getopenlab.com/ OpenLab GNU/Linux]&lt;br /&gt;
 * [http://ocsid.spaghettilinux.org/ Open Community Slackware Install DVD]&lt;br /&gt;
 * [http://floyd-linux.pappapc.com/ Floyd GNU/Linux]&lt;br /&gt;
 * [http://www.stibs.cc/stx/ STX GNU/Linux]&lt;br /&gt;
 * [http://www.nnlinux.com/ Nonux GNU/Linux]&lt;br /&gt;
 * [http://wolvix.org/ Wolvix LiveCD]&lt;br /&gt;
 * [http://www.collegelinux.org College Linux]&lt;br /&gt;
 * [http://www.zenwalk.org/ Zenwalk Linux]&lt;br /&gt;
 * [http://www.truvalinux.org.tr Truva Linux]&lt;br /&gt;
 * [http://sms.it-ccs.com SMS(Superb Mini Server)]&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
  $ slapt-get --update&lt;br /&gt;
  Retrieving package data http://www.slackware.at/data/slackware-10.0/ ...Done&lt;br /&gt;
  Retrieving patch list http://www.slackware.at/data/slackware-10.0/ ...Done&lt;br /&gt;
  Retrieving checksum list http://www.slackware.at/data/slackware-10.0/ ...Done&lt;br /&gt;
  Reading Package Lists...Done&lt;br /&gt;
  Retrieving package data http://software.jaos.org/slackpacks/10.0/ ...Cached&lt;br /&gt;
  Retrieving patch list http://software.jaos.org/slackpacks/10.0/ ...Cached&lt;br /&gt;
  Retrieving checksum list http://software.jaos.org/slackpacks/10.0/ ...Cached&lt;br /&gt;
  Reading Package Lists...Done&lt;br /&gt;
&lt;br /&gt;
  $ slapt-get --upgrade&lt;br /&gt;
  Reading Package Lists... Done&lt;br /&gt;
  The following packages have been EXCLUDED:&lt;br /&gt;
    devs kernel-headers&lt;br /&gt;
  The following packages will be upgraded:&lt;br /&gt;
    binutils bash bin bind cdrtools bzip2 kbd cups cxxlibs e2fsprogs etc gawk gcc gdb inetd infozip less links&lt;br /&gt;
    logrotate lynx man man-pages openssh openssl openssl-solibs pidentd pkgtools procps sed shadow slocate&lt;br /&gt;
    sysklogd sysvinit tar tcpip util-linux vim wget zlib&lt;br /&gt;
  39 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.&lt;br /&gt;
  Need to get 36710K of archives.&lt;br /&gt;
  After unpacking 17880K of additional disk space will be used.&lt;br /&gt;
  Do you want to continue? [y/N]&lt;br /&gt;
&lt;br /&gt;
  $ slapt-get --show slapt-get&lt;br /&gt;
  Package Name: slapt-get&lt;br /&gt;
  Package Mirror: http://software.jaos.org/slackpacks/10.0/&lt;br /&gt;
  Package Location: .&lt;br /&gt;
  Package Version: 0.9.9f-i386-1&lt;br /&gt;
  Package Size: 147 K&lt;br /&gt;
  Package Installed Size: 530 K&lt;br /&gt;
  Package Required:   curl &amp;gt;= 7.12.0-i486-1,glibc-solibs &amp;gt;= 2.3.2-i486-7,binutils,openssl &amp;gt;= 0.9.7d-i486-1,pkgtools,zlib&lt;br /&gt;
  Package Conflicts:&lt;br /&gt;
  Package Suggests:&lt;br /&gt;
  Package MD5 Sum:  cb4b44cbb4efee4e993109231b107828&lt;br /&gt;
  Package Description:&lt;br /&gt;
  slapt-get: slapt-get (APT like system for Slackware)&lt;br /&gt;
  slapt-get: slapt-get is an APT like system for Slackware package management.&lt;br /&gt;
  slapt-get:&lt;br /&gt;
  slapt-get:  * See /usr/doc/slapt-get-0.9.9f/ for complete documentation.&lt;br /&gt;
  slapt-get:  * You will also want to customize /etc/slapt-get/slapt-getrc,&lt;br /&gt;
  slapt-get:    using a local mirror.  www.slackware.com may be very busy.&lt;br /&gt;
  slapt-get:  * Support:&lt;br /&gt;
  slapt-get:    http://software.jaos.org/cgi-bin/mailman/listinfo/slapt-get-user&lt;br /&gt;
  slapt-get:  * Please translate&lt;br /&gt;
  slapt-get:    http://software.jaos.org/BUILD/slapt-get/po/slapt-get.pot&lt;br /&gt;
  slapt-get:    then send to slapt-get-devel@software.jaos.org&lt;br /&gt;
  slapt-get:&lt;br /&gt;
  Package Installed: yes&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[http://software.jaos.org/#slapt-get Homepage]&lt;br /&gt;
&lt;br /&gt;
[[Category:Information]]&lt;/div&gt;</description>
			<pubDate>Sat, 25 Jun 2011 17:03:12 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Slapt-get</comments>
		</item>
		<item>
			<title>Install Slackware Using A USB Flash Drive</title>
			<link>https://www.slackwiki.com/index.php?title=Install_Slackware_Using_A_USB_Flash_Drive&amp;diff=490</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Install_Slackware_Using_A_USB_Flash_Drive&amp;diff=490</guid>
			<description>&lt;p&gt;Merge-delete: Installation quirks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
&lt;br /&gt;
Installing Slackware using a USB flash drive is very easy.&lt;br /&gt;
&lt;br /&gt;
Slackware includes a usbboot.img in the usb-and-pxe-installers directory of the official installation media, which is a minimal image very handy for FTP or other kinds of network installations.&lt;br /&gt;
&lt;br /&gt;
In the same directory one can also find usbimg2disk.sh, a script that will dump the usbboot.img image to a flash drive, useful in case the above image does not work for you out of the box.&lt;br /&gt;
&lt;br /&gt;
Additionally, AlienBOB has written two articles in his blog on how to install Slackware using a USB flash drive from either&lt;br /&gt;
&lt;br /&gt;
[http://alien.slackbook.org/blog/welcome-windows-user/ Microsoft Windows] or [http://alien.slackbook.org/blog/installing-slackware-using-usb-thumb-drive/ Linux].&lt;br /&gt;
&lt;br /&gt;
This document describes yet another way of creating an image capable of booting from USB, containing all of the packages neeeded for an installation, using [http://syslinux.zytor.com/wiki/index.php/Doc/isolinux#HYBRID_CD-ROM.2FHARD_DISK_MODE Isohybrid].&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
A USB flash drive that can fit the ISO image&lt;br /&gt;
&lt;br /&gt;
Syslinux &amp;gt;= 3.72&lt;br /&gt;
&lt;br /&gt;
Additionally you should either have:&lt;br /&gt;
&lt;br /&gt;
a) official Slackware installation media, preferably the DVD ISO one, available on any Slackware mirror&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
b) a local copy of the Slackware tree.&lt;br /&gt;
&lt;br /&gt;
That may be the tree of a stable release, or even the tree of the Slackware current development cycle.&lt;br /&gt;
&lt;br /&gt;
If you choose to use a local copy of the tree you should be able to create your own ISO image using a script such as:&lt;br /&gt;
&lt;br /&gt;
Pat's [http://slackware.osuosl.org/slackware/isolinux/README.TXT DVD script], AlienBOB's [http://www.slackware.com/~alien/tools/mirror-slackware-current.sh mirror-slackware-current script] or even a custom one of your own.&lt;br /&gt;
&lt;br /&gt;
== Using isohybrid ==&lt;br /&gt;
&lt;br /&gt;
At this point you should have a Slackware ISO lying on your hard disk&lt;br /&gt;
&lt;br /&gt;
Make it hybrid:&lt;br /&gt;
&lt;br /&gt;
 isohybrid slackware-13.1-install-dvd.iso&lt;br /&gt;
&lt;br /&gt;
== Copy the ISO to the USB flash drive ==&lt;br /&gt;
&lt;br /&gt;
All that is left to do now is copy the ISO to the USB flash drive.&lt;br /&gt;
&lt;br /&gt;
This can be done using the [http://linux.die.net/man/1/dd dd] command as the root user.&lt;br /&gt;
&lt;br /&gt;
The following command will overwrite all the files currently present on the USB drive so prior backups are highly advisable:&lt;br /&gt;
&lt;br /&gt;
 dd if=slackware-13.1-install-dvd.iso of=/dev/sdX&lt;br /&gt;
&lt;br /&gt;
PS1. dd expects the name of a device, not a partition, so you should use eg. /dev/sdb instead of /dev/sdb1.&lt;br /&gt;
&lt;br /&gt;
PS2. the USB drive should NOT be mounted during dd invocation.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Boot the machine using the USB drive.&lt;br /&gt;
&lt;br /&gt;
Before running '''setup''', look up (with '''fdisk -l''') which device your USB drive is, and mount the device to some location:&lt;br /&gt;
&lt;br /&gt;
 mkdir flash &amp;amp;&amp;amp; mount /dev/sdX1 flash&lt;br /&gt;
&lt;br /&gt;
When installing, choose &amp;quot;Install from a hard drive partition&amp;quot;, with the USB drive as source partition.&lt;br /&gt;
&lt;br /&gt;
Other than that, installation process should be no different than when installing from a DVD.&lt;/div&gt;</description>
			<pubDate>Tue, 07 Jun 2011 11:08:05 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Install_Slackware_Using_A_USB_Flash_Drive</comments>
		</item>
		<item>
			<title>Building A Package</title>
			<link>https://www.slackwiki.com/index.php?title=Building_A_Package&amp;diff=484</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Building_A_Package&amp;diff=484</guid>
			<description>&lt;p&gt;Merge-delete: Added link to slack-desc section and link to slack-desc generation tool&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
&lt;br /&gt;
= Intro =&lt;br /&gt;
&lt;br /&gt;
This is a rough outline for building Slackware packages. Some steps may not be neccessary, some steps might be missing. Use the discussion page for side-notes such as using slacktrack (when DESTDIR fails) and other utilities like checkinstall.&lt;br /&gt;
&lt;br /&gt;
== The good and decent way ==&lt;br /&gt;
&lt;br /&gt;
Configure and compile the source as you usually do:&lt;br /&gt;
 ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Make a temporary destination directory available:&lt;br /&gt;
 mkdir /tmp/build&lt;br /&gt;
&lt;br /&gt;
Install into the temporary directory:&lt;br /&gt;
 make install DESTDIR=/tmp/build&lt;br /&gt;
&lt;br /&gt;
Now strip libs/bins within the temporary directory:&lt;br /&gt;
 strip -s /tmp/build/usr/lib/* /tmp/build/usr/bin/*&lt;br /&gt;
&lt;br /&gt;
You also want to make sure that anything in &amp;lt;tt&amp;gt;/usr/man&amp;lt;/tt&amp;gt; is gzipped before you make the package:&lt;br /&gt;
 gzip -9 /tmp/build/usr/man/man?/*.?&lt;br /&gt;
&lt;br /&gt;
Create the &amp;lt;tt&amp;gt;install&amp;lt;/tt&amp;gt; directory, this is where the description and install script will be stored:&lt;br /&gt;
 cd /tmp/build&lt;br /&gt;
 mkdir install&lt;br /&gt;
 cd install&lt;br /&gt;
&lt;br /&gt;
Using a text editor (or a [http://slack-desc.sourceforge.net/ tool]]), create a file called [[slack-desc]] and fill it with the following contents:&lt;br /&gt;
&lt;br /&gt;
    |-----handy-ruler------------------------------------------------------|&lt;br /&gt;
 app: Application Name (Short/Brief description)&lt;br /&gt;
 app:&lt;br /&gt;
 app: Enter a description of the package you are building.&lt;br /&gt;
 app: All 11 &amp;quot;app:&amp;quot; lines must be present&lt;br /&gt;
 app: &amp;quot;app&amp;quot; needs to be your application name.&lt;br /&gt;
 app: The handy-ruler is there to help you, these lines should not exceed&lt;br /&gt;
 app: 79 characters.&lt;br /&gt;
 app:&lt;br /&gt;
 app:&lt;br /&gt;
 app:&lt;br /&gt;
 app:&lt;br /&gt;
&lt;br /&gt;
Create the actual package:&lt;br /&gt;
 cd /tmp/build&lt;br /&gt;
 makepkg ../app-version-arch-tag.tgz&lt;br /&gt;
&lt;br /&gt;
''(The dashes should appear as above, so if the version has a subversion like say &amp;quot;1.0 RC2&amp;quot; make sure you use 1.0_RC2 not 1.0-RC2. The arch should be something like &amp;quot;i486&amp;quot; for example. The tag should consist of the build number and your initals, e.g. 1zb for Zaphod Beeblebrox's first build, 2zb for his second build, etc.  Official slackware packages have only numbers as tags.)''&lt;br /&gt;
&lt;br /&gt;
When prompted to recreate symbolic links, say &amp;lt;tt&amp;gt;yes&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
When prompted to reset permissions, say &amp;lt;tt&amp;gt;no&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Note: Using '''makepkg -l y -c n''' will give you the same behaviour as answering yes to the symlinks question, and no to the permissions question.''&lt;br /&gt;
&lt;br /&gt;
If all went well, you can now install the package.&lt;br /&gt;
 cd ..&lt;br /&gt;
 installpkg app-version-arch-tag.tgz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The &amp;quot;i don't have time&amp;quot; way ==&lt;br /&gt;
&lt;br /&gt;
Fortunately, Slackware are pretty flexible too. If you don't mind much about what is the source (beware!) that you're compiling you can burn some stages and do something like this: &lt;br /&gt;
 ./configure --prefix=/usr&lt;br /&gt;
 make install DESTDIR=$(pwd)/PACKAGE&lt;br /&gt;
 cd $(pwd)/PACKAGE&lt;br /&gt;
 makepkg -l y -c n ../app-version-arch-tag.tgz&lt;br /&gt;
 installpkg ../app-version-arch-tag.tgz&lt;br /&gt;
&lt;br /&gt;
Of course, you will have a package without description, (probably) uncompressed man pages and unstripped binaries.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
For more information, also see the pages on [[SlackBuild_Scripts]] and [[Different_Approach_To_Buildscripts]].&lt;br /&gt;
----&lt;/div&gt;</description>
			<pubDate>Thu, 12 May 2011 20:39:39 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Building_A_Package</comments>
		</item>
		<item>
			<title>Slack-desc</title>
			<link>https://www.slackwiki.com/index.php?title=Slack-desc&amp;diff=483</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Slack-desc&amp;diff=483</guid>
			<description>&lt;p&gt;Merge-delete: Added Tools section, with links to tools that generate slack-desc files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
A proper slack-desc file should be written as follows:&lt;br /&gt;
&lt;br /&gt;
 # HOW TO EDIT THIS FILE:&lt;br /&gt;
 # The &amp;quot;handy ruler&amp;quot; below makes it easier to edit a package description.  Line&lt;br /&gt;
 # up the first '|' above the ':' following the base package name, and the '|' on&lt;br /&gt;
 # the right side marks the last column you can put a character in.  You must make&lt;br /&gt;
 # exactly 11 lines for the formatting to be correct.  It's also customary to&lt;br /&gt;
 # leave one space after the ':'.&lt;br /&gt;
 &lt;br /&gt;
        |-----handy-ruler------------------------------------------------------|&lt;br /&gt;
 appname: appname (Short description of the application)&lt;br /&gt;
 appname:      &amp;lt;this line is generally left blank&amp;gt;&lt;br /&gt;
 appname: Description of application  -  this description should be fairly&lt;br /&gt;
 appname: in-depth; in other words, make it clear what the package does (and &lt;br /&gt;
 appname: maybe include relevant links and/or instructions if there's room),&lt;br /&gt;
 appname: but don't get too verbose.  &lt;br /&gt;
 appname: This file can have a maximum of eleven (11) lines of text preceded by&lt;br /&gt;
 appname: the &amp;quot;appname: &amp;quot; designation.  &lt;br /&gt;
 appname:&lt;br /&gt;
 appname: It's a good idea to include a link to the application's homepage too.&lt;br /&gt;
 appname:&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;appname&amp;quot; string must *exactly* match the application name portion of the &lt;br /&gt;
Slackware package (for example, a package titled &amp;quot;gaim-1.5-i486-1.tgz&amp;quot; must have &lt;br /&gt;
a slack-desc file with the &amp;lt;appname&amp;gt; string of &amp;quot;gaim: &amp;quot; rather than &amp;quot;Gaim: &amp;quot; or &lt;br /&gt;
&amp;quot;GAIM: &amp;quot; or something else.&lt;br /&gt;
&lt;br /&gt;
The first line ''must'' show the application name followed by a short&lt;br /&gt;
description (enclosed in parentheses).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;handy ruler&amp;quot; is meant to stop you at 79 characters, because the standard&lt;br /&gt;
console is 80x25 and if you go beyond this the words will wrap.&lt;br /&gt;
&lt;br /&gt;
The space after the : is needed only when there is text after the :&lt;br /&gt;
In the above example lines 9 &amp;amp; 11 should not have a space after the :&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
1. There is a command-line tool that automates the creation of slack-desc files and helps you generate legal slack-desc files with minimal effort:&lt;br /&gt;
http://slack-desc.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
2. A web-based tool is also available at: http://www.linuxpackages.net/slackcreator.php&lt;br /&gt;
=See Also=&lt;br /&gt;
 man makepkg&lt;br /&gt;
 man pkgtool&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Thu, 12 May 2011 19:37:41 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Slack-desc</comments>
		</item>
		<item>
			<title>Fstab</title>
			<link>https://www.slackwiki.com/index.php?title=Fstab&amp;diff=474</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Fstab&amp;diff=474</guid>
			<description>&lt;p&gt;Merge-delete: /* Useful Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The /etc/fstab file tells the system how and where to mount filesystems by default.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
The syntax of the file is this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;b&amp;gt;MAN PAGE-ese:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FS_SPEC&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FS_FILE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FS_VFSTYPE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FS_MNTOPS&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FS_FREQ&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FS_PASSNO&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;b&amp;gt;IN ENGLISH:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;DEVICE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;MOUNT_POINT&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FILESYSTEM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;OPTIONS&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;DUMP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FSCK_ORDER&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;b&amp;gt;EXAMPLE:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;/dev/hdb1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;/mnt/windows&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;vfat&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;default&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Field Descriptions==&lt;br /&gt;
FS_SPEC (DEVICE) - the device or remote filesystem to be mounted.&lt;br /&gt;
&lt;br /&gt;
FS_FILE (MOUNT_POINT) - the mount point for the filesystem. &amp;lt;i&amp;gt;NOTE: For swap partitions, this field should be specified as `none'. If the name of the mount point contains spaces these can be escaped as `\040'.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FS_VFSTYPE (FILESYSTEM)-  the type of the filesystem. As of Slackware 10.2, the FILE_SYSTEM choices are:&lt;br /&gt;
:auto, adfs, affs, autofs, coda, cramfs, devpts, efs, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfs4, ntfs, proc, qnx4, reiserfs, romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat, xfs, xiafs and possibly others.&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: for swap-able and portable devices (e.g. memory sticks and CDROMs), &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt; is the best choice because it allows the computer to determine the correct filesystem.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FS_MNTOPS (OPTION) - the (comma seperated) mount options. See the MOUNT command's MAN PAGE for the options because there are MANY!&lt;br /&gt;
The most commonly used options are:&amp;lt;br&amp;gt;&lt;br /&gt;
:noauto - do not mount this device/partition automatically on boot-up.&lt;br /&gt;
:ro - mount this device/partition READ-ONLY (e.g. CDROM).&lt;br /&gt;
:owner - Only allow the owner to mount and un-mount this device/partition.&lt;br /&gt;
:users - Allow any user to mount or unmount this device/partition.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FS_FREQ (DUMP) - used for these filesystems by the dump command to determine which filesystems need to be dumped. If the fifth field is not present, a value of zero is returned and dump will assume that the filesystem does not need to be dumped. For the most part, this should be &amp;quot;0&amp;quot; (zero).&lt;br /&gt;
&lt;br /&gt;
FS_PASSNO (FSCK_ORDER) - used by the fsck program to determine the order in which filesystem checks are done at reboot time. The root filesystem should be specified with a fs_passno of 1, and other filesystems should have a fs_passno of 2. Filesystems within a drive will be checked sequentially, but filesystems on different drives will be checked at the same time to utilize parallelism available in the hardware. If the sixth field is not present or zero, a value of zero is returned and fsck will assume that the filesystem does not need to be checked.&lt;br /&gt;
&lt;br /&gt;
==Benefits Of fstab Entries==&lt;br /&gt;
Once you have a device in the fstab, mounting become VERY easy.  Instead of having to:&lt;br /&gt;
:&amp;lt;code&amp;gt;mount -t iso9660 /dev/hdb1 /mnt/cdrom&amp;lt;/code&amp;gt;&lt;br /&gt;
every time you want to use the CDROM, you can just type:&lt;br /&gt;
:&amp;lt;code&amp;gt;mount /mnt/cdrom&amp;lt;/code&amp;gt;&lt;br /&gt;
IF you have the entry in your fstab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Useful Examples==&lt;br /&gt;
CDROM:&amp;lt;br&amp;gt;&lt;br /&gt;
:/dev/hdc1 /mnt/cdrom auto noauto,ro,owner,users 0 0&lt;br /&gt;
&lt;br /&gt;
[[USB Memory Stick]]:&amp;lt;br&amp;gt;&lt;br /&gt;
:/dev/sda1 /mnt/memstick auto noauto,owner,users 0 0&amp;lt;br&amp;gt;&lt;br /&gt;
(make sure to &amp;lt;code&amp;gt;mkdir /mnt/memstick&amp;lt;/code&amp;gt; after changing your /etc/fstab).&lt;br /&gt;
&lt;br /&gt;
[[External USB Drive / NTFS partition]]&lt;br /&gt;
:/dev/sdd1        /media/1T        ntfs-3g     auto  0   0&lt;br /&gt;
(/dev/sdd1 is your external USB hard drive and /media/1T is destination folder)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: For changing who can access the filesystem on NON-Native linux formats see [[Permissions and Umasks]] and [[Windows Partitions]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Tue, 19 Apr 2011 23:16:06 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Fstab</comments>
		</item>
		<item>
			<title>Fstab</title>
			<link>https://www.slackwiki.com/index.php?title=Fstab&amp;diff=473</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Fstab&amp;diff=473</guid>
			<description>&lt;p&gt;Merge-delete: /* Useful Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The /etc/fstab file tells the system how and where to mount filesystems by default.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
The syntax of the file is this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;b&amp;gt;MAN PAGE-ese:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FS_SPEC&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FS_FILE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FS_VFSTYPE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FS_MNTOPS&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FS_FREQ&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FS_PASSNO&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;b&amp;gt;IN ENGLISH:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;DEVICE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;MOUNT_POINT&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FILESYSTEM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;OPTIONS&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;DUMP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;FSCK_ORDER&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;b&amp;gt;EXAMPLE:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;/dev/hdb1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;/mnt/windows&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;vfat&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;default&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Field Descriptions==&lt;br /&gt;
FS_SPEC (DEVICE) - the device or remote filesystem to be mounted.&lt;br /&gt;
&lt;br /&gt;
FS_FILE (MOUNT_POINT) - the mount point for the filesystem. &amp;lt;i&amp;gt;NOTE: For swap partitions, this field should be specified as `none'. If the name of the mount point contains spaces these can be escaped as `\040'.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FS_VFSTYPE (FILESYSTEM)-  the type of the filesystem. As of Slackware 10.2, the FILE_SYSTEM choices are:&lt;br /&gt;
:auto, adfs, affs, autofs, coda, cramfs, devpts, efs, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfs4, ntfs, proc, qnx4, reiserfs, romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat, xfs, xiafs and possibly others.&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: for swap-able and portable devices (e.g. memory sticks and CDROMs), &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt; is the best choice because it allows the computer to determine the correct filesystem.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FS_MNTOPS (OPTION) - the (comma seperated) mount options. See the MOUNT command's MAN PAGE for the options because there are MANY!&lt;br /&gt;
The most commonly used options are:&amp;lt;br&amp;gt;&lt;br /&gt;
:noauto - do not mount this device/partition automatically on boot-up.&lt;br /&gt;
:ro - mount this device/partition READ-ONLY (e.g. CDROM).&lt;br /&gt;
:owner - Only allow the owner to mount and un-mount this device/partition.&lt;br /&gt;
:users - Allow any user to mount or unmount this device/partition.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FS_FREQ (DUMP) - used for these filesystems by the dump command to determine which filesystems need to be dumped. If the fifth field is not present, a value of zero is returned and dump will assume that the filesystem does not need to be dumped. For the most part, this should be &amp;quot;0&amp;quot; (zero).&lt;br /&gt;
&lt;br /&gt;
FS_PASSNO (FSCK_ORDER) - used by the fsck program to determine the order in which filesystem checks are done at reboot time. The root filesystem should be specified with a fs_passno of 1, and other filesystems should have a fs_passno of 2. Filesystems within a drive will be checked sequentially, but filesystems on different drives will be checked at the same time to utilize parallelism available in the hardware. If the sixth field is not present or zero, a value of zero is returned and fsck will assume that the filesystem does not need to be checked.&lt;br /&gt;
&lt;br /&gt;
==Benefits Of fstab Entries==&lt;br /&gt;
Once you have a device in the fstab, mounting become VERY easy.  Instead of having to:&lt;br /&gt;
:&amp;lt;code&amp;gt;mount -t iso9660 /dev/hdb1 /mnt/cdrom&amp;lt;/code&amp;gt;&lt;br /&gt;
every time you want to use the CDROM, you can just type:&lt;br /&gt;
:&amp;lt;code&amp;gt;mount /mnt/cdrom&amp;lt;/code&amp;gt;&lt;br /&gt;
IF you have the entry in your fstab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Useful Examples==&lt;br /&gt;
CDROM:&amp;lt;br&amp;gt;&lt;br /&gt;
:/dev/hdc1 /mnt/cdrom auto noauto,ro,owner,users 0 0&lt;br /&gt;
&lt;br /&gt;
[[USB Memory Stick]]:&amp;lt;br&amp;gt;&lt;br /&gt;
:/dev/sda1 /mnt/memstick auto noauto,owner,users 0 0&amp;lt;br&amp;gt;&lt;br /&gt;
(make sure to &amp;lt;code&amp;gt;mkdir /mnt/memstick&amp;lt;/code&amp;gt; after changing your /etc/fstab).&lt;br /&gt;
&lt;br /&gt;
[[External USB Drive / NTFS partition]]&lt;br /&gt;
:/dev/sdd1        /media/1T        ntfs-3g     defaults  2   0&lt;br /&gt;
(/dev/sdd1 is your external USB hard drive and /media/1T is destination folder)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: For changing who can access the filesystem on NON-Native linux formats see [[Permissions and Umasks]] and [[Windows Partitions]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Tue, 19 Apr 2011 23:08:37 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Fstab</comments>
		</item>
		<item>
			<title>Hibernate</title>
			<link>https://www.slackwiki.com/index.php?title=Hibernate&amp;diff=471</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Hibernate&amp;diff=471</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Slackware, hibernation works out-of-the-box and can be easily done from KDE's menu. Resuming from hibernation, however, is not set up, so when you turn on your computer again, it starts as normal. That is, if your hardware supports it and if you've set up a swap space larger than your RAM.&lt;br /&gt;
&lt;br /&gt;
== Huge kernel ==&lt;br /&gt;
&lt;br /&gt;
To tell your kernel where to resume from, you need to write the info to ''lilo.conf'':&lt;br /&gt;
&lt;br /&gt;
 append=&amp;quot; resume=/dev/sda6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Replace ''/dev/sda6'' with your actual swap space. Swap partitions are perfect, I think swap files should work too. If you don't know where your swap lies, look at ''/proc/swaps''.&lt;br /&gt;
&lt;br /&gt;
== Generic kernel + initrd ==&lt;br /&gt;
&lt;br /&gt;
If you're using generic or your own kernel, you need to adjust initrd image as well. Append &lt;br /&gt;
&lt;br /&gt;
  -h /dev/sdx&lt;br /&gt;
&lt;br /&gt;
to mkinitrd command so it may look like this:&lt;br /&gt;
 &lt;br /&gt;
  mkinitrd -c -k 2.6.33.4 -f &amp;lt;fs_type&amp;gt; -m &amp;lt;fs_type&amp;gt; -r /dev/sdx -h /dev/sdy&lt;br /&gt;
&lt;br /&gt;
Replace ''/dev/sdx'' with your actual root partition and ''/dev/sdy'' with your actual swap space.&lt;br /&gt;
&lt;br /&gt;
If you're using LVM, don't forget to append '''-L''' to mkinitrd command&lt;br /&gt;
&lt;br /&gt;
  mkinitrd -c -k 2.6.33.4 -f &amp;lt;fs_type&amp;gt; -m &amp;lt;fs_type&amp;gt; -r /dev/sdx -h /dev/volumegroup/swap -L&lt;br /&gt;
&lt;br /&gt;
Afterwards, run lilo.&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.linuxquestions.org/linux/answers/Hardware/Mini_HOW_TO_Hibernate_and_resume_0 Mini_HOW_TO_Hibernate_and_resume_0]&lt;br /&gt;
* Hibernate to encrypted swap - [http://slackware.osuosl.org/slackware-13.1/README_CRYPT.TXT REAME_CRYPT.TXT]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Wed, 13 Apr 2011 11:39:54 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Hibernate</comments>
		</item>
		<item>
			<title>VirtualBox Compilation</title>
			<link>https://www.slackwiki.com/index.php?title=VirtualBox_Compilation&amp;diff=470</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=VirtualBox_Compilation&amp;diff=470</guid>
			<description>&lt;p&gt;Merge-delete: /* Source packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:tutorials]]&lt;br /&gt;
'''VirtualBox''' is a general-purpose full virtualizer for x86 hardware, targeted at server, desktop and embedded use. It comes in two editions&lt;br /&gt;
* Open Source Edition (OSE) - open-source licensed under GPLv2 &lt;br /&gt;
* Personal Use and Evaluation License (PUEL) - closed-source with additional features (USB support, Remote desktop support, ...)&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
This tutorial applies to slackware-''current'' (-current after stable versions 13.1) and VirtualBox 4.0.x OSE&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
See this [http://www.virtualbox.org/wiki/Linux%20build%20instructions list]&lt;br /&gt;
&lt;br /&gt;
Below lies additional, not obvious or not mentioned prerequisites. &lt;br /&gt;
&lt;br /&gt;
=== Source packages ===&lt;br /&gt;
* VirtualBox - get it here: [http://download.virtualbox.org/virtualbox/4.0.2/VirtualBox-4.0.2.tar.bz2 http://download.virtualbox.org/virtualbox/x.y.z/VirtualBox-x.y.z.tar.bz2] where x.y.z stands for version numbers (eg. 4.0.2)&lt;br /&gt;
* PulseAudio - no SlackBuild available (note: applies to 09-01-2010); download sources from [http://www.pulseaudio.org http://www.pulseaudio.org]&lt;br /&gt;
* makeself - get it here: [http://megastep.org/makeself/ http://megastep.org/makeself/]&lt;br /&gt;
&lt;br /&gt;
=== Slackware packages ===&lt;br /&gt;
* jdk&lt;br /&gt;
* gcc-java&lt;br /&gt;
&lt;br /&gt;
=== SlackBuilds ===&lt;br /&gt;
* iasl - contained in SlackBuild [http://slackbuilds.org/repository/13.1/development/acpica/ acpica]&lt;br /&gt;
&lt;br /&gt;
== Compilation ==&lt;br /&gt;
Unpack sources somewhere&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar xjvf VirtualBox-x.y.z.tar.bz2 -C build/&lt;br /&gt;
cd build/VirtualBox-x.y.z_OSE/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run configure script which will generate Makefile.kmk and env.sh scripts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./configure --nofatal --disable-hardening --disable-docs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--nofatal&amp;lt;/code&amp;gt; configure won't stop on non-fatal errors; it usually fails on &amp;lt;code&amp;gt;makeself&amp;lt;/code&amp;gt; variable &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-hardening&amp;lt;/code&amp;gt; - automatically set few symbolic links so you can run VirtualBox binaries from bin/ directory of your build environment; '''don't''' use this switch if you're building package for redistribution&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-docs&amp;lt;/code&amp;gt; - for some reason, build fails when building documentation. If you don't mind using online documentation it's safe to disable building it&lt;br /&gt;
&lt;br /&gt;
Update build environment variables with auto-generated script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ source ./env.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now it's time to compile sources, but there are few pitfalls&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting &amp;amp; Pitfalls ===&lt;br /&gt;
==== PAM ====&lt;br /&gt;
Slackware doesn't ship PAM, so you have to change one line in Config.kmk to disable it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if1of ($(KBUILD_TARGET), linux solaris)&lt;br /&gt;
 # VBOX_WITH_PAM = 1&lt;br /&gt;
 VBOX_WITH_PAM = &lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: It's really blank space, 0 doesn't work as logical False&lt;br /&gt;
&lt;br /&gt;
==== Java path ====&lt;br /&gt;
Inside Config.kmk there is block with few possible locations of JDK binaries. Unfortunately, JDK in Slackware has different path, so you have to add right path.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ifeq ($(KBUILD_TARGET),linux)&lt;br /&gt;
  ifeq ($(origin VBOX_JAVA_HOME),undefined)&lt;br /&gt;
   # Add correct detection for you distro after the /usr/../java-6-sun line.&lt;br /&gt;
   # Slackware JDK resides in /usr/lib/jdk1.6.0_23 (JDK 1.6 update 23; type what version suits you) &lt;br /&gt;
   VBOX_JAVA_HOME := $(firstword $(wildcard \&lt;br /&gt;
	$(PATH_DEVTOOLS)/linux.x86/jdk1.6.0_21 \&lt;br /&gt;
	/usr/lib/jvm/java-6-sun  \&lt;br /&gt;
	/usr/lib/jvm/java-6-openjdk \&lt;br /&gt;
	/usr/lib/jdk1.6.0_23 \&lt;br /&gt;
	/usr/lib/jvm/sun-jdk-1.6 \&lt;br /&gt;
	) /usr/lib/jvm/java-6-sun)&lt;br /&gt;
  endif&lt;br /&gt;
 endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Build ===&lt;br /&gt;
Everything should be prepared by now. Type following command to build VirtualBox&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ kmk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Build VirtualBox kernel module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd out/linux.x86/release/bin/src&lt;br /&gt;
$ make&lt;br /&gt;
$ su&lt;br /&gt;
&amp;lt;password&amp;gt;&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load kernel module (as root)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ modprobe vboxdrv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can start VirtualBox front-end from local bin/ directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./VirtualBox&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Sun, 10 Apr 2011 13:33:04 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:VirtualBox_Compilation</comments>
		</item>
		<item>
			<title>Hibernate</title>
			<link>https://www.slackwiki.com/index.php?title=Hibernate&amp;diff=469</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Hibernate&amp;diff=469</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Slackware, hibernation works out-of-the-box and can be easily done from KDE's menu. Resuming from hibernation, however, is not set up, so when you turn on your computer again, it starts as normal. That is, if your hardware supports it and if you've set up a swap space larger than your RAM.&lt;br /&gt;
&lt;br /&gt;
To tell your kernel where to resume from, you need to write the info to ''lilo.conf'':&lt;br /&gt;
&lt;br /&gt;
 append=&amp;quot; resume=/dev/sda6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Replace ''/dev/sda6'' with your actual swap space. Swap partitions are perfect, I think swap files should work too. If you don't know where your swap lies, look at ''/proc/swaps''.&lt;br /&gt;
&lt;br /&gt;
If you're using generic or your own kernel, you need to adjust initrd image as well. Append &lt;br /&gt;
&lt;br /&gt;
  -h /dev/sdx&lt;br /&gt;
&lt;br /&gt;
to mkinitrd command so it may look like this:&lt;br /&gt;
 &lt;br /&gt;
  mkinitrd -c -k 2.6.33.4 -r /dev/sdx -f &amp;lt;fs_type&amp;gt; -m &amp;lt;fs_type&amp;gt; -h /dev/sdy&lt;br /&gt;
&lt;br /&gt;
Replace ''/dev/sdx'' with your actual root partition and ''/dev/sdy'' with your actual swap space.&lt;br /&gt;
 &lt;br /&gt;
Afterwards, run lilo.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The above is everything I needed to do with my Slackware64 13.1 on a new laptop. I hope that works for you as well, but there are many requirements and intricacies not mentioned above. Google might help you. Please edit this document accordingly if you find out more.&lt;br /&gt;
&lt;br /&gt;
Some more info at [http://www.linuxquestions.org/linux/answers/Hardware/Mini_HOW_TO_Hibernate_and_resume_0]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Sun, 10 Apr 2011 13:20:31 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Hibernate</comments>
		</item>
		<item>
			<title>VirtualBox Compilation</title>
			<link>https://www.slackwiki.com/index.php?title=VirtualBox_Compilation&amp;diff=464</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=VirtualBox_Compilation&amp;diff=464</guid>
			<description>&lt;p&gt;Merge-delete: little update; not complete yet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:tutorials]]&lt;br /&gt;
'''VirtualBox''' is a general-purpose full virtualizer for x86 hardware, targeted at server, desktop and embedded use. It comes in two editions&lt;br /&gt;
* Open Source Edition (OSE) - open-source licensed under GPLv2 &lt;br /&gt;
* Personal Use and Evaluation License (PUEL) - closed-source with additional features (USB support, Remote desktop support, ...)&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
This tutorial applies to slackware-''current'' (-current after stable versions 13.1) and VirtualBox 4.0.x OSE&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
See this [http://www.virtualbox.org/wiki/Linux%20build%20instructions list]&lt;br /&gt;
&lt;br /&gt;
Below lies additional, not obvious or not mentioned prerequisites. &lt;br /&gt;
&lt;br /&gt;
=== Source packages ===&lt;br /&gt;
* VirtualBox - get it here: [http://download.virtualbox.org/virtualbox/4.0.2/VirtualBox-4.0.2.tar.bz2 http://download.virtualbox.org/virtualbox/4.0.2/VirtualBox-x.y.z.tar.bz2] where x.y.z stands for version numbers (eg. 4.0.2)&lt;br /&gt;
* PulseAudio - no SlackBuild available (note: applies to 09-01-2010); download sources from [http://www.pulseaudio.org http://www.pulseaudio.org]&lt;br /&gt;
* makeself - get it here: [http://megastep.org/makeself/ http://megastep.org/makeself/]&lt;br /&gt;
&lt;br /&gt;
=== Slackware packages ===&lt;br /&gt;
* jdk&lt;br /&gt;
* gcc-java&lt;br /&gt;
&lt;br /&gt;
=== SlackBuilds ===&lt;br /&gt;
* iasl - contained in SlackBuild [http://slackbuilds.org/repository/13.1/development/acpica/ acpica]&lt;br /&gt;
&lt;br /&gt;
== Compilation ==&lt;br /&gt;
Unpack sources somewhere&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar xjvf VirtualBox-x.y.z.tar.bz2 -C build/&lt;br /&gt;
cd build/VirtualBox-x.y.z_OSE/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run configure script which will generate Makefile.kmk and env.sh scripts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./configure --nofatal --disable-hardening --disable-docs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--nofatal&amp;lt;/code&amp;gt; configure won't stop on non-fatal errors; it usually fails on &amp;lt;code&amp;gt;makeself&amp;lt;/code&amp;gt; variable &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-hardening&amp;lt;/code&amp;gt; - automatically set few symbolic links so you can run VirtualBox binaries from bin/ directory of your build environment; '''don't''' use this switch if you're building package for redistribution&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-docs&amp;lt;/code&amp;gt; - for some reason, build fails when building documentation. If you don't mind using online documentation it's safe to disable building it&lt;br /&gt;
&lt;br /&gt;
Update build environment variables with auto-generated script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ source ./env.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now it's time to compile sources, but there are few pitfalls&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting &amp;amp; Pitfalls ===&lt;br /&gt;
==== PAM ====&lt;br /&gt;
Slackware doesn't ship PAM, so you have to change one line in Config.kmk to disable it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if1of ($(KBUILD_TARGET), linux solaris)&lt;br /&gt;
 # VBOX_WITH_PAM = 1&lt;br /&gt;
 VBOX_WITH_PAM = &lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: It's really blank space, 0 doesn't work as logical False&lt;br /&gt;
&lt;br /&gt;
==== Java path ====&lt;br /&gt;
Inside Config.kmk there is block with few possible locations of JDK binaries. Unfortunately, JDK in Slackware has different path, so you have to add right path.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ifeq ($(KBUILD_TARGET),linux)&lt;br /&gt;
  ifeq ($(origin VBOX_JAVA_HOME),undefined)&lt;br /&gt;
   # Add correct detection for you distro after the /usr/../java-6-sun line.&lt;br /&gt;
   # Slackware JDK resides in /usr/lib/jdk1.6.0_23 (JDK 1.6 update 23; type what version suits you) &lt;br /&gt;
   VBOX_JAVA_HOME := $(firstword $(wildcard \&lt;br /&gt;
	$(PATH_DEVTOOLS)/linux.x86/jdk1.6.0_21 \&lt;br /&gt;
	/usr/lib/jvm/java-6-sun  \&lt;br /&gt;
	/usr/lib/jvm/java-6-openjdk \&lt;br /&gt;
	/usr/lib/jdk1.6.0_23 \&lt;br /&gt;
	/usr/lib/jvm/sun-jdk-1.6 \&lt;br /&gt;
	) /usr/lib/jvm/java-6-sun)&lt;br /&gt;
  endif&lt;br /&gt;
 endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Build ===&lt;br /&gt;
Everything should be prepared by now. Type following command to build VirtualBox&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ kmk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Build VirtualBox kernel module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd out/linux.x86/release/bin/src&lt;br /&gt;
$ make&lt;br /&gt;
$ su&lt;br /&gt;
&amp;lt;password&amp;gt;&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load kernel module (as root)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ modprobe vboxdrv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can start VirtualBox front-end from local bin/ directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./VirtualBox&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Sun, 27 Feb 2011 01:15:12 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:VirtualBox_Compilation</comments>
		</item>
		<item>
			<title>The Regulars</title>
			<link>https://www.slackwiki.com/index.php?title=The_Regulars&amp;diff=455</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=The_Regulars&amp;diff=455</guid>
			<description>&lt;p&gt;Merge-delete: /* Others */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Staff==&lt;br /&gt;
* [[User:Alan_Hicks|Alan Hicks]]&lt;br /&gt;
* [[User:alienbob|alienBOB]]&lt;br /&gt;
* nachox/darkjoker&lt;br /&gt;
* [[User:phrag|phrag]]&lt;br /&gt;
* [[User:rworkman|rworkman]]&lt;br /&gt;
* [[User:Stx|Stx]]&lt;br /&gt;
* [[User:Unixfool|Unixfool/W|GGL|T]]&lt;br /&gt;
&lt;br /&gt;
==Others==&lt;br /&gt;
&lt;br /&gt;
* [[User:Apeitheo|Apeitheo]]&lt;br /&gt;
* [[User:Boojit|boojit]]&lt;br /&gt;
* [[User:Michiel |BP{k}]]&lt;br /&gt;
* [[User:Buzzedlightyear|Buzzedlightyear]]&lt;br /&gt;
* [[User:chopp|chopp]]&lt;br /&gt;
* [[User:Chrismo|Chrismo]]&lt;br /&gt;
* [[User:clavius|clavius]]&lt;br /&gt;
* [[USer:codermaniac|codermaniac]]&lt;br /&gt;
* [[User:cpunches|cpunches]]&lt;br /&gt;
* [[User:Crudo|crudo]]&lt;br /&gt;
* [[User:Crypticlineage|crypticlineage]]&lt;br /&gt;
* [[User:dadexter|dadexter]]&lt;br /&gt;
* [[User:dchmelik|dchmelik]]&lt;br /&gt;
* [[User:derxob|derxob]]&lt;br /&gt;
* [[User:Dominian|Dominian]]&lt;br /&gt;
* dtanner&lt;br /&gt;
* [[eclipse75]]&lt;br /&gt;
* [[User:FredEmmott|fred]]&lt;br /&gt;
* [[User:giangy|giangy]]&lt;br /&gt;
* [[User:jcm |jcm]]&lt;br /&gt;
* [[User:jpipkin |jpipkin]]&lt;br /&gt;
* [[User:macavity|macavity]]&lt;br /&gt;
* [[User:Marcus | Marcus_]]&lt;br /&gt;
* [[User:Mmlj4|mmlj4]]&lt;br /&gt;
* [[USer:Phoul|Phoul]]&lt;br /&gt;
* [[User:Dardan Fejzullahi |radiohead]]&lt;br /&gt;
* [[User:radi0head|radi0head]]&lt;br /&gt;
* Riddick&lt;br /&gt;
* [[User:robert-brown|robert-brown]]&lt;br /&gt;
* [[User:1337ln | ron1n]]&lt;br /&gt;
* [[User:Ryanx0r|Ryanx0r]]&lt;br /&gt;
* [[USer:slackmagic|slackmagic]]&lt;br /&gt;
* [[User:Slakmagik|slakmagik]]&lt;br /&gt;
* [[StevenR]]&lt;br /&gt;
* [[User:Straterra|Straterra]]&lt;br /&gt;
* [[USer:Strykar|Strykar]]&lt;br /&gt;
* [[User:tecky|tecky]]&lt;br /&gt;
* [[User:Tewmten|tewmten]]&lt;br /&gt;
* [[User:v3ctor|v3ctor]]&lt;br /&gt;
* [[User:Zordrak|Zordrak]]&lt;br /&gt;
* [[User:natex|natex]]&lt;br /&gt;
&lt;br /&gt;
==SlackWiki Admins==&lt;br /&gt;
There is a [[Special:Listadmins|list]] of SlackWiki admins. Please contact one if you think you'd be a suitable admin.&lt;/div&gt;</description>
			<pubDate>Fri, 18 Feb 2011 08:40:05 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:The_Regulars</comments>
		</item>
		<item>
			<title>VirtualBox Compilation</title>
			<link>https://www.slackwiki.com/index.php?title=VirtualBox_Compilation&amp;diff=454</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=VirtualBox_Compilation&amp;diff=454</guid>
			<description>&lt;p&gt;Merge-delete: add missing step + few minor changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:tutorials]]&lt;br /&gt;
'''VirtualBox''' is a general-purpose full virtualizer for x86 hardware, targeted at server, desktop and embedded use. It comes in two editions&lt;br /&gt;
* Open Source Edition (OSE) - open-source licensed under GPLv2 &lt;br /&gt;
* Personal Use and Evaluation License (PUEL) - closed-source with additional features (USB support, Remote desktop support, ...)&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
This tutorial applies to slackware-''current'' (-current after stable versions 13.1) and VirtualBox 4.0.x OSE&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
See this [http://www.virtualbox.org/wiki/Linux%20build%20instructions list]&lt;br /&gt;
&lt;br /&gt;
Below lies additional, not obvious or not mentioned prerequisites. &lt;br /&gt;
&lt;br /&gt;
=== Source packages ===&lt;br /&gt;
* VirtualBox - get it here: [http://download.virtualbox.org/virtualbox/4.0.2/VirtualBox-4.0.2.tar.bz2 http://download.virtualbox.org/virtualbox/4.0.2/VirtualBox-x.y.z.tar.bz2] where x.y.z stands for version numbers (eg. 4.0.2)&lt;br /&gt;
* PulseAudio - no SlackBuild available (note: applies to 09-01-2010); download sources from [http://www.pulseaudio.org http://www.pulseaudio.org]&lt;br /&gt;
* makeself - get it here: [http://megastep.org/makeself/ http://megastep.org/makeself/]&lt;br /&gt;
&lt;br /&gt;
=== Slackware packages ===&lt;br /&gt;
* jdk&lt;br /&gt;
* gcc-java&lt;br /&gt;
&lt;br /&gt;
=== SlackBuilds ===&lt;br /&gt;
* iasl - contained in SlackBuild [http://slackbuilds.org/repository/13.1/development/acpica/ acpica]&lt;br /&gt;
&lt;br /&gt;
== Compilation ==&lt;br /&gt;
Unpack sources somewhere&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar xjvf VirtualBox-x.y.z.tar.bz2 -C build/&lt;br /&gt;
cd build/VirtualBox-x.y.z_OSE/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run configure script which will generate Makefile.kmk and env.sh scripts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./configure --nofatal --disable-hardening --disable-docs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--nofatal&amp;lt;/code&amp;gt; configure won't stop on non-fatal errors; it usually fails on &amp;lt;code&amp;gt;makeself variable&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-hardening&amp;lt;/code&amp;gt; - set some environment variable; use when you don't want to build package&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-docs&amp;lt;/code&amp;gt; - for some reason, build fails when building documentation. If you don't mind using online documentation it's safe to disable building it&lt;br /&gt;
&lt;br /&gt;
Update build environment variables with auto-generated script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ source ./env.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now it's time to compile sources, but there are few pitfalls&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting &amp;amp; Pitfalls ===&lt;br /&gt;
==== PAM ====&lt;br /&gt;
Slackware doesn't ship PAM, so you have to change one line in Config.kmk to disable it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if1of ($(KBUILD_TARGET), linux solaris)&lt;br /&gt;
 # VBOX_WITH_PAM = 1&lt;br /&gt;
 VBOX_WITH_PAM = &lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: It's really blank space, 0 doesn't work as logical False&lt;br /&gt;
&lt;br /&gt;
==== Java path ====&lt;br /&gt;
Inside Config.kmk there is block with few possible locations of JDK binaries. Unfortunately, JDK in Slackware has different path, so you have to add right path.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ifeq ($(KBUILD_TARGET),linux)&lt;br /&gt;
  ifeq ($(origin VBOX_JAVA_HOME),undefined)&lt;br /&gt;
   # Add correct detection for you distro after the /usr/../java-6-sun line.&lt;br /&gt;
   # Slackware JDK resides in /usr/lib/jdk1.6.0_23 (JDK 1.6 update 23; type what version suits you) &lt;br /&gt;
   VBOX_JAVA_HOME := $(firstword $(wildcard \&lt;br /&gt;
	$(PATH_DEVTOOLS)/linux.x86/jdk1.6.0_21 \&lt;br /&gt;
	/usr/lib/jvm/java-6-sun  \&lt;br /&gt;
	/usr/lib/jvm/java-6-openjdk \&lt;br /&gt;
	/usr/lib/jdk1.6.0_23 \&lt;br /&gt;
	/usr/lib/jvm/sun-jdk-1.6 \&lt;br /&gt;
	) /usr/lib/jvm/java-6-sun)&lt;br /&gt;
  endif&lt;br /&gt;
 endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Build ===&lt;br /&gt;
Everything should be prepared by now. Type following command to build VirtualBox&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ kmk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Wed, 09 Feb 2011 03:16:01 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:VirtualBox_Compilation</comments>
		</item>
		<item>
			<title>VirtualBox Compilation</title>
			<link>https://www.slackwiki.com/index.php?title=VirtualBox_Compilation&amp;diff=453</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=VirtualBox_Compilation&amp;diff=453</guid>
			<description>&lt;p&gt;Merge-delete: Created page with &amp;quot;category:tutorials '''VirtualBox''' is a general-purpose full virtualizer for x86 hardware, targeted at server, desktop and embedded use. It comes in two editions * Open Sour...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:tutorials]]&lt;br /&gt;
'''VirtualBox''' is a general-purpose full virtualizer for x86 hardware, targeted at server, desktop and embedded use. It comes in two editions&lt;br /&gt;
* Open Source Edition (OSE) - open-source licensed under GPLv2 &lt;br /&gt;
* Personal Use and Evaluation License (PUEL) - closed-source with additional features (USB support, Remote desktop support, ...)&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
This tutorial applies to slackware-''current'' (-current after stable versions 13.1) and VirtualBox 4.0.x OSE&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
See this [http://www.virtualbox.org/wiki/Linux%20build%20instructions list]&lt;br /&gt;
&lt;br /&gt;
Below lies additional, not obvious or not mentioned prerequisites. &lt;br /&gt;
&lt;br /&gt;
=== Source packages ===&lt;br /&gt;
* VirtualBox - get it here: [http://download.virtualbox.org/virtualbox/4.0.2/VirtualBox-4.0.2.tar.bz2 http://download.virtualbox.org/virtualbox/4.0.2/VirtualBox-x.y.z.tar.bz2] where x.y.z stands for version numbers (eg. 4.0.2)&lt;br /&gt;
* PulseAudio - no SlackBuild available (note: applies to 09-01-2010); download sources from [http://www.pulseaudio.org http://www.pulseaudio.org]&lt;br /&gt;
* makeself - get it here: [http://megastep.org/makeself/ http://megastep.org/makeself/]&lt;br /&gt;
&lt;br /&gt;
=== Slackware packages ===&lt;br /&gt;
* jdk&lt;br /&gt;
* gcc-java&lt;br /&gt;
&lt;br /&gt;
=== SlackBuilds ===&lt;br /&gt;
* iasl - contained in SlackBuild [http://slackbuilds.org/repository/13.1/development/acpica/ acpica]&lt;br /&gt;
&lt;br /&gt;
== Compilation ==&lt;br /&gt;
Unpack sources somewhere&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar xjvf VirtualBox-x.y.z.tar.bz2 -C build/&lt;br /&gt;
cd build/VirtualBox-x.y.z_OSE/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run configure script which will generate Makefile.kmk and env.sh scripts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./configure --nofatal --disable-hardening --disable-docs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;--nofatal&amp;lt;/code&amp;gt; configure won't stop on non-fatal errors; it usually fails on &amp;lt;code&amp;gt;makeself variable&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-hardening&amp;lt;/code&amp;gt; - set some environment variable; use when you don't want to build package&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--disable-docs&amp;lt;/code&amp;gt; - for some reason, build fails when building documentation. If you don't mind using online documentation it's safe to disable building it&lt;br /&gt;
&lt;br /&gt;
Update build environment variables with auto-generated script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ source ./env.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now it's time to compile sources, but there are few pitfalls&lt;br /&gt;
==== PAM ====&lt;br /&gt;
Slackware doesn't ship PAM, so you have to change one line in Config.kmk to disable it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if1of ($(KBUILD_TARGET), linux solaris)&lt;br /&gt;
 # VBOX_WITH_PAM = 1&lt;br /&gt;
 VBOX_WITH_PAM = &lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: It's really blank space, 0 doesn't work as logical False&lt;br /&gt;
&lt;br /&gt;
==== Java path ====&lt;br /&gt;
Inside Config.kmk there is block with few possible locations of JDK binaries. Unfortunately, JDK in Slackware has different path, so you have to add right path.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ifeq ($(KBUILD_TARGET),linux)&lt;br /&gt;
  ifeq ($(origin VBOX_JAVA_HOME),undefined)&lt;br /&gt;
   # Add correct detection for you distro after the /usr/../java-6-sun line.&lt;br /&gt;
   # Slackware JDK resides in /usr/lib/jdk1.6.0_23 (JDK 1.6 update 23; type what version suits you) &lt;br /&gt;
   VBOX_JAVA_HOME := $(firstword $(wildcard \&lt;br /&gt;
	$(PATH_DEVTOOLS)/linux.x86/jdk1.6.0_21 \&lt;br /&gt;
	/usr/lib/jvm/java-6-sun  \&lt;br /&gt;
	/usr/lib/jvm/java-6-openjdk \&lt;br /&gt;
	/usr/lib/jdk1.6.0_23 \&lt;br /&gt;
	/usr/lib/jvm/sun-jdk-1.6 \&lt;br /&gt;
	) /usr/lib/jvm/java-6-sun)&lt;br /&gt;
  endif&lt;br /&gt;
 endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Wed, 09 Feb 2011 03:11:01 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:VirtualBox_Compilation</comments>
		</item>
		<item>
			<title>Dhcp renewal after wakeup</title>
			<link>https://www.slackwiki.com/index.php?title=Dhcp_renewal_after_wakeup&amp;diff=441</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Dhcp_renewal_after_wakeup&amp;diff=441</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tips]]&lt;br /&gt;
&lt;br /&gt;
Sometimes you need a new IP address after waking up from sleep/standby/hibernate modes. Network managers like Wicd can do this and are recommended for laptops, but you can use the pm-utils triggers yourself without installing and running more software too. The following script works for me:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# put this to:  /usr/lib64/pm-utils/sleep.d/05DhcpcdRenew&lt;br /&gt;
# /usr/lib/pm-utils/ .. on 32-bit systems&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
        hibernate|suspend)&lt;br /&gt;
                dhcpcd -k eth0&lt;br /&gt;
                ;;&lt;br /&gt;
        thaw|resume)&lt;br /&gt;
                dhcpcd eth0&lt;br /&gt;
                ;;&lt;br /&gt;
        *) exit $NA&lt;br /&gt;
                ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The script probably needs to be executable.&lt;/div&gt;</description>
			<pubDate>Sun, 28 Nov 2010 15:39:39 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Dhcp_renewal_after_wakeup</comments>
		</item>
		<item>
			<title>Dhcp renewal after wakeup</title>
			<link>https://www.slackwiki.com/index.php?title=Dhcp_renewal_after_wakeup&amp;diff=440</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Dhcp_renewal_after_wakeup&amp;diff=440</guid>
			<description>&lt;p&gt;Merge-delete: dhcp renew after sleep tip&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tips]]&lt;br /&gt;
&lt;br /&gt;
Sometimes you need a new IP address after waking up from sleep/standby/hibernate modes. Network managers like Wicd can do this and are recommended for laptops, but you can use the pm-utils triggers yourself without installing and running more software too. The following script works for me:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# put this to:  /usr/lib64/pm-utils/sleep.d/05DhcpcdRenew&lt;br /&gt;
# /usr/lib/pm-utils/ .. on 32-bit systems&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
        hibernate|suspend)&lt;br /&gt;
                ;;  &lt;br /&gt;
        thaw|resume)&lt;br /&gt;
                dhcpcd -n&lt;br /&gt;
                ;; &lt;br /&gt;
        *) exit $NA&lt;br /&gt;
                ;; &lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The script probably needs to be executable.&lt;/div&gt;</description>
			<pubDate>Sat, 27 Nov 2010 14:08:58 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Dhcp_renewal_after_wakeup</comments>
		</item>
		<item>
			<title>Multilib</title>
			<link>https://www.slackwiki.com/index.php?title=Multilib&amp;diff=396</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Multilib&amp;diff=396</guid>
			<description>&lt;p&gt;Merge-delete: Link to alienBOB's multilib tutorial and a detail about not using SBo packages for display drivers.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There's a good tutorial (and packages) on how to set up multilib support (32-bit programs on Slackware64) at&lt;br /&gt;
[http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:multilib AlienBOB's site]. You'd do well to go there next.&lt;br /&gt;
&lt;br /&gt;
''However'', as that's not complete and clear on all points, here are some details:&lt;br /&gt;
&lt;br /&gt;
==Binary display drivers==&lt;br /&gt;
&lt;br /&gt;
You need to reinstall binary drivers. ATI and Nvidia driver packages contain both 64bit and 32bit libraries to be maximally useful on a 64bit multilib OS. However, the slackbuild scripts available at slackbuilds.org are not up to this task, so if you already installed 64-bit binary drivers from slackbuilds.org, you should remove these and then use ATI's or Nvidia's driver installer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Thu, 05 Aug 2010 21:03:37 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Multilib</comments>
		</item>
		<item>
			<title>Kernel Checklist</title>
			<link>https://www.slackwiki.com/index.php?title=Kernel_Checklist&amp;diff=392</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Kernel_Checklist&amp;diff=392</guid>
			<description>&lt;p&gt;Merge-delete: just fixed a couple of spelling typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# [&amp;amp;radic;] Make sure the filesystem type of your root partition is compiled into the kernel. To check what your root filesystem is type &amp;quot;mount&amp;quot;.&lt;br /&gt;
# [&amp;amp;radic;] Check that your networking card is compiled as a module or compiled into the kernel.&lt;br /&gt;
# [&amp;amp;radic;] If you are using NVIDIA video card make sure you compile the AGP as a module&lt;br /&gt;
# [&amp;amp;radic;] The sound card is important for listening to music; module it, or compile it in.&lt;br /&gt;
# [&amp;amp;radic;] Another important thing that people miss out is the IDE chipset. This is important because you want to enable DMA on drives, and other important speed enhancements.&lt;br /&gt;
# [&amp;amp;radic;] If you are going to use a camera that requires usb mass storage compile in SCSI Generic and USB-Mass storage.&lt;br /&gt;
# [&amp;amp;radic;] Compile the sysfs feature in the kernel as that is an important for /sys. It is important for the 2.6 kernel.&lt;br /&gt;
# [&amp;amp;radic;] If you must have framebuffer make sure you compile it in with the appropriate things. If you get a black screen set lilo.conf to vga = normal, then mess with it later. Also for nvidia users the rivafb is broken on many cards, so do not compile it in because it effects the nvidia driver for X. So use the vesafb instead.&lt;br /&gt;
# [&amp;amp;radic;] Another useful tool that i use is the .config in /proc (A must have I think)&lt;br /&gt;
# [&amp;amp;radic;] ATA/ATAPI settings are also useful for people, might want to make sure your kernel has that.&lt;br /&gt;
# [&amp;amp;radic;] SATA/SCSI Make SURE YOU COMPILE it into the kernel and make sure you actually compile it in. If you have a SATA or SCSI hardware.&lt;br /&gt;
# [&amp;amp;radic;] Iptables modules if you are going to use iptables or make a firewall. I use modules:)&lt;br /&gt;
# [&amp;amp;radic;] I always recommend that in ALSA you compile or module OSS Emulation API&lt;br /&gt;
# [&amp;amp;radic;] APM or ACPI is always something you might want to enable. This is not a feature needed by the kernel but, some people might need its features.&lt;br /&gt;
&lt;br /&gt;
Just a reminder that the root filesystem (SCSI/SATA/etc) should be compiled into the kernel for obvious reasons.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tips]]&lt;/div&gt;</description>
			<pubDate>Wed, 28 Jul 2010 00:45:20 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Kernel_Checklist</comments>
		</item>
		<item>
			<title>SlackRoll Tutorial</title>
			<link>https://www.slackwiki.com/index.php?title=SlackRoll_Tutorial&amp;diff=384</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=SlackRoll_Tutorial&amp;diff=384</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;SlackRoll&amp;lt;/strong&amp;gt; is a package or update manager for Slackware Linux. Part of this tutorial has been taken from its [http://rg3.github.com/slackroll/ official webpage] and FAQ. SlackRoll's defining points:&lt;br /&gt;
&lt;br /&gt;
* Its internal mechanism based on package states.&lt;br /&gt;
* Like &amp;lt;em&amp;gt;slackpkg&amp;lt;/em&amp;gt;, SlackRoll only works with official mirrors, meaning that to keep third party packages up to date you need to perform the task by hand (recommended practice, using SlackBuild scripts) or use a second different tool.&lt;br /&gt;
* It does not try to compare package version numbers to decide if a package should be upgraded or not.&lt;br /&gt;
* Partly as a consequence of the previous point, it has no known flaws detecting package updates (including reverts), new packages, removed packages, third party packages getting an official version and blacklisted packages (&amp;lt;em&amp;gt;frozen&amp;lt;/em&amp;gt; in its terminology) being removed.&lt;br /&gt;
* It has a broad range of operations and features.&lt;br /&gt;
* It attempts to be fast. Most internal operations like listing available upgrades usually take less than one second on a modern computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Python 2.4 or later (provided by package &amp;lt;em&amp;gt;python&amp;lt;/em&amp;gt; starting with Slackware 10.1).&lt;br /&gt;
* GnuPG (provided by package &amp;lt;em&amp;gt;gnupg&amp;lt;/em&amp;gt; or &amp;lt;em&amp;gt;gnupg2&amp;lt;/em&amp;gt;).&lt;br /&gt;
* Vim (provided by package &amp;lt;em&amp;gt;vim&amp;lt;/em&amp;gt;).&lt;br /&gt;
* A pager which is &amp;lt;em&amp;gt;less&amp;lt;/em&amp;gt; by default (provided by package &amp;lt;em&amp;gt;less&amp;lt;/em&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Procedure ==&lt;br /&gt;
&lt;br /&gt;
Download the SlackRoll package from the [http://github.com/rg3/slackroll/downloads project download page] and install it in your system using &amp;lt;tt&amp;gt;installpkg&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Background Information =&lt;br /&gt;
&lt;br /&gt;
The majority of SlackRoll commands that receive a list of packages expect only the package names (&amp;lt;em&amp;gt;foo&amp;lt;/em&amp;gt; as opposed to &amp;lt;em&amp;gt;foo-1.1-i486-3.tgz&amp;lt;/em&amp;gt;). Some of them also allow using a specific version, but they are the exception.&lt;br /&gt;
&lt;br /&gt;
SlackRoll creates a persistent database of packages in your hard drive. Each package is in one of several possible states. Part of the initial configuration consists in deciding which states some of your packages will have. There are two types of states: states to avoid (temporary states) and normal states. When the remote Slackware official tree is updated, SlackRoll may put some packages in temporary states. By upgrading, installing, removing and marking packages your objective is to correct those packages and put them in a normal state.&lt;br /&gt;
&lt;br /&gt;
== States to Avoid ==&lt;br /&gt;
&lt;br /&gt;
=== New ===&lt;br /&gt;
&lt;br /&gt;
New packages are packages present in the remote tree that weren't present before. You should decide if you want to install them or mark them as not installed.&lt;br /&gt;
&lt;br /&gt;
=== Outdated ===&lt;br /&gt;
&lt;br /&gt;
Outdated packages are present in your system, but the version you have does not match any relevant one in the remote tree. You should upgrade these packages.&lt;br /&gt;
&lt;br /&gt;
=== Unavailable ===&lt;br /&gt;
&lt;br /&gt;
Unavailable packages are packages present in your system. Previously, they probably existed in the remote tree, but now they do not seem to be available for downloading and installing. You should decide if you want to remove them or mark them as foreign.&lt;br /&gt;
&lt;br /&gt;
== Normal States ==&lt;br /&gt;
&lt;br /&gt;
=== Installed ===&lt;br /&gt;
&lt;br /&gt;
Installed packages are very common. They are present in your system and in the remote tree, and both versions match.&lt;br /&gt;
&lt;br /&gt;
=== Not Installed ===&lt;br /&gt;
&lt;br /&gt;
Not installed packages are also very common. They are present in the remote tree but not in your system. They can be downloaded and installed if you want.&lt;br /&gt;
&lt;br /&gt;
=== Foreign ===&lt;br /&gt;
&lt;br /&gt;
Foreign packages are packages present in your system but not in the remote tree. However, unlike unavailable packages, they are supposed to be present in your system. No package will enter this state automatically. Only the ones you mark. It's usually reserved for third party packages and packages you build yourself. It's worth noting that if a foreign package ever appears in the remote official tree, it will be marked as installed or, probably, outdated. Thus, SlackRoll will give priority to the new official package over yours. If you still want to use your own build, mark it as frozen.&lt;br /&gt;
&lt;br /&gt;
=== Frozen ===&lt;br /&gt;
&lt;br /&gt;
Frozen packages are present in your system and in the remote tree. Your version may or may not match the ones from the remote tree, but SlackRoll will not tell you they need to be upgraded. No package will enter this state automatically. It's usually reserved for packages that shouldn't be upgraded automatically or ever (&amp;lt;em&amp;gt;aaa_elflibs&amp;lt;/em&amp;gt;, kernels, etc) and sometimes for customized versions of official packages. It's also worth mentioning that a frozen package will be moved to unavailable if it disappears from the remote tree. It that happens and you want to continue using it, you'll need to mark it as foreign.&lt;br /&gt;
&lt;br /&gt;
= Initial Configuration =&lt;br /&gt;
&lt;br /&gt;
Word of warning: it's highly recommended to do the initial configuration from an up-to-date and controlled system. This will avoid confusion and helps preventing mistakes setting the initial package states.&lt;br /&gt;
&lt;br /&gt;
== Preparing Your System ==&lt;br /&gt;
&lt;br /&gt;
Choose a Slackware mirror for your Slackware version. Use the &amp;lt;em&amp;gt;set-mirror&amp;lt;/em&amp;gt; operation to select one mirror. SlackRoll can work with stable trees as well as the &amp;lt;em&amp;gt;current&amp;lt;/em&amp;gt; tree. Example:&lt;br /&gt;
&lt;br /&gt;
  # slackroll set-mirror 'http://slackware.example.org/slackware-current/'&lt;br /&gt;
&lt;br /&gt;
Do not forget to include the trailing slash in the mirror URL. Import, to your keyring, the GnuPG key used to sign the official Slackware packages. This key can be found in Slackware CDs and DVDs as the file GPG-KEY, and you can import the key to your keyring using the command &amp;lt;em&amp;gt;gpg --import&amp;lt;/em&amp;gt;, but SlackRoll is able to download the key from the mirror and importing it automatically, if you trust the mirror.&lt;br /&gt;
&lt;br /&gt;
  # slackroll import-key&lt;br /&gt;
&lt;br /&gt;
Finally, retrieve the mirror information for the first time. This will download a few metadata files, and this is what you need to do when you're going to handle a new round of updates.&lt;br /&gt;
&lt;br /&gt;
  # slackroll update&lt;br /&gt;
&lt;br /&gt;
== Going Over Package States for The First Time ==&lt;br /&gt;
&lt;br /&gt;
When you run SlackRoll for the first times, it will put every remote package not present in your system in the state New. When your system is up to date and under control, you can blindly mark every new package as not installed with the following command:&lt;br /&gt;
&lt;br /&gt;
  # slackroll new-not-installed&lt;br /&gt;
&lt;br /&gt;
Any third party package present in your system will be put in the state Unavailable. When your system is up to date and under control you can blindly mark all unavailable packages as foreign. &amp;lt;em&amp;gt;However&amp;lt;/em&amp;gt;, the number of foreign packages is usually not very high and forgetting to remove from your system a package that was removed from the remote tree is a common mistake. The Book of Best Practices would suggest that you review the list of unavailable packages once and carefully in order to detect packages that should not be present in your system. To print the list run:&lt;br /&gt;
&lt;br /&gt;
  # slackroll list-unavailable&lt;br /&gt;
&lt;br /&gt;
If you locate any package that needs to be removed, you can remove them using &amp;lt;em&amp;gt;removepkg&amp;lt;/em&amp;gt; or the &amp;lt;em&amp;gt;remove&amp;lt;/em&amp;gt; operation. The later has additional functionality so it's recommended:&lt;br /&gt;
&lt;br /&gt;
  # slackroll remove foo bar&lt;br /&gt;
&lt;br /&gt;
Now you can mark the rest as foreign packages.&lt;br /&gt;
&lt;br /&gt;
  # slackroll unavailable-foreign&lt;br /&gt;
&lt;br /&gt;
Finally, you probably want to mark some packages as frozen. It's usually a good idea to do this with &amp;lt;em&amp;gt;aaa_elflibs&amp;lt;/em&amp;gt;, kernel packages and others.&lt;br /&gt;
&lt;br /&gt;
  # slackroll frozen aaa_elflibs foo bar&lt;br /&gt;
&lt;br /&gt;
= Day to Day Usage =&lt;br /&gt;
&lt;br /&gt;
Apart from the operations listed here, you can run the &amp;lt;em&amp;gt;help&amp;lt;/em&amp;gt; operation to get the full list of supported operations, along with a brief description of each one. A more detailed description can be found in the [http://wiki.github.com/rg3/slackroll/operations-guide operations guide].&lt;br /&gt;
&lt;br /&gt;
== New Round of Updates ==&lt;br /&gt;
&lt;br /&gt;
What to do when there is a new round of updates? The Book of Best Practices suggests taking care of different events in a specific order:&lt;br /&gt;
&lt;br /&gt;
* Updates to glibc-solibs, sed and pkgtools need to be handled first, in that order.&lt;br /&gt;
* If there are new packages, handle them second.&lt;br /&gt;
* Then, it's time to upgrade outdated packages.&lt;br /&gt;
* If packages have been deleted from the remote tree, handle them last.&lt;br /&gt;
&lt;br /&gt;
This is the correct order in 99% of the cases. SlackRoll will attempt to warn you and ask for confirmation if it detects you may be breaking this order. However, &amp;lt;strong&amp;gt;you&amp;lt;/strong&amp;gt; have the last word on what to do, so proceed with caution and don't break your system.&lt;br /&gt;
&lt;br /&gt;
First, update the remote mirror information with the &amp;lt;em&amp;gt;update&amp;lt;/em&amp;gt; operation we mentioned before. New changelog entries will be saved to your hard drive. It's recommended that you take a look at the changelog at this point, using the &amp;lt;em&amp;gt;changelog&amp;lt;/em&amp;gt; operation. Then, get an overview of the events using the &amp;lt;em&amp;gt;list-transient&amp;lt;/em&amp;gt; operation, which will list the new, outdated and unavailable packages along with a big fat warning message if activity in key system packages is detected.&lt;br /&gt;
&lt;br /&gt;
The best way to deal with glibc-solibs, sed and pkgtool updates is to use the &amp;lt;em&amp;gt;upgrade-key-packages&amp;lt;/em&amp;gt; operation.&lt;br /&gt;
&lt;br /&gt;
  # slackroll upgrade-key-packages&lt;br /&gt;
&lt;br /&gt;
You could also use the &amp;lt;em&amp;gt;install&amp;lt;/em&amp;gt; operation. Despite its name, it can be used to both install and upgrade individual packages. Let's suppose packages &amp;lt;em&amp;gt;glibc-solibs&amp;lt;/em&amp;gt; and &amp;lt;em&amp;gt;sed&amp;lt;/em&amp;gt; where updated:&lt;br /&gt;
&lt;br /&gt;
  # slackroll install glibc-solibs sed&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;em&amp;gt;install&amp;lt;/em&amp;gt; operation is one of the few operations allowing you to pass specific package versions. It will proceed in the order you indicate, so remember to give the packages in the correct order if you use this method.&lt;br /&gt;
&lt;br /&gt;
Second, you should handle new packages. You can clearly get a list of new packages with the &amp;lt;em&amp;gt;list-new&amp;lt;/em&amp;gt; operation. New packages can be installed with the &amp;lt;em&amp;gt;install&amp;lt;/em&amp;gt; operation as we just showed. When installing a remote package, SlackRoll will give you the opportunity of selecting the version to install if there are several available in the remote tree. Or, if you are not interested in installing a new package, mark it as not installed:&lt;br /&gt;
&lt;br /&gt;
  # slackroll not-installed foo bar&lt;br /&gt;
&lt;br /&gt;
If the package names are not enough for you to decide if you want to install it or not, you can always use the &amp;lt;em&amp;gt;info&amp;lt;/em&amp;gt; operation and SlackRoll will download and display the package info file (small &amp;lt;em&amp;gt;txt&amp;lt;/em&amp;gt; files in the remote tree). And, of course, be carefull with new libraries as they may have been included to extend the functionality of an existing package you may have installed.&lt;br /&gt;
&lt;br /&gt;
The third step is taking care of outdated packages. For that, a few operations are available. &amp;lt;em&amp;gt;list-upgrades&amp;lt;/em&amp;gt; lets you see a summary of the available upgrades. You can download and install them with &amp;lt;em&amp;gt;upgrade&amp;lt;/em&amp;gt; or download them with &amp;lt;em&amp;gt;download-upgrades&amp;lt;/em&amp;gt; or even print their URLs with &amp;lt;em&amp;gt;urls-upgrades&amp;lt;/em&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
And, finally, review the list of unavailable packages. Be careful with unavailable packages. Sometimes you install a foreign package but forget to mark it as such in SlackRoll. To avoid that problem, it's better to install them with the &amp;lt;em&amp;gt;install-foreign&amp;lt;/em&amp;gt; operation. Individual unavailable packages can be removed with the &amp;lt;em&amp;gt;remove&amp;lt;/em&amp;gt; operation as we showed before, and also all of them at the same time with the &amp;lt;em&amp;gt;remove-unavailable&amp;lt;/em&amp;gt; operation.&lt;br /&gt;
&lt;br /&gt;
== Installing and Removing Individual Packages ==&lt;br /&gt;
&lt;br /&gt;
There are a few operations related to installing and getting some information about individual packages. The most common ones are &amp;lt;em&amp;gt;install&amp;lt;/em&amp;gt; to upgrade or install packages, &amp;lt;em&amp;gt;info&amp;lt;/em&amp;gt; to maybe download and display package info files, &amp;lt;em&amp;gt;urls&amp;lt;/em&amp;gt; to get a list of URLs and &amp;lt;em&amp;gt;remove&amp;lt;/em&amp;gt; to remove individual packages.&lt;br /&gt;
&lt;br /&gt;
Operations that install packages let you manage &amp;lt;em&amp;gt;.new&amp;lt;/em&amp;gt; files after the installation is completed, in a similar way to &amp;lt;em&amp;gt;slackpkg&amp;lt;/em&amp;gt;. You can view the differences between the &amp;lt;em&amp;gt;.new&amp;lt;/em&amp;gt; file and its counterparts with &amp;lt;em&amp;gt;vimdiff&amp;lt;/em&amp;gt; (which provides a nice and colorized way of spotting the differences and maybe porting the old configuration to the new file), you can overwrite the old file with the &amp;lt;em&amp;gt;.new&amp;lt;/em&amp;gt; file, delete the &amp;lt;em&amp;gt;.new&amp;lt;/em&amp;gt; file directly, etc.&lt;br /&gt;
&lt;br /&gt;
Additionally, removal operations also track pairs of &amp;lt;em&amp;gt;.new&amp;lt;/em&amp;gt; files and give you the opportunity of deleting configuration files that have been left behind. You are not forced to remove the files left behind, of course.&lt;br /&gt;
&lt;br /&gt;
Upgrade operations will perform both tasks. First, they will let you review the &amp;lt;em&amp;gt;.new&amp;lt;/em&amp;gt; files and then they will give you the opportunity of deleting obsolete configuration files left behind.&lt;br /&gt;
&lt;br /&gt;
While using &amp;lt;em&amp;gt;vimdiff&amp;lt;/em&amp;gt;, turning off syntax highlighting is recommended. &amp;lt;em&amp;gt;Vim&amp;lt;/em&amp;gt; uses colors to highlight file differences and those can interfere with syntax highlighting colors, making text invisible or hard to read. Syntax highlighting can be turned off temporarily by using &amp;quot;&amp;lt;tt&amp;gt;:syntax off&amp;lt;/tt&amp;gt;&amp;quot; in command mode, or you can disable it permanently putting &amp;quot;&amp;lt;tt&amp;gt;syntax off&amp;lt;/tt&amp;gt;&amp;quot; in your &amp;lt;tt&amp;gt;~/.vimrc&amp;lt;/tt&amp;gt; file (noting that usually you run SlackRoll as the superuser).&lt;br /&gt;
&lt;br /&gt;
== Managing Customized Versions of Official Packages ==&lt;br /&gt;
&lt;br /&gt;
There are at least three ways of dealing with customized versions of official packages. These are custom versions or compilations of packages present in the remote official tree. They are normally used to add or remove features, or activate or apply patches that are disabled by default. For example, if you want to activate the &amp;lt;em&amp;gt;freetype&amp;lt;/em&amp;gt; bytecode interpreter, you need to rebuild that package.&lt;br /&gt;
&lt;br /&gt;
The simplest way of dealing with these packages is to give them the same name and version as the official packages. When they are upgraded in the remote tree, however, SlackRoll will want to upgrade them. You can mark them as frozen before upgrading and only unfreeze them after you have rebuilt the new version, if you want to avoid SlackRoll replacing them with the new official version.&lt;br /&gt;
&lt;br /&gt;
Second, you can give them the same name and version as the official package, &amp;lt;strong&amp;gt;but&amp;lt;/strong&amp;gt; keep them frozen all the time. How would you know then if they need to be rebuilt? With the &amp;lt;em&amp;gt;list-outdated-frozen&amp;lt;/em&amp;gt; operation. Take into account the information given by &amp;lt;em&amp;gt;list-outdated-frozen&amp;lt;/em&amp;gt; is not reflected by any other command. Specifically, it's not reflected as part of &amp;lt;em&amp;gt;list-transient&amp;lt;/em&amp;gt; and friends.&lt;br /&gt;
&lt;br /&gt;
Third, you can give them a name or version different to the official package. Typically this means adding a custom build suffix and marking the package as frozen. How would you know if you need to rebuild it? Paying attention to the changelog specifically searching for upgrades in those packages and also using the &amp;lt;em&amp;gt;list-versions&amp;lt;/em&amp;gt; operation, that lets you view the different known versions of a package, including local and remote ones.&lt;br /&gt;
&lt;br /&gt;
== Maintenance ==&lt;br /&gt;
&lt;br /&gt;
SlackRoll barely requires maintenance. It keeps all downloaded packages in its package cache, located in the &amp;lt;em&amp;gt;/var/slackroll/packages&amp;lt;/em&amp;gt; directory. When downloading files, it keeps them in a temporary directory until they're fully downloaded. If you want to remove every downloaded package, you can simply perform &amp;lt;code&amp;gt;slackroll erase-cache&amp;lt;/code&amp;gt;. There is, however, a &amp;lt;em&amp;gt;clean-cache&amp;lt;/em&amp;gt; operation which does &amp;lt;strong&amp;gt;not&amp;lt;/strong&amp;gt; remove every downloaded package, but only those that are no longer present in the remote tree. Running that operation from time to time keeps your package cache sane and controlled. It may also be a good idea to delete the temporary directory contents from time to time, with &amp;lt;code&amp;gt;slackroll erase-tmp&amp;lt;/code&amp;gt;, but it should be empty unless you interrupt SlackRoll while downloading stuff and never attempt to complete the download.&lt;br /&gt;
&lt;br /&gt;
== Other Operations ==&lt;br /&gt;
&lt;br /&gt;
If you run the &amp;lt;em&amp;gt;help&amp;lt;/em&amp;gt; operation you will see SlackRoll has many other operations, including operations to list packages by state, list local packages, list remote packages and list all known packages. It has operations to put packages in specific states and checking the state of packages. You can also download, install, display info or remove new or unavailable packages or packages with a matching path (like &amp;lt;em&amp;gt;/slackware/kde/&amp;lt;/em&amp;gt;). Finally, there are search operations, to search for packages by name or path, search for files in your local system (like running &amp;lt;em&amp;gt;grep&amp;lt;/em&amp;gt; on the contents of &amp;lt;em&amp;gt;/var/log/packages&amp;lt;/em&amp;gt;), query the Slackware Package Browser, and finally a few very slow but sometimes useful operations to search for broken symlinks under a specific hierarchy and the same for orphan files (files not belonging to any package), as well as searching for missing files.&lt;br /&gt;
&lt;br /&gt;
As a general rule, every operation either does not accept arguments or allows a list of them. Operations accepting packages as arguments expect the package name only unless the help text mentions that they also accept specific package versions. Some operations need regular expressions. For the most part they have the same syntax as they have in &amp;lt;em&amp;gt;grep&amp;lt;/em&amp;gt; or &amp;lt;em&amp;gt;Perl&amp;lt;/em&amp;gt;, but you can read the [http://docs.python.org/lib/re-syntax.html Python regular expressions syntax reference] if you want to perform an unusually complex search.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&lt;br /&gt;
==Related Links==&lt;br /&gt;
&lt;br /&gt;
[http://www.cellulite.co.uk/ '''cellulite''']&lt;/div&gt;</description>
			<pubDate>Fri, 23 Jul 2010 10:50:35 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:SlackRoll_Tutorial</comments>
		</item>
		<item>
			<title>ACPI Modules</title>
			<link>https://www.slackwiki.com/index.php?title=ACPI_Modules&amp;diff=382</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=ACPI_Modules&amp;diff=382</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tips]]&lt;br /&gt;
&lt;br /&gt;
These are the kernel modules that need to be loaded in order to use some of the features of ACPI.&lt;br /&gt;
&lt;br /&gt;
* ac - AC adapter information&lt;br /&gt;
* battery - Battery information&lt;br /&gt;
* fan&lt;br /&gt;
* button - Enables accesing info about ACPI-controlled buttons (like the Power button and the LID button)&lt;br /&gt;
* video&lt;br /&gt;
* thermal - Driver for the Thermal Zone (/proc/acpi/thermal_zone)&lt;br /&gt;
* processor - Loads the ACPI processor driver (/proc/acpi/processor)&lt;br /&gt;
* container - Loads the ACPI container driver&lt;br /&gt;
* vendor-specific drivers (eg acer_acpi, [http://www.thinkwiki.org/wiki/Thinkpad-acpi thinkpad-acpi])&lt;br /&gt;
* [http://www.college-paper.org/custom-essay.html college essays]&lt;/div&gt;</description>
			<pubDate>Thu, 22 Jul 2010 07:14:18 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:ACPI_Modules</comments>
		</item>
		<item>
			<title>Console-Only Communication</title>
			<link>https://www.slackwiki.com/index.php?title=Console-Only_Communication&amp;diff=380</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Console-Only_Communication&amp;diff=380</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;HOWTO: access on-line resorces on the internet using only console-based tools.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Many times, particularly when things aren't working as expected, you may find yourself restricted to a console-only (non-X or non-graphical) session. If you have networking running, you can still access on-line support tools through your console. This tutorial shows you how to:&lt;br /&gt;
&lt;br /&gt;
* Use virtual consoles to increase the number of consoles you can use simultaneously;&lt;br /&gt;
* Use the &amp;lt;tt&amp;gt;screen&amp;lt;/tt&amp;gt; to create sessions that are persistant even after you close the console;&lt;br /&gt;
* Use &amp;lt;tt&amp;gt;irssi&amp;lt;/tt&amp;gt; to access the irc network and ##slackware on irc.freenode.org;&lt;br /&gt;
* Use &amp;lt;tt&amp;gt;lynx&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;wget&amp;lt;/tt&amp;gt; to access HTTP (web) server information;&lt;br /&gt;
* Use &amp;lt;tt&amp;gt;lynx&amp;lt;/tt&amp;gt; to pastebin a file when you need to send configuration information to an IRC channel, and;&lt;br /&gt;
* Use &amp;lt;tt&amp;gt;wget&amp;lt;/tt&amp;gt; to download a pastebin file to your local machine.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
This tutorial will assume you are comfortable with the following concepts:&lt;br /&gt;
* Basic file management operations (&amp;lt;tt&amp;gt;cp&amp;lt;/tt&amp;gt;,&amp;lt;tt&amp;gt;rm&amp;lt;/tt&amp;gt;,etc);&lt;br /&gt;
* Using a console-based file editor (&amp;lt;tt&amp;gt;pico&amp;lt;/tt&amp;gt;,&amp;lt;tt&amp;gt;vi&amp;lt;/tt&amp;gt;,etc);&lt;br /&gt;
* [http://www.casino-spielen.biz online casino spiele]&lt;br /&gt;
&lt;br /&gt;
== Virtual Consoles ==&lt;br /&gt;
One of the handiest features if you're relegated to working from a console is the use of virtual consoles. This allows you to start multiple login sessions from the same console keyboard, mouse, and monitor. That way, you can have one virtual console logged into IRC so you can talk to ##slackware, one that you can use for web access, and another that you can use to test commands. &lt;br /&gt;
&lt;br /&gt;
Using virtual consoles is easy. Simply hold the ALT key while hitting the F2 key (ALT+F2) to switch to the second console. To switch back to the first console, use ALT+F1. You have virtual consoles available on F1 through F6.&lt;br /&gt;
&lt;br /&gt;
If you're using X, you can still access one of the virtual consoles, which is useful if X is hung up for some reason (especially if X won't restart using ctrl+alt+backspace). To access this virtual console, hold CTRL *and* ALT while pressing the F6 key (CTRL+ALT+F6). To switch back to your X session, press CTRL+ALT+F7.&lt;br /&gt;
&lt;br /&gt;
== Using &amp;lt;tt&amp;gt;screen&amp;lt;/tt&amp;gt; ==&lt;br /&gt;
The &amp;lt;tt&amp;gt;screen&amp;lt;/tt&amp;gt; utility allows you to start a console session which is persistent across login and logout. This is useful, for example, if you're using IRC -- perhaps you want to stay logged into your IRC channel even after you have logged out of your console session. The concept is straightforward: when you run screen, it gives you a bash prompt &amp;quot;inside of&amp;quot; the screen session. At this new bash prompt you can start your IRC session. When you wish to log out, you can detach from screen and log out -- but screen continues to run in the background. When you log back in, you can re-attach to your screen session and resume your IRC session.&lt;br /&gt;
&lt;br /&gt;
Visit [[Screen|this page]] for the specifics on attaching and detaching sessions using &amp;lt;tt&amp;gt;screen&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Using &amp;lt;tt&amp;gt;irssi&amp;lt;/tt&amp;gt; ==&lt;br /&gt;
The &amp;lt;tt&amp;gt;irssi&amp;lt;/tt&amp;gt; program is a console-based IRC client. Using irssi, you can access the ##slackware IRC channel on irc.freenode.net. &lt;br /&gt;
&lt;br /&gt;
*WARNING*: Whenever you are using any type of IRC client on any type of machine, make sure that you are not doing so as the superuser (root). Doing so is a security risk, since if for some reason an attacker is able to successfully attack your IRC client, the attacker will have root access to your machine.&lt;br /&gt;
&lt;br /&gt;
To access the ##slackware channel on irc.freenode.org using &amp;lt;tt&amp;gt;irssi&amp;lt;/tt&amp;gt;, perform the following steps:&lt;br /&gt;
&lt;br /&gt;
* Start irssi:&lt;br /&gt;
 user@slackbox:~$ irssi&lt;br /&gt;
* At the (status) prompt, connect to irc.freenode.org:&lt;br /&gt;
 [(status)] /connect irc.freenode.org&lt;br /&gt;
* Once connected, set your nick:&lt;br /&gt;
 [(status)] /nick Myl33tNick&lt;br /&gt;
* Join the ##slackware channel:&lt;br /&gt;
 [(status)] /join ##slackware&lt;br /&gt;
* To exit irssi:&lt;br /&gt;
 [(status)] /quit&lt;br /&gt;
Visit [[Irssi|this page]] for more information on using irssi.&lt;br /&gt;
&lt;br /&gt;
== Using &amp;lt;tt&amp;gt;lynx&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;wget&amp;lt;/tt&amp;gt; ==&lt;br /&gt;
You can use &amp;lt;tt&amp;gt;lynx&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;wget&amp;lt;/tt&amp;gt; to access http (web) servers from your console session. Lynx allows you to access a web site interactively, much like using a graphical browser such as Firefox, but through a text-only console session. &amp;lt;tt&amp;gt;Wget&amp;lt;/tt&amp;gt; allows you to retrieve documents from web servers non-interactively, which is handy when you need to retrieve a certain document (say a tarball or a script file) from a web server in a very quick way.&lt;br /&gt;
&lt;br /&gt;
To start using lynx, from a bash prompt simply type:&lt;br /&gt;
 user@slackbox:~$ lynx &amp;quot;http://www.slackware.com&amp;quot;&lt;br /&gt;
to visit Slackware's official website. To exit lynx, use CTRL+C. In the example above, the double-quotes are not strictly required. However, many URLs contain characters which have special meaning to the bash interpreter (such as the ampersand), and the double-quotes stop bash from trying to interpret those characters.&lt;br /&gt;
&lt;br /&gt;
Although wget has a wide array of options (visit man wget sometime), its basic use is very simple. For example, to download the latest kernel patch (as of this writing) from kernel.org, simply do:&lt;br /&gt;
 user@slackbox:~$ wget &amp;quot;http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.20.3.bz2&amp;quot;&lt;br /&gt;
Again, the quotes here are not strictly required for this URL, but are required for certain URLs. It's good to get in the habit of always double-quoting URLs from a bash prompt.&lt;br /&gt;
&lt;br /&gt;
== Using &amp;lt;tt&amp;gt;lynx&amp;lt;/tt&amp;gt; in conjuction with pastebin ==&lt;br /&gt;
You may find yourself on ##slackware and another channel member may ask you to &amp;quot;pastebin&amp;quot; information to them. The purpose of pastebin is so that you can share technical information (for example, the contents of a configuration file) with the other channel members, without pasting that information directly into IRC itself (which is generally disliked by other IRC members and will get you banned if you try it). &amp;quot;Pastebin&amp;quot; is a generic term for a web site which offers this sort of service. There are many pastebin sites out there; for simplicity's sake, this tutorial uses [http://pastebin.ca pastebin.ca].&lt;br /&gt;
&lt;br /&gt;
You can use lynx to access the pastebin site, but what if you need to pastebin the contents of an entire file? You can do this using the &amp;lt;tt&amp;gt;lynx&amp;lt;/tt&amp;gt; program:&lt;br /&gt;
* use &amp;lt;tt&amp;gt;lynx&amp;lt;/tt&amp;gt; to access pastebin.ca:&lt;br /&gt;
 user@slackbox:~$ lynx &amp;quot;http://pastebin.ca&amp;quot;&lt;br /&gt;
* Page down until you see the large textbox area, move your cursor to the first line (where you see the X below):&lt;br /&gt;
 Create a New Pastebin Post&lt;br /&gt;
 &lt;br /&gt;
    Welcome  to the Pastebin. For information on what this is, take a look&lt;br /&gt;
    at  the  What  is This? page. You may also want to see the most recent&lt;br /&gt;
    post to the pastebin.&lt;br /&gt;
  &lt;br /&gt;
    Please enter your new post below (or upload a file instead):&lt;br /&gt;
 &lt;br /&gt;
 paste below&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
    X_____________________________________________________________________&lt;br /&gt;
    ______________________________________________________________________&lt;br /&gt;
    ______________________________________________________________________&lt;br /&gt;
    ______________________________________________________________________&lt;br /&gt;
    ______________________________________________________________________&lt;br /&gt;
 (NORMAL LINK)   Use right-arrow or &amp;lt;return&amp;gt; to activate.&lt;br /&gt;
   Arrow keys: Up and Down to move.  Right to follow a link; Left to go back.&lt;br /&gt;
  H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list&lt;br /&gt;
* Press Ctrl+X, then i, and enter the location of the file you wish to pastebin.&lt;br /&gt;
  Enter a filename: /etc/ssh/sshd_config&lt;br /&gt;
* Page down until you see the &amp;quot;Submit Post&amp;quot; link, select it (it will turn yellow), and press the enter key.&lt;br /&gt;
* On the next page, scroll down until you find the URL to your pastebin file. It will look something like this:&lt;br /&gt;
 paste added to database&lt;br /&gt;
 &lt;br /&gt;
   Your  paste  has  been  accepted an added to the database. You will be&lt;br /&gt;
   redirected to it momentarily. The URL for it is:&lt;br /&gt;
 &lt;br /&gt;
   http://pastebin.ca/398871&lt;br /&gt;
 &lt;br /&gt;
   You may use that URL for referencing your submission from now on.&lt;br /&gt;
* Give this URL to the person who requested the information on IRC.&lt;br /&gt;
&lt;br /&gt;
== Using &amp;lt;tt&amp;gt;wget&amp;lt;/tt&amp;gt; in conjunction with pastebin ==&lt;br /&gt;
Every pastebin site should have a way to request any pastebin file in &amp;quot;raw&amp;quot; format, meaning without the added HTML code so that the pastebin information displays properly in a browser. Accessing the &amp;quot;raw&amp;quot; format means you can access exactly what was pastebinned, with nothing else added. This is useful if you want to download a configuration file from pastebin. If you know the raw URL of the pastebin page you need, you can use wget to retrieve the file.&lt;br /&gt;
* Find the raw URL associated with the pastebin page. For pastebin.ca, this is just the regular URL with an extra &amp;quot;raw&amp;quot; directory inserted. For example, if your regular pastebin url is http://pastebin.ca/398871, then the raw version is at http://pastebin.ca/raw/398871.&lt;br /&gt;
* use wget to retrieve the file, but rename it so that it's not named 398871 (in this example, the output is named &amp;quot;this.cfg&amp;quot;):&lt;br /&gt;
 user@slackbox:~$ wget &amp;quot;http://pastebin.ca/raw/398871&amp;quot; -O this.cfg&lt;br /&gt;
You'll find you'll use commands like wget over and over again this way, even when you have access to a fully graphical web browser.&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Wed, 14 Jul 2010 09:18:55 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Console-Only_Communication</comments>
		</item>
		<item>
			<title>SlackWiki:Community Portal</title>
			<link>https://www.slackwiki.com/index.php?title=SlackWiki:Community_Portal&amp;diff=371</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=SlackWiki:Community_Portal&amp;diff=371</guid>
			<description>&lt;p&gt;Merge-delete: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====[http://www.slackwarebrasil.org GUS-BR]====&lt;br /&gt;
Brazilian Slackware User Group (Grupo de Usuários Slackware Brasil)&amp;lt;BR&amp;gt;&lt;br /&gt;
[http://www.slackwarebrasil.org www.slackwarebrasil.org ]&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
====[http://slacky.eu/ Slacky.eu]====&lt;br /&gt;
The Italian Slackware Community&amp;lt;BR&amp;gt;&lt;br /&gt;
[http://slacky.eu/ http://slacky.eu]&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
====[http://slackware.linux.or.id Indonesian Slackware Community]====&lt;br /&gt;
[http://slackware.linux.or.id http://slackware.linux.or.id]&lt;/div&gt;</description>
			<pubDate>Wed, 16 Jun 2010 20:10:07 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/SlackWiki_talk:Community_Portal</comments>
		</item>
		<item>
			<title>SlackWiki:Community Portal</title>
			<link>https://www.slackwiki.com/index.php?title=SlackWiki:Community_Portal&amp;diff=370</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=SlackWiki:Community_Portal&amp;diff=370</guid>
			<description>&lt;p&gt;Merge-delete: Created page with '===BRASIL=== ====[http://www.slackwarebrasil.org GUS-BR]==== Brazilian Slackware User Group (Grupo de Usuários Slackware Brasil)&amp;lt;BR&amp;gt; [http://www.slackwarebrasil.org www.slackwar…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===BRASIL===&lt;br /&gt;
====[http://www.slackwarebrasil.org GUS-BR]====&lt;br /&gt;
Brazilian Slackware User Group (Grupo de Usuários Slackware Brasil)&amp;lt;BR&amp;gt;&lt;br /&gt;
[http://www.slackwarebrasil.org www.slackwarebrasil.org ]&lt;br /&gt;
&lt;br /&gt;
===ITALY===&lt;br /&gt;
====[http://slacky.eu/ Slacky.eu]====&lt;br /&gt;
The Italian Slackware Community&amp;lt;BR&amp;gt;&lt;br /&gt;
[http://slacky.eu/ http://slacky.eu]&lt;/div&gt;</description>
			<pubDate>Wed, 16 Jun 2010 20:00:45 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/SlackWiki_talk:Community_Portal</comments>
		</item>
		<item>
			<title>Hibernate</title>
			<link>https://www.slackwiki.com/index.php?title=Hibernate&amp;diff=368</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Hibernate&amp;diff=368</guid>
			<description>&lt;p&gt;Merge-delete: fix + link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Slackware, hibernation works out-of-the-box and can be easily done from KDE's menu. Resuming from hibernation, however, is not set up, so when you turn on your computer again, it starts as normal. That is, if your hardware supports it and if you've set up a swap space larger than your RAM.&lt;br /&gt;
&lt;br /&gt;
To tell your kernel where to resume from, you need to write the info to ''lilo.conf'':&lt;br /&gt;
&lt;br /&gt;
 append=&amp;quot; resume=/dev/sda6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Replace ''/dev/sda6'' with your actual swap space. Swap partitions are perfect, I think swap files should work too. If you don't know where your swap lies, look at ''/proc/swaps''. Afterwards, run lilo.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The above is everything I needed to do with my Slackware64 13.1 on a new laptop. I hope that works for you as well, but there are many requirements and intricacies not mentioned above. Google might help you. Please edit this document accordingly if you find out more.&lt;br /&gt;
&lt;br /&gt;
Some more info at [http://www.linuxquestions.org/linux/answers/Hardware/Mini_HOW_TO_Hibernate_and_resume_0]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Wed, 02 Jun 2010 13:42:09 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Hibernate</comments>
		</item>
		<item>
			<title>Hibernate</title>
			<link>https://www.slackwiki.com/index.php?title=Hibernate&amp;diff=366</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Hibernate&amp;diff=366</guid>
			<description>&lt;p&gt;Merge-delete: Crude and minimal (but to the point) hibernation help&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Slackware, hibernation works out-of-the-box and can be easily done from KDE's menu. Resuming from hibernation, however, is not set up, so when you turn on your computer again, it starts as normal. That is, if your hardware supports it and if you've set up a swap space larger than your RAM.&lt;br /&gt;
&lt;br /&gt;
To tell your kernel where to resume from, you need to write the info to ''lilo.conf'':&lt;br /&gt;
&lt;br /&gt;
 append=&amp;quot; resume=/dev/sda6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Replace ''/dev/sda6'' with your actual swap space. Swap partitions are perfect, I think swap files should work too. If you don't know where your swap lies, look at ''/proc/swaps''.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The above is everything I needed to do with my Slackware64 13.1 on a new laptop. I hope that works for you as well, but there are many requirements and intricacies not mentioned above. Google might help you. Please edit this document accordingly if you find out more.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</description>
			<pubDate>Wed, 02 Jun 2010 13:32:35 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Hibernate</comments>
		</item>
		<item>
			<title>Utf-8 linux console</title>
			<link>https://www.slackwiki.com/index.php?title=Utf-8_linux_console&amp;diff=365</link>
			<guid isPermaLink="false">https://www.slackwiki.com/index.php?title=Utf-8_linux_console&amp;diff=365</guid>
			<description>&lt;p&gt;Merge-delete: Added setting LANG in /etc/profile.d/lang.sh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
''by Dive''&lt;br /&gt;
&lt;br /&gt;
== A Quick Look at Using UTF-8 in the Linux Console (without X) ==&lt;br /&gt;
&lt;br /&gt;
	A few people have asked about this in #slackware lately so I though I'd put down a few notes on how I got utf-8 up and running. Feel free to add any further info. &lt;br /&gt;
&lt;br /&gt;
	In these days of high powered X desktop environments with all their flashy composite bells and whistles it may seem strange to worry about how the plain Linux console behaves, but we need to remember that there are some very nice applications that live in the console and can be just as (or even more) productive than the X Windows counterparts. I'm thinking of screen, irssi, mutt, elinks, vim/vi, mplayer (using svga), links, zgv and slrn to name but a few. And of course we have to mention Slackware tools like pgktool, slackpkg and sbopkg. Once you get hooked on using the console it is hard to go back.&lt;br /&gt;
	Anyway here we go ...&lt;br /&gt;
&lt;br /&gt;
== The Console ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	The first thing to do is configure the console. There is a kernel parameter we can add to &lt;br /&gt;
/etc/lilo.conf to do this:&lt;br /&gt;
&lt;br /&gt;
append=&amp;quot;vt.default_utf8=1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here's an example from mine:&lt;br /&gt;
&lt;br /&gt;
  # Linux bootable partition config begins&lt;br /&gt;
  image = /boot/vmlinuz-2.6.27.7-custom&lt;br /&gt;
  root = /dev/hda1&lt;br /&gt;
  label = Linux-custom&lt;br /&gt;
  append=&amp;quot;resume=/dev/hda2 vt.default_utf8=1&amp;quot;&lt;br /&gt;
  read-only&lt;br /&gt;
  # Linux bootable partition config ends&lt;br /&gt;
&lt;br /&gt;
Once you have saved lilo.conf and run '''lilo''' a quick reboot is needed.&lt;br /&gt;
&lt;br /&gt;
== LANG environment variable ==&lt;br /&gt;
&lt;br /&gt;
I find that typing multibyte characters like &amp;quot;ä&amp;quot; and erasing them with backspace, I can erase much more than what I wrote. It helps to set the LANG variable, preferably by editing /etc/profile.d/lang.sh (or lang.csh) to set it to en_US.UTF-8 or similar.&lt;br /&gt;
&lt;br /&gt;
== Fonts ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	After that we need to find a font that actually contains the characters you want to see. My 'font of the moment' is lat9w-16. This contains the British £ (pound) and € (euro) symbols that I need, plus a lot of useful accented characters. But what is just as important are the correct drawing characters so that curses programs like pkgtool and sbopkg are printed on the screen correctly. If you experiment with the '''setconsolefont''' command you will find that some fonts draw curses box borders as squares or question marks, so check out some fonts and see which ones work and which don't.&lt;br /&gt;
	The '''setconsolefont''' command will put your chosen font into /etc/rc.d/rc.font so it will load at bootup.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keyboard ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	Ok, great you can now read characters correctly, but you need the correct keymap to be able to type them. That's a little harder. If you can find a utf-8 keymap for your locale/hardware then that's fine. Personally I didn't find any of the installed keymaps suitable so I looked around for an alternative. I found a uk-utf8 keymap on the intertubes, but this was unfortunately missing all the Ctrl+[a-z] keys so I edited it and added my own. I also added some AltGr+[a-z] (well not all of those) for accented characters. You may find this keymap useful as a starting point to create your own if you cannot find a more suitable one. Have a look through the comments and the codes and you should pick up the method.&lt;br /&gt;
	To add your own combinations you will need to know the correct codes for the characters you need. You can find a table of utf-8 characters here:&lt;br /&gt;
&lt;br /&gt;
[http://home.tiscali.nl/t876506/utf8tbl.html]http://home.tiscali.nl/t876506/utf8tbl.html&lt;br /&gt;
&lt;br /&gt;
Look up the code in that table and convert it to hex. E.G.&lt;br /&gt;
è is 232 in decimal, E8 in hex; é is code 233 in decimal, E9 in hex, so the entry in your keymap should be:&lt;br /&gt;
&lt;br /&gt;
  # key      = normal   shifted   AltGr+e   AltGr+shift+e&lt;br /&gt;
  keycode 18 = e        E         U+00E8    U+00E9&lt;br /&gt;
  # prints:    e        E         è         é  &lt;br /&gt;
&lt;br /&gt;
You can find the keycodes with the '''showkey''' program. Once edited you can load the map with the '''loadkeys''' program. Loadkeys will update /etc/rc.d/rc.keymap but you will need to copy the keymap to /usr/share/kbd/keymaps/i386/qwerty/ so it is found on bootup. Here is a link to my updated uk-utf8 map:&lt;br /&gt;
&lt;br /&gt;
[http://www.unrealize.co.uk/scripts/misc/uk-utf.map.gz]http://www.unrealize.co.uk/scripts/misc/uk-utf.map.gz&lt;br /&gt;
&lt;br /&gt;
You can load this ungzipped but it's better to gzip it back after editing to keep things consistent.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	By now you should have a fully usable keyboard/console correctly printing unicode characters. You will probably need to tell some programs like mutt and irrsi that you are using a utf-8 system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: There exists two shell scripts - '''unicode_start''' and '''unicode_stop'''. Typing '''unicode_start [font]''' will load the required font and set up keyboard correctly for unicode input.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bye for now,&lt;br /&gt;
&lt;br /&gt;
[[User:Dive|Dive]] 02:33, 20 March 2009 (UTC)&lt;/div&gt;</description>
			<pubDate>Wed, 02 Jun 2010 13:04:39 GMT</pubDate>
			<dc:creator>Merge-delete</dc:creator>
			<comments>https://www.slackwiki.com/Talk:Utf-8_linux_console</comments>
		</item>
</channel></rss>