Parallella Linaro Nano

= How to Install Linaro Saucy Nano (minimal headless system) =

Requirements
Ubuntu PC, SD Card, SD Card adapter, Parallella board

On the PC's terminal:

Download the files
Find the kernel tarball and the FPGA bitstream file that are suitable for your board.

http://www.parallella.org/create-sdcard/

Note: If you want to use "headless bitstream" and "headless kernel", first install Linaro using "HDMI bitstream" and "HDMI kernel", then replace them with the headless one. (A HDMI monitor and a keyboard are needed for installing process.) These files are in the partition 1 (FAT32), so you can easily replace them using ordinary PC.

wget --no-check-certificate https://[THE_URL_OF_THE_KERNEL_TARBALL]

wget --no-check-certificate -O parallella.bit.bin https://[THE_URL_OF_THE_BITSTREAM]

wget http://releases.linaro.org/14.04/ubuntu/saucy-images/nano/linaro-saucy-nano-20140410-652.tar.gz

md5sum linaro-saucy-nano-20140410-652.tar.gz

cded44187fb762ba7ea7b1ee092a0998 linaro-saucy-nano-20140410-652.tar.gz

Determine the device name of the SD Card
sudo parted -l

In case of a 2GB SD Card:

Model: SD/MM Reader Disk /dev/sdX: 2042MB Sector size (logical/physical): 512B/512B Partition Table: msdos

Number Start End Size Type File system Flags 1 1049kB 49.3MB 48.2MB primary fat16 2 49.3MB 2042MB 1992MB primary ext4

"/dev/sdX" is the device name of the SD Card

(e.g. sdb, sdc, sdd, sde, mmcblk0, mmcblk1, ... and, Beware! Don't partition HDD!!!)

sdX : an example of the device name (e.g. sde, mmcblk0)

sdX1 : partition 1 of the device (e.g. sde1, mmcblk0p1)

sdX2 : partition 2 of the device (e.g. sde2, mmcblk0p2)

Partition the SD Card
Unmount the SD Card if it was automounted, then,

sudo parted -a optimal /dev/sdX

(parted) print

If there are two partitions on the SD Card,

Number Start End Size Type File system Flags 1 1049kB 99.6MB 98.6MB primary fat16 lba 2 99.6MB 2042MB 1942MB primary

Delete all existing partition

(parted) mklabel msdos Warning: The existing disk label on /dev/sdX will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? yes

Make new partitions

(parted) mkpart p fat32 2048s 256MB (parted) mkpart p ext2 256MB -2MB (parted) q

Check the partition

sudo fdisk -l /dev/sdX

Device Boot Start End Blocks Id System /dev/sdX1 2048 499711 248832 c W95 FAT32 (LBA) /dev/sdX2 499712 3887103 1693696 83 Linux

Format the partition

sudo mkfs.vfat -n BOOT /dev/sdX1 sudo mkfs.ext4 -L rootfs /dev/sdX2

Extract rootfs
sudo mkdir /tmp/mnt1 /tmp/mnt2 sudo mount /dev/sdX2 /tmp/mnt2 sudo tar --strip-components=1 -C /tmp/mnt2 -xzpf linaro-saucy-nano-20140410-652.tar.gz sudo sync sudo umount /tmp/mnt2

Extract BOOT partition
sudo mount -o umask=000 -t vfat /dev/sdX1 /tmp/mnt1 sudo tar --no-same-owner -C /tmp/mnt1 -xzf [THE_FILENAME_OF_THE_KERNEL_TARBALL] sudo cp parallella.bit.bin /tmp/mnt1/ sudo sync sudo umount /tmp/mnt1

Preventing to install unnecessary packages
sudo mount /dev/sdX2 /tmp/mnt2 sudo nano /tmp/mnt2/etc/apt/apt.conf.d/00InstallRecommends (Edit and save.) APT::Install-Recommends "false";

Network configuration
If your router's IP address is 192.168.0.1 and the Parallella's IP address is 192.168.0.2,

sudo nano /tmp/mnt2/etc/network/interfaces (Edit and save.) source-directory /etc/network/interfaces.d

auto lo iface lo inet loopback

auto eth0

iface eth0 inet static address 192.168.0.2 netmask 255.255.255.0 gateway 192.168.0.1 up sleep 3; mii-tool -F 1000baseT-FD
 * 1) static network settings


 * 1) If you prefer DHCP, comment out the above 5 lines, uncomment the below.
 * 2) iface eth0 inet dhcp
 * 3)   up sleep 3; mii-tool -F 1000baseT-FD

sudo nano /tmp/mnt2/etc/resolv.conf

nameserver 192.168.0.1

sudo sync sudo umount /tmp/mnt2

Insert the SD Card to the Parallella,

power-on,

Wait 30 seconds,

You'll see a root terminal.

If it doesn't boot, press the reset button and try again.

Install openssh-server
On the Parallella:

apt-get update apt-get install openssh-server sync

Now you can login the Parallella from your PC.

On the PC,

ssh linaro@192.168.0.2 password: linaro

Create device nodes
sudo mknod -m 600 /dev/ttyPS0 c 251 0 sudo chown root:tty /dev/ttyPS0

Let's see how lightweight it is
free

total      used       free     shared    buffers     cached Mem:       992452      38356     954096          0       1816      13076 -/+ buffers/cache:     23464     968988 Swap:           0          0          0

The memory consumption is only 23MB !! :D

df

Filesystem    1K-blocks   Used Available Use% Mounted on /dev/root       30348232 311108  28472452   2% / none              99248     68     99180   1% /run none               5120      0      5120   0% /run/lock none             496224      0    496224   0% /run/shm none             102400      0    102400   0% /run/user

The disk consumption is only 304MB !!

Recommended Packages
sudo apt-get install vim-tiny nano fake-hwclock wget less unzip

Epiphany SDK
sudo apt-get install build-essential man-db manpages-dev git libmpc-dev libmpc2 libgmp3-dev libmpfr-dev ca-certificates

wget http://ftp.parallella.org/esdk/esdk.5.13.09.10_linux_armv7l.tgz

md5sum esdk.5.13.09.10_linux_armv7l.tgz

52e3b60185c882c7641115993b6a72b5 esdk.5.13.09.10_linux_armv7l.tgz

sudo mkdir -p /opt/adapteva/ sudo tar xzf esdk.5.13.09.10_linux_armv7l.tgz -C /opt/adapteva/ sudo ln -sTf /opt/adapteva/esdk.5.13.09.10 /opt/adapteva/esdk

touch ~/.nano_history nano ~/.bashrc (add to the bottom of the file)

EPIPHANY_HOME=/opt/adapteva/esdk . ${EPIPHANY_HOME}/setup.sh

Disable sshd hostname look-up
(To fix slow SSH connections) sudo nano /etc/ssh/sshd_config (add to the bottom of the file) UseDNS no

Enable devtmpfs
(and disable serial console: they are incompatible) sudo mknod -m 660 /dev/mmcblk0 b 179 0 sudo mknod -m 660 /dev/mmcblk0p1 b 179 1 sudo mknod -m 660 /dev/mmcblk0p2 b 179 2

sudo apt-get install device-tree-compiler

sudo mount /dev/mmcblk0p1 /mnt cd /mnt sudo cp devicetree.dtb devicetree.dtb.bak

sudo dtc -I dtb -O dts -o devicetree.dts devicetree.dtb

sudo nano devicetree.dts (Search and Edit the "bootargs" line) bootargs = "root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait";

sudo dtc -I dts -O dtb -o devicetree.dtb devicetree.dts cd / sync sudo reboot

That's all! Below are installation instructions of lightweight desktop environment.

= How to Install lightweight X environment =

Demo video: http://youtu.be/6gpM57qB-I8

Install LXDE
sudo apt-get install alsa-base alsa-utils libasound2-plugins lxde x11-xserver-utils xserver-xorg xserver-xorg-video-fbdev xserver-xorg-video-modesetting feh xinit

Disable PCManFM Desktop mode
(for faster displaying) sudo nano /etc/xdg/lxsession/LXDE/autostart (Delete the line "@pcmanfm --desktop --profile LXDE" and save.)

Set a background image
Put a background image file in your home directory.

(e.g. /home/linaro/background.png)

sudo nano /etc/xdg/lxsession/LXDE/autostart (Append this line to the bottom of the file)

@feh --bg-fill /home/linaro/background.png

xorg configuration
sudo nano /etc/X11/xorg.conf

Section "Device" Identifier "Card0" Driver "modesetting" Option "ShadowFB" "True" Option "SWCursor" "True" Option "HWCursor" "False" EndSection Section "Screen" Identifier "Screen0" Device "Card0" SubSection "Display" #Modes "1920x1200" #Modes "1920x1080" #Modes "1280x720" #Modes "640x480" EndSubSection EndSection
 * 1) Uncomment your preferred mode

ALSA configuration
nano ~/.asoundrc (copy, paste and save) pcm.!default { type rate slave { pcm "hw:0" rate 48000 } converter "samplerate" }

sync sudo reboot

How to login as a normal user
After booting, press Ctrl+Alt+F2 login: linaro Password: linaro

Or, (easier way)

In the root prompt,

su linaro cd

Start X environment
startx

Install Firefox
sudo apt-get install firefox

Speed up Firefox
Launch Firefox, Type "about:config" in the URL bar, Type "browser.cache.disk.enable" in the "Search:" bar, Change the value true->false by double-clicking.

Type "mousewheel.acceleration.start" in the "Search:" bar, Double click, set [2].

Install media player
sudo apt-get install smplayer

Launch smplayer,

Options->Preferences->Video->Output driver: x11

Options->Preferences->Audio->Output driver: alsa

How to force framebuffer resolution to 1280x720
This increases desktop performance on a full-HD monitor.

The preferred resolution is 1280x720, however you can set another resolution.

To check the available resolutions, type this command on a terminal. (with HDMI connected, on native X Window, not in ssh)

cat /sys/class/drm/card0-HDMI-A-1/modes

Note: The resolution settings of the xorg.conf (Modes "1280x720") must match with the bootargs settings (video=HDMI-A-1:1280x720).

Edit bootargs and update dtb file.

How to: Parallella_Linaro_Nano bootargs = "root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait video=HDMI-A-1:1280x720"; Edit xorg.conf

How to: Parallella_Linaro_Nano Modes "1280x720"
 * 1) In the Section "Screen"