Testing Linux Debian Squeeze for Sam460ex

 

This page is not maintained anymore.

The latest Linux kernel images and distributions (Lubuntu 12.04, Lubuntu 14.04, Debian Wheezy, Debian Jessie)
for Sam460ex (Lite), Sam440ep (Flex), and AmigaOne 500 are maintained by Spectre660 and can be found at
http://www.supertuxkart-amiga.de/amiga/sam.html.

Index

Introduction

In this page you'll find the description of my attempt to create a comfortable Linux distribution for newbie Linux users (like me) for the motherboard Sam460ex.

The Sam460ex is a motherboard made by ACube Systems, mainly meant for AmigaOS4 users, as so it is equipped with a PowerPC CPU, with the SOC APM PPC460ex.

Yes, interesting... But why using Linux on a custom (=expensive) computer meant for AmigaOS?

Starting with the development of the 4.x series (now coordinated by Hyperion Entertainment) AmigaOS is simply great and it is coming up nicely, promising good stuff for the future.
Even on the hardware graphic side the future looks bright: Hans de Ruiter, a developer from New Zealand, already delivered an up-to-date RadeonHD driver for R6xx / R7xx chipsets (Radeon HD 2000-4000 series) and is now finalizing the support for the Radeon HD 5000, 6000 and even 7000 series.
The RadeonHD driver has a fully operational 2D hardware compositing and Hans is currently working on the 3D side.
The Amiga community still somehow alive: have a look at www.amiga.org, www.amigaworld.net, www.amigans.net, www.os4depot.net, www.os4coding.net.
Sadly AmigaOS has today a long way to go in order to catch up with modern standards, just remember that *real* AmigaOS development paused between let's say the 1995 and the 2005, and there is very little money around to pay full-time developers...

Having Linux up and running in the same computer is just an emergency remedy, which hopefully will stop being useful in the next couple of years (finger crossed), or maybe, it is just fun trying it out as I'm a stubborn bergamasque...

I'm not an expert Linux user nor a programmer so you may find some stupid stuff in here.

I really want to squeeze (...) my Sam460ex as I paid a lot for it: nobody else did an effort to create such a Linux distribution, so I've tried myself.

So far only one previous Linux distribution started supporting explicitly the Sam460ex, the CRUX PPC.

They were the only people answering (patiently) some initial question on their forum (thanks!):

Sadly CRUX PPC team decided to suspend the project on the 16 Feb 2012 "due a lack of active developers, modern hardware and resources".

You can find a discussion thread about Linux for Sam460ex on Amigaworld.

Please, leave your impressions, experience and advices in the Amigaworld mentioned thread or, more generally, in the Amigaworld forum dedicated to Linux, in such a way that all the infos are concentrated in one place only.

Don't be angry with me if while installing the ISO found in this page you'll burn your Sam460ex, you'll destroy all data on your harddisk and all devices attached to it: you've been warned!

Screenshot

A screenshot of an XFCE session. Please, note that 2D accelerated compositing is turned on.
The window shadow is smooth, fast and pleasant.

What do you need before starting

Customised Debian Squeeze Network install ISO

Customised Linux kernels

Latest kernel compiled with framebuffer for both RadeonHD (4xxx, 5xxx and 6xxx series) and SM501:
Latest kernel compiled with DRM support for RadeonHD (4xxx, 5xxx and 6xxx series), framebuffer for SM501:

Both kernel packages contains:
- the kernel, named as "uImageXXX"
- the kernel modules, contained in "lib/modules/"
- the supported hardware firmwares, contained in "lib/firmware/"
- kernel configuration used for compiling
- the file "System.map"
- the Device Tree Blob file "canyonlands.dtb"

Note for RadeonHD 6xxx users:
modern Linux distributions requires a KMS kernel when using a RadeonHD 6xxx video card.
Unfortunately every time I try to create a kernel with KMS support the Sam460ex ends up with a kernel panic (see this log for example).

Phase 1: Prepare your partitions

WARNING! Changing the partition scheme of your hard disk will destroy all of your data!
Do a backup of your disk content or use a blank hard disk.

For testing Squeeze I'm using a SATA-to-CompactFlash adapter, which make my life much easier.
It's maybe a bit slower but I'm able to read and write its content (it is a standard ext2 formatted disk after all) on any Linux installation, also from a PC Linux intallation.

What to do:

You can find some more hint on the DualBoot (AmigaOS 4.1 - Debian) setup guide (from ACube).

Phase 2: Begin the installation

Phase 3: Step-by-step debian installer guide

  1. don't mind the missing kernel alert
  2. when prompted for selecting the ethernet port, select "eth0"
  3. choose your Sam460ex hostname
  4. if you don't know what it is, leave the domain empty
  5. create the root user password
  6. creare your normal user account, select a name
  7. insert the password for the normal user account
  8. continue with the partitioning
  9. don't mind the missing RAID stuff
  10. select a manual partitioning procedure
  11. choose the partition where you want to install the Linux system
  12. use it as ext2 or ext3
    you're stuck to such filesystems as otherwise U-Boot will NOT see the partition for booting
  13. choose to format the partition
  14. select the mount point as "/", the root system folder
  15. check that the bootable flag is turned "on"
  16. scroll down and select "Done setting up the partition"
  17. scroll down and select "finish partitioning and write chages to disk"
  18. confirm in order to write changes to disk
  19. continue without installing a kernel, we will copy it later, manually, sorry...
  20. select a Debian mirror close to where you live
  21. when prompted, decide if you want to participate in the package survey.
    The survey will be used to update the Debian Popularity Contest
  22. choose the software to install, typically you require:
    • a graphical desktop environment (will install what you did choose at boot)
    • the standard system utilities
  23. select the keyboard, usually the Generic 105 key (intl) is fine
  24. choose your keyoboard layout
  25. don't mind the missing boot loader, we will install Parthenope later, manually, sorry...
  26. when you will be greeted with the "finished installation" DO NOT CONTINUE, press the ESC button instead
  27. a menu will appear, scroll down and select "execute a shell", then select "continue"

Phase 4: Install the kernel, its modules and the bootloader

If you want to try the Radeon DRM (video hardware acceleration)

Bare in mind that DRM is unstable on PowerPC, at least in my experience!
(but it will give you a real *BUMP* in video performance if it will work...)

Good luck and let me know your experience on this! (drop a message on Amigaworld)

In case of problems booting the kernel, have a look at the kernel output that is coming from the serial port.
Modern serial terminals such as Putty for Windows can be configured in order to save the complete log file of each session, a text file listing all kernel operations that you can read later.

What to do if your mouse pointer is pretty much invisible

The above procedure apply also to the Ubuntu distribution for Sam460ex released by ACube.
The only difference are:

Currently known issues

In order to solve some problems, you may also have a look at:

About compiling the Linux kernel for theSam460ex

The PowerPC kernel can be cross-compiled on an x86 computer but you need a cross-compiling toolchain.
At this page you have an overview of what it implies setting up a cross-compilation toolchain on a Debian system, and in this page how to use it in order to compile a kernel.
The alternative for me is to compile on a real PowerPC, such as the Sam460ex itself (half of a day!), on my MacMini G4 (several hours) or on my iMac G5 (couple of hours).
Result taking into account my spare time: the cross-compilation is the only viable solution!

In order to cross-compile my own PowerPC 4xx kernel I've chosen the DENX ELDK 5.2.1 package.
By using this out-of-the-box solution for cross-compilation, I can now easily compile an up-to-date kernel directly tweaking its many settings.

First of all I should say that these instructions are related to my hardware configuration, a laptop with an Intel i7 and a Kubuntu 12.04, but they should work on most Linux systems.

If you want further information about booting Linux on the Canyonland board have a look at the DENX U-Boot and Linux Guide (DULG) for canyonlands.

You can download the DENX ISO file eldk-5.2.1-powerpc-4xx.iso from their FTP server, mounted it and installed.

Beware that I've just tried out (January 2013) the ELDK version 5.3, but it fails to compile the kernel because of some sort of GCC issues. Further investigations will be reported on this issue.

Installation is pretty simple, just logged in a console as a root user and typed

./install.sh powerpc-4xx
Everytime I want to compile a kernel, I enter a console as a normal user and enter
. /opt/eldk-5.2.1/powerpc-4xx/environment-setup-ppc440e-linux
In order to check if the ELDK is working correctly I type
echo ${CFLAGS}

Before compiling a kernel for a platform you should first know what you are dealing with.

Here the logic scheme of the Sam460ex (from the Sam460ex manual)

At the Embedded Developer website you can find a complete AMCC 460ex [PDF] embedded processor data sheet (the PDF is marked as "preliminary", but I couldn't find any better document).

The Linux kernel is freely dowloadable from www.kernel.org.

Before compiling it, you must:

make ARCH=powerpc CROSS_COMPILE=powerpc-linux- modules_install INSTALL_MOD_PATH=/my_output_folder/

Note that you can avoid entering "CROSS_COMPILE=powerpc-linux-" each time, just be sure to set "powerpc-linux-" into the variable "general setup / cross compiler tool prefix" (CONFIG_CROSS_COMPILE=powerpc-linux-) in the kernel configuration tool. By doing so the above commands change into:

make ARCH=powerpc oldconfig
make ARCH=powerpc menuconfig
make ARCH=powerpc uImage
make ARCH=powerpc modules
make ARCH=powerpc canyonlands.dtb
make ARCH=powerpc modules_install INSTALL_MOD_PATH=/my_output_folder/

Dealing with a ramdisk boot file

While playing for creating a customised Linux distribution, you may want to modify an existing ramdisk file.
A ramdisk file is a folder containing all the stuff for booting a system. Such a folder is then compressed in two steps, first using gz and then using cpio.

U-Boot ramdisk files (usually called "uRamdisk")

U-Boot uses a modified Linux ramdisk using the the tool mkimage tool and it is usualy called "uRamdisk".

You can find a complete description at the DENX website:

The text below is a copy & paste from such DENX page (page accessed 15th October 2012).

The uRamdisk image contains two parts:

To modify the contents you have to extract, uncompress and mount the ramdisk image. This can be done as follows:

  1. Extract compressed ramdisk image (ramdisk.gz)
    bash$ dd if=uRamdisk bs=64 skip=1 of=ramdisk.gz
    21876+1 records in
    21876+1 records out
    
  2. Uncompress ramdisk image (if it was a compressed one)
    bash$ gunzip -v ramdisk.gz
    ramdisk.gz:      66.6% -- replaced with ramdisk
    
  3. Mount ramdisk image
    bash# mount -o loop ramdisk /mnt/tmp
    

Now you can add, remove, or modify files in the /mnt/tmp directory. If you are done, you can re-pack the ramdisk into a U-Boot image:

  1. Unmount ramdisk image:
    bash# umount /mnt/tmp
    
  2. Compress ramdisk image
    bash$ gzip -v9 ramdisk
    ramdisk:         66.6% -- replaced with ramdisk.gz
    
  3. Create new U-Boot image (new-uRamdisk)
    bash$ mkimage -T ramdisk -C gzip -n 'Simple Embedded Linux Framework' \
    > -d ramdisk.gz new-uRamdisk
    Image Name:   Simple Embedded Linux Framework
    Created:      Sun May  4 13:23:48 2003
    Image Type:   PowerPC Linux RAMDisk Image (gzip compressed)
    Data Size:    1400121 Bytes = 1367.31 kB = 1.34 MB
    Load Address: 0x00000000
    Entry Point:  0x00000000
    

Instead of re-packing into a U-boot ramdisk image you can of course also just extract the contents of the SELF image and re-use it as base of a (known to be working) root filesystem.

Standard Linux ramdisk files (usually called "initrd.gz")

Every hardware configuration is different and the boot ramdisk file must reflect such configuration.
The ramdisk cannot contains every possibile package, so it is commonly generated on the fly.
There is a Debian tool called "update-initramfs" which is provided by the initramfs-tools. The available command option are:

update-initramfs -c -k "kernel-version"
creates a new ramdisk for the specified kernel version
update-initramfs -u -k "kernel-version"
updates the existing ramdisk for the specified kernel version

More information about update-initramfs.

Alternatively you can decompress, change the folder content and then re-compress again manually the ramdisk file as follow:

Tweaking an existing squashed file

Squashfs is a compressed read-only filesystem for Linux. Squashfs is intended for general read-only filesystem use, for archival use (i.e. in cases where a .tar.gz file may be used), and in constrained block device/memory systems (e.g. embedded systems) where low overhead is needed. [from the SQUASHFS sourceforge website]

Using squashed files is possibile by installing its tools, type (as root):
  apt-get install squashfs-tools

Creating an ISO with the Parthenope bootloader

When you want to create an ISO image file you can use a variety of tools on Linux.
In order to boot a cd-rom, the Sam460ex requires the Parthenope bootloader: not all tools let you do that.

Using K3B

I've successfully tested k3b 2.x, which was preinstalled on my KDE 4.8 installation.
It is the tool used for creatin the ISO file in this page.

Using genisoimage

genisoimage is a pre-mastering program for creating ISO-9660 CD-ROM filesystem images, which can then be written to a CD-ROM (or DVD-ROM) using the wodim program. genisoimage now includes support for making bootable "El Torito" CDROMs, as well as CDROMs with support for many formats, including Rock Ridge, Joliet, and Apple HFS. [from the Debian page about genisoimage]

Using genisoimage is possibile by installing it, type (as root):
  apt-get install genisoimage

My ACube Sam460ex configuration

Here a picture.

I've tested both RadeonHD cards but they behave quite differently,
for example I could use the text console a couple of times on the 4650, but never on the 4550.

 

Want to leave a comment?

Please go for it at the Amigaworld forum dedicated to Linux on PPC Amigas.