Categorie

[buildroot] Aggiungere un package manualmente

 

 

 

 

Sia $BR la cartella base di buildroot, nella cartella $BR/package creare la cartella relativa al pacchetto che si vuole aggiungere: $BR/package/myapp

All’interno della cartella $BR/package/myapp creare due file di testo:

Config.in

config BR2_PACKAGE_MYAPP
    bool “myapp”
   help
Myapp description...

myapp.mk

MYAPP_VERSION = X.Y
MYAPP_SOURCE = myapp-$(MYAPP_VERSION).tar.gz
MYAPP_SITE = http://remote_location

# Comandi per la compilazione
define MYAPP_BUILD_CMDS
    $(MAKE) CC=$(TARGET_CC) LD=$(TARGET_LD) -C $(LD) all
endef

$(eval $(call GENTARGETS,package,myapp))

Eventualmente sostituire CC con CXX per i sorgenti in c++.

Creare il pacchetto tar.gz con la seguente struttura:

myapp-X.Y.tar.gz → myapp/
    → sorgenti (.c/.h)
    → Makefile (con all:)

Posizionare il pacchetto in $BR/dl

Aggiungere il menu al menuconfig di buildroot, aggiungendo le seguenti righe al file $BR/package/Config.in

menu “My applications”
    source “package/myapp/Config.in”
endmenu

Selezionare il pacchetto dal configuratore e ricompilare il tutto.

[buildroot] Impostare il desktop grafico di default

 

 

 

 

 

Editare il file1:

buildroot_folder/output/target/usr/lib/X11/xinit/xinitrc

Eventualmente modificare il file seguente e poi creare un hard link nella posizione precedente:

buildroot_folder/fs/skeleton/usr/lib/X11/xinit/xinitrc
 Commentare le righe relative a twm:
#twm &
#xclock -geometry 50x50-1+1 &
#xterm -geometry 80x50+494+51 &
#xterm -geometry 80x20+494-0 &
#exec xterm -geometry 80x66+0+0 -name login

Ed aggiungere le seguenti istruzioni:

setxkbmap it
xterm &    # se si vuole avviare una finestra di terminale all'avvio
exec fluxbox

Al posto di fluxbox si può mettere un altro DE (ad esempio Blackbox).

  1. buildroot_folder è la cartella dove abbiamo scompattato buildroot

[buildroot] Aggiungere un modulo al Kernel

 

 

 

[Public draft]

Per aggiungere un modulo personalizzato al kernel della nostro sistema operativo creato con buildroot occorre seguire alcuni passi.

1. Supponiamo di avere a disposizione il package del modulo con all’interno il sorgente .c e il Makefile con una struttura simile alla seguente:

=> mykmod-X.X.tar.bz2
   => mykmod/mykmod.c
   => mykmod/Kbuild

Posizioniamo questo file in una posizione accessibile dal web, oppure direttamente nella cartella dl/ di buildroot (preferibile).

2. Nella cartella package/ creiamo la cartella mykmod ed al suo interno creiamo due file di testo.

mykmod.mk  che conterrà:

MYKMOD_VERSION = 1.0
MYKMOD_SOURCE = mykmod-$(MYKMOD_VERSION).tar.bz2
MYKMOD_DEPENDENCIES = linux

define MYKMOD_BUILD_CMDS
$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) M=$(@D) modules
endef

define MYKMOD_INSTALL_TARGET_CMDS
$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) M=$(@D) modules_install
endef

$(eval $(call GENTARGETS,package,mykmod))

 

Config.in  che conterrà:

config BR2_PACKAGE_MYKMOD
    bool "mykmod"
    depends on BR2_LINUX_KERNEL
    help
      This is a kernel module

Adesso andiamo ad aggiungere il modulo al menu del configuratore, modifichiamo il file package/Config.in  aggiungendo le seguenti righe:

menu "My kernel Modules"
source "package/mykmod/Config.in"
endmenu
Dopo aver compilato buildroot:
make

il modulo si troverà nella posizione1:

buildroot_folder/output/target/lib/modules/kernel_version/extra/mykmod.ko

per caricarlo all’avvio creare uno script eseguibile nella posizione2:

buildroot_folder/output/target/etc/init.d/SXX

con il seguente contenuto:

modprobe mykmod
mknod -m 0666 /dev/mykmod c M m

Sostituendo a m e M il numero di Major e minor.

Per verificare il corretto caricamento del modulo sul sistema finale:

dmesg | tail

dovrebbe mostrare il messaggio di caricamento inserito nella funzione di init nel sorgente del modulo.

  1. buildroot_folder è la cartella dove abbiamo scompattato il pacchetto di buildroot
  2. XX è il numero d’ordine con cui lo script verrà eseguito.