Difference between pages "Funtoo Linux Installation on ARM" and "Pandaboard"

From Funtoo
(Difference between pages)
Jump to navigation Jump to search
m (update to previous edit for accuracy)
 
m (Reverted edits by 175.42.91.26 (talk) to last revision by Oleg)
 
Line 1: Line 1:
Funtoo now provides [http://ftp.osuosl.org/pub/funtoo/funtoo-current/arm-32bit/ stage3 images] for arm platform. At this time armv5te, armv6j_hardfp and armv7a_hardfp stages available. If you would like us to support other processors (see the list below), please fill a bug report on [http://bugs.funtoo.org].
The '''PandaBoard''' is a low-power, low-cost single-board computer development platform based on the Texas Instruments OMAP4430 system on a chip (SoC). The board has been available to the public since 27 October 2010. It is a community supported development platform.


The '''PandaBoard ES''' is a newer version based on the OMAP4460 SoC, with the CPU and GPU running at higher clock rates. The board has been available to the public since 16 November 2011. Like its predecessor, it is a community supported development platform.


== List of ARM processor "flavors" ==
== Features ==
* armv4l-unknown-linux-gnu (Rebel NetWinder, HP Armada and other devices having an ARMv4 processor, which is only capable of running the old ABI. Nevertheless it should work on newer CPUs)
The OMAP4430 SoC on the PandaBoard features a dual-core 1 GHz ARM Cortex-A9 MPCore CPU, a 304 MHz PowerVR SGX540 graphics processing unit (GPU), a Texas Instruments TMS320C6400 digital signal processor (DSP), and 1 GiB of DDR2 SDRAM.  
* armv4tl-softfloat-linux-gnueabi (OpenMoko FreeRunner and other devices using an ARMv4T processor. Uses the new ARM EABI and software floating point by default)
* armv5tel-softfloat-linux-gnueabi (almost all ARM NAS, devices based on the Marvell Orion and Marvell Kirkwood, Marvell Sheevaplug, Marvell OpenRD, Guruplug, Dreamplug, QNAP TS109/TS209/TS409/TS119/TS219/TS419, Buffalo Linkstation/Kurobox PRO, HP mv2120, HP iPAQ, Linksys NSLU2 and other devices using an ARMv5TE processor. Uses the new ARM EABI and software floating point by default)
* armv6j-unknown-linux-gnueabi ([[Raspberry Pi]], Nokia N800/N810, Smart Q7, OMAP2-based devices and other multimedia devices using an ARMv6 CPU and VFP. Uses the new ARM EABI and hardware floating point by default)
* armv7a-unknown-linux-gnueabi (OMAP3-based devices(Beagleboard, IGEPv2, Devkit8000, AlwaysInnovating Touchbook, [[Nokia N900]]), OMAP4-based devices([[Pandaboard]]), Freescale i.MX515-based devices([[Efika MX]], Babbage Board, Lange Board…) Marvell Dove/Armada, Nvidia Tegra2-based devices(Toshiba AC100, Toshiba Folio), ST-Ericsson NOVA A9500-based devices(Snowball), Exynos 4412 ([[Odroid-X]], Odroid-Q, [[ODROID U2]]) and other devices using an ARMv7-A processor. Uses the new ARM EABI and generic(not NEON) hardware floating point by default
* armv7a-hardfloat-linux-gnueabi (The same as armv7a-unknown-linux-gnueabi, but this one uses hardfloat instead of softfp. Read more about it here: http://wiki.debian.org/ArmHardFloatPort)


== Default installation of Funtoo on your platform/board ==
The PandaBoard ES uses a newer SoC, with a dual-core 1.2 GHz CPU and 384 MHz GPU. Primary persistent storage is via an Secure Digital (SD) Card slot allowing SDHC cards up to 32 GB to be used. The board includes wired 10/100 Ethernet as well as wireless Ethernet and bluetooth connectivity. The board can output video signals via Digital Visual Interface (DVI) and HDMI interfaces. It also has 3.5 mm audio connectors. It has two Universal Serial Bus (USB) host ports and one USB On-The-Go port, supporting USB 2.0.
This document is not a complete installation tutorial. Basic information about Funtoo Linux installation can be found on [[Funtoo Linux Installation]]. The goal of this document is to provide general information about installing Funtoo Linux on an ARM device, and highlight differences with a x86 installation.


The following notes are non-board specific. Other instructions can be found in the specific articles for the above mentioned devices.
=== CPUinfo ===
* Pandaboard
<pre>
Processor      : ARMv7 Processor rev 2 (v7l)
processor      : 0
BogoMIPS        : 599.22


=== Overview ===
processor      : 1
Most of the ARM boards come with a SD card slot, so you will need an empty SD card (4GB is enough to get you started), in most cases the boards are also equipped with debug port which can be used with USB-to-serial cables, if you have one, you can use it to login to the machine without the need of connecting keyboards or displays. You will need a network connection to be able to download stages, kernel and update your portage tree.
BogoMIPS        : 582.68


=== Kernel and bootloader setup ===
Features        : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls
Before you start you will need a kernel and a bootloader for your device. Some of the devices look for bootloader (in most cases U-Boot) on the SD along with the kernel.
CPU implementer : 0x41
CPU architecture: 7
CPU variant    : 0x1
CPU part        : 0xc09
CPU revision    : 2


More information about the kernel and bootloader can be found on pages specific for your device.
Hardware        : OMAP4 Panda board
Revision        : 0020
Serial          : 0000000000000000
</pre>


=== Installing Funtoo (overview) ===
== Funtoo Linux Instalation ==
First of all you have to prepare/format your SD card (ALL DATA WILL BE LOST!).


The installation on these devices differs from the normal installation procedure of booting an installation environment and chrooting from there to your new root, and can be little bit easier, but in some cases tricky.  
<pre>
sdcardsetup.sh
# sdcardsetup.sh script
#!/bin/sh


Overview of the installation:
if [ ! "$1" = "/dev/sda" ] ; then
        DRIVE=$1
        if [ -b "$DRIVE" ] ; then
                dd if=/dev/zero of=$DRIVE bs=1024 count=1024
                SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'`
                echo DISK SIZE - $SIZE bytes
                CYLINDERS=`echo $SIZE/255/63/512 | bc`
                echo CYLINDERS - $CYLINDERS
                {
                echo ,9,0x0C,*
                echo ,,,-
                } | sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE
                mkfs.vfat -F 32 -n "boot" ${DRIVE}1
                mke2fs -j -L "rootfs" ${DRIVE}2
        fi
fi
</pre>
 
Follow the general steps from [[Funtoo on ARM#Installing Funtoo]].
 
These steps include:
* Extract stage3 to the 2nd partition of the SD card
* Extract stage3 to the 2nd partition of the SD card
* Extract portage snapshot
* Extract portage snapshot (required to emerge things and ntp(see below))
* Setup fstab
* Setup fstab
* Setup root password
* Setup root password
Line 37: Line 68:
* Correct RTC "bug" with swclock
* Correct RTC "bug" with swclock


==== Installing the Stage 3 tarball ====
ARM stage3 tarballs can be found on [http://ftp.osuosl.org/pub/funtoo/funtoo-current/arm-32bit/]. Use the subarchitecture that suits best your device.
Mount the partition that will hold your rootfs of the SD card and extract the stage3 you have downloaded.
<console>
# ##i##mkdir /mnt/SD_root
# ##i##mount /dev/sdcard-device-px /mnt/SD_root
</console>
Extract the stage3 (it may take a while).
<console>
# ##i##tar xapf stage3-armv7a_hardfp-xxxx.tar.xz -C /mnt/SD_root
</console>
==== Extracting a portage snapshot ====
Now, download the portage snapshot from [http://ftp.osuosl.org/pub/funtoo/funtoo-current/snapshots/], and extract it to your partition.
<console>
# ##i##tar xapf portage-latest.tar.xz -C /mnt/SD_root/usr
</console>
==== Setup fstab ====
Edit the <tt>/mnt/SD_root/etc/fstab</tt> file to look like this:
<pre>
/dev/mmcblk0p1 /boot vfat noauto,noatime 1 2
/dev/mmcblk0p2 / ext4 noatime 0 1
</pre>
Adjust the partition devices and types to suit your needs.
==== Setting the default root password ====
{{fancywarning|Don't skip this step. This part differs from the standard installation procedure, as the root password must be set outside of a chroot environment. Skipping this step will result in an impossibility to login.}}
Normally, for setting the password, one has to be able to run passwd. However that's not possible in this case since an x86 system can't run ARM binaries. Therefore, it is needed to modify the file that contains the passwords (<tt>/etc/shadow</tt>) to set a default root password.
===== Clearing the root password =====
This will allow to login with a blank password for the root user.
<console>
# ##i##nano -w /mnt/SD_root/etc/shadow
</console>
Modify the line beginning by "root" to match the following:
<pre>
root::10770:0:::::
</pre>
{{fancywarning|After initial login, remember to change the root password using the passwd command.}}
===== Choosing a root password (alternative) =====


First, generate a password. The output of this command will be used to modify the shadow file.
=== Enabling serial console access ===
<console>
These are instructions specific for Pandaboard.
# ##i##openssl passwd -1
nano -w /mnt/SD_root/etc/inittab
or
s0:12345:respawn:/sbin/agetty 115200 ttyO2 vt100
# ##i##python -c "import crypt, getpass, pwd; print crypt.crypt('password', '\$6\$SALTsalt\$')"
</console>


Then, edit the shadow file and use the output of the last command to replace "YOUR_PASSWORD_MD5".
=== Kernel and bootloader ===
Here you can find kernel and bootloader files for a quick start.
Put these on first partition of your SD card. Archive name boot.tar.xz


<console>
* http://www.mediafire.com/?h5m1mnqqdrnyb
# ##i##nano -w /mnt/SD_root/etc/shadow
</console>
 
<pre>
root:YOUR_PASSWORD_MD5:14698:0:::::
</pre>
 
==== Setup hostname and networking ====
 
Please read the [[Funtoo Linux Networking]] to configure your network.
 
 
==== Using swclock ====
One of the problems some of the devices have, is that they don't have a battery to save the clock time. To mitigate this, on Funtoo we have an option in our init system called swclock which sets the date of the system upon boot from a last modified date of a file.
 
 
First, add swclock to the boot runlevel.
<console>
# ##i##ln -sf /etc/init.d/swclock /mnt/SD_root/etc/runlevels/boot
</console>
 
Then, remove hwclock from the startup because it sets the date from the RTC, which is 2000-01-01 upon startup and overrides swclock's date.
<console>
# ##i##rm /mnt/SD_root/etc/runlevels/boot/hwclock
</console>
 
swclock uses the <tt>/lib/rc/cache/shutdowntime</tt> modification time to set the date, therefore we update it to have the current date and time.
<console>
# ##i##touch /mnt/SD_root/lib/rc/cache/shutdowntime
</console>
 
Although this doesn't fix the issue, at least helps to set a sane date and time.
Note: Consider using NTP, documented on the next chapter
 
 
==== Enabling SSH access (optional) ====
Adding sshd to the default runlevel will enable access to the device using ssh (if network has been configured).
 
<console>
# ##i##ln -sf /etc/init.d/sshd /mnt/SD_root/etc/runlevels/default
</console>
 
If no network has been configured yet, it might be a good idea to add dhcpcd in the default runlevel as well.
 
<console>
# ##i##ln -sf /etc/init.d/dhcpcd /mnt/SD_root/etc/runlevels/default
</console>
 
==== Enabling serial console access (optional) ====
By default the ttyS0 port is configured at 9600 bps. However, almost all of the ARM devices run the serial port at 115200 bps. Also, the port device names differ (ttyO2 for Pandaboard, ttySAC1 for Odroid-X ...). So edit your /etc/inittab file:
 
<console>
# ##i##nano -w /mnt/SD_root/etc/inittab
</console>
 
Example for Pandaboard:
<pre>
s0:12345:respawn:/sbin/agetty 115200 ttyO2 vt100
</pre>


=== Finishing the installation and booting up the new system ===
Of course you can build your own kernel and U-Boot files, but these are provided here so you don't have to go through the cross-compiling pains and can use your Pandaboard to do native compiling once running.
Let's unmount the SD card.
<console>
# ##i##umount /mnt/SD_root
</console>


=== Troubleshooting ===
=== Modules and firmware ===
With the armv5te at least, these instructions work great.  However, when it is time to update sys-devel/gcc this underpowered wimp has trouble, mainly due to limited memory I think.  Cross-compiling toolchains made by crossdev work well within limits, it won't do gcc.  However I have found a trick that works well and solves this, thanks to the timely posting of new stage3's by Funtoo.<br />
Put these inside /lib folder on second partition. Archive name modules.tar.xz
Simply make a chroot using qemu-user files as described here: http://wiki.gentoo.org/wiki/Cross_Container_Support_Project
Enter the chroot and tweak your /etc/portage/make.conf to point to the directory you wish to save packages to (PACKAGEDIR) and any other necessary tweaks in there.<br />
Since this latest stage3 will have the latest gcc installed in it, simply enter:
<console>
# ##i##quickpkg sys-devel/gcc
</console>
It will build the binary package, which then installs on my Dockstar quickly & easily in comparison to compiling 48 hours and then failing.<br />
As an added bonus you now have a nifty arm chroot you may find handy for other tasks.


* http://www.mediafire.com/?h5m1mnqqdrnyb


[[Category:HOWTO]]
[[Category:ARM]]
[[Category:ARM]]
[[Category:Pandaboard]]

Revision as of 14:23, July 10, 2013

The PandaBoard is a low-power, low-cost single-board computer development platform based on the Texas Instruments OMAP4430 system on a chip (SoC). The board has been available to the public since 27 October 2010. It is a community supported development platform.

The PandaBoard ES is a newer version based on the OMAP4460 SoC, with the CPU and GPU running at higher clock rates. The board has been available to the public since 16 November 2011. Like its predecessor, it is a community supported development platform.

Features

The OMAP4430 SoC on the PandaBoard features a dual-core 1 GHz ARM Cortex-A9 MPCore CPU, a 304 MHz PowerVR SGX540 graphics processing unit (GPU), a Texas Instruments TMS320C6400 digital signal processor (DSP), and 1 GiB of DDR2 SDRAM.

The PandaBoard ES uses a newer SoC, with a dual-core 1.2 GHz CPU and 384 MHz GPU. Primary persistent storage is via an Secure Digital (SD) Card slot allowing SDHC cards up to 32 GB to be used. The board includes wired 10/100 Ethernet as well as wireless Ethernet and bluetooth connectivity. The board can output video signals via Digital Visual Interface (DVI) and HDMI interfaces. It also has 3.5 mm audio connectors. It has two Universal Serial Bus (USB) host ports and one USB On-The-Go port, supporting USB 2.0.

CPUinfo

  • Pandaboard
Processor       : ARMv7 Processor rev 2 (v7l)
processor       : 0
BogoMIPS        : 599.22

processor       : 1
BogoMIPS        : 582.68

Features        : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x1
CPU part        : 0xc09
CPU revision    : 2

Hardware        : OMAP4 Panda board
Revision        : 0020
Serial          : 0000000000000000

Funtoo Linux Instalation

First of all you have to prepare/format your SD card (ALL DATA WILL BE LOST!).

sdcardsetup.sh 
# sdcardsetup.sh script
#!/bin/sh

if [ ! "$1" = "/dev/sda" ] ; then
        DRIVE=$1
        if [ -b "$DRIVE" ] ; then
                dd if=/dev/zero of=$DRIVE bs=1024 count=1024
                SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'`
                echo DISK SIZE - $SIZE bytes
                CYLINDERS=`echo $SIZE/255/63/512 | bc`
                echo CYLINDERS - $CYLINDERS
                {
                echo ,9,0x0C,*
                echo ,,,-
                } | sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE
                mkfs.vfat -F 32 -n "boot" ${DRIVE}1
                mke2fs -j -L "rootfs" ${DRIVE}2
        fi 
fi

Follow the general steps from Funtoo on ARM#Installing Funtoo.

These steps include:

  • Extract stage3 to the 2nd partition of the SD card
  • Extract portage snapshot (required to emerge things and ntp(see below))
  • Setup fstab
  • Setup root password
  • Configure hostname and networking (optional, but recommended)
  • Enable SSH access (optional, but recommended)
  • Enable serial console access (optional, but recommended)
  • Correct RTC "bug" with swclock


Enabling serial console access

These are instructions specific for Pandaboard.

nano -w /mnt/SD_root/etc/inittab
s0:12345:respawn:/sbin/agetty 115200 ttyO2 vt100

Kernel and bootloader

Here you can find kernel and bootloader files for a quick start. Put these on first partition of your SD card. Archive name boot.tar.xz

Of course you can build your own kernel and U-Boot files, but these are provided here so you don't have to go through the cross-compiling pains and can use your Pandaboard to do native compiling once running.

Modules and firmware

Put these inside /lib folder on second partition. Archive name modules.tar.xz