Browse Source

Add sunxi linux kernel compilation

Émile Morel 10 years ago
parent
commit
fe7f94ecfd
5 changed files with 5239 additions and 20 deletions
  1. 14 3
      Dockerfile
  2. 25 11
      README.md
  3. 4050 0
      olinux/a20_defconfig
  4. 48 6
      olinux/create_arm_debootstrap.sh
  5. 1102 0
      olinux/script.fex

+ 14 - 3
Dockerfile

@@ -13,12 +13,23 @@ RUN apt-get update
 RUN apt-get install --force-yes -y emdebian-archive-keyring
 RUN apt-get update
 
-RUN apt-get install --force-yes -y gcc-4.7-arm-linux-gnueabihf ncurses-dev uboot-mkimage build-essential git
+RUN apt-get install --force-yes -y gcc-4.7-arm-linux-gnueabihf ncurses-dev uboot-mkimage build-essential git vim libusb-1.0-0-dev 
 
 RUN ln -s /usr/bin/arm-linux-gnueabihf-gcc-4.7 /usr/bin/arm-linux-gnueabihf-gcc
+#RUN mkdir -p /olinux
+#VOLUME /home/emile/dev/github/olinuxino-a20-lime2/olinux /olinux
+#RUN mkdir -p /olinux/sunxi
 
-RUN git clone -b sunxi https://github.com/linux-sunxi/u-boot-sunxi.git /u-boot-sunxi
-RUN cd /u-boot-sunxi && make CROSS_COMPILE=arm-linux-gnueabihf A20-OLinuXino-Lime_config && make CROSS_COMPILE=arm-linux-gnueabihf-
+#RUN git clone -b sunxi https://github.com/linux-sunxi/u-boot-sunxi.git /olinux/sunxi/u-boot-sunxi
+#RUN cd /olinux/sunxi/u-boot-sunxi && make CROSS_COMPILE=arm-linux-gnueabihf A20-OLinuXino-Lime_config && make CROSS_COMPILE=arm-linux-gnueabihf-
+#
+#RUN git clone https://github.com/linux-sunxi/linux-sunxi -b stage/sunxi-3.4 /olinux/sunxi/linux-sunxi
+#RUN cp /olinux/a20_defconfig /olinux/sunxi/linux-sunxi/arch/arm/configs/.
+#RUN cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm a20_defconfig
+#RUN cd /olinux/sunxi/linux-sunxi/ && patch -p0 < ../../sunxi-i2c.patch
+#RUN cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage  
+#RUN cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=out modules
+#RUN cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=out modules_install
 
 # install packages for debootstrap
 RUN apt-get install --force-yes -y debootstrap dpkg-dev qemu binfmt-support qemu-user-static dpkg-cross

+ 25 - 11
README.md

@@ -24,25 +24,39 @@ issue](https://github.com/docker/docker/issues/1916)
 sudo docker run --privileged -i -t -v $(pwd)/olinux/:/olinux/ debian/olinux sh ./olinux/create_arm_debootstrap.sh
 ```
 
-You shoud have both debootstrap and u-boot-sunxi directories in olinux/
-
-# Boot
-
-TODO
+You shoud have both debootstrap and sunxi directories in olinux/
 
 # Install on a sdcard
 
 ## Partitioning
 
 ```shell
-parted -s /dev/sdb mklabel msdos
-parted -a optimal /dev/sdb mkpart primary fat32 1 16MiB
-parted -a optimal /dev/sdb mkpart primary fat32 16MiB 100%
-mkfs.fat -F 32 /dev/sdb1
-mkfs.ext4  /dev/sdb2
+mmc=/dev/sdc
+parted -s ${mmc} mklabel msdos
+parted -a optimal ${mmc} mkpart primary fat32 1 16MiB
+parted -a optimal ${mmc} mkpart primary fat32 16MiB 100%
+mkfs.fat -F 32 ${mmc}1
+mkfs.ext4 ${mmc}2
 ```
 
-TODO
+## Installation
+
+```shell
+dd if=olinux/sunxi/u-boot-sunxi/u-boot-sunxi-with-spl.bin of=${mmc} bs=1024 seek=8
+mount ${mmc}1 /media/usb/
+cp olinux/sunxi/script.bin /media/usb/
+cp olinux/sunxi/linux-sunxi/arch/arm/boot/uImage /media/usb/
+umount /media/usb
+mount ${mmc}2 /media/usb/
+cp -r olinux/debootstrap/* /media/usb/
+sync
+rm -rf /media/usb/lib/firmware/
+cp -rfv olinux/sunxi/linux-sunxi/out/lib/firmware/ /media/usb/lib/
+sync
+rm -rf /media/usb/lib/modules/
+cp -rfv olinux/sunxi/linux-sunxi/out/lib/modules/* /media/usb/lib/modules
+sync
+```
 
 # Some links:
 

File diff suppressed because it is too large
+ 4050 - 0
olinux/a20_defconfig


+ 48 - 6
olinux/create_arm_debootstrap.sh

@@ -1,16 +1,55 @@
 #/bin/sh
 
-targetdir=/olinux/bootstrap
+######################
+#     Sunxi part     #
+######################
+
+# Sunxi u-boot
+if [ -d /olinux/sunxi/u-boot-sunxi/ ] ; then 
+  cd /olinux/sunxi/u-boot-sunxi/ && make clean && git pull 
+else
+  git clone -b sunxi https://github.com/linux-sunxi/u-boot-sunxi.git /olinux/sunxi/u-boot-sunxi
+fi
+
+cd /olinux/sunxi/u-boot-sunxi && make CROSS_COMPILE=arm-linux-gnueabihf A20-OLinuXino-Lime_config && make CROSS_COMPILE=arm-linux-gnueabihf-
+
+# Sunxi kernel
+if [ -d /olinux/sunxi/linux-sunxi/ ] ; then 
+  cd /olinux/sunxi/linux-sunxi/ && make clean && git pull 
+else
+  git clone https://github.com/linux-sunxi/linux-sunxi -b stage/sunxi-3.4 /olinux/sunxi/linux-sunxi
+fi
+
+cp /olinux/a20_defconfig /olinux/sunxi/linux-sunxi/arch/arm/configs/.
+cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm a20_defconfig
+cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 uImage  
+cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 INSTALL_MOD_PATH=out modules
+cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 INSTALL_MOD_PATH=out modules_install
+
+# Sunxi fex2bin
+if [ -d /olinux/sunxi/sunxi-tools/ ] ; then 
+  cd /olinux/sunxi/sunxi-tools/ && make clean && git pull 
+else
+ git clone https://github.com/linux-sunxi/sunxi-tools /olinux/sunxi/sunxi-tools 
+fi
+
+cd /olinux/sunxi/sunxi-tools/ && make
+cd /olinux/sunxi/ && ./sunxi-tools/fex2bin ../script.fex script.bin 
+cd /olinux/sunxi/ && chown +x script.bin 
+
+######################
+#  Debootstrap part  #
+######################
+
+targetdir=/olinux/debootstrap
 distro=wheezy
 rm -rf $targetdir && mkdir -p $targetdir
 
 # install packages for debootstap
 apt-get install --force-yes -y debootstrap dpkg-dev qemu binfmt-support qemu-user-static dpkg-cross
 
-# retrieve uboot directory if exist (compiled previously with dockerfile)
-if [ -d /u-boot-sunxi ]; then
- cp -r /u-boot-sunxi /olinux/
-fi
+mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
+update-binfmts --enable
 
 # Debootstrap
 debootstrap --arch=armhf --foreign $distro $targetdir
@@ -31,7 +70,10 @@ chroot $targetdir apt-get update
 chroot $targetdir apt-get install -y --force-yes openssh-server ntp
 
 # Use dhcp on boot
-echo <<EOT >> $targetdir/etc/network/interfaces
+echo <<EOT > $targetdir/etc/network/interfaces
+auto lo
+iface lo inet loopback
+
 allow-hotplug eth0
 iface eth0 inet dhcp
 EOT

File diff suppressed because it is too large
+ 1102 - 0
olinux/script.fex