?>/script>'; } ?> [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot) Widgets Magazine

Autor Tema: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)  (Leído 112695 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4608
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #20 en: 25-02-2014, 11:38 (Martes) »
Yo tengo extroot funcionando en un Comtrend VR3025un con la compilación 39156  >:D

Código: [Seleccionar]
Using username "root".
root@10.0.0.40's password:
Send automatic password


BusyBox v1.19.4 (2013-12-27 15:33:48 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 BARRIER BREAKER (Barrier Breaker, r39156)
 -----------------------------------------------------
  * 1/2 oz Galliano         Pour all ingredients into
  * 4 oz cold Coffee        an irish coffee mug filled
  * 1 1/2 oz Dark Rum       with crushed ice. Stir.
  * 2 tsp. Creme de Cacao
 -----------------------------------------------------
root@vr3025un:~# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                   93.0M     81.3M      4.9M  94% /
/dev/root                 5.0M      5.0M         0 100% /rom
tmpfs                    30.1M    216.0K     29.9M   1% /tmp
/dev/sda2                93.0M     81.3M      4.9M  94% /overlay
overlayfs:/overlay       93.0M     81.3M      4.9M  94% /
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/sda3               300.2M      2.0M    278.7M   1% /mnt/sda3
root@vr3025un:~#


Y sí, totalmente de acuerdo con Pteridium, el que no se da de cabezazos a veces con OpenWrt, es que no trastea mucho con el  ;D


Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2250
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #21 en: 25-02-2014, 15:57 (Martes) »
¿No podría ser que te falte algún módulo o driver? En un rato adjunto el config que usé.

Es lo que me preguntaba antes, ¿pero cuál? ¿o que me sobre algo? Como ya dije antes, las particiones las puedo montar perfectamente después de iniciado el router, e incluso poniendo export PREINIT=1; block extroot, que aunque no me monta la partición como extroot, porque rootfs ya está asignada, sí la monta en /tmp/extroot/mnt (o si es la overlay me la monta en /tmp/extroot/overlay)
El problema está en que cuando se debe ejecutar el pivot el USB o lo que sea no se ha detectado todavía porque casi siempre me sale: extroot: is not ready yet, retrying in 60 seconds, y después en el reintento siempre falla.

Si me faltaran drivers no podría montar la partición, ¿no?. Yo me inclino más a pensar que es problema al detectar el formato del USB o algo similar.


Pteridium

  • Visitante
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #22 en: 25-02-2014, 19:31 (Martes) »
Aquí está el config que usé: http://pastebin.com/pwxdLrLg

A ver si hay suerte.


Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2250
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #23 en: 25-02-2014, 19:49 (Martes) »
Gracias.
Voy a echarle un vistazo a ver qué módulos tienes puestos, por si fuera eso.


Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2250
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #24 en: 26-02-2014, 09:16 (Miércoles) »
Código: [Seleccionar]
BusyBox v1.19.4 (2014-01-15 18:49:11 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 BARRIER BREAKER (Barrier Breaker, r39156)
 -----------------------------------------------------
  * ño         Pour all ingredients into
  * 4 oz cold Coffee        an irish coffee mug filled
  * 1 1/2 oz Dark Rum       with crushed ice. Stir.
  * 2 tsp. Creme de Cacao
 -----------------------------------------------------
root@ar5387:/# df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                 7457488     39272   7023004   1% /
/dev/root                 5632      5632         0 100% /rom
tmpfs                    30712       248     30464   1% /tmp
/dev/sda1              7457488     39272   7023004   1% /
tmpfs                      512         0       512   0% /dev
root@ar5387:/#

Capitán, traigo buenas noticias desde el frente y además he aprendido en las trincheras. Al
enemigo le hemos podido hacer extroot satisfactoriamente...

Y con esto quiero compartir mi experiencia con extroot y openwrt que a tenor de mis últimos
post en este hilo se me estaba resistiendo y con razón...

Tal y como había sospechado no podía hacer extroot porque en el momento de intentar hacerlo,
openwrt no encontraba el dispositivo, pero ¿por qué?. Creo que he encontrado la razón y que
me corrijan si me equivoco: el módulo responsable de cargar ext4, kmod-fs-ext4 no lo tenía
cargado en la imagen que quemé en el router, sino que la tenía como módulo compilado y fue
cargada luego en el router (suponía que la compatibilidad ext4 se lograba con kmod-fs-autofs4
y fíjate tú por dónde, que no). De tal forma, el módulo ext4 cayó bajo el sistema de
archivos jffs2, sistema de archivos que NO ESTA INICIALIZADO en el momento de hacer extroot,
así que de esa manera no podía encontrar la forma de montar el pincho USB para hacer
extroot.

Las buenas noticias son que tras recompilar una imagen incorporando kmod-fs-ext4 en los
módulos principales he conseguido hacer tanto overlay como pivot root.

Dado que los módulos deben estar todos en el sistema de archivos squashfs para poder hacer
extroot, creo que el requerimiento se debería poner en el post principal de este tutorial,
para intentar evitar que otros que vengan después se partan la cabeza con una tarea similar.
Además creo que otras funcionalidades que requieran que los módulos estén cargados en el
preinit y que hayan sido cargados después como módulos (como en el caso de MMC over SPI)
pueden verse afectadas ya que no habrán sido cargados dichos módulos para obtener la
funcionalidad deseada en el momento de hacer extroot... así que, por favor, incorporad como
requisito que todos los módulos que se necesiten para hacer funcionar dispositivos externos
deben estar cargados en la imagen precompilada o no se podrán hacer funcionar a posteriori.


En vista de lo anterior, ¿existe alguna posibilidad de inicializar el sistema de archivos
jffs2 antes de hacer extroot, cargar los módulos necesarios y después desmontar jffs2?.

P.D.: también parcheé kexec por una advertencia que he visto y que hacía que no funcionara,
pero no creo que esto haya tenido que ver ya que lo tengo compilado como módulo y ni
siquiera lo he instalado: https://www.mail-archive.com/openwrt-devel@lists.openwrt.org/msg22170.html

P.P.D: al hacer extroot funciona perfectamente la detección por uuid, de hecho tras hacer un
block detect sólo hay que editar un par de caracteres para tener un fstab funcional.


danitool

  • Visitante
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #25 en: 26-02-2014, 12:26 (Miércoles) »
Es un buen apunte lo de saber donde tenemos los módulos. Pueden estar en tres sitios:

- sistema de ficheros jffs2, el cual puede ser rootfs_data, o rootfs si usamos imágenes jffs2.
- sistema de ficheros squashfs, el cual siempre es rootfs
- en el kernel

Hago esta pequeña recapitulación porque es bueno saberlo, e interesante saber que prácticamente todos los módulos excepto los del wifi podemos tenerlos en el kernel, el cual es el primero que se carga, eso sí para tenerlos en el kernel hay que hacer una compilación personalizada seleccionando en el menu del make kernel_menuconfig, y deseleccionando en el menuconfig los módulos que querríamos meter en el arranque, aunque tenerlos duplicados tampoco hace daño.



Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4608
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #26 en: 26-02-2014, 12:38 (Miércoles) »
Lo cierto es que yo siempre añado soporte para ext (con kmod-fs-ext4) cuando compilo.

Te puedo asegurar, que al menos con las versiones estables (Attitude Adjustment), no es necesario incluir el soporte de ficheros ext en las compilaciones.

Es posible que sea cosa de la rama Barrier Braker ...  ^-^

En cualquier caso, voy a añadir una nota en el tutorial  ;)


Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2250
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #27 en: 26-02-2014, 13:11 (Miércoles) »
Hago esta pequeña recapitulación porque es bueno saberlo, e interesante saber que prácticamente todos los módulos excepto los del wifi podemos tenerlos en el kernel, el cual es el primero que se carga, eso sí para tenerlos en el kernel hay que hacer una compilación personalizada seleccionando en el menu del make kernel_menuconfig, y deseleccionando en el menuconfig los módulos que querríamos meter en el arranque, aunque tenerlos duplicados tampoco hace daño.

No hace daño, pero luego en el arranque se ve que, en la carga de módulos, openwrt se queja de que hay símbolos duplicados...

Te puedo asegurar, que al menos con las versiones estables (Attitude Adjustment), no es necesario incluir el soporte de ficheros ext en las compilaciones.

Es posible que sea cosa de la rama Barrier Braker ...  ^-^

Yo más bien creo que es cosa de cómo arranca ahora el openwrt con procd y ubox, como decía Pteridium...


miguelcmran

  • Visitante
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #28 en: 11-03-2014, 19:16 (Martes) »
Yo no tengo narices a hacerlo funcionar. El procedimiento lo hago tal cual y aparentemente se ejecuta todo bien, pero al reiniciar no me monta el ExtRoot. Tengo Barrier Breaker r39856 de la rama Trunk para el WDR4300 (ar71xx) con los siguientes módulos compilados:

luci
luci-app-p910nd
luci-app-samba
luci-app-statistics
luci-app-wol
luci-i18n-spanis
kmod-fs-ext4
kmod-fs-vfat
ntfs-3g
kmod-usb-core
kmod-usb-ohci
kmod-usb-printer
kmod-usb-storage
kmod-usb2
kmod-nls-cp437
kmod-nls-cp850
kmod-nls-cp852
kmod-nls-iso8859-15
kmod-nls-utf8
FPU emulation

He probado a reparticionar el disco cambiando tanto el orden de las particiones como el sistema de archivos (ext2, ext3 y ext4) y volviendo a seguir el procedimiento pero nada de nada. Tki2000 me ha llevado a un post suyo donde él lo soluciono compilando el firmware con el módulo kmod-fs-ext4, pero el mío también lo tiene y como digo no hay narices a que funcione ExtRoot.  :-\

« Última modificación: 11-03-2014, 19:17 (Martes) por miguelcmran »

Pteridium

  • Visitante
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #29 en: 11-03-2014, 19:34 (Martes) »
Yo no tengo narices a hacerlo funcionar. El procedimiento lo hago tal cual y aparentemente se ejecuta todo bien, pero al reiniciar no me monta el ExtRoot. Tengo Barrier Breaker r39856 de la rama Trunk para el WDR4300 (ar71xx) con los siguientes módulos compilados:

He probado a reparticionar el disco cambiando tanto el orden de las particiones como el sistema de archivos (ext2, ext3 y ext4) y volviendo a seguir el procedimiento pero nada de nada. Tki2000 me ha llevado a un post suyo donde él lo soluciono compilando el firmware con el módulo kmod-fs-ext4, pero el mío también lo tiene y como digo no hay narices a que funcione ExtRoot.  :-\
No mencionas si tienes block-mount compilado.


miguelcmran

  • Visitante
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #30 en: 11-03-2014, 19:44 (Martes) »
Yo no tengo narices a hacerlo funcionar. El procedimiento lo hago tal cual y aparentemente se ejecuta todo bien, pero al reiniciar no me monta el ExtRoot. Tengo Barrier Breaker r39856 de la rama Trunk para el WDR4300 (ar71xx) con los siguientes módulos compilados:

He probado a reparticionar el disco cambiando tanto el orden de las particiones como el sistema de archivos (ext2, ext3 y ext4) y volviendo a seguir el procedimiento pero nada de nada. Tki2000 me ha llevado a un post suyo donde él lo soluciono compilando el firmware con el módulo kmod-fs-ext4, pero el mío también lo tiene y como digo no hay narices a que funcione ExtRoot.  :-\
No mencionas si tienes block-mount compilado.

No, ya que me base en el tutorial de jar229 tal cual, es decir, mismos módulos mas la emulación FPU que era por lo que me animé a compilar. ¿Entonces será por el block-mount el problema?


Pteridium

  • Visitante
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #31 en: 11-03-2014, 21:08 (Martes) »
Casi seguro que sí, aunque cuando empiezas a peinar canas sueles dejar de afirmar categóricamente.  :P

Lo siento, la depre de cuando dejas de poder contar las canas...


Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2250
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #32 en: 11-03-2014, 21:09 (Martes) »
Yo no tengo narices a hacerlo funcionar. El procedimiento lo hago tal cual y aparentemente se ejecuta todo bien, pero al reiniciar no me monta el ExtRoot. Tengo Barrier Breaker r39856 de la rama Trunk para el WDR4300 (ar71xx) con los siguientes módulos compilados:

He probado a reparticionar el disco cambiando tanto el orden de las particiones como el sistema de archivos (ext2, ext3 y ext4) y volviendo a seguir el procedimiento pero nada de nada. Tki2000 me ha llevado a un post suyo donde él lo soluciono compilando el firmware con el módulo kmod-fs-ext4, pero el mío también lo tiene y como digo no hay narices a que funcione ExtRoot.  :-\
No mencionas si tienes block-mount compilado.

No, ya que me base en el tutorial de jar229 tal cual, es decir, mismos módulos mas la emulación FPU que era por lo que me animé a compilar. ¿Entonces será por el block-mount el problema?

Block-mount es un requisito IMPRESCINDIBLE para que funcione extroot. Sin él no funciona.
Yo que tú lo metería en la compilación de la imagen.


miguelcmran

  • Visitante
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #33 en: 11-03-2014, 22:08 (Martes) »
Yo no tengo narices a hacerlo funcionar. El procedimiento lo hago tal cual y aparentemente se ejecuta todo bien, pero al reiniciar no me monta el ExtRoot. Tengo Barrier Breaker r39856 de la rama Trunk para el WDR4300 (ar71xx) con los siguientes módulos compilados:

He probado a reparticionar el disco cambiando tanto el orden de las particiones como el sistema de archivos (ext2, ext3 y ext4) y volviendo a seguir el procedimiento pero nada de nada. Tki2000 me ha llevado a un post suyo donde él lo soluciono compilando el firmware con el módulo kmod-fs-ext4, pero el mío también lo tiene y como digo no hay narices a que funcione ExtRoot.  :-\
No mencionas si tienes block-mount compilado.

No, ya que me base en el tutorial de jar229 tal cual, es decir, mismos módulos mas la emulación FPU que era por lo que me animé a compilar. ¿Entonces será por el block-mount el problema?

Block-mount es un requisito IMPRESCINDIBLE para que funcione extroot. Sin él no funciona.
Yo que tú lo metería en la compilación de la imagen.

Pues nada, ya lo he añadido y recompilado. Esta vez no ha tardado nada. Mañana lo pruebo y os comento. Muchas gracias.  >:(


Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2250
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #34 en: 12-03-2014, 08:13 (Miércoles) »
Block-mount es un requisito IMPRESCINDIBLE para que funcione extroot. Sin él no funciona.
Yo que tú lo metería en la compilación de la imagen.

Por si alguien se pregunta por qué lo digo así: Requisitos extroot para Barrier Breaker


Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4608
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #35 en: 12-03-2014, 08:34 (Miércoles) »
Pero bueno ... alguien se ha leído el tutorial ?  :'(



miguelcmran

  • Visitante
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #36 en: 12-03-2014, 11:15 (Miércoles) »
Pero bueno ... alguien se ha leído el tutorial ?  :'(



Eyyy que yo sí me lo he leído y sabía perfectamente que había que instalar block-mount, lo que desconocía es que tenía que venir ya compilado en Barrier Breaker, yo lo que estaba haciendo era instalarlo posteriormente una vez flasheado el firmware.

El caso es que he vuelto a compilar el firmware añadiendo block-mount y ya de paso algunos paquetes más que uso como bird4, igmpproxy y udpxy para el tema de Imagenio, htop y openssh-sftp-server.

Lo he flasheado, he vuelto a configurar Internet e Imagenio funcionando perfectamente. Posteriormente he aplicado el tutorial de Ejecutando OpenWrt desde una memoria o disco USB (extroot):

/dev/sda1: swap
/dev/sda2: ext4 para Almacenamiento
/dev/sda3: ext4 para Extroot

mount -t ext4 /dev/sda3 /mnt

mkdir /tmp/cproot
mount --bind / /tmp/cproot
tar -C /tmp/cproot -cvf - . | tar -C /mnt -xvf -
sync ; umount /mnt
umount /tmp/cproot

block detect > /etc/config/fstab

vi /etc/config/fstab

config 'global'
        option  anon_swap       '0'
        option  anon_mount      '0'
        option  auto_swap       '1'
        option  auto_mount      '1'
        option  delay_root      '5'
        option  check_fs        '0'

config 'swap'
        option  device  '/dev/sda1'
        option  enabled '1'

config 'mount'
        option  target  '/mnt/sda2'
        option  uuid    '4fff9bec-c03d-cf01-4027-9becc03dcf01'
        option  enabled '1'

config 'mount'
        option  target  '/overlay'
        option  uuid    'f8d35f74-c13d-cf01-d080-5b74c13dcf01'
        option  enabled '1'

reboot

Y cuando arranca sigo sin tener Extroot

 :'(


Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4608
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #37 en: 12-03-2014, 11:51 (Miércoles) »
Prueba a ver si así te funciona:

Código: [Seleccionar]
config 'global'
        option  anon_swap       '0'
        option  anon_mount      '0'
        option  auto_swap       '1'
        option  auto_mount      '1'
        option  delay_root      '5'
        option  check_fs        '0'

config 'swap'
        option  device  '/dev/sda1'
        option  enabled '1'

config 'mount'
        option  target  '/mnt/sda2'
        option  uuid    '4fff9bec-c03d-cf01-4027-9becc03dcf01'
        option  enabled '1'

config 'mount'
        option  target  '/mnt/sda3'
        option  uuid    'f8d35f74-c13d-cf01-d080-5b74c13dcf01'
        option device '/dev/sda3'
        option fstype 'ext2'
        option  enabled '1'

 option fstype 'ext2' debes sustituirlo por el tipo de formato que tenga el HD.

Voy a repetir el proceso a ver si me dejé de poner alguna cosilla en la redacción del tuto  ^-^


miguelcmran

  • Visitante
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #38 en: 12-03-2014, 12:00 (Miércoles) »
Prueba a ver si así te funciona:

Código: [Seleccionar]
config 'global'
        option  anon_swap       '0'
        option  anon_mount      '0'
        option  auto_swap       '1'
        option  auto_mount      '1'
        option  delay_root      '5'
        option  check_fs        '0'

config 'swap'
        option  device  '/dev/sda1'
        option  enabled '1'

config 'mount'
        option  target  '/mnt/sda2'
        option  uuid    '4fff9bec-c03d-cf01-4027-9becc03dcf01'
        option  enabled '1'

config 'mount'
        option  target  '/mnt/sda3'
        option  uuid    'f8d35f74-c13d-cf01-d080-5b74c13dcf01'
        option device '/dev/sda3'
        option fstype 'ext2'
        option  enabled '1'

 option fstype 'ext2' debes sustituirlo por el tipo de formato que tenga el HD.

Voy a repetir el proceso a ver si me dejé de poner alguna cosilla en la redacción del tuto  ^-^

Ya lo he probado y nada sigue sin funcionar Extroot  :'(


Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4608
Re: [Tutorial] Ejecutando OpenWrt desde una memoria o disco USB (extroot)
« Respuesta #39 en: 12-03-2014, 12:58 (Miércoles) »
Acabo de repetir el proceso, y todo ha ido perfectamente  >:D

Es más, en el firmware con el que estoy trabajando, no estaba incluído el paquete block-mount. Así que lo he instalado sin ningún tipo de problema.

Por lo tanto, me temo, que haya alguna cosa 'rara' en las ultimas versiones de la rama trunk.

miguelcmran, mira a ver si puedes hacer que funcione desde LuCi. Te vas a Sistema/Puntos de Montaje y verás una pantalla similar a esta. Pinchas sobre el botón editar en la partición sda3 (que según has dicho, es la que creaste para hacer extroot)



Ahora, debes configurar los parámetros para que te quede tal que así (el tamaño detectado, lógicamente será diferente y debes escoger el sistema de ficheros que diste a la partición).



Le das al botón de Guardar y aplicar y reinicias el router.

« Última modificación: 12-03-2014, 13:00 (Miércoles) por jar229 »