# Compilar kernel de un servidor por ¿¿ NFS ??

## diegoto

Que tal gente, bueno como comente en otro post estoy armando un servidor con un AMD Duron 1.2Ghz, 64Mb, HD 1GB.

Ya esta funcionando todo bien, le meti slackware 12, xampp, y ssh.

Ahora el kernel que traia slackware tira muchos errores y carga muchas cosas que no me interesan y queria compilar un kernel nuevo, ahora mi duda seria como puedo compilar el kernel, ya que no lo quiero hacer desde el servidor porque va a ser muy lento.

Se puede con NFS montar la particion y hacerlo todo desde mi PC cliente que es mas grande?

Saludos

----------

## gringo

no te compliques, si las dos máquinas son de la misma arquitectura , como los x86 de toda la vida o los nuevos x86_64, puedes compilar el kernel en cualquiera de las dos y luego tan sólo tendrás copiar lo que es la imágen del kernel y los módulos a la máquina que te interese y ajustar el cargador. 

Sólo en caso de que tb. vayas a querer instalar módulos que no están en el kernel tendrías que copiar tb. las fuentes en /usr/src, si no, no te hacen falta.

De todas formas, no sé como son los kernels de slack, pero en otras distros hay que tener claro que es lo que se hace ya que la mayoría parchean el kernel a lo bestia y si a ti te falta alguno de esos parches, tu kernel puede llegar a no cargar.

saluetes

----------

## Annagul

Bueno, si accedes a la máquina por ssh no creo que tengas ningún problema de velocidad mientras configuras el núcleo. Cuando toque compilar, tampoco podría considerarse que la máquina que describes sea "lenta". Supongo que tardará un cuarto de hora o incluso 20 minutos. 

De todas formas, si deseas configurar y compilar las fuentes del núcleo en tu ordenador no hay ningún problema. Después copias el bzImage y los módulos (en su caso) al lugar correspondiente del servidor y ya está. Eso sí, asegurate de que las opciones de compilación de tu ordenador no vayan a provocar algún tipo de incompatibilidad a la hora de ejecución en el servidor.

Saludos, y suerte.

EDIT: gringo, te adelantaste  :Wink:  Bueno, lo explicaste mejor. Un saludo.

----------

## diegoto

el problema es que el servidor es un AMD 32 bits y mi PC cliente es un INTEL 64bits. Por eso decia.. lo mas probable es que compile por SSH pero no se.

----------

## Inodoro_Pereyra

 *diegoto wrote:*   

> el problema es que el servidor es un AMD 32 bits y mi PC cliente es un INTEL 64bits. Por eso decia.. lo mas probable es que compile por SSH pero no se.

 

El Intel 64 corre a 64 o a 32?

Si corre a 32, tiene que funcionar, si corre a 64, también funciona pero ejecutando:

```
linux32 chroot /mnt/acá_la_ubicación_del_raiz_de_la_otra_pc /bin/bash
```

Aseguráte de exportar usando la opción no_root_squash, si no te va a dar algunos dolores de cabeza.

Salud!

----------

## gringo

un x86_64 puede compilar código de 32 bits sin problema. A la hora de compilar un kernel de 32 bits en un sistema x86_64 simplemente ten unas fuentes limpias ( ejecuta make mrproper de lo contrario) e invoca a make añadiendo la arquitectura. P.ej. ARCH="i386" make menuconfig, ARCH="i386" make all, etc. 

saluetes

( bueno, en un kernel muy reciente, un 2.6.24-rc, esto no funciona de momento, ya que ambas ramas se han unificado en una única arquitectura x86)

----------

## Inodoro_Pereyra

 *gringo wrote:*   

> un x86_64 puede compilar código de 32 bits sin problema. A la hora de compilar un kernel de 32 bits en un sistema x86_64 simplemente ten unas fuentes limpias ( ejecuta make mrproper de lo contrario) e invoca a make añadiendo la arquitectura. P.ej. ARCH="i386" make menuconfig, ARCH="i386" make all, etc. 
> 
> saluetes
> 
> ( bueno, en un kernel muy reciente, un 2.6.24-rc, esto no funciona de momento, ya que ambas ramas se han unificado en una única arquitectura x86)

 

Si señor, tal cual, solo le decía que use linux32 al hacer chroot por que si no, no se puede elegir otro procesador que no sea alguno de la linea x86_64 en processor types and features en el menuconfig al compilar el kernel.

Salud!

----------

## diegoto

Pensaba usar el Source 2.6.21.5 que trae el Slackware por si tiene alguna modificación. 

Ahora mi pregunta, si monto como dices por NFS "linux32 chroot /mnt/acá_la_ubicación_del_raiz_de_la_otra_pc /bin/bash" y a la hora de compilar, donde se ejecuta la compilacion en mi maquina o en el servidor ?

EDIT: Definitivamente no puedo compilar mi kernel en el servidor ya que me falta el gcc, make, etc para compilar y no me alcanza el espacio para instalar todo.. asi que voy a tener qe hacerlo desde mi maquina.

----------

## Inodoro_Pereyra

 *Quote:*   

> Ahora mi pregunta, si monto como dices por NFS "linux32 chroot /mnt/acá_la_ubicación_del_raiz_de_la_otra_pc /bin/bash" y a la hora de compilar, donde se ejecuta la compilacion en mi maquina o en el servidor ?

 

La compilación (uso de cpu, memoria ram y demás) se ejecuta en tu pc, pero usando como medio de almacenamiento el disco rígido de tu servidor. Sería el equivalente a desconectar el disco de tu servidor, conectarlo a tu pc y hacer el mismo chroot, pero por la red.

 *Quote:*   

> EDIT: Definitivamente no puedo compilar mi kernel en el servidor ya que me falta el gcc, make, etc para compilar y no me alcanza el espacio para instalar todo.. asi que voy a tener qe hacerlo desde mi maquina.

 

Gentoo... Instalále un Gentoo.   :Very Happy: 

Salud!

----------

## diegoto

Le quise meter un gentoo, pero se me complicaba a la hora de compilar aplicaciones y demas ya que es medio chiquito el servidor.

Pero si con NFS puedo utilizar mi procesador en mi maquina cliente esta joya.. elll proooblemaa es que mi procesador lo estoy utilizando en 64bits! y el otro es de 32 ! entonces se me arma la galleta.

Saludos y gracias

----------

## kropotkin

 *diegoto wrote:*   

> Le quise meter un gentoo, pero se me complicaba a la hora de compilar aplicaciones y demas ya que es medio chiquito el servidor.
> 
> Pero si con NFS puedo utilizar mi procesador en mi maquina cliente esta joya.. elll proooblemaa es que mi procesador lo estoy utilizando en 64bits! y el otro es de 32 ! entonces se me arma la galleta.
> 
> Saludos y gracias

 

yo cuando tenia mi procesador athlon64 y gentoo en 64bits, compile una gentoo en una maquina para usarla de gateway a través de nfs y chroot, de la misma forma que te dicen 

```
linux32 chroot blablabla
```

no entiendo el porque de tanta complicación.

----------

## gringo

 *Quote:*   

> no entiendo el porque de tanta complicación.

 

yo tampoco sinceramente, sacar el disco, poner el disco, chroot pá compilar un kernel ...

saluetes

----------

## diegoto

La complicación es que tengo un DISCO RIGIDO de 1GB! entonces no entra nada.. probe meterle un gentoo, y cuando le meti el arbol de portage me quede sin espacio por lo tanto gentoo no le puedo poner. 

Entonces probe con slackware, que entro perfectamente y me sobran 400MB, pero si le meto el source del kernel ocupa unos 150MB + el GCC + otras cosas para compilar el kernel me quedo sin DISCO nuevamente!

Ese es mi gran problema, entonces queria compilar el kernel para un AMD Duron 32bits en mi maquina intel dual-core 64bits. EN un sistema gentoo de 64bits.

----------

## gringo

por eso mismo digo que, en tu situación, no entiendo tanto lío y el uso de un chroot para compilar un miserable kernel, a menos que tengas un sistema puro de 64 bits ( en gentoo no es así por defecto, multilib viene de serie a menos que le digas lo contrario), PUEDES COMPILAR UN KERNEL DE 32 BITS SIN PROBLEMAS EN TU GENTOO DE 64 BITS. 

A ver :

- en tu gentoo de 64 bits te bajas las fuentes del kernel que necesitas.

- si tienes un config ya listo para el sistema de 32 bits puedes usarlo perfectamente, simplemente cópialo al directorio del kernel y listo.

- invoca a make indicando la arquitectura tal y como te he dicho en mi segunda intervención en este hilo. Es decir, para configurar tu mismo el kernel ejecuta ARCH="i386" make menuconfig y así sucesivamente en los demás pasos.

- si siques sin fiarte y de verdad quieres estar seguro de que es un kernel de 32 bits una vez que lo hayas compilao, puedes usar file que te dirá si el kernel generado es o no de 32 bits.

- copias el kernel y los módulos ( si es que los usas) al nuevo sistema igual que en otro sistema, el kernel a /boot y los módulos a /lib/modules/nombre_del_kernel. Ajustas el cargador para que apunte al kernel que acabas de copiar al sistema y listo. Reincia y ejecuta el nuevo kernel.

Dicho esto, insisito en que todas las distros parchean el kernel para sus necesidades, Gentoo tb. lo hace. Los de Redhat p.ej. son unos bestias parcheando y los de slack sé que al menos usan ( o usaban) unionfs para los livecd pero ni idea de si tb. lo usan para el día a día de su linux. Lo que quiero decirte es que tienes que tener cuidao a la hora de compilar kernels para estas distros y estar seguro de que cubres todas las necesidades de tu sistema, si no te puedes encontrar con que el kernel no será capaz de levantar el sistema.

saluetes

----------

## Inodoro_Pereyra

Tal cual como dice Gringo, que de paso, me gustaría saber cuales son sus locale,   :Very Happy:  La forma mas simple de hacerlo es esa, pero como de todo esto se me siguen ocurriendo ideas, te tiro otra para terminar de enredar mas toda esta cuestión:

Viendo que la velocidad del disco no es lo que te importa: En el disco de 1Gb metés tu /boot, una partición para el raiz y una chiquita para swap, el resto del espacio, montado con NFS sobre tu AMD64.

Para que se entienda: /var montado en el disco del AMD64, lo mismo /tmp y cualquier otro directorio que consideres relevante o necesario para compilar por ejemplo, en un directorio exportado desde el AMD64 especificando c/u en el /etc/fstab.

Salud!

----------

## diegoto

jeje! alto rollo!.. bueno para que se me enojen un poco seguí con slackware  :Smile:  (antigua distro mia antes de gentoo que mas de uno le paso lo mismo seguro) por el tema de los paquetes compilados!! no me alcanza el disco!!

Y al kernel lo compile en mi máquina intel de 64 para el AMD duron de 32btis como me dijeron.

Particiones:

/dev/hda1 - swap - 128MB

/dev/hda2 - /boot - ext2 - 80MB

/dev/hda3 - / - ext3 - 828MB

```

root@BlackOrangeBox:~# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/hda3             828M  415M  372M  53% /

/dev/hda2              75M  7.1M   64M  11% /boot

```

Sistema

Slackware 12

Kernel 2.6.21.5

OpenSSH

NFS (Todavía no lo probe pero tengo el demonio levantado)

Xampp 1.6.4 | Server HTTP Apache +PHP + MYSQL - Server ProFTP

VLC para streaming de video por la Webcam (Estoy viendo de utilizar otro para hacer el streaming)

Me faltaría por ultimo un entorno gráfico muuyy pequeño, tipo blackbox o afterstep.. y poder levantarlo desde cualquier cliente es posible ?

Saludos y gracias

----------

## Inodoro_Pereyra

 *Quote:*   

> Me faltaría por ultimo un entorno gráfico muuyy pequeño, tipo blackbox o afterstep.. y poder levantarlo desde cualquier cliente es posible ?

 

Esto quizás?

Salud!

----------

## gringo

 *Inodoro_Pereyra wrote:*   

> Esto quizás?

 

eso es un cliente gráfico remoto pero de nada sirve si no tienes un servidor gráfico corriendo en el servidor.

Si no eres muy sibarita con los gestores de ventanas, el mas ligero que conozco ( tb. el mas horrible) debe ser twm. Seguramente ya lo tengas instalado, viene de serie con xorg. Y hablando de xorg, creo que las uses kdrive y minimal te interesarán  :Wink: 

Si no, pues ion3 o flux, algo mas pesados pero tb. bastante mas funcionales que twm.

saluetes

----------

## diegoto

Me voy a fijar. no importa que feo sea lo que me interesaria es poder levantar la webcam y un par de consolas  en la misma pantalla remotamente.

Y voy a ver como lucho con el xorg ya que tengo 350MB libres de disco, y no tengo nada instalado de eso.

Saludos!

----------

