Parallella Linaro Nano

Revision as of 23:45, 17 January 2015 by Shodruky (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

How to Install Linaro Saucy Nano (minimal headless system)


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.

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]

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

Edit some configuration files

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 and the Parallella's IP address is,

sudo nano /tmp/mnt2/etc/network/interfaces

(Edit and save.)

source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

auto eth0

# static network settings
iface eth0 inet static
   up sleep 3; mii-tool -F 1000baseT-FD

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

NOTE: Linaro Quantal and Linaro Raring would not boot if "source-directory /etc/network/interfaces.d" was left in the file. --Gamedrummer (talk) 14:08, 10 July 2014 (UTC)

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

Insert the SD Card to the Parallella,
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

Now you can login the Parallella from your PC.
On the PC,

ssh linaro@
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

             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

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 !!

Additional Installation

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


md5sum esdk. 
52e3b60185c882c7641115993b6a72b5  esdk.
sudo mkdir -p /opt/adapteva/
sudo tar xzf esdk. -C /opt/adapteva/
sudo ln -sTf /opt/adapteva/esdk. /opt/adapteva/esdk

touch ~/.nano_history
nano ~/.bashrc

(add to the bottom of the file)


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 nano

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 /
sudo reboot

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

How to Install lightweight X environment

Demo video:

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"
Section "Screen"
  Identifier "Screen0"
  Device "Card0"
  SubSection "Display"
#---- Uncomment your preferred mode ----
    #Modes "1920x1200"
    #Modes "1920x1080"
    #Modes "1280x720"
    #Modes "640x480"

ALSA configuration

nano ~/.asoundrc

(copy, paste and save)

pcm.!default {
 type rate
 slave {
  pcm "hw:0"
  rate 48000
 converter "samplerate"
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

Start X environment


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#Enable_devtmpfs

bootargs = "root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait video=HDMI-A-1:1280x720";

Edit xorg.conf
How to: Parallella_Linaro_Nano#xorg_configuration

Modes "1280x720"
# In the Section "Screen"