Forums:
Necesito hacer chroot en MEDIO de un script. Todo son problemas.
De entrada no me reconoce le comando chroot, me pone algo como:
scrip_con_chroot:line XX:chroot:Command not found
Si fuese un problema de chroot, supongo que fuera daría el mismo error, pero fuera (En el prompt) me dice algo como:
chroot: missing operand
Pruebe `chroot --help' para más información.
lo normal cuando no le dices que hacer, ni más información.
otra parte del problema es como decirle al script que continue, me explico...
al cambiar de "/" el script se detiene en el nuevo prompt hasta que se hace un
exit
Muchas gracias
Bueno nunca está demas un
Bueno nunca está demas un RTFM ...
Pero Bueno ...
Extracto del manual ...
SYNOPSIS
chroot [-u -user] [-g -group] [-G -group,group,...] newroot [command]
DESCRIPTION
The chroot command changes its root directory to the supplied directory
newroot and exec's command, if supplied, or an interactive copy of your
shell.
Si mi inglés no me falla si no se especifica un comando a ejecutar ([command]) chroot te entrega un shell interactivo, así que ejecuta chroot y pásale como parámetro el scrip a ejecutar, claro que dicho script deberá estar dentro del árbol del nuevo root ...
Y además, especifica todo el path a chroot en la llamada a chroot en el script.
Suerte ...
bye
:)
chroot "${CLFS}"
chroot "${CLFS}" /tools/bin/env -i \
HOME=/root TERM="${TERM}" PS1='\u:$(pwd)> ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/tools/bin/bash --login +h
ese es el chroot que quiero incluir. Si os fijais, es del CLFS; pues no me rula dentro de un scrip. Lo he echo con el prompt, paso a paso, y me funciona pero dentro no. Y ya he comprobao todas las dependencias. Hasta ese momento todo va como la seda.
De toas formas, creo que una ves cargado el chroot el script se "para". Ese es mi mayor problema (el otro fijo que sera "alguna coma")
THX THX
For:.- AMD socket940 64x2
.- CLFS x86_64 Pure 64
To:.- AMD socket940 64x2
.- PKT 64
[Lo lograre]
Pues creo que no entendiste
Pues creo que no entendiste muy bien que digamos el post anterior:
El chroot te cambia el root directory por el que especificas y te ejecuta un shell interactivo o el comando especificado, en tu caso ejecuta el env ... blah, blah ... bash ... y te deja una sesion de bash abierta, y obvio, ahí se queda, intenta creando un scrip con el resto del script que quieres ejecutar dentro del chroot (el nuevo root) y llámalo al momento del chroot, de esta manera creo que se ejecutará lo que quieres con el nuevo root, o si no, trata con algo como expect para el diálogo con comandos interactivos...
SUerte ...
bye
:)
a ver si no soy tan tonto como pienso
deveria mas o menos:
dentro de script_principal
chroot script_continuacion
y script_continuacion devería empezar con:
"${CLFS}" /tools/bin/env -i \
HOME=/root TERM="${TERM}" PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/tools/bin/bash --login +h
¿algo así?
[quote]Aprender implica, que hubo un momento en que no sabias.[/quote]
For:.- AMD socket940 64x2
.- CLFS x86_64 Pure 64
To:.- AMD socket940 64x2
.- PKT 64
[Lo lograre]
Esa es la idea, no se si el
Esa es la idea, no se si el script seguirá luego del shell que te entrega el comando pasado al chroot ...
Suerte ...
bye
:)
Semi-solucionado
He hecho que el 'scrpit' copie antes de hacer chroot un .bash_profile y un .basrc especiales. Cuando hago .chroot señalo directamente a el primero, este a su vez carga el segundo, de esta manera logro que las variables del programa formen parte del nuevo entorno.
Las dos ultimas lineas del .bashrc son, un puntero a un 'script' que es la continuacion del primero y una orden de 'exit' para que de esta forma en cuanto acabe continue con el general fuera de chroot.
Y digo semisolucionado, porque aún no he dado con la formula exacta del chroot:
(la hubicacion la especifico dentro de la nueva raiz)chroot /Directorio/nueva/raiz /Hubicacion/.bash_profile
Según vengo entendiendo, se hace así, pero sigo en las mismas por ahora. ¿Que hago mal?
P.D. He revisado que todos los PATH y direcciones de .bash_profile y .bashrc apunten a lugares dentro de la nueva raiz
THX THX
For:.- AMD socket940 64x2
.- SIDUX64 + ncurses
To:.- AMD socket940 64x2
.- CLFS 86_64 Pure 64
[Lo lograre]
For:.- AMD socket940 64x2
.- CLFS x86_64 Pure 64
To:.- AMD socket940 64x2
.- PKT 64
[Lo lograre]
No entiendo bien que es lo
No entiendo bien que es lo que no te funciona luego de los cambios realizados, se más explícito por favor ...
bye
:)
Solucionado, ahora... ni idea realmente de como :D
Hombre, alguna idea si tengo, pero como el metodo fue el prueba/error, pues me siento un poco como que no lo he solucionado, sino puesto un parche... de toas formas, funciona :D
La instruccion final a quedado así:
chroot "${CLFS}" /tools/bin/env -i \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
HOME=/root TERM="${TERM}" \
/tools/bin/bash --login +h /root/.bashrc
Al final sólo he añadido: /root/.bashrc. Pero siempre sin un .bash_profile. El bash_profile me colgaba la maquina. Creo que era por que el tambien hacia una llamada a bash, por lo que se creaba un loop. Te aseguro que la salida de
ps -a
era digna de verse, mientras se podia claro :D
De toas formas ahora estoy trabao con el
tzselect
ahora mismo iba a abrir otro tema :D
For:.- AMD socket940 64x2
.- SIDUX64 + ncurses
To:.- AMD socket940 64x2
.- CLFS 86_64 Pure 64
[Lo lograré]
For:.- AMD socket940 64x2
.- CLFS x86_64 Pure 64
To:.- AMD socket940 64x2
.- PKT 64
[Lo lograre]
Y por cierto, se me olvidava decir...
Muchas Gracias por la atencion, me has sido de ayuda.
:D :D
For:.- AMD socket940 64x2
.- SIDUX64 + ncurses
To:.- AMD socket940 64x2
.- CLFS 86_64 Pure 64
[Lo lograré]
For:.- AMD socket940 64x2
.- CLFS x86_64 Pure 64
To:.- AMD socket940 64x2
.- PKT 64
[Lo lograre]