Friday, May 17, 2013

RPi-TC ARMv6j Release 2 available!

Bug solved and feature added on this release:
- OpenNX: nxssh rebuilded and included
- Citrix Receiver: updated to v12.2.3
- Spice-XPI: added script to /usr/libexec to handle browser alternatives
- Intro video: desktop will be show as soon LXDE is ready (/root/videokill.sh)
- Openbox menu: added keyboard and locales configuration
- ARMv6j repository: added gpg key and commented standard Debian sid repo
- Dual kernel/firmware: now included kernel-tuned, kernel-standard and rpi-firmware packages

Download available on my server here, in Google drive here and via torrent here.

Please, if you find a bug, please, send me some error log/how to reproduce, thanks ;)

Monday, April 29, 2013

New Release! RPi-TC ARMv6j Ready!

Finally the RPi-TC ARMv6j full version is ready!!!

What's new in this release:
- Debian SID ARMv6j completely rebuilded from source
- Dual Kernel (standard and tuned)
- Bootup from poweron to X take about 23secs
- VMWare Horizon View Client 2.0.0
- Citrix Receiver 12.1
- vWorkspaces 7.0b
- xFreeRDP 1.1.0 (git 24042013)
- RDesktop 1.7.1
- OpenNX 0.16.0.725
- X2GO Client 4.0.1.1
- SPICE GTK+ 0.19 Client (virt-viewer)
- Iceweasel with ICA & Spicy plugins enabled
- New "boot loader" :)

Readme:
- Right-Click menù and autostart applications config files can be changed directly from Right-Click->Configuration submenù.
- Dual Kernel: just change config.txt (inside BOOT partition) and change the line: kernel=kernel.img in kernel=kernel-std.img to use standard RaspberryPi Kernel.
- If you need some packages not included in ARMv6j release just add standard SID debian ARMv4t repository in source.list and then apt-get update.
- Sound redirection is good (bit better in RDesktop than in FreeRDP). Default output is HDMI, to change it to analog just: amixer cset numid=3 1
- "boot loader" and desktop wallpaper are located in /root/ folder.

HOW-TO Install:
- Download image here or here or via torrent here.
- Extract the archive and write the .img file in an SDCard with dd or diskimage.
- Plug your SDCard into your Raspberry board. Power on!

UPDATE 3-MAY-2013: lot of package have been updated: spice-gtk, freerdp, icaclient (to 12.2.3) and others...
3 package was added:
kernel-standard: update the standard RaspberryPi kernel and modules
kernel-tuned: update the tuned RPi-TC kernel and modules
rpi-firmware: update RaspberryPi firmware files .elf, .bin, .dat and configuration files config.txt cmdline.txt
So to update firmware/kernels just do: apt-get update && apt-get install rpi-firmware kernel-tuned kernel-standard

Wednesday, April 24, 2013

ARMv6j repository ready!

After about 500 package rebuilded from source the ARMv6j repository is ready!
It's available here: http://ks3313837.kimsufi.com/armv6j
It can be used for bootstrapping or just as additional apt source. HOW-TO will be released soon!
I've just test the boot time: armv4t in 32secs, armv6j in 23secs.

Package like OpenNX, Spice (virt-viewer), Spice XPI, FreeRDP (git 1.1.0), RDesktop and Citrix Receiver are already inside the repo! Other packages (VMWare Horizon, vWorkspace etc) will be released soon!

Remember: all package inside the repository are builded for ARMv6j Raspberry Pi board! It will not work on other boards/architecture!
If someone want to mirror the repo let me know! Thanks!

UPDATE 25-APR-2013: updated packages: bash findutils tar libkmod2 libkeyutils1 kmod alsa-base libcolord1 libgstreamer0.10-0 libjasper1 libnotify4 libnspr4-0d libnspr4 libpulse-mainloop-glib0  libpulse0 module-init-tools iputils-ping dialog libgvnc-1.0-0 libgtk-vnc-2.0-0 unzip xserver-common  xserver-xorg-core
Also added vmware and vworkspaces

UPDATE 26-APR-2013: added x2go client

UPDATE 27-APR-2013: updated packages: iproute liblocale-gettext-perl libmpg123-0 libtext-charwidth-perl nano shared-mime-info wpagui wpasupplicant xserver-xorg-input-evdev xserver-xorg-video-fbdev xserver-xorg-video-vesa

Monday, April 15, 2013

ARMv4t --> ARMv6j porting started!

UPDATE 17-APR-2013: batch compile of all packages just finished! Quite fast! Results ( here the full list ) are very good, more than 80% of packages was build successfully. Lot of errors says something like "... No such file or directory ...",it's just mean that package must be builded without "-jx" option (or by putting "-j1")...

RPi-TC distro is based on Debian armel Wheezy, Debian for ARMEabiPort is supported on ARMv4t and higher architecture. So, basically, all ARM board (like RaspberryPi) that use Debian armel as OS just use binary compiled with old instruction sets (RaspberryPi is an ARMv6j).
Will ARMv6j binary be more fast than ARMv4t? Sure, but there is no ARMv6j Debian porting! So how we can make some benchmark? We can rebuild Debian! Not the whoooole Debian repository (about 35.000 pakage) but just the package needed by RPi-TC distro (about 400 package)
So, how we can do that? Rebuilding a single package under RaspberryPi take lot of time, 400 will thake my whole life... QEMU chroot is the best choice IMHO but there is some bugs (like msgmerge) and about 80% pakages rebuild will fail. After few test i choose to use a develop arm board and use distcc to re-distribuite the building process of apt-build across network to other pc. Ok, it's hard to explain but easy to do, here an howto:

Forgot to mention that this can be used to port Ubuntu in RaspberryPi :)

What we need:
- Master: RaspberryPi with Debian armel. Or other better performance ARM board (we cannot redistribuite perl xdoc python work...), i use my 4Core,1Gb RAM ODROID-X dev board.
- Master: al least 30Gb of space for source file, build folders and package.
- Helper (ip: 192.168.0.2/24): A PC with debian/ubuntu distro installed (i use my i920 with 6Gb RAM home pc).


##HELPER CONFIGURATION, as root create an ARMv6j crosstool:
chmod 777 /tmp
apt-get update && apt-get upgrade
apt-get install bison flex gperf gawk libtool automake libncurses5-dev texinfo patch unzip bzip2 make
wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.18.0.tar.bz2
bunzip2 crosstool-ng-1.18.0.tar.bz2
tar xvf crosstool-ng-1.18.0.tar
cd crosstool-ng-1.18.0
./configure;make -j10;make install

#as user:
mkdir crosstool
cd crosstool
wget http://pastebin.com/raw.php?i=c0skf031 -O .config
ct-ng build
#depending on system it's take up to 1hour...
cd ~/x-tools/arm-unknown-linux-gnueabi/bin
wget http://pastebin.com/raw.php?i=FHHn4qkk -O link
chmod +x link
./link
rm link

#as root
apt-get update && apt-get upgrade
apt-get install distcc
#modify the following lines in /etc/default/distcc: 
ALLOWED_NETS="192.168.1.0/24" #this is your subnet
STARTDISTCC="true" #start distcc as service
JOBS="8" #concurrent jobs, is based on how many core you have

#modify /etc/init.d/distcc to add in PATH the builded crosstools:
PATH=/home/USERNAME/x-tools/arm-unknown-linux-gnueabi/bin:$PATH #replace USERNAME with your user!
#Now start distcc daemon:
/etc/init.d/distcc start

##MASTER CONFIGURATION (ODROID-X or RaspberryPi or other board):
apt-get update && apt-get upgrade
apt-get install distcc  
#edit /etc/distcc/hosts we have to put all the ipaddress and the concurrent jobs for every distcc host
#+zeroconf
localhost/3 192.168.1.2/8
#our localhost is an ODROID-X 4 cores, we leave 1 core for distcc client our helper is an Ubuntu x64 with 8cores
 
#Now we hato to tell the compiler to use distcc:
export PATH="/usr/lib/distcc:$PATH"
export MAKEFLAGS="-j11" # 11 is the sum of concurrent jobs available 3 on odroid-x + 8 on PC


##APT-BUILD CONFIGURATION (on MASTER):
apt-get update && apt-get upgrade
apt-get install apt-build
apt-build update
#use this customized version of apt-build:
wget http://pastebin.com/raw.php?i=RxCunqYy -O /usr/bin/apt-build
cat <<END > /etc/apt/apt-build.conf
build-dir = /opt/build
repository-dir = /opt/repository
options = " -O3 -march=armv6j -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=softfp"
END

#re-reconfigure to accept new configuration:
mkdir /opt/
dpkg-reconfigure apt-build #just always shot enter...
#test re-build bash:
apt-build install --noupdate bash

If everything is ok apt-build script will download all the necessary package an the source file to rebuild bash and recreating the .deb package with the ARMv6j architecture, to check if binary/libs are ok just:
dpkg -x dash_0.5.7-3+RPiTC1_armel.deb /tmp/
readelf -A /tmp/bin/bash
File Attributes
  Tag_CPU_name: "6J"
  Tag_CPU_arch: v6
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-1
  Tag_FP_arch: VFPv2
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: int
  Tag_ABI_HardFP_use: SP and DP
  Tag_DIV_use: Not allowed


RPi-TC Package list is here i'll keep it updated with building results!

Thursday, March 21, 2013

Beta tester needed for Spice Client!!

UPDATE 10-APR-2013: Spice Client test closed, will be released in the next RPi-TC release!
Also XPI Plugin for IceWeasel is working:


Thanks again to Igniazio!


I didn't have an Spice environment so i need help to test SPICE client (with spice-gtk support)

If someone want to help please use my git to create a clean base RPi-TC system:
https://github.com/Gibbio/RPiTC-Kernel (BOOT partition)
https://github.com/Gibbio/RPiTC (ROOTFS partition)

Or you can use my "rpitcCreator.sh" script to build it up. Just clone the two gitrepo and add missing folder like /boot /dev etcetc...

Then send me an email or comment this post, i'll send you the package to test.

So after a few tests... Seem SPICE (spicy client) is working on RPi-TC:


Thanks Ignazio for the test!!!!!

Tuesday, February 12, 2013

RPi-TC Customized version?!?!

A friend was asking me for a customized version of RPi-TC...
- Ok, no problem, what you need?
- Your SO is good but... how to say... it's ugly!
- Sorry what????
- Yes, the bootup is old!
- Isn't old, it's vintage!
- Right...Maybe you can put an image on screen while loading?
- Ok i understand... i'll try...


He liked it :)

Wednesday, February 6, 2013

New Kernel, new features... new release 06-02-2013!


As usual, download the .rar, uncompress it (with winrar or 7zip) and "burn" it into your SDCard (with win32 Disk Imager or dd). Then just power on your RaspberryPi board!

With the "new" Kernel 3.6.11 for RPi-TC i have added some features:

NFS rootfs support, it's very useful to leave the full filesystem in a network disk and tell the board to boot directly from there.I have different versions of RPi-TC in test and by booting the board via NFS i can easily switch between versions without writing new image/SDCard etcetc and if i need to modify some files i can do it directly in the NFS Server.
Little how-to to do that (you can find LOT better how-to around internet, just google-it):
you need: Linux pc (i use an Ubuntu virtual machine) with nfs-kernel-server, an DHCP server (like your home router!)and the MAC Address of your RaspberryPi
configure NFS Server: just add /opt/rpitcfs *(rw,sync,no_wdelay,no_subtree_check,no_root_squash) to /etc/exports file
now create the folder /opt/rpitcfs with mkdir -p /opt/rpitcfs , plug your SDCard and more all file inside the ext4 partition of your SDCard (ex. /media/rpitc) in the /opt/rpitcfs folder. Don't touch the /media/BOOT fat partition with kernel.img elf bin files.
restart the NFS Server: /etc/init.d/nfs-kernel-server restart
Now we need to modify just 2 files:
in /opt/rpitcfs/etc/fstab comment out the line: /dev/mmcblk0p2 / ext4 defaults,noatime,nodiratime 0 1 by adding # as first char
in /media/BOOT/cmdline.txt overwrite anything with: dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 ip=dhcp root=/dev/nfs nfsroot=192.168.0.100:/root/fs,vers=3 rw rootwait where 192.168.0.100 is the IPAddress of your Linux PC with NFS Server!
Save all, plug your SDCard on RaspberryPi and poweron!
you will see something like:
Please remember this: you have to add an IP reservation on your DHCP Server with the MACAddress of your board, Network-Manager service on startup will may change the IPAddress taken by the Kernel!!!

SqhashFS and AuFS is back, /usr folder was squashed, in RPi-TC distro /usr take about 600Mb of space, after squashing it it's about 211Mb. Not just for saving space on SDCard but also to improve performance! Also, you can combine it with NFS Server by remote squashing folders or package (like Citrix or VMWare) and adding it just when needed (also when board is powered on!).

Desktop is changed (again...sorry! :) ). Now you can create shortcut icons and modify it by opening it with Leafpad. Right Click openbox menu is still available and you can modify it as usual. I have added 2 shortcut "RDesktop Example!" and "XFreeRDP Example!" use it if you need to create a new RDP connection (with rdesktop or with xfreerdp), please refer to the official documentation for the right command line parameter!! RDesktop man page & xFreeRDP man page


Other changes and features list:
- VMWare View Client 1.7.0 -> PLEASE REMEMBER: there is NO PCoIP
- Citrix Receiver for Linux System on a Chip (SoC) 12.2.3
- Quest vWorkspaces 7.0b -> dependencies fixed!
- RDesktop 1.7.1, Remmina 1.0 and xFreeRDP 1.0.1
- SPICE Client (virt-viewer 0.5.3) -> i need beta tester!
- IceWeasel 10.x with Citrix extension
- Kernel 3.6.11 armel fine tuned, added lot of module for your wifi dongle and other driver
- Image is about 1Gb but space needed on SDCard is less than 400Mb (fit into 512Mb SDCards)

There is no X11 video driver at the moment, just a beta release for armhf, not yet for armel.


Download LINK:
Google drive
.torrent

Gibbio