Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
qtmoko/doc/txt/debian_rootfs_howto_gta04.txt
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
718 lines (494 sloc)
23.7 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Debian rootfs | |
| ============= | |
| Step 0 - QEMU image for creating rootfs | |
| ======================================= | |
| * I used to create images straight on the device, but i dont do it anymore. | |
| * Easiest way to create tarbal and NAND images is in qemu. You can download my | |
| preinstalled qemu image from: | |
| https://sourceforge.net/projects/qtmoko/files/BuildHost/qtmoko-buildhost.tar.gz/download | |
| * Unpack the tarball, install qemu and run ./start.sh | |
| * After the system is started you can use redirected port to ssh there: | |
| ssh -p 22222 root@localhost | |
| please note that the root password is empty. | |
| * The system is very minimal, download more packages: | |
| apt-get update | |
| apt-get install cdebootstrap mtd-utils | |
| Step 1 | |
| ====== | |
| * We will be installing new image to /media/card: | |
| cdebootstrap --flavour=minimal --include=ifupdown,net-tools,procps,netbase,nano,module-init-tools,wget,openssh-server,screen,mc,libts-0.0-0,libasound2,alsa-utils,udhcpc,wpasupplicant,wireless-tools,iputils-ping,iproute,bluez,bluez-alsa,dosfstools,fbset,rsyslog,psmisc,iptables,dash,ttf-dejavu,libpng12-0,libjpeg8,libxtst6,sqlite3,ntpdate,gstreamer0.10-ffmpeg,gstreamer0.10-plugins-good,gstreamer0.10-fluendo-mp3,liblcms1,libmng1,libtiff4,libvorbisfile3,libicu48,gpsd,gpsd-clients,rfkill,libspeex1,libspeexdsp1,lsof,gstreamer0.10-pulseaudio,pulseaudio,pulseaudio-utils,libasound2-plugins,libpulse-mainloop-glib0 wheezy /media/card/ http://cdn.debian.net/debian/ | |
| Step 2 | |
| ====== | |
| * Complete installation. Copy paste below in shell: | |
| mkdir /media/card/mnt/nfs | |
| mkdir /media/card/mnt/p1 | |
| mkdir /media/card/mnt/p2 | |
| mkdir /media/card/mnt/p3 | |
| mkdir /media/card/mnt/p5 | |
| mkdir /media/card/mnt/p6 | |
| mkdir /media/card/mnt/p7 | |
| mkdir /media/card/media/card | |
| mkdir /media/card/media/p1 | |
| echo "neo" > /media/card/etc/hostname | |
| echo "127.0.0.1 neo" >> /media/card/etc/hosts | |
| cat > /media/card/etc/network/interfaces <<__END__ | |
| auto lo | |
| iface lo inet loopback | |
| auto usb0 | |
| iface usb0 inet static | |
| address 192.168.0.202 | |
| netmask 255.255.255.0 | |
| network 192.168.0.0 | |
| gateway 192.168.0.200 | |
| up rm /etc/resolv.conf | |
| up echo nameserver 208.67.222.222 >/etc/resolv.conf | |
| __END__ | |
| cat > /media/card/etc/fstab << __END__ | |
| rootfs / auto defaults,errors=remount-ro,noatime 0 1 | |
| /dev/mmcblk0p1 /media/p1 auto defaults 0 0 | |
| /dev/mmcblk0p5 /media/card auto defaults 0 0 | |
| proc /proc proc defaults 0 0 | |
| #tmpfs /var/cache/apt tmpfs defaults,noatime 0 0 | |
| 192.168.0.200:/ /mnt/nfs nfs noauto,nolock,soft,rsize=32768,wsize=32768 0 0 | |
| __END__ | |
| cat > /media/card/etc/apt/apt.conf.d/99no-install-recommends << __END__ | |
| APT::Install-Recommends "0"; | |
| __END__ | |
| sed -i 's/\(PermitEmptyPasswords\) no/\1 yes/' /media/card/etc/ssh/sshd_config | |
| chroot /media/card /bin/sh -e <<__END_CHROOT__ | |
| echo root: root | chpasswd | |
| sed -i 's/root:.*/root:C0XOiCyzQDtsA:14973:0:99999:7:::/' /etc/shadow | |
| apt-get --yes --purge remove cdebootstrap-helper-rc.d | |
| __END_CHROOT__ | |
| Step 3 - add more package repositories | |
| ======================================== | |
| echo "deb http://cdn.debian.net/debian wheezy contrib" >> /media/card/etc/apt/sources.list | |
| echo "deb http://cdn.debian.net/debian wheezy non-free" >> /media/card/etc/apt/sources.list | |
| echo "deb http://security.debian.org/ wheezy/updates main contrib non-free" >> /media/card/etc/apt/sources.list | |
| echo "deb http://qtmoko.sourceforge.net/debian/gta04/armhf /" >> /media/card/etc/apt/sources.list | |
| echo "deb http://qtmoko.sourceforge.net/apps/all /" >> /media/card/etc/apt/sources.list | |
| echo "deb http://qtmoko.sourceforge.net/apps/armhf /" >> /media/card/etc/apt/sources.list | |
| Step 4 | |
| ====== | |
| * Device drivers modules. Most of device drivers are built in kernel, but | |
| following drivers are exception: g_ether is module so that we can switch | |
| between mass storage, ppp_generic is not needed for people not using GPRS, | |
| joydev is used in qtmaze for accelerometers, hso is for UMTS. | |
| echo g_ether > /media/card/etc/modules | |
| echo joydev >> /media/card/etc/modules | |
| echo hso >> /media/card/etc/modules | |
| echo ledtrig-timer >> /media/card/etc/modules | |
| echo bmp085 >> /media/card/etc/modules | |
| * Make the MAC address of g_ether fixed instead of random, so that network | |
| manager can be configured: | |
| echo "options g_ether host_addr=46:0d:9e:67:69:eb dev_addr=b6:c8:ab:ac:44:7f" >> /media/card/etc/modprobe.d/options | |
| * Configure bluez4 for handsfreee calls, otherwise there is no sounds: | |
| nano /media/card/etc/bluetooth/audio.conf | |
| and uncomment SCORouting=PCM setting in [General]: | |
| SCORouting=PCM | |
| * Remove alsa-utils init scripts - we dont need them, we set correct alsa | |
| state ourselves when qtmoko starts up: | |
| chroot /media/card | |
| update-rc.d -f alsa-utils remove | |
| exit | |
| Step 4.1 - stable device nodes for UMTS | |
| ======================================= | |
| * Modem device is by default on /dev/ttyHS3, but it can rename after modem | |
| disconnect. For details see: | |
| http://lists.goldelico.com/pipermail/gta04-owner/2012-February/001515.html | |
| http://lists.goldelico.com/pipermail/gta04-owner/2012-February/001563.html | |
| We will use udev to create stable symlinks for us: | |
| cd /media/card/etc/udev/rules.d | |
| wget https://raw.github.com/radekp/linux-2.6/v3.7-gta04-qtmoko-v55/GTA04/udev-rules/hso.rules | |
| wget https://raw.github.com/radekp/linux-2.6/v3.7-gta04-qtmoko-v55/GTA04/udev-rules/input.rules | |
| Step 4.2 - charging udev rules | |
| ============================== | |
| * For more info see: | |
| http://lists.goldelico.com/pipermail/gta04-owner/2012-April/002272.html | |
| cat > /media/card/etc/udev/rules.d/gta04-charging.rules <<__END__ | |
| SUBSYSTEM=="power_supply", ACTION=="change", DEVPATH=="*power_supply/twl4030_usb" ATTRS{1-0048/twl4030_usb/id}=="floating", ATTR{../../max_current}="500000" | |
| SUBSYSTEM=="power_supply", ACTION=="change", DEVPATH=="*power_supply/twl4030_usb" ATTRS{1-0048/twl4030_usb/id}=="102k", ATTR{../../max_current}="851000" | |
| __END__ | |
| Step 4.5 - make it generate SSH keys on start | |
| ============================================= | |
| * SSH server keys are automatically generated during debootstrap. This can be | |
| security problem if user does not regenerate them. So we delete old keys and | |
| generate new ones during first boot. | |
| rm /media/card/etc/ssh/ssh_host_* | |
| cat > /media/card/etc/init.d/sshkeysfirstboot << __END__ | |
| #!/bin/sh | |
| ### BEGIN INIT INFO | |
| # Provides: sshkeysfirstboot | |
| # Required-Start: $remote_fs $syslog | |
| # Required-Stop: $remote_fs $syslog | |
| # Default-Start: 2 3 4 5 | |
| # Default-Stop: 0 1 6 | |
| # Short-Description: Generate SSH host keys on first boot | |
| ### END INIT INFO | |
| dpkg-reconfigure openssh-server | |
| update-rc.d -f sshkeysfirstboot remove | |
| rm -f /etc/init.d/sshkeysfirstboot | |
| __END__ | |
| chmod +x /media/card/etc/init.d/sshkeysfirstboot | |
| chroot /media/card | |
| update-rc.d sshkeysfirstboot defaults | |
| exit | |
| Step 4.6 - get rid of getty in inittab | |
| ====================================== | |
| * TTY's are for logging to console which is useful only if you have USB | |
| keyboard. So tty respawning is in done in usb-host.sh script and we can | |
| comment it out from /etc/inittab: | |
| nano /media/card/etc/inittab | |
| and comment all lines with "respawn:/sbin/getty 38400 ttyX" | |
| Step 4.7 - disable logging by defaults | |
| ====================================== | |
| * We will have syslogd and klogd disabled by default. If phone works it's not | |
| needed and it saves flash memory from wearing off. It can be always enabled | |
| in settings->logging or via devtools menu or with logging_enable.sh script. | |
| chroot /media/card | |
| update-rc.d -f rsyslog remove | |
| exit | |
| Step 5 | |
| ====== | |
| * Set locale to get rid of apt-get warnings | |
| echo "LANG=C" > /media/card/etc/default/locale | |
| echo "LC_ALL=C" >> /media/card/etc/default/locale | |
| * Fix incompatible libts version | |
| cd /media/card/usr/lib | |
| ln -s libts-0.0.so.0 libts-1.0.so.0 | |
| * Remove .udev dir, that confuses udev. This dir is here after instalation and | |
| causes some error/warnings during init. Not sure what's the exact problem. | |
| cd /media/card/dev | |
| rm -rf .udev | |
| * Remove /etc/network/run and do make dir /etc/network/run | |
| Otherwise fstab mounting will fail for this directory | |
| rm /media/card/etc/network/run | |
| mkdir /media/card/etc/network/run | |
| Step 6.5 - configure gpsd | |
| ========================= | |
| * We use gpsd and it has to be configured for Freerunner: | |
| nano /media/card/etc/default/gpsd | |
| * Make sure you have these values: | |
| START_DAEMON="true" | |
| DEVICES="/dev/ttyO1" | |
| GPSD_OPTIONS="-b" | |
| Step 7.5 - dash | |
| =============== | |
| * For faster boot (~15s) and more memory (+1MB) we use dash instead of bash. | |
| cd /media/card/bin/ | |
| rm sh | |
| ln -s dash sh | |
| Step 7.6 - libertas firmware | |
| ============================ | |
| * Wifi needs sd8686.bin and sd8686_helper.bin in /lib/firmware: | |
| chroot /media/card | |
| wget http://ftp.de.debian.org/debian/pool/non-free/libe/libertas-firmware/libertas-firmware_9.70.7.p0.0-1_all.deb | |
| dpkg -i libertas-firmware_9.70.7.p0.0-1_all.deb | |
| rm libertas-firmware_9.70.7.p0.0-1_all.deb | |
| cd /lib/firmware | |
| mv sd8686.bin 1 | |
| mv sd8686_helper.bin 2 | |
| rm -f *.bin | |
| mv 1 sd8686.bin | |
| mv 2 sd8686_helper.bin | |
| exit | |
| Step 8 - install QtMoko | |
| ======================= | |
| * I use qemu armhf host for building qtmoko package. It should be as simple as | |
| git checkout v55 | |
| dpkg-buildpackage | |
| * Note that you may need to install some dependencies before building: | |
| apt-get install libX11-dev libXext-dev libXtst-dev libasound2-dev libdbus-1-dev libts-dev libbluetooth-dev | |
| ...and checkout git submodules as it's necessary to place qt sources into qtmoko/qtopiacore/qt/: | |
| git submodule update --init | |
| * Please note that releases are made from translations branch so that we have | |
| all languages. | |
| * Now upload the package to sourceforge. In filezilla connect to sourceforge | |
| sftp and upload it to /home/project-web/qtmoko/htdocs/debian/gta04 | |
| * Install it | |
| chroot /media/card/ | |
| wget http://qtmoko.sourceforge.net/debian/gta04/armhf/qtmoko-gta04_55-1_armhf.deb | |
| dpkg -i qtmoko-gta04_55-1_armhf.deb | |
| update-rc.d qtmoko-gta04 defaults | |
| rm qtmoko-gta04_55-1_armhf.deb | |
| exit | |
| killall qpe.sh # recent versions start qtmoko after install, so kill it | |
| killall pulse.sh # kill pulseaudio - in qemu it just eats cpu | |
| rm -rf /media/card/home/root/* # remove all stuff created by qpe | |
| Step 8.1 - install mokofaen theme | |
| ================================= | |
| * Mokofaen is now default theme for qtmoko - but it's not part of qtmoko deb | |
| package, so that user can uninstall it to save space. So install mokofaen: | |
| chroot /media/card/ | |
| wget http://qtmoko.sourceforge.net/apps/all/qtmoko-theme-mokofaen_3-2_all.deb | |
| dpkg -i qtmoko-theme-mokofaen_3-2_all.deb | |
| rm qtmoko-theme-mokofaen_3-2_all.deb | |
| exit | |
| Step 8.2 - some more alarm and ringtones | |
| ======================================== | |
| mkdir -p /media/card/home/root/Documents | |
| cd /media/card/home/root/Documents | |
| wget https://raw.github.com/radekp/qtmoko/master/src/applications/clock/sounds/Alarm_Beep_01.ogg | |
| wget https://raw.github.com/radekp/qtmoko/master/src/applications/clock/sounds/Alarm_Beep_02.ogg | |
| wget https://raw.github.com/radekp/qtmoko/master/src/applications/clock/sounds/Alarm_Beep_03.ogg | |
| Step 9 - Linux kernel | |
| ===================== | |
| * Sources for qtmoko are on github: | |
| http://github.com/radekp/linux-2.6/ | |
| * Checkout branch for your qtmoko version: | |
| git checkout v3.7-gta04-qtmoko-v55 | |
| * Create package in buildhost: | |
| cd linux-2.6 | |
| dpkg-buildpackage | |
| * You should remove .git while building the package so that the tar with | |
| sources is not that big. Upload the package to sourceforge. | |
| * Install kernel image: | |
| chroot /media/card | |
| wget http://qtmoko.sourceforge.net/debian/gta04/armhf/linux-image-3.7-qtmoko-gta04_55-1_armhf.deb | |
| dpkg -i linux-image-3.7-qtmoko-gta04_55-1_armhf.deb | |
| rm linux-image-3.7-qtmoko-gta04_55-1_armhf.deb | |
| exit | |
| * Install bootargs.scr so for correct kernel cmdline arguments: | |
| cd /media/card/boot | |
| wget https://raw.github.com/radekp/qtmoko/master/devices/gta04/boot/bootargs.scr | |
| Step 9.1 - Linux kernel cross compiling - not using anymore for releases | |
| ======================================================================== | |
| * If you want to cross compile kernel and make uboot image on PC: | |
| make CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- ARCH=arm gta04_qtmoko_defconfig | |
| make -j8 CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- ARCH=arm uImage | |
| make -j8 CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- ARCH=arm modules | |
| make CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- ARCH=arm modules_install INSTALL_MOD_PATH=GTA04 | |
| find GTA04/lib/modules -name *.ko -exec /usr/bin/arm-linux-gnueabihf-strip -R .not -R .comment --strip-unneeded {} \; | |
| Step 9.2 - Setup bluetooth uarts | |
| ================================ | |
| * Bluetooth is on /dev/ttyO0 serial port and we need to run hciattach to have | |
| bluetooth working. For more info see http://projects.goldelico.com/p/gta04-kernel/page/Wireless/ | |
| echo "-s 3000000 /dev/ttyO0 any 3000000" > /media/card/etc/bluetooth/uart | |
| Step 9.4 - Set pulseaudio as default source/sink for gstreamer | |
| ============================================================== | |
| chroot /media/card | |
| . /opt/qtmoko/qpe.env | |
| gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosink pulsesink | |
| gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosrc pulsesrc | |
| exit | |
| Step 9.4.1 - config pulseaudio | |
| ============================== | |
| * Use speex-fixed-3 for resampling (http://lists.goldelico.com/pipermail/gta04-owner/2012-November/003549.html) | |
| * Disable udev autodetection, because it's for some reason broken on GTA04: | |
| cd /media/card/etc/pulse | |
| wget -O daemon.conf https://raw.github.com/radekp/qtmoko/master/devices/gta04/etc/pulse/daemon.conf | |
| wget -O default.pa https://raw.github.com/radekp/qtmoko/master/devices/gta04/etc/pulse/default.pa | |
| Step 9.5 - import QtMoko debian repository public keys | |
| ====================================================== | |
| * We use secure apt and we need keys for QtMoko repositories: | |
| cd /media/card | |
| wget https://raw.github.com/radekp/qtmoko/master/dist/qtmoko-pubring.gpg | |
| chroot /media/card | |
| apt-key add /qtmoko-pubring.gpg | |
| rm qtmoko-pubring.gpg | |
| exit | |
| Step 9.5.1 - remove bash history | |
| ================================ | |
| * Remove .bash_history created during install | |
| rm -f /media/card/root/.bash_history | |
| Step 9.6 - setup default DNS | |
| ============================ | |
| * So that internet works on neo, DNS used during installation is not working | |
| e.g. when installing from qemu: | |
| cat > /media/card/etc/resolv.conf <<__END__ | |
| nameserver 8.8.8.8 | |
| __END__ | |
| Step 9.7 - boot logo | |
| ==================== | |
| * gta04-init displays this logo on boot: | |
| cd /media/card/boot | |
| wget -O logo.bmp https://raw.github.com/radekp/qtmoko/master/pics/gta04-init/sd.bmp | |
| Step 9.8 - directory for multiboot | |
| ================================== | |
| * QtMoko can use gta04-init to boot other distibutions in /distros | |
| subdirectory. Create this dir and write instructions how to use it: | |
| mkdir /media/card/distros | |
| cat > /media/card/distros/README <<__END__ | |
| This directory can contain other distributions and you can boot to them. Simply | |
| create subdirectory here and unpack distribution tarball here. E.g: | |
| mkdir SHR | |
| cd SHR | |
| tar xzvpf /path/to/shr-rootfs.tar.gz | |
| You need first SD partition to be FAT and enable initramfs multiboot system: | |
| mkdir /media/p1/gta04-init | |
| Now press POWER, select the distribution from combo box and press "Restart Device" | |
| __END__ | |
| Step 9.9 - enable ssh access just on usb | |
| ======================================== | |
| * SSH root access can be dangerous on wifi or on GPRS, so enable it only on usb0 | |
| echo "# Enable ssh access just on usb" >> /media/card/etc/rc.local | |
| echo "ip6tables -A INPUT ! -i usb0 -p tcp --dport 22 -j REJECT --reject-with tcp-reset; iptables -A INPUT ! -i usb0 -p tcp --dport 22 -j REJECT --reject-with tcp-reset" >> /media/card/etc/rc.local | |
| * Manually edit /media/card/etc/rc.local and move "exit" 0 to the end of file: | |
| nano /media/card/etc/rc.local | |
| Step 10 - release tarball | |
| ========================= | |
| cd /media/card | |
| tar -czvf ../qtmoko-debian-gta04-v55-armhf.tar.gz . | |
| Step 11 - make ubifs image | |
| ========================== | |
| * Download logo for NAND boot: | |
| cd /media/card/boot/ | |
| rm -f logo.bmp | |
| wget -O logo.bmp https://raw.github.com/radekp/qtmoko/master/pics/gta04-init/nand.bmp | |
| * Remove doc and stuff that is not needed and makes NAND image slower: | |
| find /media/card/usr/share/locale/ -type f -exec rm -f '{}' \; | |
| find /media/card/usr/share/doc/ -type f -exec rm -f '{}' \; | |
| find /media/card/usr/share/doc-base/ -type f -exec rm -f '{}' \; | |
| find /media/card/usr/share/info/ -type f -exec rm -f '{}' \; | |
| find /media/card/usr/share/man/ -type f -exec rm -f '{}' \; | |
| rm -rf /media/card/usr/share/sounds/alsa/* | |
| rm -rf /media/card/usr/share/ssh/blacklist* | |
| * We need just 3 fonts | |
| cd /media/card/usr/share/fonts/truetype/ttf-dejavu/ | |
| mv DejaVuSansCondensed-Bold.ttf 1 | |
| mv DejaVuSansCondensed.ttf 2 | |
| mv DejaVuSansMono.ttf 3 | |
| rm *.ttf | |
| mv 1 DejaVuSansCondensed-Bold.ttf | |
| mv 2 DejaVuSansCondensed.ttf | |
| mv 3 DejaVuSansMono.ttf | |
| * Edit the mount for root in /media/card/etc/fstab so that it reads: | |
| rootfs / auto defaults,no_chk_data_crc,bulk_read 0 1 | |
| * Create config for ubinize and create the resulting image: | |
| cd /media | |
| cat > ubinize.cfg <<__END__ | |
| [ubifs] | |
| mode=ubi | |
| image=ubifs.img | |
| vol_id=0 | |
| vol_size=492MiB | |
| vol_type=dynamic | |
| vol_name=rootfs | |
| vol_flags=autoresize | |
| __END__ | |
| mkfs.ubifs -r /media/card -m 2048 -e 129024 -c 4007 -o ubifs.img | |
| ubinize -o qtmoko-debian-gta04-v55.ubi -m 2048 -p 128KiB -s 512 ubinize.cfg | |
| rm ubifs.img | |
| * To install it on the device you need to boot from SD and: | |
| ubiformat /dev/mtd4 -f /qtmoko-debian-gta04-v55.ubi | |
| * To check that it's mountable: | |
| ubiattach /dev/ubi_ctrl -m 4 | |
| mount -t ubifs ubi0:rootfs /mnt/ubifs/ | |
| Step 12 - jffs2 - not using anymore | |
| =================================== | |
| * Same first 2 steps as with ubi (copy&delete /boot) | |
| * Create jffs2 image: | |
| cd /media | |
| mkfs.jffs2 -o qtmoko-debian-gta04-nosum-v55.jffs2 -e 0x20000 -n -d/media/card | |
| sumtool -n -e 0x20000 -p -i qtmoko-debian-gta04-nosum-v55.jffs2 -o qtmoko-debian-gta04-v55.jffs2 | |
| * Create tarbal for NAND: | |
| tar -czvf ../qtmoko-debian-nand.tar.gz . | |
| * You will need bootloader script with bootmenu, you can find it under | |
| devices/gta04/boot. The script is generated with: | |
| mkimage -A arm -O linux -a 0 -e 0 -T script -C none -n "GTA04 Boot Script" -d | |
| boot.scr.in boot.scr | |
| * You will need uImage with cmdline compiled with root on NAND, so replace the | |
| part with root on /dev/mmcblk02 with root=/dev/mtdblock4 rootfstype=jffs2 rw | |
| in kernel config and make new kernel package. You also have to enable JFFS2 | |
| filesystem. | |
| * Boot GTA04 from SD card | |
| * Write kernel to NAND (based on instructions from | |
| http://elinux.org/BeagleBoardNAND): | |
| flash_eraseall /dev/mtd3 | |
| nandwrite -p /dev/mtd3 uImage # uImage is the one with root=/dev/mtdblock4 | |
| * Write rootfs to NAND: | |
| flash_eraseall -j /dev/mtd4 | |
| mount -t jffs2 /dev/mtdblock4 /mnt | |
| cd /mnt | |
| tar xzvpf qtmoko-debian-nand.tar.gz | |
| * Uncomment the /var/cache/apt mount in /mnt/etc/fstab | |
| * Edit the mount for root in /mnt/etc/fstab so that it reads: | |
| /dev/mtdblock4 / jffs2 rw,noatime 1 1 | |
| * Unmount NAND: | |
| cd / | |
| sync | |
| umount /mnt | |
| * Write boot.scr with bootmenu to root of FAT boot partition | |
| * Reboot and select NAND from the bootmenu | |
| Step 13 - generate Packages.gz for debian repository | |
| ==================================================== | |
| * We have debian repository at http://qtmoko.sourceforge.net/debian/ After you | |
| upload packages there (using filezilla, host is frs.sourceforge.net user is | |
| radekp,qtmoko and directory is /home/project-web/qtmoko/htdocs/debian) you | |
| have to generate Packages.gz: | |
| dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz | |
| * For secure apt you need to generate and sign Release file: | |
| apt-ftparchive release . > Release | |
| gpg -abs -o Release.gpg Release | |
| Boot speedup | |
| ============ | |
| - replacing /bin/sh with dash, speedup 15s | |
| Ideas & TODO | |
| ============ | |
| - support for dumb batteries as described in mail | |
| "Document with answers to most popular battery-related questions is ready" | |
| http://wiki.openmoko.org/wiki/Battery_Questions_and_Answers#So.2C_how_do_i_use_.22dumb.22_batteries_with_my_freerunner.3F | |
| from Paul Ferster | |
| Creating debian cross compiling toolchain | |
| ========================================= | |
| * Install packages needed for toolchain. Use your phone and existing | |
| qtmoko-debian rootfs (ideally from chroot over NFS in /root/toolchain on | |
| your PC). (Havent found xcalibrate pkg, where is it? Is it needed?) | |
| apt-get install libasound2-dev libbluetooth-dev libdbus-1-dev libglib2.0-dev \ | |
| libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libavcodec-dev \ | |
| libswscale-dev libxsettings-client-dev libssl-dev libts-dev \ | |
| libxcomposite-dev libxcursor-dev libxdamage-dev libxfont-dev \ | |
| libxfontcache-dev libxft-dev libxinerama-dev libxi-dev \ | |
| libxmu-dev libxmuu-dev libxp-dev libxrandr-dev libxts-dev libxtst-dev \ | |
| libxxf86dga-dev libxxf86misc-dev libxxf86vm-dev zlib1g-dev \ | |
| build-essential libc6-dev libjpeg-dev libfreetype6-dev libdjvulibre-dev | |
| * Make directory for your toolchain and copy files from toolchain rootfs: | |
| mkdir -p /opt/toolchains/arm920t-eabi/arm-linux-gnueabi/lib | |
| mkdir -p /opt/toolchains/arm920t-eabi/arm-linux-gnueabi/include | |
| cp -r /root/toolchain/lib /opt/toolchains/arm920t-eabi/arm-linux-gnueabi | |
| cp -r /root/toolchain/usr/lib /opt/toolchains/arm920t-eabi/arm-linux-gnueabi | |
| cp -r /root/toolchain/usr/include /opt/toolchains/arm920t-eabi/arm-linux-gnueabi | |
| * We will use cross compiler from emdebian project. On PC add emdebian | |
| repository to your /etc/apt/sources.list | |
| deb http://www.emdebian.org/debian/ lenny main | |
| * Download needed packages | |
| apt-get update | |
| apt-get -d install libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi gcc-4.3-arm-linux-gnueabi g++-4.3-arm-linux-gnueabi | |
| * Unpack toolchain packages | |
| ln -s /opt/toolchains/arm920t-eabi /opt/toolchains/arm920t-eabi/usr | |
| rm -rf /opt/toolchains/arm920t-eabi/arm-linux-gnueabi/include/c++/4.3* | |
| dpkg -x /var/cache/apt/archives/binutils-arm-linux-gnueabi_2.18.1~cvs20080103-7_i386.deb /opt/toolchains/arm920t-eabi/ | |
| dpkg -x /var/cache/apt/archives/cpp-4.3-arm-linux-gnueabi_4.3.2-1.1_i386.deb /opt/toolchains/arm920t-eabi/ | |
| dpkg -x /var/cache/apt/archives/gcc-4.3-arm-linux-gnueabi-base_4.3.2-1.1_i386.deb /opt/toolchains/arm920t-eabi/ | |
| dpkg -x /var/cache/apt/archives/gcc-4.3-arm-linux-gnueabi_4.3.2-1.1_i386.deb /opt/toolchains/arm920t-eabi/ | |
| dpkg -x /var/cache/apt/archives/g++-4.3-arm-linux-gnueabi_4.3.2-1.1_i386.deb /opt/toolchains/arm920t-eabi/ | |
| dpkg -x /var/cache/apt/archives/libc6-armel-cross_2.7-18_all.deb /opt/toolchains/arm920t-eabi/ | |
| dpkg -x /var/cache/apt/archives/libc6-dev-armel-cross_2.7-18_all.deb /opt/toolchains/arm920t-eabi/ | |
| dpkg -x /var/cache/apt/archives/libgcc1-armel-cross_1%3a4.3.2-1.1_all.deb /opt/toolchains/arm920t-eabi/ | |
| dpkg -x /var/cache/apt/archives/libstdc++6-armel-cross_4.3.2-1.1_all.deb /opt/toolchains/arm920t-eabi/ | |
| dpkg -x /var/cache/apt/archives/libstdc++6-4.3-dev-armel-cross_4.3.2-1.1_all.deb /opt/toolchains/arm920t-eabi/ | |
| * Symlinks | |
| cd /opt/toolchains/arm920t-eabi/lib/gcc/arm-linux-gnueabi/4.3.2 | |
| rm libgcc_s.so | |
| ln -s ../../../../arm-linux-gnueabi/lib/libgcc_s.so.1 libgcc_s.so | |
| * Fix problems with #include_next in stddef and others | |
| cd /opt/toolchains/arm920t-eabi/arm-linux-gnueabi/include/c++/4.3.2 | |
| find . -type f -print0 | xargs -0 sed -i 's/#include_next/#include/g' | |
| * Fix path to toolchain in package config files: | |
| cd /opt/toolchains/arm920t-eabi/arm-linux-gnueabi/lib/pkgconfig | |
| sed -i 's/\/usr/\/opt\/toolchains\/arm920t-eabi\/arm-linux-gnueabi/g' *.pc | |
| * Make paths relative in libc.so and others: | |
| cd /opt/toolchains/arm920t-eabi/arm-linux-gnueabi/lib | |
| sed -i 's/\/usr\/arm-linux-gnueabi\/lib\///g' *.so | |
| * Make the toolchain compatible with our old toolchain | |
| cd /opt/toolchains/arm920t-eabi/ | |
| ln -s arm-linux-gnueabi arm-angstrom-linux-gnueabi | |
| cd /opt/toolchains/arm920t-eabi/bin/ | |
| ln -s arm-linux-gnueabi-gcc-4.3 arm-linux-gcc | |
| ln -s arm-linux-gnueabi-g++-4.3 arm-linux-g++ | |
| ln -s arm-linux-gnueabi-ar arm-linux-ar | |
| ln -s arm-linux-gnueabi-strip arm-linux-strip | |
| ln -s arm-linux-gnueabi-ld arm-linux-ld | |
| ln -s arm-linux-gnueabi-nm arm-linux-nm | |
| ln -s arm-linux-gnueabi-objcopy arm-linux-objcopy | |
| ln -s arm-linux-gnueabi-objdump arm-linux-objdump | |