Difference between revisions of "User:Urjaman/Building the kernel on the Pandora"

From Pandora Wiki
Jump to: navigation, search
(add some helpful lines)
(Checkout pandora-kernel)
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
This is still a WIP set of notes. Testing in progress.
 
This is still a WIP set of notes. Testing in progress.
 
Will add SGX and WiFi module building later.
 
Will add SGX and WiFi module building later.
 
== Open up a terminal ==
 
You should not need help with this.
 
  
 
== Install local toolchain and git ==
 
== Install local toolchain and git ==
 +
Open up a terminal if you havent already. This stuff (opkg) is currently quite dangerous and you might end up breaking your install. I recommend using an SD install for this.
 
  sudo opkg update
 
  sudo opkg update
This is untested and IIRC I needed to fiddle with the names a bit.
+
This is untested and IIRC I needed to fiddle with the names a bit.
 
You can "search" for a name with eg. with sudo opkg list | grep name  
 
You can "search" for a name with eg. with sudo opkg list | grep name  
  sudo opkg install gcc gcc-symlinks make binutils-dev cpp cpp-symlinks g++ g++-symlinks libstdc++-dev git
+
  sudo opkg install gcc gcc-symlinks make binutils-dev cpp cpp-symlinks g++ \
 +
g++-symlinks libstdc++-dev git u-boot-mkimage
 +
Note: I did this 26.3.2012 and I needed to add --force to this opkg, and it slightly broke the install; before rebooting do this (be root before the opkg, skip the sudo) to atleast somewhat fix it:
 +
cd /usr/lib
 +
ln -s libncursesw.so.5 libncurses.so.5
  
 
== Get ext2 space ==
 
== Get ext2 space ==
 
=== Choose from ===
 
=== Choose from ===
==== root in SD ====
+
==== I run my OS from SD ====
 +
Make a directory in your home folder then:
 
  mkdir dev && cd dev
 
  mkdir dev && cd dev
==== ext2 formatted SD card ====
+
==== I have an ext2 formatted SD card ====
 +
Make a directory on the card then:
 
  cd /media/<ext2card>
 
  cd /media/<ext2card>
 
  mkdir dev && cd dev
 
  mkdir dev && cd dev
==== ext2 loop file (1GiB) on an SD card ====
+
==== I only have a FAT32 formatted SD card ====
 +
Then you can create an ext2 loop file (1GiB) on the card:
 
  cd /media/<fatcard>
 
  cd /media/<fatcard>
 
  dd if=/dev/zero of=dev.ext2 bs=1M count=1024
 
  dd if=/dev/zero of=dev.ext2 bs=1M count=1024
Line 29: Line 34:
 
== Checkout pandora-kernel ==
 
== Checkout pandora-kernel ==
 
  git clone --depth=1 git://git.openpandora.org/pandora-kernel.git
 
  git clone --depth=1 git://git.openpandora.org/pandora-kernel.git
 +
cd pandora-kernel && git checkout --track -b pandora-27-omap1 origin/pandora-27-omap1 && cd ..
 
This will take a moment. Go grab your chosen beverage.
 
This will take a moment. Go grab your chosen beverage.
  
Line 35: Line 41:
 
  cd pandora-kernel
 
  cd pandora-kernel
 
Here cross-ref against ../openpandora.oe/recipes/linux/omap3-pandora-kernel_2.6.27-pandora.bb wont hurt.
 
Here cross-ref against ../openpandora.oe/recipes/linux/omap3-pandora-kernel_2.6.27-pandora.bb wont hurt.
 +
 
Warning: Mega-list-of-commands follows, formatted it as an sh script if needed
 
Warning: Mega-list-of-commands follows, formatted it as an sh script if needed
 
  #!/bin/bash -e
 
  #!/bin/bash -e
Line 58: Line 65:
  
 
== Fix Makefile ==
 
== Fix Makefile ==
This gem is from vminko's ebuild
+
This gem is from vminko's ebuild.
 +
It will remove the cross-compiling prefix from the Makefile, so that it will use gcc instead of arm-linux-gcc.
 
  sed -i 's/?= arm-linux-/=/' Makefile
 
  sed -i 's/?= arm-linux-/=/' Makefile
  
Line 70: Line 78:
 
== Build the kernel ==
 
== Build the kernel ==
 
This will take time and CPU power, so if you're like me, dont forget to overclock.
 
This will take time and CPU power, so if you're like me, dont forget to overclock.
 +
 
Modules, if desired:
 
Modules, if desired:
 
  make modules
 
  make modules

Latest revision as of 02:17, 26 March 2012

This is still a WIP set of notes. Testing in progress. Will add SGX and WiFi module building later.

Install local toolchain and git

Open up a terminal if you havent already. This stuff (opkg) is currently quite dangerous and you might end up breaking your install. I recommend using an SD install for this.

sudo opkg update

This is untested and IIRC I needed to fiddle with the names a bit. You can "search" for a name with eg. with sudo opkg list | grep name

sudo opkg install gcc gcc-symlinks make binutils-dev cpp cpp-symlinks g++ \
g++-symlinks libstdc++-dev git u-boot-mkimage

Note: I did this 26.3.2012 and I needed to add --force to this opkg, and it slightly broke the install; before rebooting do this (be root before the opkg, skip the sudo) to atleast somewhat fix it:

cd /usr/lib
ln -s libncursesw.so.5 libncurses.so.5

Get ext2 space

Choose from

I run my OS from SD

Make a directory in your home folder then:

mkdir dev && cd dev

I have an ext2 formatted SD card

Make a directory on the card then:

cd /media/<ext2card>
mkdir dev && cd dev

I only have a FAT32 formatted SD card

Then you can create an ext2 loop file (1GiB) on the card:

cd /media/<fatcard>
dd if=/dev/zero of=dev.ext2 bs=1M count=1024
mke2fs -m 0 dev.ext2
mkdir dev
sudo mount -o loop dev.ext2 dev
cd dev

You should now be in a folder named "dev" suitable for the job.

Checkout pandora-kernel

git clone --depth=1 git://git.openpandora.org/pandora-kernel.git
cd pandora-kernel && git checkout --track -b pandora-27-omap1 origin/pandora-27-omap1 && cd ..

This will take a moment. Go grab your chosen beverage.

Checkout and apply patches

git clone --depth=1 git://git.openpandora.org/openpandora.oe.git
cd pandora-kernel

Here cross-ref against ../openpandora.oe/recipes/linux/omap3-pandora-kernel_2.6.27-pandora.bb wont hurt.

Warning: Mega-list-of-commands follows, formatted it as an sh script if needed

#!/bin/bash -e
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/0001-Add-EHCI-patch-suggested-by-Steven-Kipisz.patch
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/0002-Add-missing-define-to-EHCI-OMAP.c.patch
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/no-empty-flash-warnings.patch
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/oprofile-0.9.3.armv7.diff
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/no-cortex-deadlock.patch
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/read_die_ids.patch
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/fix-install.patch
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/mru-fix-timings.diff
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/mru-fix-display-panning.diff
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/mru-make-dpll4-m4-ck-programmable.diff
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/mru-improve-pixclock-config.diff
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/mru-make-video-timings-selectable.diff
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/mru-enable-overlay-optimalization.diff
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/dvb-fix-dma.diff
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/0001-Removed-resolution-check-that-prevents-scaling-when.patch
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/0001-Implement-downsampling-with-debugs.patch
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/musb-rxtx.patch
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/squashfs/0006-SquashFS-Backport-SquashFS4-to-our-2.6.27-tree.patch
patch -Np1 < ../openpandora.oe/recipes/linux/omap3-pandora-kernel/aufs2/0007-AUFS2-Add-latest-AUFS2-in-tree-code-for-2.6.27.patch

Fix Makefile

This gem is from vminko's ebuild. It will remove the cross-compiling prefix from the Makefile, so that it will use gcc instead of arm-linux-gcc.

sed -i 's/?= arm-linux-/=/' Makefile

Configure kernel

cp ../openpandora.oe/recipes/linux/omap3-pandora-kernel/defconfig .config
make oldconfig

if you want to change configuration:

make menuconfig

You will need to change the configuration if you want the kernel name to match stock, disable General Setup -> Automatically append version information to the version string .

Build the kernel

This will take time and CPU power, so if you're like me, dont forget to overclock.

Modules, if desired:

make modules

and the kernel:

make uImage

if you want to install modules:

sudo make modules_install