| Raspberry Pi |
| |
| Intro |
| ===== |
| |
| These instructions apply to all models of the Raspberry Pi: |
| - the original models A and B, |
| - the "enhanced" models A+ and B+, |
| - the model B2 (aka Raspberry Pi 2). |
| |
| To be able to use your Raspberry Pi board with the images generated by |
| Buildroot, you have to choose whether you will use: |
| |
| * Volatile rootfs in RAM (the rootfs is an initramfs) or |
| * Persistent rootfs on the SDCard |
| |
| Also, a good source of information is http://elinux.org/R-Pi_Hub |
| |
| How to build it |
| =============== |
| |
| Configure Buildroot |
| ------------------- |
| |
| There are two RaspberryPi defconfig files in Buildroot, one for each |
| major variant, which you should base your work on: |
| |
| For models A, B, A+ or B+: |
| |
| $ make raspberrypi_defconfig |
| |
| And for model 2 B: |
| |
| $ make raspberrypi2_defconfig |
| |
| If you want to use a persistent rootfs, skip to "Build the rootfs", below. |
| |
| For a volatile rootfs, you have to slightly adjust the configuration: |
| |
| $ make menuconfig |
| * Select "Filesystem images" |
| * Select "initial RAM filesystem linked into linux kernel" |
| |
| You may also deselect "tar the root filesystem". |
| |
| Build the rootfs |
| ---------------- |
| |
| Note: you will need to have access to the network, since Buildroot will |
| download the packages' sources. |
| |
| You may now build your rootfs with: |
| |
| $ make |
| |
| (This may take a while; consider getting yourself a coffee ;-) ) |
| |
| Result of the build |
| ------------------- |
| |
| After building, you should obtain this tree: |
| |
| output/images/ |
| +-- rootfs.tar [0] |
| +-- rpi-firmware/ |
| | +-- bootcode.bin |
| | +-- config.txt |
| | +-- fixup.dat |
| | `-- start.elf |
| +-- bcm2708-rpi-b.dtb [1] |
| +-- bcm2708-rpi-b-plus.dtb [1] |
| +-- bcm2709-rpi-2-b.dtb [1] |
| `-- zImage |
| |
| [0] Note for Volatile: rootfs.tar will only be there if you kept |
| "tar the root filesystem" option selected in "Filesystem images". |
| |
| [1] Not all of them will be present, depending on the RaspberryPi |
| model you are using. |
| |
| Prepare you SDCard |
| ================== |
| |
| For more information, visit |
| http://elinux.org/RPi_Advanced_Setup#Advanced_SD_card_setup |
| |
| In summary, your SDCard must have first partition in fat32 and marked bootable. |
| |
| Create the required partitions: |
| - for a persistent rootfs, 10MiB is enough memory for the boot fat32 |
| partition, and a second partition is required for the root filesystem |
| - for a volatile rootfs, 50MiB is required for the boot fat32 partition |
| |
| Note: You can create any number of partitions you desire, the only requirement |
| is that the first partition must be using fat32 and be bootable. |
| |
| Mount the partitions (adjust 'sdX' to match your SDcard device): |
| |
| $ sudo mount /dev/sdX1 /mnt/mountpointboot |
| $ sudo mount /dev/sdX2 /mnt/mountpointroot (only for persistent rootfs) |
| |
| Install the binaries to the SDCard |
| ---------------------------------- |
| |
| At the root of the boot partition, the Raspberry Pi must find the following |
| files: |
| |
| * bcm2708-rpi-b.dtb [2] |
| * bcm2708-rpi-b-plus.dtb [3] |
| * bcm2709-rpi-2-b.dtb [4] |
| * bootcode.bin |
| * config.txt |
| * fixup.dat |
| * start.elf |
| * zImage |
| |
| [2] For models A and B |
| [3] For models A+ and B+ |
| [4] For model 2 |
| |
| For example: |
| |
| $ cp output/images/rpi-firmware/* /mnt/mountpointboot |
| $ cp output/images/*.dtb /mnt/mountpointboot |
| |
| The kernel image must be marked with a special header so that the |
| bootloader of the RaspberryPi knows it supports Device Tree: |
| |
| $ ./output/host/usr/bin/mkknlimg output/images/zImage /mnt/mountpointboot/zImage |
| |
| Note: The kernel image file name is defined in config.txt like this: |
| kernel=zImage |
| |
| If you use a volatile rootfs, Skip to "Finish", below. For a persistent |
| rootfs, there are further steps to do. |
| |
| Extract (as root!) the contents of the rootfs.tar archive into the second |
| partition you created above: |
| |
| $ sudo tar xf ./output/images/rootfs.tar -C /mnt/mountpointroot |
| |
| Finish |
| ====== |
| |
| Unmount all the partitions: |
| |
| $ sudo umount /mnt/mountpointboot |
| $ sudo umount /mnt/mountpointroot (only for persistent rootfs) |
| |
| And eject your SDcard from your computer SDcard reader. |
| |
| Insert the SDcard into your Raspberry Pi, and power it up. Your new system |
| should come up, now. |