Porteus for ARM machines
Posted: 02 May 2012, 15:04
Hi All,
Getting Porteus running on ARM machines has been mentioned a couple of times on the boards now, and I thought it would be useful to start a thread to consolidate efforts and inputs.
The first thing you'll learn when you try to get linux installed on your ARM device is that a separate kernel is required for pretty much every machine; thus, we'll need individuals to step up to act as "sponsors" of sorts for their devices, who will be responsible for patching and compiling a kernel. I'll do more of a writeup on this process as we get more people interested (if we get more people interested)...
For now, to kick things off, here's a link to a new google code page I've started:
http://code.google.com/p/porteus-arm/downloads/list
First and foremost, you need to have a kernel that will boot your device, so you need to search the web if you haven't done so already, to find someone else who has been working to get linux on your device, and has kernel sources available. I started development in the qemu emulator (and can supply a 32-bit x86 Porteus module for those who would like to use it) to get the basics down, and then switched to my ARM device (an Acer Iconia A500). You'll need to install a cross-compiling toolchain for your kernel (more info on that upon request); once you get the kernel to boot on your device using pre-existing configs, it's time to add the AUFS patch, FUSE support, and a handful of other things are enabled -- see this HOWTO for more info on compiling a porteus kernel and adding the aufs patch: http://porteus.org/info/docs/51-develop ... ernel.html
Once you have a kernel booting with AUFS, you'll need to build an initrd (or an initramfs that creates a 'fake' initrd on the fly -- which is what I'm using). The files needed to do this are on the google code page linked above; once again, more info is available from me upon request (just trying to get this posted for now).
After you have a working kernel and initrd, you can throw in the rest of the system files. You'll want to include, at the least, a folder in the root of one of your partitions, called 'porteus', which will contain a file called 'porteus-v1.2-arm.sgn' and the folders 'base', 'modules' and 'rootcopy' (you can copy the directory structure from an existing porteus install), and copy the modules you want from the google code page into /porteus/base. If you're super familiar with Porteus, this is probably enough info to get you going, but otherwise I anticipate a fair number of questions, and I'll update the information here and on the google code page as we move along.
Thanks!
EDIT: As a heads up, I compiled a number of packages on my machine using 'generic' slackbuilds rather than armed-slack style slackbuilds, and didn't specify a '-march' flag. If you experience problems (especially with the XFCE module) let me know -- I've simply put off modifying all of my slackbuilds while I focus on just piecing this thing together (laziness on my part). This should be set at -march=armv4t to maintain compatibility with armedslack 13.37, though armedslack has moved to armv5te in 'current', and I doubt anyone will be booting Porteus into a GUI with XFCE on an armv4 marchine...
Getting Porteus running on ARM machines has been mentioned a couple of times on the boards now, and I thought it would be useful to start a thread to consolidate efforts and inputs.
The first thing you'll learn when you try to get linux installed on your ARM device is that a separate kernel is required for pretty much every machine; thus, we'll need individuals to step up to act as "sponsors" of sorts for their devices, who will be responsible for patching and compiling a kernel. I'll do more of a writeup on this process as we get more people interested (if we get more people interested)...
For now, to kick things off, here's a link to a new google code page I've started:
http://code.google.com/p/porteus-arm/downloads/list
First and foremost, you need to have a kernel that will boot your device, so you need to search the web if you haven't done so already, to find someone else who has been working to get linux on your device, and has kernel sources available. I started development in the qemu emulator (and can supply a 32-bit x86 Porteus module for those who would like to use it) to get the basics down, and then switched to my ARM device (an Acer Iconia A500). You'll need to install a cross-compiling toolchain for your kernel (more info on that upon request); once you get the kernel to boot on your device using pre-existing configs, it's time to add the AUFS patch, FUSE support, and a handful of other things are enabled -- see this HOWTO for more info on compiling a porteus kernel and adding the aufs patch: http://porteus.org/info/docs/51-develop ... ernel.html
Once you have a kernel booting with AUFS, you'll need to build an initrd (or an initramfs that creates a 'fake' initrd on the fly -- which is what I'm using). The files needed to do this are on the google code page linked above; once again, more info is available from me upon request (just trying to get this posted for now).
After you have a working kernel and initrd, you can throw in the rest of the system files. You'll want to include, at the least, a folder in the root of one of your partitions, called 'porteus', which will contain a file called 'porteus-v1.2-arm.sgn' and the folders 'base', 'modules' and 'rootcopy' (you can copy the directory structure from an existing porteus install), and copy the modules you want from the google code page into /porteus/base. If you're super familiar with Porteus, this is probably enough info to get you going, but otherwise I anticipate a fair number of questions, and I'll update the information here and on the google code page as we move along.
Thanks!
EDIT: As a heads up, I compiled a number of packages on my machine using 'generic' slackbuilds rather than armed-slack style slackbuilds, and didn't specify a '-march' flag. If you experience problems (especially with the XFCE module) let me know -- I've simply put off modifying all of my slackbuilds while I focus on just piecing this thing together (laziness on my part). This should be set at -march=armv4t to maintain compatibility with armedslack 13.37, though armedslack has moved to armv5te in 'current', and I doubt anyone will be booting Porteus into a GUI with XFCE on an armv4 marchine...