ReferencePlatforms/mobile-imaging-linux

From MozillaWiki
Jump to: navigation, search

Install OS

I installed Debian 5 stable. The ethernet driver in debian package does not work for the intel gb card. I used a usb nic that is compatible out of the box.

I ran through the default options, setting timezone as appropriate. I selected Guided Partitioning -> Use Entire Disk -> All File in One Partition. When asked which software I wished to install, I selected only 'Standard system utilites'

The following assumes a user account called 'maemo'

At present, we think this computer can only be used for flashing N810s. We may or may not have to create a Fedora 12 version of this


Setup OS

su -
apt-get update
apt-get upgrade
apt-get install sudo build-essential python2.5 python2.5-dev linux-headers-`uname -r` openssh-server parted openssl git-core uuid-dev
apt-get build-dep mtd-utils

visudo
#add the line
%sudo ALL=(ALL) NOPASSWD: ALL
gpasswd -a maemo sudo

To get the built in ethernet to work, I downloaded the newest e1000e driver

wget http://downloadmirror.intel.com/15817/eng/e1000e-1.1.19.tar.gz
tar zxf e1000e-1.1.19.tar.gz
cd e1000e-1.1.19/src
make
su -c 'make install'
reboot

The version of mercurial in debian 5 is ancient. We need to install it from source

wget http://mercurial.selenic.com/release/mercurial-1.5.2.tar.gz
tar zxf mercurial-1.5.2.tar.gz
cd mercurial-1.5.2
python setup.py build
sudo python setup.py install

I would prefer the onboard chip to be eth0 and forget the usb ethernet adapter. I opened /etc/udev/rules.d/70-persistent-net.rules and deleted the line for the USB device and changed the PCI device to be NAME="eth1"

Configure the network card (reference). I used

cat >> /etc/network/interfaces << E
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Disable console logging:

  • create /etc/init.d/disable-console-errors.sh
#! /bin/sh

### BEGIN INIT INFO
# Provides:          sudo
# Required-Start:    $local_fs $remote_fs
# Required-Stop:
# Default-Start:     S 
# Default-Stop:
### END INIT INFO

case "$1" in
  start)
        echo '2^V^I2^V^I1^V^I2' > /proc/sys/kernel/printk
        ;;
  stop|reload|restart|force-reload)
        ;;
  *)
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0
  • ^V^I is a tab
chmod a+x /etc/init.d/disable-console-errors.sh
update-rc.d disable-console-errors.sh defaults 99
/etc/init.d/disable-console-errors.sh start

Setup Mozilla Environment

hg clone http://hg.mozilla.org/build/tools
ln -s tools/buildfarm/mobile/n810-imaging
ln -s tools/buildfarm/mobile/n900-imaging
cd n810-imaging
mkdir empty
echo 'USE AN SD CARD' > empty/INFO
mkfs.jffs2 -r empty -o empty.jffs2 -e 128
rm -rf empty
wget http://samba.anu.edu.au/ftp/rsync/src/rsync-2.6.9.tar.gz
tar zxf rsync-2.6.9.tar.gz
cd rsync-2.6.9
./configure --disable-debug --prefix=/home/maemo
make -j4
make install
sudo cp ~/bin/rsync /usr/bin/rsync2
#obtain appropriate nokia flasher and RX-44 stock image
#you only need one of the flasher* programs, the one for your system.
#the static one is useful if you have libraries missing
openssl sha1 RX-44_DIABLO_5.2008.43-7_PR_COMBINED_MR0_ARM.bin flasher-3.0* flasher-2.0.macosx
#SHA1(RX-44_DIABLO_5.2008.43-7_PR_COMBINED_MR0_ARM.bin)= 5464ae20a17afdbd59633f3d36a2e63281fcd106
#SHA1(flasher-3.0)= e4e3b0b791dca7bc91c710fc3702f4d72f904e7a
#SHA1(flasher-3.0-static)= d28b5597649a3ae40579d50f651c5d73afee19f9
#SHA1(flasher-3.0.amd64)= c56f71b69acd8ed0c19757451e14ba4a59645c5f
#SHA1(flasher-2.0.macosx)= 484bb141dad18ea68f7618c4f07f549311caf9b5

IMPORTANT Newer kernels do not work properly when flashing the N810 firmware (flasher-3.0*). It is very important that you do not upgrade the kernel on the imaging machine.

If the machine complains about

request_module: runaway loop modprobe binfmt-464c

Then there is a Maemo SD card inserted into the computer. Remove all sd cards and readers and reboot

Setup mtd utils

git clone git://git.infradead.org/mtd-utils.git
cd mtd-utils/ubi-tools
make
cp ubinize ~/n900-imaging
cd ../mkfs.ubifs
make
cp mkfs.ubifs ~/n900-imaging



Set up Fremantle only Scratchbox

Download the scratchbox and sdk setup scripts:

http://repository.maemo.org/stable/5.0/maemo-scratchbox-install_5.0.sh
http://repository.maemo.org/stable/5.0/maemo-sdk-install_5.0.sh

Then run:

su - # become root
mkdir /scratchbox
SBDIR=/scratchbox
echo 0 | sudo tee /proc/sys/vm/vdso_enabled #MUST BE RUN on each boot or
                # be made permanent by echoing 'vm.vdso_enabled = 0'
                # to /etc/sysctl.conf and running sysctl -p as root
echo 0 | sudo tee /selinux/enforce
sh /home/maemo/scratchbox/maemo-scratchbox-install_5.0.sh -s $SBDIR -u maemo
sudo gpasswd -a $USER sbox
maemo-sdk-install_5.0.sh -s $SBDIR
#Accept License
#Select Option 4, Runtime+Dev+Dbg
#Select Continue
$SBDIR/login
sb-conf select FREMANTLE_ARMEL
exit
sudo ${SBDIR}/sbin/sbox_ctl start
#SB can be launched by 
${SBDIR}/login

Install required packages

fakeroot apt-get install python python-dev autoconf2.13 libidl-dev libpcre3-dev



fedora 12 image creator for n900s

Install fedora 12 then run:

su -c 'yum groupinstall "Development Tools"'
su -c 'yum install uuid-devel lzo-devel mercurial'
hg clone http://hg.mozilla.org/build/tools
ln -s tools/buildfarm/mobile/n900-imaging
git clone git://git.infradead.org/mtd-utils.git
su -
cd /home/jhford/
cd mtd-utils/ubi-tools
make
cp ubinize ~/n900-imaging
cd ../mkfs.ubifs
make
cp mkfs.ubifs ~/n900-imaging