Bootstrap a minimal debian rootfs for sunxi boards https://github.com/bleuchtang/sunxi-debian

Émile Morel 90d377c4f6 create_device init script 10 years ago
olinux 90d377c4f6 create_device init script 10 years ago
.gitignore 90d377c4f6 create_device init script 10 years ago
Dockerfile 68d084ea8c Remove whitespaces 10 years ago
README.md 68d084ea8c Remove whitespaces 10 years ago

README.md

Debian-Sunxi

Bootstrap a minimal debian rootfs with sunxi kernel and boot files. For now only 3 olinuxino boards are available. All scripts in this repository are generic so it's easy to add a new boad. Please make a pull request if you create and test a new board. I need reviewer for olinuxino lime2 and micro olinuxino boards.

Thanks to lukas2511 for quick bootstrap.

Build docker image

sudo docker pull debian:stable
git clone https://github.com/bleuchtang/sunxi-debian
cd sunxi-debian && sudo docker build -t debian:olinux .

Build minimal arm debootstrap

We cannot perform a debootstrap in dockerfile because dockerfile doesn't accept privileged mode. For more details see docker issue

To build the minimal debian rootfs run:

sudo docker run --privileged -i -t -v $(pwd)/olinux/:/olinux/ debian:olinux sh ./olinux/create_arm_debootstrap.sh

Optional arguments:

  • -n hostnane
  • -a add additional packages
  • -d debian release (wheezy, jessie...)
  • Build sunxi kernel and boot files

    To build sunxi kernel and boot files run:

    sudo docker run --privileged -i -t -v $(pwd)/olinux/:/olinux/ debian:olinux sh ./olinux/create_sunxi_boot_files.sh
    

    Optional arguments:

    • -o offline mode; doesn't pull repositories so you should have run the script once without this option
    • -t board type (lime,lime2,micro) default is A20 lime
    • Install on a SD card

      Setup SD card device

      Find your device card (with dmesg for instance) and put it in a variable.

      mmc=/dev/sdc
      

      Partitioning

      Make 2 partitions; one for boot files (kernel, file with custom boot args...), and another for root fs.

      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
      

      Installation

      Boot partition

      Make SD card bootable, add kernel your previously builded and file with motherboard paramaters.

      mkdir -p /media/usb
      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/linux-sunxi/arch/arm/boot/uImage /media/usb/
      cp olinux/sunxi/script.bin /media/usb/
      

      If you want to do a server without graphical session, you can disable allocated ram for the graphical card. To do that copy uEnv.txt file; This file add custom kernel parameters to save 32MB of ram. If you want to use the graphical card; don't copy uEnv.txt file.

      cp olinux/uEnv.txt /media/usb/
      umount /media/usb
      

      Root partition

      Copy the rootfs you previously builded with debootstrap, and add firmware and modules build with sunxi kernel.

      mount ${mmc}2 /media/usb/
      cp -r olinux/debootstrap/* /media/usb/
      sync
      chmod 1777 /media/usb/tmp/
      rm -rf /media/usb/lib/firmware/
      cp -rf olinux/sunxi/linux-sunxi/out/lib/firmware/ /media/usb/lib/
      sync
      rm -rf /media/usb/lib/modules/
      cp -rf olinux/sunxi/linux-sunxi/out/lib/modules/ /media/usb/lib/
      sync
      umount /media/usb
      

      You can now connect to your box via ssh. Default root password is olinux. After your first connection on your box you should run depmod to build moddep file.

      ssh root@mybox
      depmod -a
      

      That's it ! Now you probably doesn't want do more system administration for your home server so get an eye on yunohost ;)

      TODO

      • change Install on a SD card to a script ?

      Some links:

      You probably want to Build your own docker image

      • Because it's quick and easy; tutorial here
      • Because you shoudn't trust regitry images; demonstration here

      External links