Building Software Image/es
Se usa la distribución Linux de sistemas integrados OpenWrt para las imagenes oficiales.
Actualmente usamos nuestro propio repositorio para el desarrollo, pero nos fusionamos a la rama principal de OpenWrt a menudo.
En caso de tener problemas relacionados con OpenWrt, por favor intenta echar un vistazo a la Wiki de OpenWrt en español, especial
En la siguiente pagina wiki de OpenWrt How to build OpenWrt podrás encontrar información sobre el como funciona la construcción de sistemas con OpenWrt , los requerimientos y como configurarlo correctamente.
Contents |
[edit] Prerequisitos
Se deben instalar estos paquetes antes de crear la imagen del software:
$ sudo aptitude install sed wget cvs subversion git-core coreutils unzip texi2html texinfo libsdl1.2-dev docbook-utils \ gawk python-pysqlite2 diffstat help2man make gcc build-essential g++ desktop-file-utils chrpath flex libncurses5 \ libncurses5-dev libxml-simple-perl zlib1g-dev pkg-config gettext libxml-simple-perl guile-1.8 cmake
[edit] Construyendo una imagen desde el codigo fuente con OpenWrt
Descargamos el código fuente del repositorio para construir las imágenes así:
$ git clone git://projects.qi-hardware.com/openwrt-xburst.git # clone the git repository $ cd openwrt-xburst # change-dir into the sourcecode directory $ git fetch origin $ git checkout --track -b xburst origin/xburst # checkout the 'xburst'-branch
OpenWrt usa los llamados "feeds" que proporcionan paquetes OpenWrt para el software que esta fuera del sistema mínimo por defecto.
Los "feeds" están definidos dentro de los archivos <feeds.conf> y <feeds.conf.default> (el primero reemplaza al segundo si existe), de todas maneras no se debería necesitar tocarlos.
Para incluir los feeds al sistema simplemente hacer:
$ scripts/feeds update -a && scripts/feeds install -a
Para construir una imagen basada en las oficiales, descargarte el archivo config de la ultima versión oficial que haya salido:
$ wget "http://downloads.qi-hardware.com/software/images/Ben_NanoNote_2GB_NAND/latest/config" -O .config
Para seleccionar/eliminar paquetes que irán en la imagen que vamos a construir, puedes usar el menú interactivo para configuración:
$ make menuconfig
Y al final , la creamos:
$ make
Con un poco de suerte todo ira sin errores y el resultado sera una imagen lista para flashear y usar en: bin/xburst/
Yujuuu! :)
Las imagenes oficiales podéis encontrarlas en Imagenes Oficiales y su descripción en [Official Software Image]
[edit] xburst-tools (comandos usbboot)
Las [xburst-tools] son necesarias para flashear las imágenes en el NanoNote.
Para compilarlas desde el código fuente haced los siguiente:
$ git clone git://projects.qi-hardware.com/xburst-tools.git $ cd xburst-tools/usbboot $ ./autogen.sh $ ./configure --prefix=/usr --sysconfdir=/etc $ make $ sudo make install
Voila!
Los binarios ya compilados los podéis encontrar aquí: xburst-tools
[edit] Porting projects to OpenWrt
Por favor, consultad:
- Nuevo wiki Creating packages page
- Antiguo wiki page (has more examples, including uclibc++ - not sure if these are out of date)
[edit] Guia breve
Definitivamente deberíais consultar lo anterior pero a grandes rasgos es:
- Tener un sistema de compilación (Esto te permitirá compilar imágenes enteras y/o programas individuales)
- Cuando ejecucutes make menuconfig, selecionar paquetes que no estén seleccionados con 'M', y estar seguros de que podéis compilar/instalarlos (mirad si se han generado en bin/xburst/packages, copiarlos al NanoNote, y usar opkg en el para instalarlos):
make package/packagename/compile V=99
- Añadir vuestros propios Makefiles en la carpeta de paquetes adecuada, y hacer lo anteriormente mencionado. Entonces mirar como falla al compilar porque el creador no ha pensado en el cross-compiling!, arreglar los problemas y seguir intentando.
[edit] Ejemplo
Podeis ver un ejemplo de como se porta una aplicación sencilla aquí: Mi primer port en Ben NanoNote: gnuchess (Tutorial)
[edit] openwrt-package
- Algunos paquetes de NanoNote no incluidos en OpenWrt estan en qi-hardware-packages
- Una idea podría ser clonar este repositorio y añadir nuevos ports a el (con los symlinks apropiados) para facilitar el mantenimiento
[edit] feeds.conf
[edit] FAQ
- Leer el FAQ de OpenWrt primero :-)
- Donde esta el código fuente?
El repositorio git esta en projects.qi-hardware.com
- Donde se generan (bootloader kernel rootfs)?
/PATH/A/OPENWRT/bin/xburst
- Donde esta la toolchain?
/PATH/A/OPENWRT/staging_dir/toolchain-mipsel_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin
- Como añadir paquetes al la rootfs?
Seleccionándolos como '*' en el menuconfig
- Donde estan los paquetes de Qi-hardware?
añade "src-git qipackages git://projects.qi-hardware.com/openwrt-packages.git" a tu archivo feeds.conf
- Como se accede al menuconfig del Kernel?
make kernel_menuconfig
- Como compilar solo un paquete?
make packages/PACKAGE_NAME/compile V=99 make packages/PACKAGE_NAME/{clean,compile} V=99