Raspberry Pi from scratch

Publié par cpb
sept 10 2013

Comme on me l’a demandé à plusieurs reprises, et comme je l’avais annoncé précédemment, voici les versions PDF de mes articles sur la construction d’un système Linux à partir de zéro pour un Raspberry Pi. Ces articles sont parus dans Gnu Linux Magazine France.

Les fichiers associés (sources, configuration, etc.) sont accessibles à partir de cette page de téléchargement.

15 Réponses

  1. jacques dit :

    Superbes articles!
    Merci

  2. Mathieu dit :

    Merci, très bien fait!

  3. Christophe dit :

    Merci beaucoup pour ces articles toujours performants.
    Je viens de réaliser mon premier « Noyau Raspberry PI from scratch » et j’aimerai activer le bus SPI.
    J’ai donc pris votre article sur le SPI, mais je ne trouve ( ce pas faute d’avoir chercher) pas l’option « BCM2708 SPI controller driver » dans les paramètres du noyau ( version 3.6.11 ) via « make ARCH=arm menuconfig » l’option semble avoir disparue.
    Penser vous qu’il me faut prendre une version antérieur de noyau?

    Amicalement.
    Christophe

    • cpb dit :

      Je vois bien cette option dans « Device drivers »-> « SPI support » du noyau 3.6.11 mais c’est la version « patchée » pour Raspberry Pi.

      La manière la plus simple d’obtenir cette version est de faire :

      $ git clone http://github.com/raspberrypi/linux rpi-linux
      Cloning into 'rpi-linux'...
      remote: Counting objects: 3188285, done.
      remote: Compressing objects: 100% (565955/565955), done.
      remote: Total 3188285 (delta 2645602), reused 3129194 (delta 2593671)
      Receiving objects: 100% (3188285/3188285), 821.45 MiB | 1.67 MiB/s, done.
      Resolving deltas: 100% (2645602/2645602), done.
      $ cd rpi-linux
      $ make ARCH=arm bcmrpi_defconfig
      $ make ARCH=arm menuconfig
      

      L’option BCM2708 SPI controller driver (SPI0) apparaît.

      Elle dépend en fait de l’option
      "System Type"-> "ARM system type" -> "Broadcom BCM2708 family"
      qui n’est pas dans l’ordre alphabétique de la liste…

      Bon courage…

      • Christophe dit :

        J’ai trouvé la solution, mon .config était pas bon car corrompu par une mauvaise manip.
        Depuis je me bats avec le montage du ssh, certainement une erreur de ma par la compilation me sort un fichier pour x86 et pas arm.
        Merci encore pour vos articles.
        Christophe

  4. Greg dit :

    Merci beaucoup pour cette doc très efficace !

    J’obtiens un linux qui tourne très bien mais qui ne reconnaît que 128 des 512MB de mon Raspberry. Une partie est forcément allouée au GPU mais ça m’étonnerait que ce soit 384MB :).
    J’ai tenté d’isoler le problème, ça semble venir du kernel, pas de start.elf ni du bootcode.bin. Mais je ne parviens pas à trouver le point précis qui pose problème.

    A ce sujet également, ce qui est différent de la doc: plus de fichiers arm_xxx_start.elf présent ni de loader.bin.

    D’avance merci,

    Greg.

    • cpb dit :

      Bonsoir,

      Y a t-il une ligne gpu_mem dans config.txt sur la partition de boot ?

      • Greg dit :

        Au départ, je n’avais pas mis de config.txt du tout.

        En tentant de résoudre ce problème de RAM, j’ai ajouté le config.txt que j’utilise habituellement avec des Raspbian classiques. Et là, l’écran ne s’allume pas au boot … Alors que ce config.txt fonctionne habituellement. Quelque chose m’échappe.

        • Greg dit :

          Je n’ai laissé que gpu_mem dans config.txt : écran noir … J’ai commenté gpu_mem: OK … Etrange :)

          • cpb dit :

            La valeur indiquée pour gpu_mem est peut-être insuffisante pour activer l’écran graphique.

            Une solution consiste à récupérer les fichiers du bootloader d’une distribution comme Raspbian, et à ne remplacer que le noyau (kernel.img) par son noyau personnalisé.

          • Greg dit :

            Bien vu! Minimum opérationnel : 32MB.

            Et je viens de trouver ce qui n’allait pas. J’ai remplacé gpu_mem par gpu_mem_512

            Encore merci!

  5. Gepp Balestrieri dit :

    Merci pour ces articles! Ce niveau d’approfondissement de linux associé à la Raspberry Pi est rare sur le web.

    Je voudrais bien essayer de mettre en place un système real time sur cette carte en utilisant l’extension de Xenomai mais j’ai rencontré différentes erreurs lors de la compilation de buildroot.

    make[4]: *** [clean-temp.o] Error 1
    make[4]: *** Waiting for unfinished jobs….
    mv -f .deps/close-hook.Tpo .deps/close-hook.Po
    make[4]: Leaving directory `/home/francesco/Developement/RaspberryPi/Developement/buildroot-2012.05/output/build/host-m4-1.4.16/lib’
    make[3]: *** [all] Error 2

    J’ai alors repéré la derniere version de buildroot, la 2013-11, et modifié la configuration à partir de celle suggérée par vous dans le premier article. Mais même dans ce cas j’ai eu des erreurs (
    configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.
    Try the –with-gmp, –with-mpfr and/or –with-mpc options to specify
    their locations. )
    probablement à cause d’un mauvais réglage du .config.

    Pourriez-vous m’aider à configurer la dernière version de buildroot?

    D’avance, merci.

    • cpb dit :

      Je pense qu’il manque des packages sur votre machine de compilation.
      Il faut ajouter :
      libgmp-dev, libmpfr-dev, libmpc-dev (systèmes Debian, Ubuntu, etc.)
      ou
      libgmp-devel, libmpfr-devel, libmcp-devel (système RedHat, Fedora, etc.)

      Je ne suis pas certain de ces trois derniers.

      • J’utilize ubuntu 13.10 et avec la dernière version, la 2013-11, et les packages que vous m’avez signalé, tout a bien fonctionné!
        [sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev]
        Par contre la compilation donnait encore des erreurs avec la version de buildroot 2012-05.
        Merci!

URL de trackback pour cette page