Como desenvolver um sistema Linux do zero para a Beaglebone Black

- por Sergio Prado

Categorias: Beaglebone Black, Linux Tags: , ,

Neste artigo iremos criar um sistema Linux customizado para a Beaglebone Black.

Todo processo de criação de um sistema Linux customizado envolve o trabalho em quatro componentes diferentes:

  • Toochain
  • Bootloader
  • Kernel
  • Sistema de arquivos (rootfs)

Vamos começar preparando o ambiente, para depois trabalhar separadamente em cada um destes componentes.

PREPARANDO O TERRENO

Todos os testes foram realizados em uma máquina rodando o Ubuntu 12.04. Se você estiver usando outra distribuição Linux ou mesmo outra versão do Ubuntu, pode ser que precise adaptar algum comando deste artigo.

Primeiro defina um diretório de trabalho e armazene-o em uma variável de ambiente:

$ export BBB_PATH=~/bbb/

Usaremos esta variável de ambiente para referenciar o diretório de trabalho em alguns comandos durante este artigo. Não esqueça de definir esta variável sempre que abrir uma nova seção do shell.

Crie o diretório de trabalho e entre nele:

$ mkdir $BBB_PATH && cd $BBB_PATH

TOOLCHAIN

Para facilitar o trabalho, utilizaremos o toolchain disponibilizado pela Linaro, que já esta empacotado no Ubuntu 12.04. Para instalar o toolchain, basta executar o comando abaixo:

$ sudo apt-get install gcc-arm-linux-gnueabi

Verifique se o toolchain foi instalado com sucesso:

$ arm-linux-gnueabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabi/4.7/lto-wrapper
Target: arm-linux-gnueabi
Configured with: [...]
gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-1ubuntu1)

BOOTLOADER

A Beaglebone Black tem suporte total no mainline do U-Boot. Portanto, é só baixar a última versão do site do projeto:

$ cd $BBB_PATH
$ wget ftp://ftp.denx.de/pub/u-boot/u-boot-2013.07.tar.bz2
$ tar xjfv u-boot-2013.07.tar.bz2
$ cd u-boot-2013.07

Configure o U-Boot para a Beaglebone Black e compile:

$ make am335x_evm_config
$ make CROSS_COMPILE=arm-linux-gnueabi- -j2

Ao final do processo de compilação, teremos as imagens do X-Loader (MLO) e do U-Boot (u-boot.bin) geradas no diretório principal do U-Boot. Mais adiante gravaremos estas imagens no cartão SD.

KERNEL

O kernel da Beaglebone Black esta disponível no github da Beagleboard.

Clone o repositório e aplique os patches da Beagleboard Black. O comando patch.sh abaixo vai clonar um repositório git do kernel, e pode demorar um pouco.

$ cd $BBB_PATH
$ git clone git://github.com/beagleboard/kernel.git
$ cd kernel
$ git checkout 3.8
$ ./patch.sh

Copie o arquivo de configuração da Beagleboard Black e o firmware do chip de gerenciamento de energia para o diretório do kernel:

$ cp configs/beaglebone kernel/arch/arm/configs/beaglebone_defconfig
$ wget http://arago-project.org/git/projects/?p=am33x-cm3.git\;a=blob_plain\;f=bin/am335x-pm-firmware.bin\;hb=HEAD -O kernel/firmware/am335x-pm-firmware.bin

Agora compile o kernel e o dtb (device tree):

$ cd kernel
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- beaglebone_defconfig -j2
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage dtbs -j2
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage-dtb.am335x-boneblack -j2

ROOTFS

Utilizaremos o Buildroot para gerar o rootfs.

Faça o download do Buildroot e descompacte-o:

$ cd $BBB_PATH
$ wget http://buildroot.net/downloads/buildroot-2013.08.tar.bz2
$ tar xjfv buildroot-2013.08.tar.bz2
$ cd buildroot-2013.08

Abra o menu de configuração:

$ make menuconfig

E faça as seguintes configurações:

Target Architecture (ARM (little endian))
Target Architecture Variant (cortex-A8)
 
Toolchain --->
    Toolchain type (External toolchain)
    Toolchain (Sourcery CodeBench ARM 2013.05)
 
System configuration --->
    /dev management (Dynamic using mdev)
    (ttyO0) Port to run a getty (login prompt) on

Selecione em “Target packages” as bibliotecas e aplicações que deseja incluir no rootfs.

Agora é só compilar.

$ make

Ao final do processo de compilação, a imagem do rootfs estará disponível no diretório abaixo:

$ ls output/images/
rootfs.tar

GRAVANDO

Agora vamos gravar as imagens no cartão SD. Para isso, usaremos a ferramenta mediacreate.

Primeiro, baixe a ferramenta:

$ cd $BBB_PATH
$ git clone https://github.com/sergioprado/mediacreate.git
$ cd mediacreate/

Depois copie as imagens geradas para o diretório da ferramenta:

$ cp -av $BBB_PATH/u-boot-2013.07/MLO .
$ cp -av $BBB_PATH/u-boot-2013.07/u-boot.img .
$ cp -av $BBB_PATH/kernel/kernel/arch/arm/boot/uImage .
$ cp -av $BBB_PATH/kernel/kernel/arch/arm/boot/dts/am335x-boneblack.dtb .
$ cp -av $BBB_PATH/buildroot-2013.08/output/images/rootfs.tar .
$ echo 'bootargs=console=ttyO0,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait' > uEnv.txt
$ echo 'uenvcmd=mmc dev ${mmcdev};load mmc ${mmcdev} ${loadaddr} uImage;load mmc ${mmcdev} ${fdtaddr} am335x-boneblack.dtb;bootm ${loadaddr} - ${fdtaddr}' >> uEnv.txt

Por fim, execute o mediacreate. Substitua <device> no comando abaixo pelo nome do arquivo de dispositivo do cartão SD (ex: /dev/sdd).

$ sudo ./mediacreate -f -z -c configs/bbb_linux.cfg -d /dev/<device>

Agora é só colocar o cartão SD na Beaglebone Black e testar!

Uncompressing Linux... done, booting the kernel.
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.8.13-00720-gb6a69d1 (sprado@sprado-desktop) (gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-1ubuntu1) ) #1 SMP Tue Oct 15 21:19:32 BRT 2013
[    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=50c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine: Generic AM33XX (Flattened Device Tree), model: TI AM335x BeagleBone
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] AM335X ES1.0 (neon )
[    0.000000] PERCPU: Embedded 8 pages/cpu @c0b26000 s9408 r8192 d15168 u32768
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129792
[    0.000000] Kernel command line: console=ttyO0,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
...
[    2.198388] tilcdc 4830e000.fb: fb0:  frame buffer device
[    2.204063] tilcdc 4830e000.fb: registered panic notifier
[    2.209752] [drm] Initialized tilcdc 1.0.0 20121205 on minor 0
[    2.265134] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
[    2.271552] davinci_mdio 4a101000.mdio: detected phy mask fffffffb
[    2.279137] libphy: 4a101000.mdio: probed
[    2.283401] davinci_mdio 4a101000.mdio: phy[2]: device 4a101000.mdio:02, driver SMSC LAN8710/LAN8720
[    2.293242] Detected MACID = c8:a0:30:ac:29:fe
[    2.297895] cpsw 4a100000.ethernet: NAPI disabled
[    2.304641] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)
[    2.321028] ALSA device list:
[    2.324180]   #0: TI BeagleBone Black
[    2.470967] EXT4-fs (mmcblk0p2): recovery complete
[    2.476031] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    2.484536] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    2.499985] devtmpfs: mounted
[    2.503358] Freeing init memory: 216K
[    2.703956] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
Starting logging: OK
Starting mdev...
Initializing random number generator... done.
Starting network...
 
Welcome to Buildroot
buildroot login: root
#

SUPORTE NO MAINLINE DO BUILDROOT

Em breve a Beaglebone Black terá suporte nativo no Buildroot. Os patches enviados por Jason Kridner devem provavelmente entrar na próxima versão (2013.11). Isso significa que todo o processo de geração das imagens será resumido à dois comandos:

$ make beaglebone_defconfig
$ make

Enquanto isso, esse tutorial deve te ajudar a criar um sistema Linux customizado para a Beaglebone Black.

Bom divertimento!

Sergio Prado

  • andrecas

    Muito bom Sergio! Isso é o Angstrom? Você podia fazer um com o Yocto :P

    Abraço!

    • Olá André,

      Não é o Angstrom. Neste artigo geramos uma distribuição customizada com o Buildroot. O Angstrom usa um outro sistema de build.

      Um abraço!

  • tpfslima

    Parabéns por mais esse trabalho, Sergio!

  • Eduardo C. Scherrer

    Muito bom, já ajudará bastante em não ter que usar a ferramenta do windows para gerar o sdcard.

  • Fabio Berton

    Aqui funcionou 100%. Valeu Sergio!!!

  • Plínio Barbosa da SIlva

    Olá Sérgio, como faço para habilitar o suporte ao USB-Ethernet?

    • Olá Plínio,

      Você se refere à transformar a BBB em um gadget Ethernet? Neste caso, você precisa habilitar a opção CONFIG_USB_ETH e recompilar o kernel.

  • David Lewin

    Hi Sergio,

    Nice post clear and usefull as usual. I could have the same results without buildroot phase anyway, and also on the new Angstrom branch (which allows to opkg qt4-embeded now btw )

    I hope the next post will be about Qt app on the Beaglebone Black, which is handy especially the 4D cape .
    http://www.4dsystems.com.au/product/22/125/Beagle_Bone_LCD_Capes/4DCAPE_43/
    Regards,
    David

    • Hello David,

      I hope Google Translate is doing a good job. :)

      Yes, you are right. Buildroot is just a means to an end. You could use Yocto, Angstrom or any other distro or buildsystem you like.

      Your suggestion about a Qt article is annotated. I did not know about this display. Thanks for the info.

      Best regards,

      • David Lewin

        Sergio,

        Honestly I have to translate over Google translate ;o) .
        I’m glad that maybe a Qt article could be here, as my point was indeed to let the 4D cape (officially referenced by Beaglebone) known by your readers here as it’s cheaper ($45 vs $170 for the 7″) .
        To read you soon.

  • Matheus Gustavo

    Hi Sergio,

    Eu tenho uma Beaglebone “white” e acontece o seguinte:
    Eu mantenho o SD Card com os arquivos originais e compilo o u-boot, então
    jogo o u-boot.img e o MLO na partição FAT, sobreescrevendo os arquivos originais… Não deveria funcionar? (Se eu volto o arquivos originais funciona ok)…

    Baixei o u-boot 2013.10 e compilei assim:
    make distclean
    make am335x_evm_config
    make CROSS_COMPILE=arm-linux-gnueabi-

    Também modifiquei o arquivo /include/ma335x_evm para modificar o bootdelay (Deu certo), modifiquei também nos fontes bootfile=uImage estava zImage…

    Quando eu tento bootar acontece isso:

    Importing environment from mmc …
    3489560 bytes read in 572 ms (5.8 MiB/s)
    ** File not found /boot/am335x-bone.dtb **
    Bad Linux ARM zImage magic!
    Card did not respond to voltage select!
    mmc1(part 0) is current device
    Card did not respond to voltage select!
    Booting from nand …

    no devices available
    Bad Linux ARM zImage magic!

    Sabe oque acontece?

    Para modificar o bootdelay eu poderia apenas mudar adicionar isso no arquivo uEnv.txt? tentei e não deu certo…

    Sei que a pergunta é grande, se você tiver um tempinho para responder eu agradeço! Não se tornará rotina, eu prometo!

    Abraço.

    • Olá Matheus,

      Me parece que o problema esta no boot do kernel:

      Bad Linux ARM zImage magic!

      Você esta tentando bootar o uImage mas esta versão do U-Boot que esta usando esta tentando bootar o zImage. Tente testar com a versão 2013.07 do U-Boot ou então tente bootar com o zImage.

      • Matheus Gustavo

        Obrigado, vou tentar aqui!

  • Yuri

    Oi Sérgio, tudo bem?
    Uso a Beaglebone Black, e, saindo fora do assunto do post, eu venho encontrando um problema chato. Na documentação da placa, constam 65 possíveis I/Os, mas só consigo fazer funcionar 26, as outras simplesmente não respondem aos comandos! Fui testando, acionando uma por uma, como entrada e saída. Aconteceu isso contigo?

    • Olá Yuri,

      Você se refere aos pinos de I/O do barramento de expansão? Pode dar um exemplo? Como esta testando?

      • Yuri

        Sim. Eu digito estes comandos via terminal:

        root@beaglebone:~# echo 23 > /sys/class/gpio/export
        root@beaglebone:~# echo out > /sys/class/gpio/gpio23/direction
        root@beaglebone:~# echo 1 > /sys/class/gpio/gpio23/value

        ou seja, setei como saída em nível alto a gpio23, que seria o pino 13 do conector P8. Depois dei nível baixo, sempre tentando acionar um led. Na verdade fiz isso com todos os pinos que estão descritos como I/O. Cheguei ao seguinte resultado:

        não funcionam:

        p8: 3-6, 20-25, 27-46

        p9: 14, 17-18, 25, 27-31

        funcionam:

        p8: 7-19, 26,

        p9: 11-13, 15-16, 21-24, 26, 41-42

        Tentei programar algo usando o cloud9 e o resultado foi o mesmo.

        Tentei também reprogramar os pinos usando o device tree, mas sem sucesso por enquanto. Engraçado, que não vi nenhuma reclamação sobre isso até agora.

        • Estranho. Eu ia te sugerir verificar a configuração do mux no device tree, mas pelo visto você já fez isso. Vou ver se consigo fazer alguns testes e te aviso.

          • Yuri

            Opa, vou aguardar.

          • Yuri

            Conseguiu fazer os testes?

  • Alexandre Sales Vasconcelos

    Olá Sérgio, estou tentando seguir seu artigo, mas estou com problemas com o comando “make CROSS_COMPILE=arm-linux-gnueabi- -j2” ele está gerando um erro, o terminal mostra o seguinte

    …/usr/lib/gcc/arm-linux-gnueabi/4.6 -lgcc -Map u-boot.map -o u-boot

    make: ** [u-boot] Erro 139

    você tem ideia o que pode estar acontecendo?

    • Olá Alexandre,

      Primeiro veja se o toolchain foi instalado corretamente:

      arm-linux-gnueabi-gcc -v

      Depois tente recompilar o u-boot:

      make distclean
      make am335x_evm_config
      make CROSS_COMPILE=arm-linux-gnueabi- -j2

      Se não funcionar, me mande a saída completa do log de compilação.

      Um abraço.

  • Emerson

    Olá Sérgio, só para ficar como anexo no tutorial, para compilar os módulos, usa-se os comandos:

    make ARCH=arm CROSS_COMPILE=arm-angstrom-linux-gnueabi- -j4 modules

    make ARCH=arm CROSS_COMPILE=arm-angstrom-linux-gnueabi- INSTALL_MOD_PATH=./rootfs modules_install

    abs

    Emerson

  • Emerson

    Olá Sérgio, novamente só para ficar como anexo no tutorial, para instalar o headers do kernel, segue o comando abaixo:

    make ARCH=arm CROSS_COMPILE=arm-eldorado-linux-gnueabihf- INSTALL_HDR_PATH=/destino headers_install

    abs.,

    Emerson

  • Rodrigo Fagundes

    Estou com um problema na hora de executar o mediacreate! ERROR: Invalid Disk Size! Estou usando um micro SD 32gb Ultra classe 10 San Disk.

    • Olá Rodrigo,

      Verifique se você tem os programas fdisk e awk instalados.

      No Ubuntu, você pode instalar estas ferramentas com o comando abaixo:

      $ sudo apt-get install util-linux gawk

      Verifique se resolveu e me avise.

      • Rodrigo Fagundes

        Funcionou depois que instalei o awk e o fdisk! Só que coloquei o cartão na Beagle e não da Boot, fica apenas o Tux (pinguim) no canto superior esquerdo da tela. Alguma dica?

        • Olá Rodrigo,

          Você esta testando com monitor e teclado ou na console serial?

          O sistema Linux construído esta preparado para exibir as informações na console serial, e se você tiver usando um monitor e teclado, será este mesmo o comportamento, apenas a imagem de logo no monitor.

          Se quiser usar o monitor e teclado, coloque o cartão SD na sua máquina e faça as seguintes alterações:

          1. Na primeira partição, abra o arquiivo uEnv.txt, e no final da primeira linha adicione console=tty1.

          2. Na segunda partição, abra o arquivo /etc/inittab, e no final dele adicione a seguinte linha:
          tty1::respawn:/sbin/getty -L tty1 115200 vt100

          Veja se depois destas alterações consegue fazer o login via monitor/teclado.

          Um abraço.

          • Rodrigo

            Agora da a seguinte mensagem. “root: PAM failure, aborting: Critical error – immediate abort.”

          • Você esta realizando os testes pelo monitor/teclado? Você usou o Buildroot para gerar o rootfs? Faz alguma alteração adicional, além das citadas no artigo?

          • Rodrigo

            Sim estou usando monitor HDMI/teclado. Refis todo o processo e agora não envia imagem para tela. Não alterei o processo.

          • Rodrigo

            Sérgio, quanto a imagem já consigo ter imagem na tela pela saída HDMI, porém continuo tendo problema do “root: PAM failure, aborting: Critical error – immediate abort.”. Já fiz o seu procedimento inúmeras vezes e não obtive sucesso, devo estar cometendo algum erro. Quanto a senha root do buildroot, deixo inalterada?

          • Muito estranho Rodrigo. Nunca vi este erro. Me envia por email o arquivo rootfs.tar gerado pelo Buildroot para fazer alguns testes aqui.

      • Gustavo Ferreira Palma

        Olá Sérgio, estou com o mesmo problema ao executar o MEDIACREATE, ja segui suas orientações mas ainda nada certo. estou usando um micro sd de 8GB San Disk

        • Olá Gustavo,

          Me envia por email o log completo da execução do comando.

          • Gustavo Ferreira Palma

            Olá Sérgio, consegui realizar a gravação dos arquivos de forma manual, porém agora estou com o erro de kernel panic.

          • Certo. Você pode disponibilizar o log do kernel? Pode ser algum erro na linha de comandos do kernel ou na gravação do rootfs no cartão.

  • Vanessa

    Olá Sérgio, tudo bem?

    Eu estou tentando gerar a imagem para a BeagleBone Black. Consegui gravar no SD mas não carrega informações na serial debug. Refazendo o processo, verifiquei que está ocorrendo o seguinte erro:

    vanessa@vanessa-VirtualBox:~/pBBB/kernel/kernel$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- beaglebone_defconfig -j2
    HOSTCC scripts/basic/fixdep
    HOSTCC scripts/kconfig/conf.o
    SHIPPED scripts/kconfig/zconf.tab.c
    SHIPPED scripts/kconfig/zconf.lex.c
    SHIPPED scripts/kconfig/zconf.hash.c
    HOSTCC scripts/kconfig/zconf.tab.o
    HOSTLD scripts/kconfig/conf
    drivers/video/Kconfig:60:error: recursive dependency detected!
    drivers/video/Kconfig:60: symbol FB is selected by DRM_KMS_HELPER
    drivers/gpu/drm/Kconfig:28: symbol DRM_KMS_HELPER is selected by DRM_TILCDC
    drivers/gpu/drm/tilcdc/Kconfig:1: symbol DRM_TILCDC depends on BACKLIGHT_LCD_SUPPORT
    drivers/video/backlight/Kconfig:5: symbol BACKLIGHT_LCD_SUPPORT is selected by FB_BACKLIGHT
    drivers/video/Kconfig:247: symbol FB_BACKLIGHT is selected by PMAC_BACKLIGHT
    drivers/macintosh/Kconfig:134: symbol PMAC_BACKLIGHT depends on FB

    warning: (USB_MUSB_HDRC) selects TWL6030_USB which has unmet direct dependencies (USB_SUPPORT && (USB || USB_GADGET) && TWL4030_CORE && OMAP_USB2 && USB_MUSB_OMAP2PLUS)

    warning: (DVB_USB_PCTV452E) selects TTPCI_EEPROM which has unmet direct dependencies (MEDIA_SUPPORT && MEDIA_PCI_SUPPORT && MEDIA_DIGITAL_TV_SUPPORT && I2C)

    warning: (USB_MUSB_HDRC) selects TWL6030_USB which has unmet direct dependencies (USB_SUPPORT && (USB || USB_GADGET) && TWL4030_CORE && OMAP_USB2 && USB_MUSB_OMAP2PLUS)

    warning: (DVB_USB_PCTV452E) selects TTPCI_EEPROM which has unmet direct dependencies (MEDIA_SUPPORT && MEDIA_PCI_SUPPORT && MEDIA_DIGITAL_TV_SUPPORT && I2C)

    #
    # configuration written to .config
    #

    Versão da Toolchain:
    ==================

    vanessa@vanessa-VirtualBox:~/pBBB$ arm-linux-gnueabi-gcc -v
    Usando especificações embutidas.
    COLLECT_GCC=arm-linux-gnueabi-gcc
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabi/4.6/lto-wrapper
    Destino: arm-linux-gnueabi
    Configurado com: ../src/configure -v –with-pkgversion=’Ubuntu/Linaro 4.6.3-1ubuntu5′ –with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs –enable-languages=c,c++,fortran,objc,obj-c++ –prefix=/usr –program-suffix=-4.6 –enable-shared –enable-linker-build-id –with-system-zlib –libexecdir=/usr/lib –without-included-gettext –enable-threads=posix –with-gxx-include-dir=/usr/arm-linux-gnueabi/include/c++/4.6.3 –libdir=/usr/lib –enable-nls –enable-clocale=gnu –enable-libstdcxx-debug –enable-libstdcxx-time=yes –enable-gnu-unique-object –enable-plugin –enable-objc-gc –enable-multilib –disable-sjlj-exceptions –with-arch=armv7-a –with-float=softfp –with-fpu=vfpv3-d16 –with-mode=thumb –disable-werror –enable-checking=release –build=i686-linux-gnu –host=i686-linux-gnu –target=arm-linux-gnueabi –program-prefix=arm-linux-gnueabi-Obrigada –includedir=/usr/arm-linux-gnueabi/include –with-headers=/usr/arm-linux-gnueabi/include –with-libs=/usr/arm-linux-gnueabi/lib

    Modelo de thread: posix
    versão do gcc 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)

    Versão do Ubuntu em máquina virtual:
    ==============================
    vanessa@vanessa-VirtualBox:~$ cat /etc/lsb-release
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=12.04
    DISTRIB_CODENAME=precise
    DISTRIB_DESCRIPTION=”Ubuntu 12.04.4 LTS”

    Alguma dica de como posso solucionar esse erro?

    Obrigada

    • Olá Vanessa!

      A sua máquina tem as ferramentas de build e a ncurses instaladas?

      sudo apt-get install build-essential libncurses5 libncurses5-dev

      • Vanessa

        Olá Sergio!

        Essas ferramentas estão instaladas. O problema poderia estar no defconfig? Pode o configs/beaglebone do kernel ter sido modificado ou não ser compativel com a revisão A6 da BBB? Vc teria como postar ou enviar por email o defconfig para beaglebone black que vc utilizou no tutorial?

        • Pode ser Vanessa. Ou também algum problema ao aplicar os patches. Já tentou executar novamente o processo de clonar o repositório e aplicar os patches? Estou te enviando o defconfig por email. Abs!

          • Fabio

            Olá Ségio!

            Estou com o mesmo problema da Vanessa acima… por favor, veja:

            fabio@fabio-Presario-C700-Notebook-PC:~/bbb/kernel/kernel$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- beaglebone_defconfig -j2
            HOSTCC scripts/basic/fixdep
            HOSTCC scripts/kconfig/conf.o
            SHIPPED scripts/kconfig/zconf.tab.c
            SHIPPED scripts/kconfig/zconf.lex.c
            SHIPPED scripts/kconfig/zconf.hash.c
            HOSTCC scripts/kconfig/zconf.tab.o
            HOSTLD scripts/kconfig/conf
            warning: (USB_MUSB_HDRC) selects TWL6030_USB which has unmet direct dependencies (USB_SUPPORT && (USB || USB_GADGET) && TWL4030_CORE && OMAP_USB2 && USB_MUSB_OMAP2PLUS)
            warning: (DVB_USB_PCTV452E) selects TTPCI_EEPROM which has unmet direct dependencies (MEDIA_SUPPORT && MEDIA_PCI_SUPPORT && MEDIA_DIGITAL_TV_SUPPORT && I2C)
            warning: (USB_MUSB_HDRC) selects TWL6030_USB which has unmet direct dependencies (USB_SUPPORT && (USB || USB_GADGET) && TWL4030_CORE && OMAP_USB2 && USB_MUSB_OMAP2PLUS)
            warning: (DVB_USB_PCTV452E) selects TTPCI_EEPROM which has unmet direct dependencies (MEDIA_SUPPORT && MEDIA_PCI_SUPPORT && MEDIA_DIGITAL_TV_SUPPORT && I2C)
            #
            # configuration written to .config
            #

            Também tenho as ferramentas de build e a ncurses instaladas conforme sua instrução aqui nos comentários.

            Já refiz todo o procedimento do zero duas vezes e o erro permanece.

            Você pode me ajudar por favor?

            Muito obrigado.

          • Olá Fabio,

            Não verdade acredito que esta mensagem não seja problema. tente compilar e kernel normalmente e veja se funciona.

            Um abraço.

  • Washington F Paiva

    Ótimo tutorial Sergio, porém, a solução para Mac OS é diferente, dei uma procurada, estou tentando fazer a compilação da toolchain pelo mac, mais você tem alguma dica para mim, ja tentou alguma vez pelo Mac OS desenvolver a distro para BBB?

    • Olá Washington,

      Se você não conseguir encontrar um toolchain pronto para o MacOS, tente gerar um com o Buildroot.

      • Washington F Paiva

        Eu optei por fazer um dualboot no sistema com Mac e Linux, fica mais viável, obrigado!

  • cristiano silva de souza

    After one year, but works pretty well, this is my first linux from scratch on Beagle Bone Black, thanks by post!!

  • Caso alguém passe pelo mesmo problema, com as versões:

    Buildroot 2014.11

    Kernel 3.13

    Tive problemas ao executar os passos com este novo cenario, e o primeiro erro foi:

    UIMAGE arch/arm/boot/uImage
    “mkimage” command not found – U-Boot images will not be built

    Corrigido com: apt-get install u-boot-tools

    E depois em:

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage dtbs -j2
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage-dtb.am335x-boneblack -j2

    make: *** No rule to make target `uImage-dtb.am335x-boneblack’. Stop.

    Funcionou com:

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- LOADADDR=0x80008000 uImage dtbs -j4
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- LOADADDR=0x80008000 uImage am335x-boneblack.dtb -j4

    Espero que ajude quem tiver mais problemas :)

    • Obrigado Cleiton!

      • Anderson dos Santos Donda

        Para o pessoal que quer usar um Kernel mais atual, dá para utilizar o Kernel 4.1 já disponível no github do projeto. Segue os passos:

        # Baixa o source na pasta kernel
        $ git clone git://github.com/beagleboard/linux.git kernel
        $ cd kernel

        # eqto escrevo este comentário o HEAD do git já esta apontado para o branch do 4.1, execute um git status para verificar se precisa rodar essa parte

        $ git checkout 4.1

        # Carrega as configs
        $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- bb.org_defconfig

        # Compila o Kernel
        $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4

        # Compila o DTB(Device Tree) e cria o blob
        $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage dtbs LOADADDR=0x80008000 -j4

        Espero que ajude!

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.