Software projects/OS/Slackware

From Pandora Wiki
Revision as of 08:11, 17 August 2013 by Kingu (talk | contribs) (added "Software projects/OS/Slackware/Advanced usage/Firewall")
Jump to: navigation, search

Contents

Disclaimer

Hi, this is Linux-SWAT.

Welcome to the SL4P, Slackware for Pandora, Wiki pages.

SL4P is a Slackware ARM overlay. Slackware ARM is the official ARM Slackware port.
Slackware ARM was formerly known as ARMedslack.

The 14.0 release forum page is located here: http://boards.openpandora.org/index.php?/topic/9797-slackware-for-pandora-140/

The technical and -current forum page is located here: http://boards.openpandora.org/index.php?/topic/1524-slackware-inside-pandora/

I'm the maintainer of this Slackware port, and you can find me here: http://boards.openpandora.org/index.php?/user/1035-linux-swat/

If you have questions, i suggest you to share it on the boards, not asking me privately.

Important notes: SL4P is not affiliated in any way with Slackware or Slackware ARM.
Please DO NOT contact any of them if you have problems with it. Contact ME.

SL4P is not affiliated in any way with Open Pandora GmbH or Open Pandora Ltd.
Please DO NOT contact any of them if you have problems with it. Contact ME.

This software is distributed as is. You are on your own responsibility when using it.

I distribute this documentation under the GPL 3 license. http://www.gnu.org/licenses/gpl.html

Helping this project

  • Please consider making a donation.
  • This will help the SL4P project, and also the whole Pandora community, as part of it funds pre-orders.
  • To do so, go to PayPal, log in and click on "Send Money". Donate to donation@openpandora.org and indicate in the PayPal comment field that you are donating for the Slackware project. Then PM me, so i will include you in my thx list ;^).

Older releases Wiki pages

  • To keep this front page clean for the most recent release - 14.0 -, i moved previous versions elsewhere.
  • The old page for the 13.37 release is located here.

Stable or -current ?

  • Stable is for production use, ie. for work, as a server etc..
  • -current is a work in progress. Although it's pretty usable, some things may be broken/unstable.
  • I won't rebuild the 14.0 if there's no big bad bug, i'll just add important features as packages. Of course, official Slackware updates are included.
  • -current rootfs may be smaller or bigger from build to build, as i can include or remove KDE, amongst other things.
  • If you want to help the development, i prefer that you use -current.
  • And finally, -current repository may be empty. It's because a new stable release is out.

Media choice

Installation

Note: if you're a Linux noob, and you're scared by this Wiki page, check this simple tutorial from F_Slim. Thanks to him.
Note: if you are one of the last windows users, you can install SL4P using the method nicely provided by ingoreis. Check this thread.

  • Format a 8G or more SD card with the Ext2 filesystem. To make explanations clear, name it SLACK.
  • If you don't know how to format a drive, use GParted under Linux, or run their Live-CD. Here's the manual.
  • It's highly recommended to have a second partition formated as a swap. 256M or more is a good choice. 512M is wiser is you plan to compile some stuff, or for server use.
  • If you don't plan to use this partition configuration (OS followed by swap), you'll have to edit the /media/SLACK/etc/fstab after having uncompressed the rootfs.
  • If you're cleaning up a previous SL4P installation for a fresh new one, proceed like this:
rm -rf /media/SLACK/*
rm -rf /media/SLACK/.cache/
rm -rf /media/SLACK/.keepdir/
rm -rf /media/SLACK/.splash/
rm -rf /media/SLACK/.subversion/
rm -rf /media/SLACK/.Trash-0/

then unmount, fsck and sync before plugging back the card.

  • To do this, get the SD device name:
cat /proc/mounts

You will see something like:

/dev/sdc1 /media/SLACK ext2
  • Unmount the partition:
umount /media/SLACK/

then check the partition with fsck

fsck -y /dev/sdc1

and sync:

sync
  • Grab the latest 14.0 rootfs here.

Or

  • Grab the latest -current (unstable) rootfs here. The -current repository may be empty. It's because a new stable release is out.
  • Plug back the SD card to remount it.
  • Uncompress the rootfs on your SD. Be root, using su -, or sudo:
sudo tar jxvfp SL4P-[version]-[build].tar.bz2 -C /media/SLACK/ --numeric-owner

First run

  • Be sure your Pandora's clock is set. Otherwise, your filesystem will be checked.
  • Power down your Pandora, insert the SD card in the left slot (also called slot 1), and power on your unit.
  • If you're prompted to enter the root password for maintenance or to type Ctrl-D, just wait, the unit will restart and check the filesystem automatically.
  • You will be prompted to choose a password for the root user.
  • You will be prompted to create an user. At some explicit point, push [up] to put this user in adequate groups.
  • Then you'll be driven to the log in screen. Do not log in as the root user
Bug: very unlikely to happen, but when using startx (not the SL4P default setup), you can be blocked at a black screen.
Use pandora button + power to reboot.

Autologin

  • The Slim login manager, which is SL4P's default, can automatically log in an user. You're asked about it at the first login. Else, see /etc/slim.conf .
  • KDM works, but is too heavy. You have to edit /etc/rc.d/rc.4 in order to use it.

Basic usage

  • In order to type commands as root, you have to type su -. You can use just su, but i don't recommend it because you won't have the full root environment.
  • When using adduser, at some explicit point, push [up] to put this user in adequate groups.
  • To choose a window manager, type xwmconfig.
  • I ship those ones:
Xfce
fluxbox
blackbox
WindowMaker
twm
9wm
enlightenment17
jwm
minimenu
openbox
wmii
  • In some -current or -RC builds, i ship KDE. Avoid selecting it as full desktop on 256M Pandora.
  • To power off, or reboot your Pandora when not in Xfce and it's user-friendly menus, become root with:
su -

and type:

halt

or

reboot

Setting up your language

  • You can set your locale pretty easily. First, you have to know which languages are available, type:
locale -a
  • Choose the one that suits best your need. I highly recommend to use the versions with .utf8 .
  • Then be root and edit /etc/profile.d/lang.sh .
su -
emacs /etc/profile.d/lang.sh
  • You'll have to change this variable with the one you need:

export LANG=en_US.UTF-8

chmod +x /etc/profile.d/lang.sh
  • Save the file and reboot.

Services started at boot

  • To enable or disable services at boot, become root, then type pkgtool, then go in setup -> services, check the option with space then push enter.
  • Some services are not listed here. For example, to activate the NFS server permanently, tweak /etc/exports and /etc/hosts.allow, then:
 chmod +x /etc/rc.d/rc.nfsd
 /etc/rc.d/rc.nfsd start (not needed after a reboot)

Installing a program - Tools

  • Slackware archives are .tgz or .txz .
  • Slackware uses three powerful tools: installpkg, removepkg and upgradepkg.
  • A fourth tool named makepkg build packages from compiled sources.

Installing a program from source

sbopkg -r
  • The sync will take a long time. Once you've done that, run
sh /root/sboflags.sh

to optimize the builds for the Pandora.

  • You have to run this script after every sync. A fistful of programs (like ilbc or lua, which need -fPIC) will still need a bit of tweaking.
  • Then all is set up, you just have to use
sbopkg

and choose "Local SlackBuild" when prompted.

  • When the job is done, remove useless files to save disk space:
rm -rf /tmp/SBo/*
rm -rf /var/cache/sbopkg/*
  • Note that Slackware does not check dependencies, so you have to get the right build orders looking here: http://slackbuilds.org/
  • To check if some of the dependencies are already installed in your system, look in /var/log/packages/ . For example, libgnomecanvas:
ls /var/log/packages/libgnomecanvas*
  • Also note that gnome libraries must be compiled in a certain order. I already did the job, and shipped them in the rootfs.
  • If you don't use a SlackBuild script, then the procedure almost always ends like:
make install DESTDIR=/tmp/whatever/
cd /tmp/whatever/
makepkg /tmp/whatever-1.0.0-arm-1.tgz
installpkg /tmp/whatever-1.0.0-arm-1.tgz

Installing a program with a precompiled archive

  • I compiled a lot (300+) of packages from http://slackbuilds.org/.
  • I shipped a graphical install tool named GSlapt. Launch it with its icon, update the package list, then install what you need, checking the dependencies of your programs here: http://slackbuilds.org/
  • You can also proceed manually. Find 14.0 packages here, and -current ones here.
  • Download what you need, checking the dependencies of your programs here: http://slackbuilds.org/
  • Put all needed .tgz or .txz in a folder, go root using su -, then type:
installpkg /path/to/your/folder/*.t?z
  • Please report any non-working package.

About SL4P precompiled archives

  • All shipped and extra archives are compiled with sbopkg with Pandora-optimized flags.
-DPANDORA -O2 -pipe -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp
  • The links to the sources are located here: http://slackbuilds.org/repository/
  • The building order is fixed in queue files, kind of build playlist.
  • The queues are located in /var/lib/sbopkg/queues/
  • About shipped archives, you don't need to download them as they're already in the rootfs, see this.
  • Some archives won't work, like Kompozer, because it's a repackaging of x86 binaries. As i'm not yet in the process of fine-tuning, i left them for now.

Installing KDE 4

  • Plug the net, become root using su -, then type:
slackpkg update
slackpkg install kde
  • Note that although i already slimmed down KDE configuration files for less eye-candy, the 512M Pandora is recommended to run the full desktop.
  • Anyway, you can run any KDE application (konqueror, kwrite...) flawlessly with the 256M version.
  • Type xwmconfig to select KDE.

Updates

slackpkg update
slackpkg upgrade-all
  • Do not use slackpkg when using a -current. Instead, look at the changelog, download packages from here, become root using su -, then type:
upgradepkg /path/to/the/updates/*.t?z

Note that some packages like a/aaa_elflibs are not supposed to be upgraded in -current. A new rootfs is needed.

  • You can also set up a cronjob. In this case, check /etc/slackpkg/blacklist to ensure some critical packages (ie., kernel) will not be updated.
  • Slackware usually provides updates during 10+ years, but it seems to be less with Slackware ARM. See the news for more details.

SL4P-specific updates

  • I provide Pandora fixes, available as Slackware archives.
  • 14.0 fixes are located here.
  • Grab them, become root using su -, then type:
upgradepkg --install-new /path/to/the/updates/*.t?z
  • You don't need to install those updates when using a rootfs build more recent than the update.

Firefox, Thunderbird, SeaMonkey and Java-OpenJRE/JDK updates

  • Slackware ARM 14.0 doesn't provide anymore updates for Firefox, Thunderbird and SeaMonkey because of a build problem.
  • You have to download the unsupported -current archives and update them manually, using the method mentioned above.
  • Get them here.
  • About Java-OpenJRE/JDK, it's not possible to update them through slackpkg because it was added on-the-fly to Slackware ARM.
  • Check and get the updates here.
  • Be sure to download and update both as the jre is not included in the jdk.

Kernel updates

  • I provide kernel updates, and also a real time kernel.
  • You don't need to install those updates when using a rootfs build more recent than the update.
  • To know which kernel currently runs, type:
uname -r
  • Grab the latest kernel pack from here.
  • Install it with:
su -
upgradepkg --install-new kernels-[yyyymmdd]-arm-1.tgz
  • To enable a new kernel, for example 3.2.30-szfinal or the 3.2.26-rt, do:
cd /boot
rm uImage
cp uImage-3.2.30-szfinal uImage

or:

cd /boot
rm uImage
cp uImage-3.2.26-rt uImage
  • Then link the right modules for the right kernel.
cd /lib/modules
  • Get the current kernel name:
uname -r
  • Remove the current kernel modules link, for example 3.2.30:
rm -rf 3.2.30
  • Now link to the new modules. If the target kernel name contains "dirty", i.e. 3.2.30-dirty-displaylink, keep it in the modules folder name:
ln -s 3.2.30-dirty-displaylink 3.2.30-dirty

And reboot.

  • If lsmod reports that no modules are loaded (that means, eg., no touchscreen), then run as root:
depmod -a

And reboot again.

Automounting a SD card or an USB drive

  • No system-wide automounter is enabled for now. It's still a work in progress and not perfect so i don't include this for now.
  • Only Xfce automounts.
  • As Xfce mounts devices at insertion, if you booted with a second SD card or an USB drive plugged in, you have to click on the device icon.
  • If you plan to use Minimenu, you currently have to automount under Xfce, run xwmconfig, then log out to run Minimenu. This is the best method to save RAM.
  • You can also launch Minimenu under Xfce. Open a terminal and type:
mmwrapper -fmmenu

USB at boot, suspend and powersaving

  • Usually, you have to click on the Xfce "Toggle USB Host" icon whenever you need USB support.
  • I disabled the USB support by default. As said Notaz, it "Uses around 3x more power when idle, fails to suspend properly.".
  • If you want to enable USB host and USB networking support at boot, be root and edit /etc/rc.d/rc.local .

Near the top, change

#modprobe ehci-hcd
#modprobe g_cdc

into:

modprobe ehci-hcd
modprobe g_cdc

Fixing the endless reboot

  • Be sure your Pandora's clock is set. Boot Official Pandora OS on the NAND, and check/set time.
  • Boot SL4P, when prompted to enter the root password for maintenance, do it, then type:
fsck -y /dev/mmcblk0p1

Changing the Hostname

Fast boot tweak

  • I moved some of the boot stuff (ldconfig, font cache, mime database) in /etc/rc.d/rc.local_shutdown.
  • The reboot/power off process is slowered, but the OS integrity is safe.

PND compatibility list

  • SL4P supports .pnd files.
  • PNDs used to be recognized automatically. It's not the case anymore, and i don't know why.
  • So here's the workaround: after the insertion of your SD or USB drive, you have to push the green button near the Xfce menu.
  • Due to 3.2 kernel and dynamically linked libraries, not all .pnd are compatible.
  • View the PND compatibility list here.

Advanced usage

  • I wrote some tutorials to do interesting things.
  • All those guides are applicable to any version of Slackware, ie. x86, x86_64, IBM mainframe, etc.
  • Follow this link.

Xfce layout chooser

  • This is a beta work and may or may not be included in a release.
  • The icon is located in "System".
  • I'm developing it, it's currently in beta stage.
  • You can save your own Xfce configuration, and load others.
  • If you want to use it, please use the save feature prior to anything else.
  • Only one custom layout is available right now.

Sources

Build system

  • I distribute it under the GPL 3 license.
  • It may look a bit messy for now (and indeed, some part have to be cleaned), but it's versatile, as i intended from the start.
  • It's mainly three bash scripts.
  • You need a Pandora to run the third one.
  • Depending on what you comment/uncomment, you can produce an alpha build, very minimal, or a full build.
  • Depending on what you edit, you can use it to port any *NIX to Open Pandora, and maintain your build very easily.
  • Get it here, along the more detailed instructions.

FAQ

Ask a question/Report a bug

  • You're welcome, and please post here or here.

Software projects/OS/Slackware/Advanced usage

Development

Multimedia

Network - Readme

Network

Security

System

Links

Software projects/OS/Slackware/Build-system

Principles

  • It's not a one run and go. You need time and patience if you want a full and complete release. Anyway, you can get a minimal alpha build relatively fast.
  • The target directory is likely to be a SD card. 8G is recommended as a minimum.
  • Phase 1 populates the target directory with the main ARMedslack Linux distribution and some crucial stuff like the Pandora kernel.
  • Phase 2 populates the target directory with parts from official Open Pandora OS and tweaked stuff.
  • A specific part of rc.local is executed during the first boot on a Pandora.
  • The files folder contains tweaked stuff.
  • The pkg folder contains pre-built packages from previous alpha builds.
  • The sources folder contains sources for essential programs.
  • Some proprietary stuff is missing, like 3D drivers. They are useful only if you want to compile your own kernel. Check the Open Pandora git repository for them.

Get the build system

  • Get the archive here.
  • If you don't run a Slackware or a derivative, get the Slackware's installpkg script here. Put it in /sbin and make it executable.

Dependencies

  • You need to download the official Open Pandora rootfs: http://openpandora.org/firmware/pandora-rootfs.tar.bz2
  • Uncompress it as root anywhere and link it to the build directory as "pandora-rootfs".
  • Format a 8G or more SD card with the Ext2 filesystem. To make explanations clear, name it SLACK.
  • If you don't know how to format a drive, use GParted under Linux, or run their Live-CD. Here's the manual.
  • It's highly recommended to have a second partition formated as a swap. 256M or more is a good choice.

Bash knowledge

  • You need minimal bash knowledge in order to understand and succeed. This is a good start.
  • Each script contains comments. Read them.

rc.local

  • rc.local will be copied and executed automatically on the Pandora. You have to tweak it before Phase 1 or Phase 2.
  • Remove simple-comments in order to produce the needed packages during the first boot.
  • Put the SD card in the Pandora, and power it on.
  • The Pandora will build many needed packages, but not all listed, because of some dependencies installed later through sbopkg.
  • You have to edit the OPP="" and MHZ="" variables at the top of the script for your Pandora unit(s). These will only be used during the build phases.

Phase 1

  • Run as su -.
  • You'll see packages errors because it's a first run.

Phase 2

  • Run as su -.
  • Now, you can unmount the card and boot normally this alpha build on the Pandora.

After that first boot

  • The Pandora will power off after having done the job. May last for one hour or two.
  • Remove the card.
  • Save all /media/SLACK/tmp/*.t?z in the local repository listed in the PHASE-2.sh
MYPKGS="$CWD/pkg"

folder of the build system.

In-between steps

  • Plug the net.
  • Launch sbopkg as su -, load the vrac1 queue file, process it saying yes (Q) to options and wait. This is gonna be very long. I really mean very.
  • Do the same with vrac2 and vrac3.
  • Save all /tmp/*.t?z in the
MYPKGSMORE="$CWD/pkg-more"

folder of the build system.

  • Be careful with disk space, you may fill the card. If so, save and erase all /tmp/*.t?z, and sources inside /var/cache/sbopkg/ between queues processing.
  • Note that i include other packages listed in other queue files in my own release. If you plan to do so, move them in MYPKGSMORE="$CWD/pkg-more".

Final step

  • Populate a new SD card, with PHASE-1.sh and PHASE-2.sh
  • Edit /media/SLACK/etc/rc.d/rc.local to build the remaining packages to put in MYPKGS="$CWD/pkg"
  • Put the SD card in the Pandora, and power it on.
  • The Pandora will generate final needed packages.
  • The Pandora will power off after having done the job. May last for one hour or two.
  • Remove the card.
  • Save all /media/SLACK/tmp/*.t?z in YPKGS="$CWD/pkg" folder of the build system.
  • Now, you can create a complete SL4P system.

Creating a compressed rootfs

  • Populate a SD card. Now you should know how to do it ;^).
  • Boot it on a Pandora.
  • Once the Pandora shuts down, remove the card, and follow this procedure.

Special packages

  • In the sources folder, you'll find some programs that aren't automatically generated by the build system.

I don't list those dependencies for now, because i do more useful things ^^.

  • XMMS may just needs libmikmod.
  • Qt3 is a bit long to build. It should be built before the big playlist.

Sources

  • Apart what i already mentioned here, some SL4P part are taken directly from the official Open Pandora OS.
  • Sources are directly related to the build date, ie. if i upload a release the 1st april 2012, so the sources are related to the corresponding Open Pandora OS, rootfs, pandora-firmware, pandora-libraries, etc.
  • Same thing for binaries coming from the official OP rootfs.
  • About pre-compiled packages, shipped or not, grab the sources + SlackBuild accordingly to the version here.
  • If some package version changed, you have access to the old data using sbopkg git repo.

Notes

  • It may look a bit messy for now (and indeed, some part have to be cleaned), but it's versatile, as i intended from the start.
  • Depending on what you comment/uncomment, you can produce an alpha build, very minimal, or a full build.
  • Depending on what you edit, you can use it to port any *NIX to Open Pandora, and maintain your build very easily
  • The -current build system is under work and is not released yet.

Ask a question/Report a bug

projects/OS/Slackware/Advanced usage/Network get started

Network interfaces

  • eth0 is the interface that shows up when you plug an USB to ethernet adapter. A list of compatible ones is located here.
  • wlan0 is the embedded Wi-fi interface.
  • wlan1 (or wlan2, wlan3 etc.) is the name of a Wi-fi dongle.
  • usb0 should be the small USB port (not sure, may be the first plugged).
  • usb1 should be the big USB port (not sure).

Anyway, you can check the physical link connectivity, as root:

ethtool usb0
ethtool usb1
ethtool eth0
  • If you connect an OP with another using an USB cable, the OP at the little end of the cable will dramatically drain the current from the other OP's big USB port.
  • To avoid this, at the little end, type as root:
echo 0 > /sys/class/power_supply/twl4030_usb/enable 
  • With this usb-usb connection, you have to:
rmmod g-cdc
  • To permanently remove this module, edit /etc/rc.d/c.local and change
modprobe g_cdc

into

#modprobe g_cdc
  • There's also a bluetooth interface, but until now i just connected a mouse, so can't tell much about it.
  • These interface numbers (eth0, eth1 etc.) may vary, depending which one you plug first.
  • The numbers can be fixed using the /etc/udev/rules.d/70-persistent-net.rules file.
  • This file is deleted at each shutdown. To make use of it, edit /etc/rc.d/rc.local_shutdown , and comment this line:
rm /etc/udev/rules.d/70-persistent-net.rules

into

#rm /etc/udev/rules.d/70-persistent-net.rules

SL4P default setup

  • The Network Manager, well, manages the connections, and asks for an IP address through a DHCP request. This is how it acts when you boot SL4P for the first time.
  • You can set it up through a right-click on the NM-applet Xfce desktop icon (two little screens at bottom-right).
  • Although it's shipped in the Slackware ARM release, i grabbed and compiled a more recent version.

Slackware alternative setup

  • Wicd is included in the stock Slackware ARM extra packages.
  • I don't include it anymore inside 14.0 but you still can install it, using slackpkg or any other method.
  • I tried it only a bit so i can't recommend it, or not.
  • If you want to give it a try, be root, then install it, and disable the network manager:
chmod -x /etc/rc.d/rc.networkmanager
  • Activate Wicd at boot:
chmod +x /etc/rc.d/rc.wicd
  • Activate Wicd frontend under Xfce. Go in the menu -> Settings -> Session and Startup -> Application Autostart tab, then check "Wicd Network Manager Tray".
  • Reboot.

Slackware default setup

  • Historically speaking, stock Slackware doesn't use the Network Manager, nor Wicd. The network is established at boot, once for all.
  • If you want a non-graphical server-oriented setup, you have to disable the network manager (or Wicd).
chmod -x /etc/rc.d/rc.networkmanager

or

chmod -x /etc/rc.d/rc.wicd
  • Run as root:
netconfig
  • The hostname MUST BE:
darkstar

otherwise you'll break some Pandora scripts compatibility. Sudo won't launch anything with the wrong hostname.

  • Set you parameters.
  • Eventually edit /etc/rc.d/rc.inet1.conf to finalize your setup.
  • Be sure to have all used interfaces plugged in when booting. With the deactivation of the network manager, it's no more plug and play.
  • Reboot.

Older Wiki page

  • 13.37 page is located here.

Software projects/OS/Slackware/Advanced usage/Kernel

Kernel: to recompile or not to recompile ?

  • You don't have to if you don't need to add a new feature.
  • You don't have to if there's no urgent security kernel update.
  • If you want to acquire a lot of global Linux knowledge, or if you are just curious, then yes, just go for it.

Is it simple or complicated to recompile ?

  • Both.
  • But as there's a default kernel configuration file for Open Pandora, it's pretty easy.

Downloading and pre-configuring the latest kernel sources

Directly on the Pandora

  • I wrote a script to automatize the OP kernel sources download and preparation.
  • Plug the net, be root, then:
sh /root/kernel-sync.sh
  • It's very long because of the 16MB/s SD slots throughput.

From a PC

If you prefer to speed up the process and download them from your computer, then proceed like this (assuming your SD card is mounted under /media/SLACK/):

mkdir -p /media/SLACK/usr/src/
cd /media/SLACK/usr/src/

git clone git://openpandora.org/pandora-kernel.git

ln -s pandora-kernel linux

cd pandora-kernel

git checkout --track -b pandora-3.2 origin/pandora-3.2
  • Then boot the pandora, and do this as root:
cd /usr/src/linux
make omap3_pandora_defconfig

The fun part: tweaking

  • The configuration is stored in a hidden file named /usr/src/linux/.config
  • You can use many tools to edit the configuration.
  • The kamikaze way: edit manually the .config . Don't do that.
  • The lazy way: install KDE and use as a user:

gksu make xconfig

  • The common way, which i recommend:

make menuconfig

Menuconfig

  • Kernel options are stored in a tree.
  • Options can be marked as [*] built-in, or <M> module.
  • The vast majority of those options refers to a driver or a functionality.
  • Built-in means inside the kernel, so once the kernel boots, you can't remove or change parameters.
  • Module means you can either add or remove them after the boot. Ever typed "modprobe ehci-hcd" ?
  • The example below is copied from my PC, will copy a real OP one later.
Arrow keys navigate the menu.  <Enter> selects submenus --->.  Highlighted letters are hotkeys.  Pressing <Y> includes, <N>
excludes, <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </> for Search.  Legend: [*] built-in  [ ]
excluded  <M> module  < > module capable 
[*] DMA memory allocation support
General setup  --->
[*] Enable loadable module support  --->
[*] Enable the block layer  --->
Processor type and features  --->
Power management and ACPI options  --->
Bus options (PCI etc.)  --->
Executable file formats / Emulations  --->
[*] Networking support  --->
Device Drivers  --->
Firmware Drivers  --->
File systems  --->
hacking  --->
options  --->
Cryptographic API  --->
Virtualization  --->
Library routines  --->
<Select>    < Exit >    < Help >

A simple tweak

  • Highlight Cryptographic API --->
  • Push [enter]. You're now in the Cryptographic API section.
  • With [space], select all cryptographic algorithms you can. Ensure they are marked as <M>, not <*>.
  • With [right], select < Exit >, then push [enter].
  • Again, with [right], select < Exit >, then push [enter].
  • Now push [enter], saying <Yes> to "Do you wish to save your new configuration ?".
  • You're now ready to compile a kernel which will drive James Bond angrily jealous.

Kernel compilation

  • Be sure you've overclocked your OP to the maximum MHz.
  • At 800MHz, it's a 3+ hours job.
  • Now you can compile it with another custom script:
sh /root/kernel.sh
  • Reboot.

Speed up the compilation time using two or more Pandoras

  • Read this, and set up your Pandoras.
  • Make the adequate changes in /root/kernel-dist.sh with your editor of choice.
  • Then compile with:
sh /root/kernel-dist.sh
  • Reboot.

3D driver

  • So you booted your OP with your brand new kernel, but you can't run 3D apps. Again, two custom scripts for lazy people.
  • Download the sources:
sh /root/3d-get-sources.sh
  • Compile and install them:
sh /root/3d-compile.sh
  • Reboot.

Older Wiki page

  • 13.37 page is located here.

Editing Software projects/OS/Slackware/Advanced usage/RAID

WIP WIP WIP HURRAID

  • Need to properly rebuild one array while completing this Wiki section.
  • For now, don't try this incomplete tutorial unless you have some RAID knowledge
  • Once finished and this warning removed, go for it.

RAID

  • http://en.wikipedia.org/wiki/RAID
  • We will use the robust native Linux software RAID.
  • It's a feature that can be used on the Pandora, so let's have fun with it
  • I will cover here only a RAID 1 (mirror) on two SD cards, as it should be the more interesting for a server usage because under read load, you should reach about 27MB/s against 16MB/s on one card.
  • A SD + USB drive can also work although untested. Same with a two SD + USB drive configuration.
  • This array will be mounted as /srv , the standard server folder.

Partitioning

  • So you have to partition your system SD card a bit differently than the default SL4P setup.
  • In this example, we will use the recommended minimal 8G card for the slot 1.
  • You can use a different sized card for the right slot. To keep thing interesting, the minimum size is 4G for this second card, and we will use 4G in this example.
  • The RAID 1 partitions must have the same exact size.

Card 1

  • Partition that way:
6G ext2 for the system.
256M for the swap.

That's all for now, the third partition will be created under Slackware, and will be:

1.5G RAID.
  • We will left 256M free. NEVER fill an entire drive with a RAID array. Drives, ie. all 8G, doesn't necessary offer the same exact capacity, so you can get in trouble if you add a drive 32MB short.

Card 2

256M for the swap. Having swap on two different cards is a good thing.

That's all for now, the other partitions will be created under Slackware, and will be:

1.5G unformated RAID.
2G unused. Do what you want with it.

Install SL4P

  • Uncompress the rootfs on the first SD card, first partition, put the card in your OP, and boot it.
  • Log in.

Backup /srv

  • As root:
mkdir /srv-save
mv /srv/* /srv-save/

Finalizing card 1 setup

  • If you don't know how to use cfdisk, please read this first.
  • As root:
cfdisk

Finalizing card 2 setup

  • As root:
cfdisk

Create the RAID 1 array

  • Load module ?
  • The RAID devices names are md0, md1, md2 etc..
mdadm --create /dev/md0 --level 1 --raid-devices 2 /dev/mmcblk0p3 /dev/mmcblk1p2

Format the RAID array

  • As usual, we choose the Linux extended 2 filesystem.
mkfs.ext2 /dev/md0

Make the RAID configuration permanent

mdadm --scan > /etc/mdadm.conf

Edit /etc/fstab and add these lines:

/dev/mmcblk1p1   swap   swap   defaults           0  0
/dev/md0         /srv   auto   defaults,noatime   1  1

Final step

  • As root:
mount/dev/md0
mv /srv-save/* /srv/
rm -rf /srv-save/
  • That's it, you have now a RAID 1 array on your Pandora :^).

Some Practice

  • If you want to know how to repair a RAID array, let's simulate a failure.

Remove a drive from the array

  • It's likely to be the one in the right SD slot.
  • Unmount the swap:
swapoff /dev/mmcblk1p1

Repair the array

  • Depending the size of your RAID partition and he data on it, it can take a while.
  • Mount the swap:
swapon /dev/mmcblk1p1

Software projects/OS/Slackware/Advanced usage/Partitioning and formatting

Partitioning and formatting - clarification

  • Partitioning means divide and create zones on a drive.
  • Formatting means creating filesystems in these zones.

Drive names

  • First inserted SD card: /dev/mmcblk0
  • Second inserted SD card: /dev/mmcblk1
  • USB: /dev/sda, dev/sdb, /dev/sdc etc..

Partition names

  • For example, the first partition of each SD card:
  • First SD card: /dev/mmcblk0p1
  • Second SD card: /dev/mmcblk1p1
  • USB: /dev/sda1, /dev/sdb1, /dev/sdc1 etc..

fdisk

  • I don't use fdisk, but it's a widely-installed tool, so consider learning it, and fill this Wiki section.

cfdisk

  • cfdisk is a partitioner.
  • It's a semi-graphical tool. You can visualize the geometry of the drive, although in the console mode.
  • Use the [right] and [left] arrows (D-pad) to move in the menu.
  • Use the [up] and [down] arrows (D-pad) to move in the partitions.
  • Activate with [enter].

Console formating

  • Pretty easy. If you want to format the second partition of your right slot SD card as ext2, just do:
mkfs.ext2 /dev/mmcblk1p2
  • You can format using:
mkfs.cramfs    mkfs.ext4      mkfs.minix     mkfs.reiserfs
mkfs.bfs       mkfs.ext2      mkfs.ext4dev   mkfs.msdos     mkfs.vfat
mkfs.btrfs     mkfs.ext3      mkfs.jfs       mkfs.ntfs      mkfs.xfs

Software projects/OS/Slackware/Advanced usage/PXE boot server

WIP

  • Since august 2011, i'm working on an automatized PXE boot server installation.
  • The goal is to setup a boot server in a few steps, in the same spirit than my SL4P build system.
  • Then you can boot over a network one or more PC with your Pandora.
  • The most known PXE boot server is LTSP.
  • My system works well on PC, the hardest part of the work is done.
  • I need to rework it for the Pandora, it's just a matter of time.

So it's a beta here

-a Pandora
-a 8G SD card
-an USB to ethernet adapter
-a x86 PC PXE-capable
  • You can use a ethernet hub or switch, or connect the OP directly to your PC with a cross cable.
  • What you need to do after having installed SL4P:
-disable or unplug any DHCP server on your network
-plug your USB to ethernet adapter into your OP
-just boot the OP, all is already configured
-boot your PC using PXE
-on the PC, the login is root, and there is no password
-startx will launch Xfce on your PC
  • In the client kernel, i compiled in the most used network cards, like 3com, intel, broadcom, nvidia etc... so it _should_ work on yours.
  • The shutdown of the PC is not handled properly.
  • Be careful if you mount your local hard drive, unmount it before stopping the PC.

Software projects/OS/Slackware/Advanced usage/CUPS

Activate CUPS

chmod +x /etc/rc.d/rc.cups
/etc/rc.d/rc.cups start
  • CUPS will now run at each boot.

Add a printer

  • The simplest way to manage printers with CUPS is to do it through a web browser:
http://127.0.0.1:631

Can be done from the network:

http://ip_of_your_OP:631
  • The login/password are root/your_own_root_password .

Hewlett Packard devices

  • To easily configure a HP device, type as root:
hp-setup
  • Activate HP frontend under Xfce. Go in the menu -> Settings -> Settings Manager -> Session and Startup -> Application Autostart tab, then check "HP System Tray Service".

Software projects/OS/Slackware/Advanced usage/Firewall

Firewall

  • I shipped some default firewall configurations for eth0, wlan0 and usb0. I generated them using the easy firewall generator.
  • I didn't test them, so it's up to you to check it, running services, using nmap from another computer etc..
  • If you want to use a firewall, ie. for eth0, then do:
cp /etc/rc.d/rc.firewall.eth0 /etc/rc.d/rc.firewall
chmod 700 /etc/rc.d/rc.firewall
chmod +x /etc/rc.d/rc.firewall
/etc/rc.d/rc.firewall start

Gateway

  • To use the OP as a simple gateway
chmod +x /etc/rc.d/rc.ip_forward
/etc/rc.d/rc.ip_forward start

NAT Router

  • It also uses a /etc/rc.d/rc.firewall script.
  • I don't provide any because everyone have a different setup.
  • Create it yourself with the easy firewall generator.
  • Then save it as /etc/rc.d/rc.firewall and do this:
chmod 700 /etc/rc.d/rc.firewall
chmod +x /etc/rc.d/rc.firewall
/etc/rc.d/rc.firewall start

QoS

  • For now, a recompiled kernel is necessary.
  • A basic setting consists of packet mangling who changes the ToS field in the packets, through rc.firewall rules. A simple example:
iptables -A PREROUTING -t mangle -p tcp --sport ftp -j TOS --set-tos Minimize-Delay
iptables -A PREROUTING -t mangle -p tcp --dport ftp -j TOS --set-tos Minimize-Delay
iptables -A PREROUTING -t mangle -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput
iptables -A PREROUTING -t mangle -p tcp --dport ftp-data -j TOS --set-tos Maximize-Throughput
  • A more advanced setup makes use of dedicated kernel modules. The most known script is the outdated wondershaper.