Alternate Web Browsers For Raspberry Pi: 0.3

For my 0.3 I am releasing more comparison results and two more version of Fennec. I ran into numerous problems while trying to build Fennec for the Raspberry Pi. Originally I tried building Fennec on a Panda Board which had an Arm processor, but I was unsuccessful as I was plagued by numerous errors. And since the Panda Board had a different version of the ARMs processor (ArmV7) then the Raspberry Pi board (ArmV6), I don’t believe my build would work.

Then I tried setting up the environment for building it on the Pi itself. However I was unsuccessful because I was missing many dependencies required and building it on the Pi was not ideal. The most important one being kernel-devel, in which I could not install.

I was working with a fellow student who was building Firefox, and he was almost successful. I learned that he was using a fake kernel module to install the required dependencies. However he had ran into other problems.

After my previous attempts, I moved on to test other browsers on the Pi. The two that I could get working was Midori and Epiphany. I could not get Chromium to work because it did not have a valid repo for the device I was on. I tried creating a repo file with the link in /etc/yum.repos.d, but it was considered an invalid source. And Arora did not work simply because it used up too much resources.

I compared there two browsers against Firefox. The two browsers used slightly less memory then Firefox. But there weren’t any major performance increase. Epiphany did run smoother when in a smaller window size compared to the other 2, but once it was full screen, it was as slow as the others.

Firefox:

Midori:

Epiphany:

I have finished building Fennec on my VMs under XFCE and LXDE environments and have the links for them below. Fennec is inside the directory of objdir/dist/bin after the tar ball is extracted. It can be run from the terminal.

Fennec i686 LXDE

Fennec i686 XFCE

I have also included the Fennec executable standalone, but it will only work if you have all the associated libraries and dependencies.mk_add_options

The Mozconfig I used are as follows:

MOZ_OBJDIR=@TOPSRCDIR@/../objdir
ac_add_options –enable-application=mobile

# For improved compile speeds, all optional.
#mk_add_options MOZ_MAKE_FLAGS=-j4
#export CCACHE_HARDLINK=1
#ac_add_options –with-ccache=ccache

# Make a debug build, optional.
#export MOZ_DEBUG_SYMBOLS=1
ac_add_options –disable-debug
ac_add_options –enable-optimize

# Needed on Win32 to fix problem with Windows Vista SDK
ac_add_options –disable-accessibility
ac_add_options –disable-libjpeg-turbo

The instructions I used to build it were from the Mozilla Wiki web site.

https://wiki.mozilla.org/Mobile/Build/Fennec

Through out my research I had inquired people such as Anthony and Jordan from CDOT for help and they have provided useful guidance. But I still could not overcome the some of the many errors that I have encountered. In the end, I have concluded that you may run several browsers under Raspberry Pi, but non of them offer much increase in performance over Firefox.

 

 

Advertisements

Alternate Web Browsers For Raspberry Pi: 0.2

I have turn my attention to testing on different desktop environments and using Fennec web browser. I was having issues reducing the system resources that was used by the other browsers so I wanted to try a browser that was designed for mobile devices.

Fennec is a firefox based browser for mobile devices. It uses less resources than conventional browsers, but has an interface that is not optimized for standard desktop computers. Fennec was on my list of alternate browsers but I could not get a working version to run. However, after some research, I was able utilize the mozconfig file and the Mozilla central build environment to build a working version of Fennec.

I have here the link to the gnome version of Fennec and all of the associate libraries. The stand alone executable. The stand alone executable has issues. I recommend getting the whole package (objdir.tar.gz).

Fennec 32bit Gnome Fedora

I will upload the other version when ready.

To build Fennec I had to first install the proper tools:

yum groupinstall ‘Development Tools’ ‘Development Libraries’ ‘GNOME Software Development’
yum install mercurial autoconf213 glibc-static libstdc++-static yasm wireless-tools-devel mesa-libGL-devel alsa-lib-devel libXt-devel

hg clone http://hg.mozilla.org/mozilla-central

Then I had to create a mozonfig file with “ac_add_options –enable-application=mobile”.

Here is fennec running on a number of different Desktops:

Gnome:

XFCE:

LXDE:

After I had all my browsers in new environments I tried comparing them using the same websites. I have also disabled swap using the swapoff -a command and sync command to clear the memory cache.

XFCE:

LXDE:

I am more interested in LXDE since it is the same environment used by the RaspberryPi board. Plus all the browsers used a bit less resources on LXDE, but Fennec did not perform as well as I had hoped.

The next test I did involved minimizing the ram, all the browsers except Arora still worked when I took the ram down to 256 mb under LXDE. But the system would not boot when I reduced it even more.

Midori:

Epiphany:

Chromium:

Fennec:

I had plans to bring these browsers to the raspberry pi board, and build a Fennec on a panda board, but I ran into numerous issues. The most notable is not being able to change the partitions for the raspberry pi. And not being able to install development tools for the panda arm device.

Alternate Web Browsers For Raspberry Pi: 0.1

I have tested a number of different web browsers for fedora versions 13 and 14. I could not fully test these browsers on Fedora 15 yet because of Gnome 3’s incompatibility with Visualization. The browsers that I have successfully installed and running include Arora, Epiphany, Chromium, and Midori.

Arora is a cross platform web browser that is lightweight, but is unsupported since the creator quite developing it. Epiphany is part of the GNOME project, so its a exclusively browser for the gnome desktop environment. Chromium is the open source browser in which Google Chrome is getting the source code from. Midori is a web browser that aims to be fast and efficient, and it is being used as the default browser for Bodhi Linux Distribution.

The main performance measure that I am focusing on is memory usage. And the utilities that I used includes gnome-system-monitor and various commands. The system monitor tool provided a GUI for the process and resource usage of the browsers. And the commands that I used were able to provide more real time data.

To test the browsers, I first checked the number of processes that the browser was running. The command I used was simply:

ps -ef | grep browsername

Then I would monitor it using the system monitor gui or the top command.

I used the top -p command to monitor specifically the browser processes.

After testing out the different browsers I was able to get a feel of how they compare in terms of resource usage.

Chromium:


Epiphany:


Arora:


Midori:


Firefox:

In terms of browsing experience, both Firefox and Chromium were very smooth and fast, while the others felt sluggish at times especially on sites that have a lot of ads or moving components. Though they are also the browsers with multiple processes. Midori used the least resource in general since it only ran with one process and used less memory than the others.

These results are based on going to the same site with multiple browsers. But the browsers are not tuned yet for performance.

I have also tried to limit the amount of RAM for the OS. However, everything was not at a functional speed when I reduced the RAM to 256 mb. The speed seemed to increase when I disabled some unused services, but the browsers were still struggling when running.

SBR Project Plan

Testing alternate Web Browsers for the Raspberry Pi project

For this project, I will be looking at a number of different open source web browsers. My focus will mainly be on browsers that are light weight and efficient. I will first try these web browsers in a regular installation of fedora just to get a feel of how they operate and making note of their similarities and deferences.

To test these the browsers, I will create a number of VMs with minimum system resources. This will allow me to hopefully simulate the Raspberry Pi environment.

I will try and contact the development community for each browser and obtain their opinions as well as assistance. I have already looked at some of the packages that are available for some of the browsers. With the help of their receptive community, I am hoping to build and tune some of these browsers for the arm architecture.

I will also be working closely with other students who are working on optimizing the Raspberry Pi project, since I will be comparing the performance of these open source browsers to Firefox.

Here are some possible open source Web Browsers that I will be looking at:

Epiphany

http://projects.gnome.org/epiphany/

Netsurf

http://www.netsurf-browser.org/

Chromium

http://www.chromium.org/

Opera

http://www.opera.com/browser

Dooble

Midori

Building RPM

The first rpm I chose to build is hello for gnu. I chose this because it is simple, especially when I am still new at packaging rpms.

The first thing I did was try to install the package and see if it works, so I downloaded the tarball of hello from http://ftp.gnu.org/gnu/hello/, extracted and ran ./configure -> make -> make install.

After confirming the installation by running the hello command it was time to create my own package.

Here is what I did:

I ran these commands as root:

yum install development-tools

yum install fedora-packager

I exited root and ran:

rpmdev-setuptree

After this I changed my directory to ~/rpmbuild/SOURCES and ran:

wget http://ftp.gnu.org/gnu/hello/hello-2.7.tar.xz

Once I had the source file, I went into the ~/rpmbuild/SPECS directory and created a new spec file

vi hello.spec

To seek advice I consulted Jordan Cwang, a current CDOT employee. He told me to check out the SRPMs for more details. This was very helpful since I was able to use those to see actual working spec files.

A template spec file was already in place when I ran the command.

Here are the details of my spec file:

Name:           hello
Version:        2.7
Release:        14%{?dist}
Summary:        This is “Hello World” from GNU

License:        GPLv3+
URL:            http://ftp.gnu.org/gnu/hello
Source0:        http://ftp.gnu.org/gnu/hello/hello-2.7.tar.xz
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires: gettext
Requires(post): info
Requires(preun): info

%description
This is to build my first package.

%prep
%setup -q

%build
%configure
make %{?_smp_mflags}

%install
make install DESTDIR=%{buildroot}
%find_lang %{name}
rm -f %{buildroot}/%{_infodir}/dir

%post
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :

%preun
if [ $1 = 0 ] ; then
/sbin/install-info –delete %{_infodir}/%{name}.info %{_infodir}/dir || :
fi

%files -f %{name}.lang
%{_bindir}/hello
%doc %{_mandir}/man1/hello.1.gz
%doc %{_infodir}/%{name}.info.gz

%changelog

After editing and saving my spec file, i used rpmbuild -ba hello.spec to build the package.

I also tested it under mock using:

mock -r fedora-14-i386 –rebuild ../SRPMS/hello-2.7-14.fc14.src.rpm

The process was able to complete successfully with an exit status of 0.

Using Koji:

To use Koji, I had to setup the connection first. I did this by running the commands

yum install fedora-packager

/usr/bin/fedora-packager-setup

During the process I had to enter my FAS2 account credentials and create a certificate to add into my web browser. After adding the certificate to my browser I was able to log in on the koji website.

To test my package with koji, I ran the command

koji build dist-f14 –scratch hello-2.7-14.fc14.src.rpm

The result of the command provided a url link in which I used to navigate to a web page with the status of my build. Koji was able to build my package with out any issue.

Creating a repo:

To create a repository for my rpm, the first thing I did was to create a GPG key using the command:

gpg –gen-key

After going through the process of generating the key, I edited the .rpmmacros file to include a valid email address. This is done by setting the %_gpg_name within the file to my email address.

Then I realized that I needed to make my rpm a different version, so I went back and redited it my spec file.

SPEC FILE version 2.8

Name:           hello
Version:        2.8
Release:        14%{?dist}
Summary:        This is “Hello World” from GNU

License:        GPLv3+
Source0:        http://localhost/%{name}/%{name}-%{version}.tar.xz
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires: gettext
Requires(post): info
Requires(preun): info

%description
This is to build my first package.

%prep
%setup -q -n hello-2.7

%build
%configure
make %{?_smp_mflags}

%install
make install DESTDIR=%{buildroot}
%find_lang %{name}
rm -f %{buildroot}/%{_infodir}/dir

%post
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :

%preun
if [ $1 = 0 ] ; then
/sbin/install-info –delete %{_infodir}/%{name}.info %{_infodir}/dir || :
fi

%files -f %{name}.lang
%{_bindir}/hello
%doc %{_mandir}/man1/hello.1.gz
%doc %{_infodir}/%{name}.info.gz

%changelog

After successfully building this package, I signed it using the rpm –addsign command.

To make sure that others can access my rpms, I created a directory at /var/www/html/rpms. This ensures that when my web server is up and running, people will have access to my rpms.

I then ran the createrepo command to create the repository.

For the next step I created a new repo file in the /etc/yum.repos.d directory and pointed the gpgkey value to my own gpg key in the /etc/pki/rpm-gpg directory. And I also ran the gpg –export –armour command to use my email to generate a key.

At this step I have encountered some issues. I will update this blog when I make more progress. Thanks for reading my post for now!